软件开发生命周期
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高端CASE: 支持软件过程的早期阶段,如分 析和设计 低端CASE: 支持实现和测试,如调试器,程 序分析系统,测试用例生成器和程序编辑器 等。
2004 IBM Software Institute
IBM Software Institute
优良软件属性
可维护性:不断进化,满足用户需求变 化; 可依赖型:可靠性、安全性、保密性等, 以及失败时不造成伤亡和损失。 有效性:不浪费内存和系统资源等 可用性:用户不需特殊努力即可操作。
原则:
程序设计方法回顾
IBM Software Institute
程序正确性证明
??调试能证明吗?
调试(debugging)的三个概念:
测试testing
Unit testing, integration testing, acceptance testing
确认validation(开发结束时进行的评价) 验证verification(开发过程中某阶段是否到达前 一阶段确定要求的活动)
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
软件工程与一般工程的差异
•逻辑产品而不是实物
•其功能依赖于人的操作和相关硬件而体现
•对软件产品的要求比一般有形产品来的复杂 •100万汇编语句,1万子功能,每功能2个实现,则 210000=103000 组合! •Hetgel负责软件研制工程时候: •几个人)时候,认为关键是方法学问题:
. 定义阶段——集中于“做什么” . 开发阶段——集中于“如何做” . 维护阶段——集中于“改变”
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
典型的保护性活动
. 软件项目追踪和控制
. 正式的技术评审
. 软件质量保证 . 软件配置管理 . 文档的准备和产生 . 可复用管理 . 度量 . 风险管理
——《谁动了我的奶酪?》
2004 IBM Software Institute
习题和答案
IBM Software Institute
1.什么是软件危机?为什么会产生软件危机? 怎样克服软件危机? 解: 研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量 之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。 产生软件危机的原因: 用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、 支撑环境等方面的要求。 软件开发人员对用户需求的理解与用户的本来愿望有差异,导致开发出来的软件产品与用户要求不一致。 大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验。各类人员的信息交流不及时、不 准确、有时还会产生误解。 软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。 缺乏有利的方法学和工具方面的支持,过分的依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。 软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。 要克服软件危机,就要认真分析软件危机的原因,探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技 术和方法进行计算机软件的开发、管理、维护和更新。 2. 什么叫软件工程?软件工程的诞生是否从根本上消除了软件危机? 为什么? 解: 软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。 软件工程的诞生只能大大减少软件开发成本并提高软件质量,不能从根本上消除软件危机。 3.软件生存周期为什么要划分阶段?各个阶段的任务是什么? 解: 软件也是一种产品,同样存在生存周期。把软件生存周期划分为几个阶段后,软件开发按照每个阶段的基本任务进行并产 生相应的工作结果,这样有利于对软件开发过程进行管理,有利于提高软件产品质量。 可行性研究与计划阶段的基本任务:研究开发该项目的可行性。 需求分析阶段的基本任务: 理解和表达用户的要求。 设计阶段的基本任务: 建立系统的结构。 编程阶段的基本任务: 编写程序。 测试阶段的基本任务: 发现错误和排除错误。 4.什么是软件?如何评价软件的质量? 解: 软件是程序以及开发、使用和维护程序所需的所有文档。 软件质量从可维护性、可靠性、可理解性和效率等方面对软件作较全面的评价。 2004 IBM Software Institute
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute
扇入fan in
模块直接隶属的模块个数:
一个模块被其他模块调用的个数,称为该模块的 扇入。扇入大些,一般不会影响问题的复杂性, 而且扇入越大,说明该模块的复用性越好
扇出fan out:
扇入越多,模块可复用性越强(但可能产生低 内聚) 模块大小:30句以上,程序员对其的理解力迅 2004 IBM Software Institute 速下降;50-100句,开发成本迅速上升。
IBM Software Institute
软件工程的成本
开发成本分布
设计 开发 集成和测试
描述
0
25
IBM Software Institute
软件开发生命周期
2004 IBM Software Institute
Unit 标题
IBM Software Institute
第一章 软件工程概述
章节目标
了解什么是软件 了解什么是软件工程 理解软件工程为什么很重要 学习软件工程的意义
IBM Software Institute
结构化程序设计(SP)
三种基本结构:
顺序结构 分支结构 循环(迭代) 只有上面三种结构 自底向上,逐步抽象,最终形成一个函数型节点 每个节点只有一个出口和一个入口 其他:注意风格:注视和缩进等
2004 IBM Software Institute
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute
耦合度coupling:模块之间相互依赖的程 度
1. 2. 3. 4. 5. 6. 7.
非直接nondirect耦合 数据data耦合(参数) 标记stamp耦合 控制control耦合(控制语句) 外部external耦合 公用common耦合 内容content耦合
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute
模块化与信息隐蔽
Biblioteka Baidu
模块化:自顶向下,逐步细化 模块直接的接口应尽可能简明 模块之间尽可能彼此隔离 要求:
可修改性 易读性 以验证性
2004 IBM Software Institute
2004 IBM Software Institute
IBM Software Institute
1962年,第一个金星探测器水手1号偏离航线失败。原因:导航程序一个语句语义错误 Apollo8存储器信息丢失;11号运行10天18个软件错误。
规模相对较小; 崇尚个人技巧技艺 缺乏有效方法与软件工具支持 不重视开发过程的管理 维护困难
(编写1条汇编语句=研制2个硬件逻辑门;维护1汇编语句条=修理4个硬件逻辑门) 1968年NATO(北大西洋公约组织)会议: software crisis, software engineering.
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
什么是软件?
软件是程序和所有使程序正确运行所需 要的相关文档和配置信息。 软件产品有以下两类: 通用软件产品
如:操作系统、多媒体、word、PowerPoint等。
定制软件产品
直接下属的模块个数
一个模块调用其他模块的个数,称为该模块的扇 出。扇出越大,设计该模块时需要考虑的问题就 越多,因而复杂性越高。
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute
原则:高内聚度、低耦合度 一般中等内聚即可(功能性最理想) 尽量不采用控制耦合(不使用goto语句), 限制使用外部、公共、内容耦合 扇出越多,模块间逻辑关系 越复杂。应控制在7+-2
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
软件工程中的分层
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
软件工程的一般视图
如果不考虑应用领域、项目规模和复杂 性,与软件工程相关的工作可分为三个 一般的阶段:
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
理解软件工程为什么很重要
• 为什么需要那么长时间才能结束开发? • 为什么成本如此之高? • 为什么我们不能在把软件交给客户之前 就发现所有的错误? • 为什么在软件开发过程中我们难以度量 其进展?
传统软件工程概论
IBM Software Institute
一般问题的工程设计过程
问题阐述 问题分析(设计 细节) 寻找解法 判定最佳解法 设计规约(规格说明、报告) 实现
2004 IBM Software Institute
程序设计方法回顾
•50人时候,文档越来越重要
•200人:关键是管理问题。 •复杂性:功能多样性,实现多样性,能见度低,结构合理性差
•其“资金密集程度”中包含更多的人的成分(即“智力密集”)
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
50
75
100
其中集成和测试最高,40%~50% 另外,软件投入使用后,其变更和更新也需要成本。对许多使用期限长的软 件而言,该成本往往高达开发成本的3~4倍!
2004 IBM Software Institute
IBM Software Institute
什么是CASE
计算机辅助软件工程Computer Aided Software Engineering 分类:
如:模拟训练、数据管理、辅助决策、人工智能 等各个领域。
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
什么是软件工程?
软件工程是将系统化的、规范的、可度量 的方法应用于软件的开发、运行和维护的 过程,即将工程化应用于软件中。软件工 程还包括上述方法的研究。
软件销售收入比较图
800 700 600 500 400 300 200 100 0
微软公司第三季度
三、理解软件工程为什么很重要
中国全年
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
学习软件工程是大势所趋
世界上唯一不变的东西就是变化。拒 绝改变的人将永远也找不回他的奶酪! 人对不了解的东西会产生抵触。他因 为害怕而拒绝改变!
程序设计方法回顾
IBM Software Institute
内聚度cohesion:模块所执行的任务在 功能上互相关联的程度
1. 2. 3. 4. 5. 6. 7.
巧合内聚coincident cohesion Logical cohesion Temporal cohesion Procedure cohesion Communicational cohesion Sequential cohesion Functional cohesion