第1章软件工程学概述_第1页
第1章软件工程学概述_第2页
第1章软件工程学概述_第3页
第1章软件工程学概述_第4页
第1章软件工程学概述_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程主主 讲讲: 郭韦钰郭韦钰 教教 材:软件工程导论(第六版)材:软件工程导论(第六版) 清华大学出版社清华大学出版社作作 者:张海藩等者:张海藩等2 课程概述一、软件工程学科介绍一、软件工程学科介绍二、学习目标二、学习目标三、部分参考资料三、部分参考资料四、课程特点和学习的注意事项四、课程特点和学习的注意事项五、教材简介五、教材简介六、课程考核方式六、课程考核方式3 一、软件工程学科介绍软件程学科发展历史软件程学科发展历史三个阶段:概念提出、学科雏形、学科确立三个阶段:概念提出、学科雏形、学科确立第一阶段:概念提出第一阶段:概念提出 1968 年年 NATO 会议会议(北大西洋公约组织

2、的计算机科学家的国际会议)提提出出“软件工程软件工程”概念。概念。当时对当时对“软件工程软件工程”代表性定义:为了经济地获得代表性定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法。工程原则和方法。 1972 年年 IEEE 学会的计算机分会学会的计算机分会 IEEE 一一 CS 第一第一次出版了次出版了“软件工程学报软件工程学报”4 第二阶段:学科雏形上世纪上世纪 70 年代末,美国将软件工程教程列入研究年代末,美国将软件工程教程列入研究生教育计划。生教育计划。 1980 年代末和年代末和 1990 年代初,软件工程教育

3、得到卡年代初,软件工程教育得到卡内基一梅隆大学软件工程研究所(内基一梅隆大学软件工程研究所( CMU / SEI )的)的支持。支持。 1991 年,年,“软件工程软件工程”被被 ACM (美国计算机协会)和和 IEEE / CS 列为计算学科的九个知识领域之一。列为计算学科的九个知识领域之一。 1993 年,年, IEEE 一一 CS 和和ACM 为了把软件工程建为了把软件工程建设成为一个专业,建立了设成为一个专业,建立了 IEEE 一一 CS / ACM 联合联合指导委员会。指导委员会。5 第三阶段:学科确立2004 年年 8 月,月,IEEE 一一 CS 和和 ACM 给出:给出:软件工

