哈工程软件工程课件第一章_第1页
哈工程软件工程课件第一章_第2页
哈工程软件工程课件第一章_第3页
哈工程软件工程课件第一章_第4页
哈工程软件工程课件第一章_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第1章 软件和软件工程 2软件的定义软件是: (1)指令的集合(计算机程序),通过执行这些指令来满足预期的特征、功能和性能需求; (2)数据结构,使得程序可以合理利用信息; (3)文档描述,用来描述程序操作和使用。3软件的特性n软件是设计开发的,而不是传统意义上生产制造的。 -硬件可能会引入质量问题,但软件不会(或易于纠正) -人员和工作成果之间的对应关系完全不同 -构建方法不同,软件产品成本主要在于开发设计软件的特性(续1)n软件不会“磨损”。 -硬件的失效率称为“浴缸曲线”。 早期具有相对较高的失效率(来自设计或生产缺陷), 缺陷被逐个纠正后,失效率随之降低并在一段时间内保持平稳, 因

2、灰尘、震动、不当使用、温度超限等问题所造成的硬件组件损耗累积的效果而再次升高。 These slides are designed to accompany Software Engineering: A Practitioners Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 4软件的特性(续2)-软件的失效率应该呈现为“理想曲线” 但软件面临变更,每次变更都可能引入新的错误,使得失效率像“实际曲线” 不断的变更是软件退化的根本原因。-每个软件缺陷都暗示了设计的缺陷或者在从设计转化到机器可

3、执行代码的过程中产生的错误。These slides are designed to accompany Software Engineering: A Practitioners Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 56磨损vs.退化失效率变更点由于变更的副作用而导致失效率提高实际曲线理想曲线时间软件的特性(续3)n虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。 -交互式用户界面使用可复用构件构造图形窗口、下拉菜单和各种交互机制。These

4、slides are designed to accompany Software Engineering: A Practitioners Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 78软件的应用领域n系统软件(编译器、编辑器和操作系统、驱动程序等)n应用软件(销售系统、实时过程控制系统等)n工程/科学软件(数值计算、CAD、系统仿真等)n嵌入式软件(微波炉按键控制、汽车燃油控制等)n产品线软件(库存控制、文字处理、多媒体、娱乐等)nWeb应用软件(超文本链接文件、网络应用等)n人工智

5、能软件(机器人、专家系统、模式识别等)9软件新的分类n开放计算普适计算,分布式计算的实现(无线网络的快速发展)n网络资源万维网发展为一个计算引擎和内容提供平台n开源软件“免费” 源代码开放(它是一种祝福,但也是一种潜在的威胁!)n其他 (参见第31章)n数据挖掘n网格计算n认知机n纳米技术软件意外效应法则n某些新科技的发明创造会给其他一些看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用。These slides are designed to accompany Software Engineering: A Practitioners Approach, 7/

6、e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 1011遗留软件n软件必须进行适应性调整,以满足新的计算环境和技术的需求。n软件必须升级以实现新的商业需求。n软件必须扩展使之具有与更多现代系统和数据库的互操作能力。n软件必须进行改建使之能适应多样化的网络环境。为什么一定要变更为什么一定要变更? ?12WebApps的特性 - In网络密集型:网络密集型:WebApp 驻留在网络上,服务于不同客户群体的需求。n并发性:并发性:大量用户可能同时访问WebApp 。n无法预知的负载量:无法预知的负载量:WebApp的用户数

7、量每天都可能有数量级的变化。n性能:性能: 如果一位WebApp用户必须等待很长时间(访问、服务器端处理、客户端格式化显示),该用户就可能转向其他地方。 n可用性:可用性:尽管期望百分百的可用性是不切实际的,但是对于热门的WebApp,用户通常要求能够24/7/365(全天候)访问。13WebApps的特性 - IIn数据驱动:数据驱动:许多WebApp的主要功能是使用超媒体向最终用户提供文本、图片、音频及视频内容。n内容敏感性:内容敏感性:内容的质量和艺术性仍然很大程度上决定了WebApp的质量。n持续演化:持续演化:传统的应用软件是随一系列规划好的时间间隔发布而演化的,而Web应用则持续地

8、演化。n即时性:即时性:尽管即时性也就是将软件尽快推向市场的迫切需求是很多应用领域的特点,然而将WebApp投入市场可能只是几天或几周的事。n安全性:安全性:由于WebApp是通过网络访问来使用的,因此要限制访问的最终用户,即使可能也非常困难。n美观性:美观性:不可否认,WebApp的用户界面和外观很有吸引力。14软件工程n若干事实:n在制定解决方案之前要理解问题(每个人对于特性和功能有不用的想法)n设计是一项关键的软件工程活动(嵌入式产品的复杂性要求系统元素之间的交互非常谨慎)n软件必须保证高质量(个人、企业、政府依赖其进行日常运作和决策)n软件需具备可维护性(用户群和使用时间增加的要求)n

9、种子定义(Fritz Bauer):n(软件工程是)建立和使用一套合理的工程原则,以便经济地获得可靠的、可以在实际机器上高效运行的软件。 -未提及软件质量,未直接谈到用户满意度或按时交付产品的要求、忽略了测量和度量的重要性和有效的软件过程的重要性。15软件工程nIEEE 定义:n软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。-需要规范,也需要可适应性和灵活性(有些方法对于一个团队符合(1),但对于另一个团队可能是负担)16一种层次化技术Software Engineering软件工程软件工程一种层次化技

