{管理信息化信息化知识}第1章软件工程学概述

上传人:卓****库 文档编号:140334929 上传时间:2020-07-28 格式:PPTX 页数:54 大小:600.20KB
返回 下载 相关 举报
{管理信息化信息化知识}第1章软件工程学概述_第1页
第1页 / 共54页
{管理信息化信息化知识}第1章软件工程学概述_第2页
第2页 / 共54页
{管理信息化信息化知识}第1章软件工程学概述_第3页
第3页 / 共54页
{管理信息化信息化知识}第1章软件工程学概述_第4页
第4页 / 共54页
{管理信息化信息化知识}第1章软件工程学概述_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《{管理信息化信息化知识}第1章软件工程学概述》由会员分享,可在线阅读,更多相关《{管理信息化信息化知识}第1章软件工程学概述(54页珍藏版)》请在金锄头文库上搜索。

1、软件工程导论,天津市大学软件园, 本章学习目标: 了解软件危机的发生原因和典型表现 识记软件工程的概念和基本原理 识记软件生命周期和软件过程的概念 识记常用的生命周期模型,第1章 软件工程学概述,第1章 软件工程学概述, 1.1 软件危机 1.2 软件工程 1.3 软件生命周期,第1章 软件工程学概述, 1.1 软件危机 1.2 软件工程 1.3 软件生命周期,1.1.1 软件的定义, 软件的经典定义: 软件=“完成特定功能的程序+数据结构+文档” 软件的特征: 1、软件是开发的,而不是制造的; 2、软件不磨损,但退化; 3、自定义。,1.1.1 软件的定义, 软件发展中的相关问题: 硬件的发

2、展超过软件; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使升级和维护十分困难。,1.1.1 软件危机的定义, 定义 “在计算机软件的开发和维护过程中所遇到的一系列严重的问题。”,1.1.2 软件危机的表现,(1)对软件开发成本和进度的估计常常很不准确。 实际成本往往大大超过估计成本,或开发进度比计划推迟几个月或一年以上。这种现象极大地影响了软件开发组织的信誉,也会引起用户的强烈不满。 (2)软件产品质量较差,可靠性低。 软件开发过程中不能坚持严格的审查、复审和测试,使得软件可靠性差、质量问题多。,1.1.2 软件危机的表现,(3)用户对开

3、发出来的软件产品不满意。 开发人员与用户之间的交流不充分,仅对用户需求有了一个模糊的认识就匆忙开始写程序。这样的结果就是用户对于所谓已经完成的软件很不满意。 (4)软件常常是不可维护的。 在实际项目中,很多程序的错误往往难以修改,而且不能适应软硬件环境的变化,也无法添加用户需要的一些新功能。,1.1.2 软件危机的表现,(5)软件产品缺少应有的文档资料。 软件=程序+数据+文档。开发人员对文档认识不足,不能保证在开发过程中文档的完整性和准确性。缺少文档资料会造成软件开发、管理、审查、用户交流、软件维护等方面的诸多问题。 (6)软件产品的供不应求。 软件开发的生产率远远低于计算机硬件发展速度和用

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

5、放大效应”。 轻视软件维护将是一个重大的错误。软件开发时期各阶段的关键目标都是提高软件的可维护性。,1.1.3 产生软件危机的原因,第1章 软件工程学概述, 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程,1.2 软件工程,为了更有效地开发与维护软件,软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科计算机软件工程学(简称为软件工程)。,1.2.1 软件工程的概念, 定义 指导软件开发与维护的工程科学 采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济地开发出高质量的软件并有

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

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

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

9、括结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。 - 这种方法学将软件生命周期划分为若干个阶段,然后顺序完成各个阶段的任务。 每个阶段依赖上一个阶段产生的结果,并将上一阶段工作进一步具体化。,1.2.3 软件工程方法学,2. 面向对象方法学 - 以数据为主线,将数据和其上的操作紧密结合起来。面向对象方法学的四要素:类+对象+继承+消息传递。 - 面向对象的方法学是尽量模拟人类习惯的思维方式,使软件开发过程更接近人类认知模式,做到问题空间与解空间在结构上一致。 - 运用面向对象方法学开发出来的软件产品一般是由很多较小的独立对象组成,从而降低了软件产品的复杂性,增强了可理解性,使得

10、开发和维护更为简单有效。,第1章 软件工程学概述, 1.1 软件危机 1.2 软件工程 1.3 软件生命周期,1.3.1 软件生命周期的概念, 定义 一个软件从定义、开发、使用和维护,直至最终被废弃,要经历的漫长的时期称为软件生命周期。,1.3.1 软件生命周期的概念, 构成 3个时期:软件定义、软件开发和运行维护 各时期任务: 软件定义时期:确定软件开发的总目标和工程的可行性;导出实现策略和系统必须完成的功能;进行成本效益的估算;制定开发计划等 。 软件开发时期:具体设计和实现前一个时期定义的软件。 维护时期:使软件持久地满足用户的需要。,1.3.1 软件生命周期的概念, 构成 3个时期:软