4、程知识体(软件工程知识体( SWEBOK , Software Engineering Body of Knowledge ) 软件工程教育知识体软件工程教育知识体( SEEK ) 最终版,标志着软最终版,标志着软件工程学科在世界范围正式确件工程学科在世界范围正式确 立。立。软件工程、计算机科学、计算机工程、信息系统、软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。信息技术并列成为计算学科下的独立学科。软件工程知识体软件工程知识体( SWEBOK ) :全面描述了软件:全面描述了软件工程实践所需的知识。工程实践所需的知识。6 SWEBOK (软件工程知识体 1

5、0 个领域l软件需求软件需求l软件设计软件设计l软件构造软件构造l软件测试软件测试 l软件维护软件维护l软件配置管理软件配置管理l软件工程管理软件工程管理l软件工程过程软件工程过程l软件工程工具和方法软件工程工具和方法l软件质量软件质量参考资料:参考资料:1 白征白征 SWEBOK :软件工程知识体,计:软件工程知识体,计算机科学,算机科学, 2001 年年 07 期期 2 万江平软件工程知识体系指南综述,万江平软件工程知识体系指南综述,计算机应用研究,计算机应用研究, 2006 年年 10 期期7 SWEBOK详细结构(详细结构(1)8 9 软件工程与其他学科的关系1 、软件工程是计算学科、

6、软件工程是计算学科 9 个领域之一个领域之一算法和数据结构算法和数据结构计算机系统结构计算机系统结构人工智能和机器人学人工智能和机器人学数据库和信息检索数据库和信息检索人一机交互人一机交互操作系统操作系统程序设计语言程序设计语言软件方法学和软件工程软件方法学和软件工程数字和符号计算数字和符号计算10 计算学科中12个重复出现的基本概念l绑定绑定l概念和形式模型概念和形式模型l效率效率l抽象层次抽象层次l按时间排序按时间排序l安全性安全性l大问题的复杂性大问题的复杂性l一致性和完备性一致性和完备性l演化演化l按空间排序按空间排序l重用重用l折衷与决策折衷与决策F软件工程是计算学科的分支,这软件工

7、程是计算学科的分支,这 12 12 个概念同样将个概念同样将贯穿软件工程学科,是学科的精髓。贯穿软件工程学科,是学科的精髓。11 2 、 8 个相关学科知识域l计算机工程计算机工程l计算机科学计算机科学l数学数学l管理学管理学l项目管理项目管理l质量管理质量管理l系统工程学系统工程学l软件人类工程学软件人类工程学 其中:计算机科学、数学是基础工程学科、管理其中:计算机科学、数学是基础工程学科、管理学科也非常重要学科也非常重要12 软件程是一门什么样的学科? 是是指导计算机软件开发与维护指导计算机软件开发与维护的一门的一门工程工程学科。学科。工程:将科学及数学原理运用于实际用途的应用手段,如:设

8、计、制造、机器操纵、构架等。典型的传统工程:建筑工程、机械工程、电力工程等。 概括的说,软件工程即用工程、科学和数概括的说,软件工程即用工程、科学和数学的原则和方法研制、维护计算机软件的有学的原则和方法研制、维护计算机软件的有关技术及方法,其优点是以较小的代价开发关技术及方法,其优点是以较小的代价开发高质量的软件并有效地维护它。高质量的软件并有效地维护它。13 二、学习目标(1) 掌握软件工程的基础知识和理论,对软件掌握软件工程的基础知识和理论,对软件工程学有一个全貌的了解;工程学有一个全貌的了解; 熟悉软件项目开发和维护的一般过程;熟悉软件项目开发和维护的一般过程; 熟练掌握软件需求分析、设

9、计、编码和测熟练掌握软件需求分析、设计、编码和测试等阶段的主要思想和技术方法;试等阶段的主要思想和技术方法;14 二、学习目标(2) 通过学习,特别是通过课程设计,真正运通过学习,特别是通过课程设计,真正运用和深刻体会软件工程的思想方法,转变对用和深刻体会软件工程的思想方法,转变对软件开发的认识:从个人的单纯编程活动转软件开发的认识:从个人的单纯编程活动转移到进行系统分析与设计方面上来移到进行系统分析与设计方面上来转变思维定式:转变思维定式:程序员程序员 系统工程师(系统分析员)系统工程师(系统分析员)15 三、部分参考资料 软件工程理论与实践软件工程理论与实践 许家冶等编著,高许家冶等编著,

10、高等教育出版社,等教育出版社, 2005 年年 软件工程软件工程 (第二版),齐治昌等,高(第二版),齐治昌等,高等教育出版社,等教育出版社, 2004 年年 面向对象的系统分析面向对象的系统分析 ,杨芙清等编著,杨芙清等编著,清华大学出版社,清华大学出版社, 2001 年年 UML 用户指南用户指南 G Booch 等著,邵维忠等著,邵维忠等译,机械工业出版社等译,机械工业出版社 2002 年年16 四、课程特点和学习的注意事项1 、知易行难、知易行难 要将理论知识与实践运用结合,进行对照,以加要将理论知识与实践运用结合,进行对照,以加深理解和掌握。深理解和掌握。 2 、内容纷杂、内容纷杂

11、软件工程涉及计算机科学、数学、工程科学和管软件工程涉及计算机科学、数学、工程科学和管理科学等多个领域。其中:理科学等多个领域。其中:计算机科学和数学用于构造模型与算法;计算机科学和数学用于构造模型与算法;工程科学用于制定规范、设计范型、评估成本及确定工程科学用于制定规范、设计范型、评估成本及确定权衡权衡管理科学用于计划、资源、质量和成本的管理。管理科学用于计划、资源、质量和成本的管理。17 五、教材总目录第第 1 章软件工程学概述章软件工程学概述第第 2 章可行性研究章可行性研究第第 3 章需求分析章需求分析第第 4 章形式化说明技术章形式化说明技术第第 5 章总体设计章总体设计第第 6 章详

12、细设计章详细设计第第 7 章实现章实现第第 8 章维护章维护第第9 章面向对象方法学章面向对象方法学引论引论第第 10 章面向对象分析章面向对象分析第第 11 章面向对象设计章面向对象设计第第 12 章面向对象实现章面向对象实现*第第 13 章软件项目管理章软件项目管理附录附录 AC + 类库管理类库管理系统分析与设计系统分析与设计附录附录 B 汉字行编辑程序汉字行编辑程序设计设计18 六、课程考核方式分数组成:分数组成:平时成绩(平时成绩( 10 % ) :以理论课课堂表现和作业:以理论课课堂表现和作业情况为主。情况为主。实验(实验( 20 % ) :实验课表现及实验报告:实验课表现及实验报

13、告期末考试(期末考试(70 % ) :闭卷考试:闭卷考试 第 1 章 软件工程学概述19 软件工程20 第 1 章 软件工程学概述1 . 1 软件危机软件危机 1 . 2 软件工程软件工程 1 . 3 软件生命周期软件生命周期 1 . 4 软件过程软件过程1 . 5 小结小结习题习题21 学习重点学习重点1、软件危机、软件工程产生的原因、软件危机、软件工程产生的原因2、软件工程过程和软件生命周期、软件工程过程和软件生命周期3、软件生命周期模型、软件生命周期模型掌握几个基本概念掌握几个基本概念软件危机软件危机软件工程软件工程软件过程软件过程软件生命周期软件生命周期软件生命周期模型软件生命周期模型

14、p 软件软件 (Software)n是指包括是指包括程序程序、数据数据以及以及相关文档相关文档的完整组合。的完整组合。n国标定义:国标定义:与计算机系统的操作有关的计算机程序、与计算机系统的操作有关的计算机程序、规程、规则以及可能有的文件、文档及数据。规程、规则以及可能有的文件、文档及数据。22 概念概念含义含义软件软件程序、数据和文档程序、数据和文档程序程序软件开发人员依据用户需求开发的,用某种程序设软件开发人员依据用户需求开发的,用某种程序设计语言描述的,能够在计算机中执行的语句序列计语言描述的,能够在计算机中执行的语句序列数据数据师程序能够正常操纵信息的数据结构师程序能够正常操纵信息的数

15、据结构文档文档与程序开发、维护和使用的有关资料与程序开发、维护和使用的有关资料23 软件危机与软件工程学软件工程学的产生要从软件工程学的产生要从“软件危机软件危机”说起说起 1968 年,第一届年,第一届 NAT0 (北大西洋公约组织的计算机科学家的国际会议)会议,会议,“软件工程软件工程”的概念作为一种的概念作为一种有效解决有效解决“软件危机软件危机”的途径被正式提出。的途径被正式提出。l什么是软件危机?什么是软件危机?l软件危机有什么典型表现?软件危机有什么典型表现?l为什么会产生软件危机?为什么会产生软件危机?l怎么解决软件危机?怎么解决软件危机?24 1 软件危机 1 . 1 . 1

16、软件危机介绍软件危机介绍什么是软件危机?什么是软件危机? 软件危机指在计算机软件的软件危机指在计算机软件的开发和维护开发和维护过过程中,所遇到的一系列严重问题。程中,所遇到的一系列严重问题。软件危机主要包括的问题(两方面)软件危机主要包括的问题(两方面) : 如何开发软件如何开发软件 如何维护软件如何维护软件25 软件危机有什么典型表现?(1) 开发费用和进度难以估算和控制,大大超开发费用和进度难以估算和控制,大大超过预期的资金和规定日期;过预期的资金和规定日期; 软件需求分析不够充分,用户不满意软件需求分析不够充分,用户不满意“已已经完成经完成”的软件系统。的软件系统。 软件质量难于保证;软

17、件质量难于保证; 软件维护困难;软件维护困难;难以改正程序中的错误;难以改正程序中的错误;难以根据用户的需要在原有程序中增加一些新难以根据用户的需要在原有程序中增加一些新的功能。的功能。26 软件危机有什么典型表现?(2) 通常没有保留适当的文档资料。通常没有保留适当的文档资料。 文档的作用:文档的作用:软件开发管理人员:用于管理和评价软件开发工程的软件开发管理人员:用于管理和评价软件开发工程的进展状况进展状况软件开发人员:用于开发人员对各个阶段的工作都进软件开发人员:用于开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。并且可在开发行周密思考、全盘权衡、从而减少返工。并且可在开

18、发早期发现错误和不一致性,便于及时加以纠正早期发现错误和不一致性,便于及时加以纠正软件维护人员软件维护人员:软件维护的依据软件维护的依据 开发成本逐年上升。开发成本逐年上升。 软件开发生产率提高的速度,远远跟不上软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。计算机应用迅速普及深入的趋势。27 28 几个软件危机的著名案例 1966 1966年,年,IBM 360 IBM 360 机的操作系统。花费机的操作系统。花费 5000 5000 人一年的人一年的工作量,写了近工作量,写了近 1 1 万行代码。错误百出,每次的新版本就万行代码。错误百出,每次的新版本就是从前一版本中找是

19、从前一版本中找 1 0001 000个程序错误而修正的结果。个程序错误而修正的结果。 1963 1963 年,美国用于控制火星探测器的计算机软件中的一年,美国用于控制火星探测器的计算机软件中的一个个 “ , , ”号被误写为号被误写为“. .”,而致使飞往火星的探测器发生,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。爆炸,造成高达数亿美元的损失。 美国丹佛新国际机场自动化行李系统软件。投资美国丹佛新国际机场自动化行李系统软件。投资 1. 93 1. 93 亿美元,计划亿美元,计划 1993 1993 年万圣节启用。但开发人员一直为系统年万圣节启用。但开发人员一直为系统错误困扰,屡次

20、推后启用时间,直到错误困扰,屡次推后启用时间,直到 1994 1994 年年 6 6 月,机场月,机场计划者承认无法预测何时能启用。计划者承认无法预测何时能启用。 1996 1996 年,欧洲阿里亚纳年,欧洲阿里亚纳 5 5 型运载火箭坠毁,造成型运载火箭坠毁,造成 5 5 亿美元损失。原因是控制软件中的一个错误。亿美元损失。原因是控制软件中的一个错误。29 1 . 1 . 2 产生软件危机的原因主要两个原因:主要两个原因: 1 、与软件本身的特点有关、与软件本身的特点有关 2 、与软件开发与维护的方法不正确有关。、与软件开发与维护的方法不正确有关。实际上几乎实际上几乎所有软件所有软件都在不同

21、程度都在不同程度上存在软件危机上存在软件危机.30 一 、软件本身的特点 ( 1)软件与硬件、一般程序存在很多不同之处。软件与硬件、一般程序存在很多不同之处。 1 、软件与硬件不同、软件与硬件不同抽象性。抽象性。软件生产没有明显的制造过程,难软件生产没有明显的制造过程,难以衡量开发进展,也难以控制软件质量。以衡量开发进展,也难以控制软件质量。问题的隐蔽性。问题的隐蔽性。没有硬件的磨损、老化问题,没有硬件的磨损、老化问题,但存在开发早期在分析、设计阶段的错误,但存在开发早期在分析、设计阶段的错误,修改难度较大。修改难度较大。31 失效率曲线32 改正一个问题需付出的代价33 2 、软件与一般程序

22、不同(1) 软件远比一般程序规模庞大,复杂性高软件远比一般程序规模庞大,复杂性高软件所反映的实际问题的复杂性软件所反映的实际问题的复杂性程序逻辑结构的复杂性。程序逻辑结构的复杂性。例例 1 : Windows95 , 1000 万行代码;万行代码; Windows2000, 5000 万行代码万行代码例例 2 : Exchange 2000 和和 windows 2000 开开发人员发人员34 软件的规模F软件产品的特殊性和人类智力的局限性,软件产品的特殊性和人类智力的局限性,导致人们无力处理导致人们无力处理“复杂问题复杂问题”。35 2 、软件与一般程序不同( 2 ) 大型软件开发既有技术问

23、题,还有社会问大型软件开发既有技术问题,还有社会问题。题。社会因素:组织机构、体制、管理方式、观念、社会因素:组织机构、体制、管理方式、观念、人的心理素等。人的心理素等。开发团队成员分工合作开发团队成员分工合作技术与管理的矛盾技术与管理的矛盾软件开发人员对软件应用的领域知识的了解软件开发人员对软件应用的领域知识的了解36 1 . 1 . 2 产生软件危机的原因二、软件开发维护方法中存在的问题二、软件开发维护方法中存在的问题( 1 ) 对用户需求的获取不正确对用户需求的获取不正确用户的原因用户的原因分析人员的原因分析人员的原因 对分析人员的要求:沟通能力、归纳总结能力、经验对分析人员的要求:沟通

24、能力、归纳总结能力、经验越是早期产生的错误,付出的代价越大。越是早期产生的错误,付出的代价越大。图:不同时期引入同一变图:不同时期引入同一变 动动 的代价的代价37 二、软件开发维护方法中存在的问题( 2 ) 错误地认为软件开发就是编写程序。错误地认为软件开发就是编写程序。一个完整的软件产品由一整套完整的配置组成,程序一个完整的软件产品由一整套完整的配置组成,程序只是其中的一个组成部分。只是其中的一个组成部分。软件开发过程包括多个阶段,每个阶段的产品都是最软件开发过程包括多个阶段,每个阶段的产品都是最终的完整的软件产品的一部分。终的完整的软件产品的一部分。 错误地认为软件开发只要依靠个别编程高

25、手就能错误地认为软件开发只要依靠个别编程高手就能完成。完成。 轻视软件维护轻视软件维护软件维护约占软件费用软件维护约占软件费用 55 一一 75 % ,包括修改软件运,包括修改软件运行的错误;对软件进行改进和功能扩充。行的错误;对软件进行改进和功能扩充。38 软件维护在软件费用的比例39 三、其他产生软件危机的原因软件开发尚未完全摆脱手工艺的开发方式。软件开发尚未完全摆脱手工艺的开发方式。 软件成本相当昂贵,主要依靠大量复杂的、软件成本相当昂贵,主要依靠大量复杂的、高强度的脑力劳动高强度的脑力劳动 软件的开发和运行常常受到计算机系统的软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不

26、同程度的依赖性。限制,对计算机系统有着不同程度的依赖性。软件的软件的“可移植性可移植性”就是指的软件对硬件的依就是指的软件对硬件的依赖程度。好的可移植性依赖少。赖程度。好的可移植性依赖少。40 1 . 1 . 3 消除软件危机的途径1 、彻底消除、彻底消除“软件就是程序软件就是程序”的错误观念。的错误观念。2 、充分认识到软件开发是一种组织良好、充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的管理严密、各类人员协同配合、共同完成的工程项目,不是个人独立的劳动。工程项目,不是个人独立的劳动。 3 、推广和使用在实践中总结出来的软件开、推广和使用在实践中总结出来的软件开发的

27、成功技术和方法。发的成功技术和方法。 4 、开发和使用更好的软件工具、开发和使用更好的软件工具41 总结:总结:“软件工程软件工程”的方法理论是摆脱软件的方法理论是摆脱软件危机的一个主要出路。危机的一个主要出路。计算机和软件科学家为解决软件危机问题,尝计算机和软件科学家为解决软件危机问题,尝试将在其它领域中行之有效的试将在其它领域中行之有效的工程学知识工程学知识运用到运用到软件开发工作中来,经过不断实践和总结,软件开发工作中来,经过不断实践和总结,最后最后得出一个结论:得出一个结论:按工程化的原则和方法组织软件开发工作是有按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出

28、路。效的,是摆脱软件危机的一个主要出路。42 思考题( 1 )1 )只要是编程高手,即使是不懂软件工程,)只要是编程高手,即使是不懂软件工程,也能编出很好的软件。也能编出很好的软件。软件是服务于大众,却是由个性化的开发人员软件是服务于大众,却是由个性化的开发人员完成的。如果个性化太强,程序就无法阅读,其完成的。如果个性化太强,程序就无法阅读,其他人员也就无法维护。他人员也就无法维护。例:国内例:国内 80 年代涌现出来的众多汉字操作系年代涌现出来的众多汉字操作系统均是由编程高手完成的。统均是由编程高手完成的。43 思考题( 2 )2 )只要拥有一套讲述如何开发软件的书籍,)只要拥有一套讲述如何

29、开发软件的书籍,并了解了书中的标准与示例,就可以解决软并了解了书中的标准与示例,就可以解决软件开发中遇到的任何问题。件开发中遇到的任何问题。软件是用来解决现实问题的,现实问题的特殊软件是用来解决现实问题的,现实问题的特殊性对规范提出了挑战(要进行适应)。性对规范提出了挑战(要进行适应)。软件技术是发展的,没有祖传秘方。软件技术是发展的,没有祖传秘方。就像拥有食谱并不能成为名厨一样,软件开发就像拥有食谱并不能成为名厨一样,软件开发需要实践。需要实践。44 思考题( 3 )3 )只要拥有最好的开发工具、最好的计算)只要拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。机,一定能做出优秀的软件