10、术(续)n任何工程方法必须构建在质量承诺的基础之上。支持软件工程的根基在于质量关注点。n过程是软件工程的基础。过程将各个技术层次结合在一起,使得合理及时地开发软件成为可能。过程定义了一个框架,构建该框架是有效实施软件工程技术必不可少的。n方法为构建软件提供技术上的解决方法。包括沟通、需求分析、设计建模、编程、测试和技术支持。n工具为过程和方法提供自动化或半自动化的支持。 如CASE。These slides are designed to accompany Software Engineering: A Practitioners Approach, 7/e (McGraw-Hill 200

11、9). Slides copyright 2009 by Roger Pressman. 1718一种过程框架 工作任务(task)工作产品里程碑和可交付成果QA 检查点19框架包含的活动n沟通(与客户沟通与协调,以理解项目目标)n策划(工作、技术任务、风险、资源、产品,进度计划)n建模(用模型来理解软件需求,完成设计)n需求分析n设计n构建(编码、测试)n代码生成n测试n部署(软件交付用户,用户测评并反馈)20普适性活动n软件项目跟踪和控制(按计划评估进度,采取措施保证进度)n风险管理(对于可能影响成果或质量的风险进行评估)n软件质量保证(确定和执行质量保证活动)n技术评审(评估产品,尽早发

12、现错误,以免往下传播)n测量(定义和收集过程、项目和产品的度量)n软件配置管理(管理变更)n可复用管理(定义复用标准,建立复用机制)n工作产品的准备和生产(包括生成产品所必需的活动)21过程模型之间的不同n活动、动作和任务的总体流程,以及它们之间相互依赖关系n在每一个框架活动中,动作和任务细化的程度n工作产品的定义和要求的程度n质量保证活动应用的方式n项目跟踪和控制活动应用的方式n过程描述的详细程度和严谨程度n客户和利益相关者对项目参与的程度n软件团队所赋予的自主权n队伍组织和角色明确程度22实践的精髓nPolya 的建议:1.理解问题(沟通和分析)。2.计划解决方案(建模和软件设计)。3.实

13、施计划 (代码生成)。4.检查结果的正确性(测试和质量保证)。23理解问题n谁将从问题的解决中获益?也就是说,谁是利益相关者?n什么是未知的?哪些数据、功能、特征和行为是解决问题所必需的?n问题可以划分吗?是否可以描述为更小、更容易理解的问题?n问题可以图形化描述吗?可以建立分析模型吗?24计划解决方案n以前曾经见过类似问题吗? 在潜在的解决方案中,是否可以识别一些模式?是否已经存在有软件实现了所需要的数据、功能、特征和行为?n类似问题是否解决过?如果是,解决方案所包含元素是否可以复用?n可以定义子问题吗?如果可以,子问题是否已有解决方案?n能用一种可以很快实现的方式来表述解决方案吗?能构建出

14、设计模型吗?25实施计划n解决方案和计划一致吗?源码是否可追溯到设计模型?n解决方案的每个组成部分是否可以证明正确?设计和代码是否经过评审?或者更好的算法是否经过正确性证明?26检查结果n能否测试解决方案的每个部分?是否实现了合理的测试策略?n解决方案是否产生了与所要求的数据、功能、特征和行为一致的结果?是否按照项目利益相关者的需求进行了确认?27Hooker的一般原则关注软件工程的整体实践的原则n1: 存在价值(能为系统增加真正的价值吗?)n2: 保持简洁(简洁而不是简化,以实现可理解和可维护,需经过大量思考和多次工作迭代)n3: 保持愿景(保持系统实现始终与愿景一致)n4:关注使用者(在需

15、求分析、设计、编码等活动中始终想着用户)n5: 面向未来(系统设计应为变更做好准备)n6: 计划复用(提前做好复用计划)n7: 认真思考(行动之前清晰定位,完整思考)若干管理神话(1)n我们已经有了一本写满软件开发标准和规程的宝典。难道不能提供我们所需要了解的所有信息吗? (是否已采用?开发人员知道不?是否反映了现状?是否全面?是否适应不同应用环境?是否在缩短交付时间的同时关注产品质量?)n如果我们未能按时完成任务,可以通过增加程序员人数而赶上进度。(蒙古游牧概念) (新人需要老人牺牲项目时间来培训)These slides are designed to accompany Software

16、 Engineering: A Practitioners Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 28若干管理神话()n如果决定将软件外包给第三方公司,就可以放手不管,完全交给第三方公司开发。 (若开发团队部了解如何在内部管理和控制软件项目,就会在外包项目中遇到困难)n有了对项目目标的大概了解,便足以开始编写程序,可以在之后的项目开发过程中逐步充实细节。 (需求描述不清楚会给项目实施带来灾难)n虽然软件需求不断变更,但是因为软件是弹性的,因此可以很容易地适应变更。 (变更提出的时机不

17、同,影响也不同,越早代价越小)These slides are designed to accompany Software Engineering: A Practitioners Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 29若干从业者神话n当我们完成程序并将其交付使用之后,我们的任务就完成了。(60%-80%的工作耗费在软件首次交付用户之后)n直到程序开始运行,才能评估其质量。(技术评审比测试有效,发现错误还早)n对于一个成功的软件项目,可执行程序是唯一 可交付的工程成果。(各种工作产品(模型、文档、计划)是软件工程实施的基础)n软件工程将导致我们产生大量无用文档,并因此降低工作效率。(软工的目的是为了保证产品质量,减少返工,加快开发进度)These slides are designed to accompany Software Engineering: A Practi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论