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

下载本文档

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

文档简介

1、天津市大学软件学院天津市大学软件学院 本章学习目标:本章学习目标: 了解软件危机的发生原因和典型表现 识记软件工程的概念和基本原理 识记软件生命周期和软件过程的概念 识记常用的生命周期模型第1章 软件工程学概述第1章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.3 软件生命周期第1章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.3 软件生命周期1.1.1 软件的定义 17世纪60年代,Augusta Ada Lovelace为分析机编写程序,包括计算三角函数、级数相乘、伯努利函数等的程序 软件伴随着ENIAC的问世而诞生 20世纪60年代,美国出现专门教授编写软件的专业

2、1.1.1 软件的定义 软件(Software)的经典定义:软件软件=“完成特定功能的程序完成特定功能的程序+数据结构数据结构+文档文档” 程序:按照事先设计的功能性能要求执行的指令序列; 文档:与程序开发维护和使用有关的各种图文数据1.1.1 软件的定义 软件的特征:1、软件是抽象的逻辑实体2、软件是开发的,而不是制造的; 软件的质量取决于开发过程,而不是制造过程3、软件不磨损,但退化,不适应新的软硬件环境;4、自定义,定制,需要复用及管理。1.1.1 软件的定义 软件规模的分类:类型类型参加人数参加人数研制日期研制日期产品规模产品规模/代码行数代码行数微型11-4周0.5K行小型11-6周

3、1-2K行中型2-51-2年5K-50K行大型5-202-3年50K-100K行甚大型100-10004-5年1M行极大型1000以上5-10年1M-10M行1.1.1 软件的定义 软件发展中的相关问题: 硬件的发展超过软件; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使升级和维护十分困难。1.1.2 软件危机的定义 定义定义 “在计算机软件的开发和维护过程在计算机软件的开发和维护过程中所遇到的一系列严重的问题。中所遇到的一系列严重的问题。”Software Crisis1.1.2 软件危机的表现(1)对软件开发成本和进度的估计常常很不准

4、确。)对软件开发成本和进度的估计常常很不准确。 实际成本往往大大超过估计成本,或开发进度比计划推迟几个月或一年以上。这种现象极大地影响了软件开发组织的信誉,也会引起用户的强烈不满。(2)软件产品质量较差,可靠性低。)软件产品质量较差,可靠性低。 软件开发过程中不能坚持严格的审查、复审和测试,使得软件可靠性差、质量问题多。 1.1.2 软件危机的表现(3)用户对开发出来的软件产品不满意。)用户对开发出来的软件产品不满意。 开发人员与用户之间的交流不充分,仅对用户需求有了一个模糊的认识就匆忙开始写程序。这样的结果就是用户对于所谓已经完成的软件很不满意。(4)软件常常是不可维护的。)软件常常是不可维

5、护的。 在实际项目中,很多程序的错误往往难以修改,而且不能适应软硬件环境的变化,也无法添加用户需要的一些新功能。 1.1.2 软件危机的表现(5)软件产品缺少应有的文档资料。)软件产品缺少应有的文档资料。 软件=程序+数据+文档。开发人员对文档认识不足,不能保证在开发过程中文档的完整性和准确性。缺少文档资料会造成软件开发、管理、审查、用户交流、软件维护等方面的诸多问题。 (6)软件产品的供不应求。软件产品的供不应求。 软件开发的生产率远远低于计算机硬件发展速度和用户的需求,造成了软件产品的供不应求。1.1.3 产生软件危机的原因客观原因:客观原因:软件与硬件产品不同,软件是“开发的”而非“制造