30、。硬件环境只是必要条件,人才是充分条件,软硬件环境只是必要条件,人才是充分条件,软件是人在一定的约束条件下创造出来的。因人因件是人在一定的约束条件下创造出来的。因人因事而异。事而异。45 思考题 (4)4 )软件开发时,如果进度慢,落后于计划,)软件开发时,如果进度慢,落后于计划,可以增加更多的程序员来解决。可以增加更多的程序员来解决。增加人力可以减少开发时间吗?增加人力可以减少开发时间吗?新手!任务的重新划分!沟通更加复杂!新手!任务的重新划分!沟通更加复杂!必须依靠科学地计划来解决这样的问题。必须依靠科学地计划来解决这样的问题。46 思考题(5)5 )争议:如果软件运行较慢,是换一台更)争

31、议:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?快的计算机,还是设计一种更快的算法?软件的性能问题;软件的性能问题;应用级别应用级别算法的合理性;算法的合理性;系统级别系统级别操作系统、数据库系统、系统软操作系统、数据库系统、系统软件等;件等;硬件级别硬件级别机器性能机器性能47 1 . 2 软件工程1 . 2 . 1 软件工程介绍软件工程介绍一、一、“软件工程软件工程”的典型定义的典型定义 1 )1968 年,第一届年,第一届 NATO 会议会议为了经济地获得可靠的且能在实际机器上有效地运为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的行的软件,而

