软件工程课件第1章 软件工程概述.pptx
《软件工程课件第1章 软件工程概述.pptx》由会员分享,可在线阅读,更多相关《软件工程课件第1章 软件工程概述.pptx(36页珍藏版)》请在文库网上搜索。
1、第第1章章 软件工程概述件工程概述本章内容:1、软件危机出现、爆发的原因和软件危机的表现2、软件工程的概念、软件生存期、软件工程方法和工具3、七种典型的软件生存期1.1 软件危机和件危机和软件工程件工程20 世纪60年代以前,软件设计往往只是为了特定的应用在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,通常也不存在文档资料,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、自给自足的私人化的软件生产方式。60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大;高级语言的出现、操作系统的发展和第一代数据库管理系
2、统的诞生,使得软件系统规模越来越大、软件可靠性问题也越来越突出,私人化的软件生产方式不能满足社会日益增长的软件需求。软件的发展速度远远滞后于硬件的发展速度,60年代末软件危机爆发。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是“不能正常运行的”软件才具有的,实际上几乎所有软件都不同程度地存在这些问题。软件危机主要表现,如:对软件开发成本和进度估计不准确、软件产品的质量靠不住、用户对“已完成的”软件系统不满意、软件开发速度跟不上、软件不可维护以及没有适当的文档资料等等。1.1.1 软件危机爆件危机爆发的原因的原因 软件危机爆发的主要原因有:(1)软件,作为计
3、算机系统的逻辑部件,很难检验开发的正确性且开发的质量。一旦在软件维护阶段发现错误,常意味着要修改原来的设计,维护的费用十分惊人。(2)软件开发的过程是多人分工、分阶段完成的,人员之间的沟通和配合十分重要。但是,由于在实践的过程中没有采用工程化的方法,或多或少采用了一些错误的方法和技术,这是造成软件危机的主要原因。(3)开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的要求。1.1.1 软件危机爆件危机爆发的原因的原因 软件危机爆发的主要原因有:(4)软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。没有完整、一致的文档资料;资金分配混乱,人员组织不合理,进度安
4、排无序等等。(5)在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完成之后进行的,因此是极端艰巨复杂的工作,需要花费很大的代价。在软件开发的不同阶段进行修改需要付出的代价是很不相同的。必须把软件维护的观念引入软件开发的各个阶段,建立起软件开发与维护的正确关系。1.1.1 软件危机爆件危机爆发的原因的原因 为了解决软件危机,1968和1969年连续两次召开的NATO会议中,提出了软件工程的概念。Fritz Bauer对软件工程的定义是:“软件工程就是为了经济地获得可靠的且能在实际机器上有效运行的软件,而建立和使用的完善的工程原理。”著名的软件工程专家BWBoehm综合了学者们
5、的意见并总结了TRW公司多年开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理。1.1.2 软件工程的概念件工程的概念软件工程的七条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性1.1.2 软件工程的概念件工程的概念软件工程可以给出这样一个解释软件工程可以给出这样一个解释:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够
6、得到的最好技术结合起来,从而经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.1.2 软件工程的概念件工程的概念软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个过程为软件生命周期或软件生存期。人类解决复杂问题时普遍采用对问题进行分解然后再分别解决各个子问题的策略。软件工程采用的生存期方法学就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期划分为若干个阶段,每个阶段有相对独立的任务。此方法学可以大大提高软件开发的生产率和成功率。1.2 软件生存期件生存期软件生命周期:软件定义、软件开发和软件维护三个时期。软件定义时期:确定软件开发必须完成的总目标和可行
7、性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。软件定义时期分成三个阶段:问题定义、可行性研究和需求分析。开发时期:具体设计和实现在前一个时期定义的软件,通常包括四个阶段:总体设计、详细设计、编码、测试。维护时期:使软件持久地满足用户的需要。主要包括:改正错误;改进软件适应新的环境或满足用户的新需要。1.2 软件生存期件生存期1问题定定义回答的关键问题是:“要解决的问题是什么?”2可行性研究可行性研究回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”3需求分析需求分析这个阶段准确地确定“为了解决这个问题,目标系统
8、必须做什么”,主要是确定目标系统必须具备哪些功能。4总体体设计回答的关键问题是:“概括地说明,应该如何解决这个问题?”5详细设计回答的关键问题:“应该怎样具体地实现这个系统呢?”1.2 软件生存期件生存期6编码和和单元元测试关键任务是写出正确的容易理解、容易维护的程序模块。7综合合测试关键任务是通过各种类型的测试使软件达到预定的要求。最基本的测试是集成测试和验收测试。8软件件维护关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动:改正性维护,适应性维护,完善性维护,预防性维护。1.2 软件生存期件生存期通常将软件生命周期中使用的一整套技术方法的集合称为方法学,就是从
9、时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。目前使用最广泛的软件工程方法学为结构化方法和面向对象方法。软件工程方法学包括三要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术;软件工程工具为软件开发提供了自动的或半自动的软件支撑环境;软件工程过程是为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤。1.3 软件工程方法件工程方法1.3.1 结构化方法构化方法结构化方法是传统的软件开发方法,面向对象开发方法出现前应用最广泛。结构化方法的基本思想:用系统工程的
10、思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对系统进行分析与设计。具体来说,就是先将整个系统开发过程划分为若干个相对独立的阶段,如系统规划、系统分析、系统设计、系统实施等。在前三个阶段坚持自顶向下先考虑整体,后考虑局部。在系统实施阶段,则应坚持自底向上地逐步实施。从最底层模块做起(编程),然后按照系统设计的结构,将模块一个个拼接到一起进行调试,自底向上、逐渐地构成整体系统。1.3 软件工程方法件工程方法结构化方法主要特点:(1)自顶向下整体性的分析与设计和自底向上逐步实施的系统开发过程。(2)用户至上。(3)深入调查研究。(4)严格区分工作阶段。(5)充分预计可能发生的变化
11、。(6)开发过程工程化。1.3 软件工程方法件工程方法1.3.2 面向面向对象方法象方法面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法。面向对象的分析(Object Oriented Analysis,简称OOA)面向对象的设计(Object Oriented Design,简称OOD)面向对象的实现(Object Oriented Implementation,简称OOI)面向对象的建模语言很多,目前使用最广泛的是统一建模语言(Unified Modeling Language,简称UML),它将Booch、Ru
12、mbaugh和Jacobson等各自独立的OOA和OOD方法中最优秀的特色组合成一个统一的方法。1.3 软件工程方法件工程方法面向对象方法的主要优点:(1)与人类习惯的思维方法一致,使用者和维护人员都容易理解,在软件维护中可维护性也较高,并且易于测试和调试。(2)稳定性好,对软件的局部进行修改时,不会引起整体的变化,而且对局部修改容易实现。(3)面向对象方法的可重用好,而且把大问题分解成相互独立的小问题处理,降低了开发的技术难度,管理容易,成本降低,容易开发大型软件。总之,在编程方面,结构化方法有着比较强的优势,它思路清晰,条理严谨,便于阅读理解;而面向对象方法更注重用户的使用,它操作简单,界
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程课件第1章 软件工程概述 软件工程 课件 概述