6、的”。其开发过程难以管理和控制,产品质量也不好把握。软件没有“磨损”,但是它会不断“退化”。软件系统无法适应不断变化的环境和功能需求。软件都规模庞大,而程序的复杂性是随其规模的扩大呈指数增加。 主观原因:主观原因:对用户要求没有完整和准确的认识就匆忙编写程序。 对软件的开发过程的认识不准确。生命周期的每个阶段都有特定的工作和特点,都是不可逾越的。只有上一阶段工作完成,才能开始下一阶段的工作。 对软件质量的重视不够是造成软件开发成本激增的主要原因。注意软件开发过程中错误的“放大效应”。轻视软件维护将是一个重大的错误。软件开发时期各阶段的关键目标都是提高软件的可维护性。 1.1.3 产生软件危机的

7、原因第1章 软件工程学概述 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期1.2 软件工程 为了更有效地开发与维护软件,软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科计算机软件工程学计算机软件工程学(简称为软件工程软件工程)。 1.2.1 软件工程的概念 定义指导软件开发与维护的工程科学指导软件开发与维护的工程科学 采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济地开发出高质量的软件并有效维护它。 1.2.1 软件工程的概念 IEEE的定义 软件工程是把系统的、规范的、可

8、度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;对这些途径加以研究。 1.2.1 软件工程的概念 诸多软件工程的定义所揭示的软件工程软件工程的本质的本质认识是一致的: 软件工程一般更关注于大型软件系统的开发;其中核心任务是控制整个软件系统的复杂性,提高软件开发的效率,加强人员和技术的管理,更好地满足用户的需要。1.2.2 软件工程的基本原理(1)用分阶段的生命周期计划严格管理)用分阶段的生命周期计划严格管理 应该将软件开发和维护的漫长生命周期划分成若干个阶段,并针对每个阶段制定切实可行的计划,然后严 格按照计划对软件的开发和维护工作进行管理。 (2)坚持进行阶段评审)坚持进行

9、阶段评审 错误发现的越早,改正错误所付出的代价就越小。因此,开发人员应该坚持在每个阶段都进行严格的评 审,以便更早地发现和改正错误。 1.2.2 软件工程的基本原理(3)实行严格的产品控制)实行严格的产品控制 在软件开发的过程中不应随意修改需求,当改变需 求时,必须实行严格的产品控制以保持软件各个配置成 分的一致性。 (4)采用现代程序设计技术)采用现代程序设计技术 采用先进的技术不仅可以提高软件开发和维护的效率,而且还能有效地提高软件产品的质量。 1.2.2 软件工程的基本原理(5) 结果可以清楚地审查结果可以清楚地审查 应规定每个开发阶段的产品标准和文档要求,使得到的结果可以清楚地审查。

10、(6)开发小组成员少而精)开发小组成员少而精 软件开发小组人员要求素质高,而人数不宜过多。随着人数n的增加,通信路径也急剧增加。1.2.2 软件工程的基本原理(7)承认不断改进软件工程实践的必要性)承认不断改进软件工程实践的必要性 软件开发和维护的过程也需要随之改进。要主动采用最新的软件技术,而且还要不断总结经验和教训、收集历史数据帮助开发人员改进软件工程实践。1.2.3 软件工程方法学 软件生命周期全过程中使用的一整套技术方法的集合称为方法学。 软件工程方法学主要包含3个要素:方法、工具方法、工具和过程和过程。 目前使用最为广泛的软件工程方法学是传统方法传统方法学学和面向对象方法学面向对象方