32、建立和使用完善的工程工程原理。原理。 2 ) 1993 年,年,IEEE/CS(电气电子工程师协会计算机科学分(电气电子工程师协会计算机科学分会)会) 将系统化的、规范的、可度量的方法应用于软将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将件的开发、运行和维护的过程,即将工程化工程化应用于应用于软件中。软件中。 对对 中提到的各种方法的研究中提到的各种方法的研究48 3 ) 其他学者的定义Boehm :运用现代科学技术知识来设计并构造计:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的算机程序及为开发、运行和维护这些程序所必需的相关文件资料

33、。相关文件资料。Fritz Bauer: 建立并使用完善的建立并使用完善的工程化工程化原则,以较原则,以较经济的手段获得能在实际机器上有效运行的可靠软经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法件的一系列方法所有定义都强调在软件开发过程中,应用工所有定义都强调在软件开发过程中,应用工程化原则的重要性程化原则的重要性百度一下“工程化”即系统化、模块化、规范化系统化、模块化、规范化的一个过程。指将具有一定规模数量的单个系统或功能部件,按照一定的规范,组合成一个模块鲜明、系统性强的整体。工程化往往包含大量学科和学科分支的知识,是一个复杂的系统工程过程!49 软件工程的主要研究内容软件工

34、程的主要研究内容: :软件开发技术软件开发技术: :软件开发方法学软件开发方法学 软件开发过程软件开发过程 软件工具和软件工程环境软件工具和软件工程环境 软件工程管理软件工程管理: :软件管理学软件管理学 软件经济学软件经济学 软件心理学软件心理学 软件工程所包含的内容不是一成不变的,随软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。应用发展的眼光看待它。软件工程是一门交叉学科软件工程与一般工程的差异软件工程与一般工程的差异 软件是逻辑产品而不是实物产品软件是逻辑产品而不是实物产品 软件的功能依赖于硬件