11、件定义、软件开发和运行维护 8个阶段:, 问题定义 可行性研究 需求分析, 总体设计 详细设计 编码和单元 测试 综合测试, 软件维护,阶段1: 问题定义 “需要解决的问题是什么?” 确定问题的性质 软件目标和规模 形成书面报告。,1.3.2 各阶段的基本任务,阶段2: 可行性研究 “确定软件系统是否值得去解” 高层次的系统分析和设计 估算系统的成本和效益 可行性研究报告,1.3.2 各阶段的基本任务,阶段3: 需求分析 “解决这些问题需要系统做什么?” 与用户的交流 生成系统的逻辑模型 软件需求规格说明书,1.3.2 各阶段的基本任务,阶段4: 总体设计(概要设计) “应该怎样实现目标系统?

12、” 设计出实现目标系统的方案 设计软件结构,确定模块及之间关系 概要设计说明书,1.3.2 各阶段的基本任务,阶段5: 详细设计(模块设计) “如何具体地实现这个系统?” 详细的设计每个模块的算法和数据结构,1.3.2 各阶段的基本任务,阶段6: 编码和单元测试 “写代码,测试每个模块!” 选取程序设计语言 写出容易理解和维护的程序模块 对每一个模块进行严格的测试,1.3.2 各阶段的基本任务,阶段7: 综合测试 “通过各类测试和调试来完善软件” 集成测试 + 验收测试(用户参加) 保存测试计划、测试方案和测试结果,1.3.2 各阶段的基本任务,阶段8: 软件维护 “通过各种必须的维护活动使系

13、统持久地满足用户的需要!” 改正性维护 适应性维护 完善性维护 预防性维护,1.3.2 各阶段的基本任务,1.3.3软件生命周期的模型, 定义 在软件开发过程中,人们通常使用生命周期模型来简要地描述软件过程。生命周期模型规定了生命周期各个阶段和它们执行的顺序,因此也被称为过程模型。,1. 瀑布模型线性模型之一,在20世纪80年代之前,瀑布模型一直是惟一被广泛采用的生命周期模型。传统软件工程方法 学的软件过程,基本上可以用瀑布模型来描述。,瀑布模型,1. 瀑布模型线性模型之一,瀑布模型的特点: (1)各阶段之间有依赖性和严格的顺序性。 (2)推迟实现。 典型特点 (3)严格的阶段质保。 (4)文

14、档驱动。 瀑布模型的问题: (1)实际的项目很少顺序严格 (2)用户往往难以给出具体、正确、完整的要求 (3)开发人员“阻塞状态”严重,1. 瀑布模型线性模型之一,2. 原型模型,原型模型是一个快速开发的过程,首先和用户沟通进行主要功能的需求分析和快速设计,然后建立一个原型,再请用户进行评价和反馈。开发人员根据用户的反馈进一步细化需求,改进原型系统的设计,如此反复直至用户满意。,原型模型,2. 原型模型,快速原型模型的特点: (1) 出品速度快。 (2) 逐步求精。 (3) 开发阶段迭代。 快速原型模型的问题: (1) 实现过程中不应有的折衷方案。 (2) 开发者急于完成原型而忽略了整体设计和

15、可维护性; (3) 用户的参与过多也造成了软件开发管理的混乱。,2. 原型模型,增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。,增量模型,3. 增量模型,软件系统,3. 增量模型,增量模型,增量模型的特点: (1) 结合了线性模型和原型模型的特点; (2) 每个增量可以结合原型法; (3) 系统的问世提前“增量1” 增量模型的问题: 开放的软件体系结构 中心思想:“渐进开发,逐步完善”,3. 增量模型,- 使用增量模型开发时,第一个增量往往是系统中的核心构件,同时,要求产品分解成增量构件的规模应当适中。 - 如何不破坏已经开发的构件将新

16、的构件集成到一个产品中是增量模型的一个难点。 - 增量模型的提出很好地解决了线性模型中的人员阻塞问题,尤其是在项目开始初期开发人员不足的时候,能有效地规避技术风险。,3. 增量模型,喷泉模型是典型的面向对象的软件过程模型之一,“喷泉”较好地体现了面向对象软件开发过程迭代和无缝的特性。,4. 喷泉模型,4. 喷泉模型,(1)假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。,问题讨论情景分析,解: 对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。,问题讨论情景分析,(2)假设你被任命为一家软件公司

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号