11、法学。1.2.3 软件工程方法学1. 传统方法学传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(包括结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。这种方法学将软件生命周期划分为若干个阶段,然后顺序完成各个阶段的任务。 每个阶段依赖上一个阶段产生的结果,并将上一阶段工作进一步具体化。1.2.3 软件工程方法学2. 面向对象方法学面向对象方法学以数据为主线,将数据和其上的操作紧密结合起来。面向对象方法学的四要素:类+对象+继承+消息传递。面向对象的方法学是尽量模拟人类习惯的思维方式,使软件开发过程更接近人类认知模式,做到问题空间与解空间在结构上一致。运用面向对象方法学

12、开发出来的软件产品一般是由很多较小的独立对象组成,从而降低了软件产品的复杂性,增强了可理解性,使得开发和维护更为简单有效。第1章 软件工程学概述 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期软件生命周期1.3.1 软件生命周期的概念 定义 一个软件从定义、开发、使用和维护,直至最终被废弃,要经历的漫长的时期称为软件生命周期。1.3.1 软件生命周期的概念 构成3个时期:软件定义、软件开发和运行维护 各时期任务: 软件定义时期:确定软件开发的总目标和工程的可行性;导出实现策略和系统必须完成的功能;进行成本效益的估算;制定开发计划等 。 软件开发时期:具体设计和实现前一

13、个时期定义的软件。 维护时期:使软件持久地满足用户的需要。1.3.1 软件生命周期的概念 构成3个时期:软件定义软件定义、软件开发软件开发和和运行维护运行维护8个阶段: 问题定义问题定义 可行性研究可行性研究 需求分析需求分析 总体设计总体设计 详细设计详细设计 编码和单元编码和单元 测试测试 综合测试综合测试 软件维护软件维护阶段1: 问题定义 1.3.2 各阶段的基本任务阶段2: 可行性研究 1.3.2 各阶段的基本任务阶段3: 需求分析 1.3.2 各阶段的基本任务阶段4: 总体设计(概要设计) 1.3.2 各阶段的基本任务阶段5: 详细设计(模块设计) 1.3.2 各阶段的基本任务阶段

14、6: 编码和单元测试 1.3.2 各阶段的基本任务阶段7: 综合测试 1.3.2 各阶段的基本任务阶段8: 软件维护 1.3.2 各阶段的基本任务1.3.3软件生命周期的模型 定义 在软件开发过程中,人们通常使用生命周期模型来简要地描述软件过程。生命周期模型规定了生命周期各个阶段和它们执行的顺序,因此也被称为过程模型。1. 瀑布模型线性模型之一 在20世纪80年代之前,瀑布模型一直是惟一被广泛采用的生命周期模型。传统软件工程方法 学的软件过程,基本上可以用瀑布模型来描述。 瀑布模型 1. 瀑布模型线性模型之一瀑布模型的特点: 瀑布模型的问题:1. 瀑布模型线性模型之一 2. 原型模型 原型模型

15、是一个快速开发的过程,首先和用户沟通进行主要功能的需求分析和快速设计,然后建立一个原型,再请用户进行评价和反馈。开发人员根据用户的反馈进一步细化需求,改进原型系统的设计,如此反复直至用户满意。快速需求分析(用户沟通)构建/修改模型(快速设计)用户使用评价(运行测试)原型模型 2. 原型模型 2. 原型模型 增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。分析设计编码测试交付增量交付增量1分析设计编码测试交付增量交付增量2 项目时间分析设计编码测试交付增量交付增量n增量模型 3. 增量模型软件系统3. 增量模型增量模型 增量模型的特点:增量

16、模型的问题:3. 增量模型 - 使用增量模型开发时,第一个增量往往是系统中的核心构件,同时,要求产品分解成增量构件的规模应当适中。 - 如何不破坏已经开发的构件将新的构件集成到一个产品中是增量模型的一个难点。 - 增量模型的提出很好地解决了线性模型中的人员阻塞问题,尤其是在项目开始初期开发人员不足的时候,能有效地规避技术风险。 3. 增量模型 喷泉模型是喷泉模型是典型的面向对象的软件过典型的面向对象的软件过程模型之一程模型之一,“喷泉喷泉”较好地体现了面向较好地体现了面向对象软件开发过程对象软件开发过程迭代迭代和和无缝无缝的特性。的特性。4. 喷泉模型4. 喷泉模型问题讨论问题讨论情景分析情景分析解:解: 对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。问题讨论问题讨论情景分析情景分析问题讨论问题讨论情景分析情景分析解:解:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时、应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够

温馨提示

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

评论

0/150

提交评论