35、和软件的运行环境以及人软件的功能依赖于硬件和软件的运行环境以及人们对它的操作们对它的操作 软件设计的复杂性软件设计的复杂性 软件特征:功能的多样性软件特征:功能的多样性 实现的多样性实现的多样性 能见度低能见度低 软件结构合理性差软件结构合理性差 智力密集及知识产权保护智力密集及知识产权保护52 几个关于软件工程本质特性和基本原理的问题问题一:问题一: 软件工程适用范围?软件工程适用范围? 问题二:软件工程如何控制系统开发的复杂问题二:软件工程如何控制系统开发的复杂性的?性的?问题三:以你的经验,举例说明一个成熟的问题三:以你的经验,举例说明一个成熟的软件通常采用什么方法来适应现实世界的变软件

36、通常采用什么方法来适应现实世界的变化的?化的?53 几个关于软件工程本质特性和基本原理的问题问题四:假设某软件公司,能为同一个用户问题四:假设某软件公司,能为同一个用户开发两个不同层次的软件:一个层次的软件开发两个不同层次的软件:一个层次的软件功能非常强大,在满足用户所有需求的基础功能非常强大,在满足用户所有需求的基础上,还能提供大大超过用户需求的其他更多上,还能提供大大超过用户需求的其他更多更强的功能;另一个层次的软件仅仅能满足更强的功能;另一个层次的软件仅仅能满足用户需求,但没有提供其他额外的功能。请用户需求,但没有提供其他额外的功能。请问如果你是项目负责人,你会选择为客户开问如果你是项目

37、负责人,你会选择为客户开发那个层次的软件?发那个层次的软件?问题五:协同工作有什么重要性?问题五:协同工作有什么重要性?54 几个关于软件工程本质特性和基本原理的问题问题五:怎样理解问题五:怎样理解“在软件工程领域中是由具有一在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产种文化背景的人替具有另一种文化背景的人创造产品品”这句话?这句话?问题六:某软件开发,由于时间和资金都非常紧迫,问题六:某软件开发,由于时间和资金都非常紧迫,在需求分析人员非常认真、仔细地做完需求分析之在需求分析人员非常认真、仔细地做完需求分析之后,说:我们可以保证我们的需求分析正确性,不后,说:我们可

38、以保证我们的需求分析正确性,不用花时间检查了,设计人员可以直接拿着这份分析用花时间检查了,设计人员可以直接拿着这份分析报告,马上开始设计。如果你是项目负责人,你会报告,马上开始设计。如果你是项目负责人,你会如何决定?为什么?如何决定?为什么?问题七:在需求分析完成并获得了用户的肯定,也问题七:在需求分析完成并获得了用户的肯定,也通过了评审,进入软件设计阶段之后,用户的想法通过了评审,进入软件设计阶段之后,用户的想法有了改变,提出了一个新的要求,此时如果你是项有了改变,提出了一个新的要求,此时如果你是项目负责人,应该怎样做?目负责人,应该怎样做?55 二、软件工程本质特性(2)1 )软件工程关注

39、于大型程序的构造。)软件工程关注于大型程序的构造。2 )软件工程的中心课题是控制复杂性)软件工程的中心课题是控制复杂性主要考虑:如何分解和集成主要考虑:如何分解和集成为什么要分解:为什么要分解: G .Miller, “7士士 2 ” 原则原则 3 )软件经常变化)软件经常变化 4 )开发软件的效率非常重要)开发软件的效率非常重要 5 )和谐地合作是开发软件的关键)和谐地合作是开发软件的关键 6 )软件必须有效地支持它的用户)软件必须有效地支持它的用户 7 )在软件工程领域中是由具有一种文化背景的人)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品替具有另一种文化背景的

40、人创造产品 扩展定义:扩展定义:软件软件=知识程序知识程序+数据数据+文档文档56 1 . 2 . 2 软件工程的基本原理B.W.Boehm, 1983 年提出:年提出: 1 )用分阶段的生命周期计划严格管理)用分阶段的生命周期计划严格管理 2 )坚持进行阶段评审)坚持进行阶段评审 3 )实行严格的产品控制基线)实行严格的产品控制基线 基线(基线(baseline)控制)控制 4 )采用现代程序设计技术)采用现代程序设计技术 5 )结果应能清楚地审查)结果应能清楚地审查 6 )开发小组的人员应该少而精)开发小组的人员应该少而精 7 )承认不断改进软件工程实践的必要性)承认不断改进软件工程实践的

41、必要性57 1 . 2 . 3 软件工程方法学l软件工程包括软件工程包括“管理管理”和和“技术技术”两方面内两方面内容:容:管理管理 对人、财、物的合理使用和配置;对人、财、物的合理使用和配置;技术技术 指软件开发中采用的方法、工具和指软件开发中采用的方法、工具和过程。过程。l什么是什么是软件工程方法学软件工程方法学?通常把在软件生命周期全过程中使用的一整套通常把在软件生命周期全过程中使用的一整套技术方法技术方法的集合称为方法学的集合称为方法学(methodology),也称为范型也称为范型(paradigm)。)。58 一、软件工程方法学三要素:工具、方法和过程要素一:软件工程过程要素一:软

42、件工程过程规定了完成各项任务的工作规定了完成各项任务的工作步骤。步骤。要素二:软件工程方法要素二:软件工程方法完成软件开发的各项任务的完成软件开发的各项任务的技术方法,为软件开发提供技术方法,为软件开发提供了了“如何做如何做”的技术。的技术。如项目计划与估算、软件系如项目计划与估算、软件系统需求分析、数据结构、系统统需求分析、数据结构、系统总体结构的设计、算法过程的总体结构的设计、算法过程的设计、编码、测试以及维护等。设计、编码、测试以及维护等。要素三:软件工程工具要素三:软件工程工具计算机辅助软件工程计算机辅助软件工程 CASE ( computer Aided sottware Engin

43、eering ) ,为软件工,为软件工程方法提供自动或半自动的程方法提供自动或半自动的软件支撑环境。软件支撑环境。59 二、软件工程方法学思想两种:两种:1、 传统方法学(生命周期方法学或结构化传统方法学(生命周期方法学或结构化范型)范型) 2、面向对象方法、面向对象方法60 1.传统方法学传统方法学(生命周期方法学或结构化范型)生命周期方法学或结构化范型)l采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务;l把软件生命周期划分为若干个阶段,按顺序完成每个阶段的任务;l每个阶段开始和结束都有严格的标准,对任何两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始

44、标准;l每一个阶段结束之前都必须进行正式严格的技术审查和管理复审61 传统方法学的优点:l分解任务,分工合作,降低整个软件开发分解任务,分工合作,降低整个软件开发工程的困难;工程的困难;l采用科学的管理技术和良好的技术方法对采用科学的管理技术和良好的技术方法对每个阶段成果都进行严格的审查。保证了软每个阶段成果都进行严格的审查。保证了软件的质量。件的质量。传统方法学的缺点:传统方法学的缺点:把数据和操作人为地分离成两个独立的部分,把数据和操作人为地分离成两个独立的部分,增加了软件开发与维护的难度。增加了软件开发与维护的难度。62 2 、面向对象方法学、面向对象方法学( OO,Object- or

45、iented ) 模拟人类习惯的思维方式,使开发软件的模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空题的方法与过程,从而使描述问题的问题空间(也称为问题域)与实现解法的解空间间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。(也称为求解域)在结构上尽可能一致。63 面向对象方法学 4 要点l把对象(把对象( object )作为融合了数据及在数)作为融合了数据及在数据上的操作行为的统一的软件构件。据上的操作行为的统一的软件构件。l把所有对象都划分成类(把所有对象都划分成

46、类(class )。)。l按照父类(或称为基类)与子类(或称为按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。层次结构的系统(也称为类等级)。l对象彼此间仅能通过发送消息互相联系。对象彼此间仅能通过发送消息互相联系。64 二者区别l传统方法学:强调自顶向下顺序地完成软传统方法学:强调自顶向下顺序地完成软件开发的各阶段任务。件开发的各阶段任务。l面向对象方法:是主动地多次反复迭代的面向对象方法:是主动地多次反复迭代的演化过程演化过程65 1.3 软件生命周期一、什么是软件生命周期(一、什么是软件生命周

47、期( life cycle)指软件孕育、诞生、成长、成熟、衰亡的生存过程指软件孕育、诞生、成长、成熟、衰亡的生存过程 GB 一一 8567 中将软件生命周期分为中将软件生命周期分为 7 个阶段个阶段:可行性研究和项目开发计划;可行性研究和项目开发计划;需求分析;需求分析;总体设计;总体设计;详细设计;详细设计;编码;编码;测试;测试;维护维护66 本教材对软件生命周期的划分67 1 、软件定义时期任务:任务:l 确定软件开发工程必须完成的总目标;确定软件开发工程必须完成的总目标;l 确定工程的可行性;确定工程的可行性;l 导出实现工程目标应该采用的策略及系统导出实现工程目标应该采用的策略及系统

48、必须完成的功能;必须完成的功能;l 估计完成该项工程需要的资源和成本,并估计完成该项工程需要的资源和成本,并且制定工程进度表。且制定工程进度表。通常分为通常分为问题定义、可行性研究和需求分析问题定义、可行性研究和需求分析三个阶段。三个阶段。68 软件定义时期的三个阶段 问题定义阶段回答:问题定义阶段回答: 回答:回答:“要解决的问题是什么?要解决的问题是什么?” 可行性研究阶段可行性研究阶段回答:回答:“对于上一个阶段所确定的问题有行得通的对于上一个阶段所确定的问题有行得通的解决办法吗?解决办法吗? 需求分析(需求分析(Requirement Analysis)回答回答“为了解决这个问题,目标

49、系统必须做什么为了解决这个问题,目标系统必须做什么 ? 用正式文档准确地记录对目标系统的需求,这份文用正式文档准确地记录对目标系统的需求,这份文档通常称为档通常称为规格说明书规格说明书( specification )。)。69 2 、软件开发时期具体设计和实现前一个时期定义的软件,通常分为具体设计和实现前一个时期定义的软件,通常分为四个阶段:四个阶段: 总体设计(概要设计)总体设计(概要设计)回答:回答:“概括地说概括地说,应该怎样实现目标系统?,应该怎样实现目标系统? ” 根据需求分析,根据需求分析,设计软件的设计软件的体系结构;体系结构;定义结构中定义结构中的的组成模块。组成模块。 详细

50、设计(模块设计)详细设计(模块设计)回答:回答:“应该怎样应该怎样具体地具体地实现这个系统呢?实现这个系统呢? ” 对每个模块要完成的工作进行具体的描述,为源程对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。编写设计说明书,提交评审。序编写打下基础。编写设计说明书,提交评审。 二者统称二者统称系统设计系统设计 70 软件开发时期四个阶段 程序编写(程序编写( Coding, Programming ) :把软件设计转换成计算机可以接受的程序代把软件设计转换成计算机可以接受的程序代码。码。 软件测试(软件测试(Testing ) : 按规定的各项需求,按规定的各项需求,逐项进行有效性

51、测试,决定已开发的软件是逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,包括否合格,能否交付用户使用,包括单元测试单元测试和组装测试。和组装测试。二者统称二者统称系统实现系统实现71 3、运行维护(软件维护)时期使软件持久的满足用户的需要。包括:使软件持久的满足用户的需要。包括:l改正性维护:改正性维护:运行中发现了软件中的错误运行中发现了软件中的错误需要修正。需要修正。l适应性维护:适应性维护:为了适应变化了的软件工作为了适应变化了的软件工作环境,需做适当变更。环境,需做适当变更。l完善性维护:完善性维护:当用户有新的要求时,应该当用户有新的要求时,应该及时改进软件以满足用户

52、的要求。及时改进软件以满足用户的要求。l预防性维护预防性维护: 即修改软件为将来的维护活动即修改软件为将来的维护活动预先做准备。预先做准备。72 几个关干软件生命周期阶段的问题问题一:开发一个软件大概需要多少资金、问题一:开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?定?相对而言,在哪个阶段与用户交流最多?问题二:系统分析员主要工作在哪个时期?问题二:系统分析员主要工作在哪个时期?程序员主要工作在哪个时期?程序员主要工作在哪个时期?问题三:软件定义时期的三个阶段,各自回问题三:软件定义时期的三个

53、阶段,各自回答什么关键问题?答什么关键问题?问题四:软件开发时期有几个阶段?各自回问题四:软件开发时期有几个阶段?各自回答什么关键问题?答什么关键问题?73 问题五:软件体系结构最早是在哪个阶段决问题五:软件体系结构最早是在哪个阶段决定的?定的?问题六:详细设计与程序编写阶段有什么样问题六:详细设计与程序编写阶段有什么样的密切联系?的密切联系?问题七:问题七:“软件测试是为了验证系统的正确软件测试是为了验证系统的正确性性”这句话对吗?这句话对吗?问题八:软件维护有那几种?各有什么功能?问题八:软件维护有那几种?各有什么功能?74 1.4 软件过程( Software Process )1 、什

54、么是软件过程、什么是软件过程软件过程是为了获得高质量软件所需要完成软件过程是为了获得高质量软件所需要完成的的一系列任务的框架一系列任务的框架,它规定了完成各项任,它规定了完成各项任务的务的工作步骤工作步骤。 ISO 9000的定义:的定义:“过程过程”是使用资源将输入转化为输出的活动是使用资源将输入转化为输出的活动所构成的所构成的系统系统。 “系统系统”是相互关联或相互作用的一组要素。是相互关联或相互作用的一组要素。过程过程是软件工程三要素之一。是软件工程三要素之一。通常用通常用软件生命周期模型软件生命周期模型来描述来描述。75 2 、什么是软件生命周期模型又称:软件开发模型软件过程模型软件又

55、称:软件开发模型软件过程模型软件工程范型。工程范型。指软件项目从指软件项目从需求定义需求定义直至直至软件经使用后废软件经使用后废弃弃为止,跨越整个生存周期的系统开发、运为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的作和维护所实施的全部过程、活动和任务的结构框架结构框架。常见的有:瀑布模型、演化模型、螺旋模型、常见的有:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型喷泉模型、智能模型76 1.4.1瀑布模型(waterfall model)19701970年年, ,由由W.RoyceW.Royce提出提出 一、瀑布模型的过程一、瀑布模型的过程 1 、传统的瀑布模型、

56、传统的瀑布模型 从上一阶段接受本阶段从上一阶段接受本阶段的工作对象,作为输的工作对象,作为输 入;入; 利用输入,完成本阶段活利用输入,完成本阶段活动的内容动的内容 本阶段的工作成果作为输出本阶段的工作成果作为输出传入下一阶段。传入下一阶段。77 瀑布模型 实际的瀑布模型 需求分析需求分析验证验证规格说明规格说明验证验证设计设计验证验证编码编码测试测试综合测试综合测试维护维护变化的需求变化的需求验证验证 增加了一个评审活动,增加了一个评审活动,评审每个阶段完成的评审每个阶段完成的活动,若得到确认,活动,若得到确认,则进行下一阶段的活则进行下一阶段的活动;否则返回前一阶动;否则返回前一阶段,甚至

57、更前阶段返段,甚至更前阶段返工;工;78 二、瀑布模型特点 阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性 推迟实现的观点推迟实现的观点 质量保证的观点质量保证的观点79 三、瀑布模型优缺点优点:优点:l 可强迫开发人员采用规范的方法;可强迫开发人员采用规范的方法;l 严格地规定了每个阶段必须提交的文档;严格地规定了每个阶段必须提交的文档;l 要求每个阶段的所有产品都必须经过质量保证要求每个阶段的所有产品都必须经过质量保证小组的仔细验证;小组的仔细验证;缺点:缺点: 无法解决软件需求无法解决软件需求不明确或不准确不明确或不准确的问题;可能的问题;可能导致最终开发的产品不能真正满足用户需要。导

58、致最终开发的产品不能真正满足用户需要。 瀑布模型比较适合开发瀑布模型比较适合开发需求明确的软件需求明确的软件。80 1 . 4 . 2 快速原型模型1 、什么是、什么是“原型原型” ? 原型是快速实现和运行的早期版本,反映原型是快速实现和运行的早期版本,反映最终系统部分重要特性。最终系统部分重要特性。 常见的原型实例:人机界面;系统主要功常见的原型实例:人机界面;系统主要功能。能。 优点:优点: 1 、通常能反映用户真实需求;、通常能反映用户真实需求; 2 、软件产品的开发基本上是线性顺序进行、软件产品的开发基本上是线性顺序进行的。的。81 2 、快速原型的过程如右图。如右图。获得用户的基本需求说明,据此获得用户的基本需求说明,据此快速建立一个小型软件系统快速建立一个小型软件系统用户试用,对其评价;用户试用,对其评价;开发人员按照用户的意见快速地开发人员按照用户的意见快速地修改原型系统,获得新的原型版修改原型系统,获得新的原型版本,再请用户试用,如此反复,本,再请用户试用,如此反复,直到满足用户的要求;直到满足用户的要求;用户确认原型系统之后,开发人用户确认原型系统之后,开发人员据此书写规格说明文档,进行员据此书写规格说明文档,进行下一步开发。下一步开发。82 1.4.3 增量(渐增)模型 把软

温馨提示

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

评论

0/150

提交评论