软件工程导论第一章复习总结附思维导图
一、软件危机
1.软件危机:在软件开发和维护的过程中所遇到的一系列严重问题
1.如何开发软件,以满足对软件日益增长的需求
2.如何维护数量不断膨胀的已有软件
3.典型表现
1.对软件开发成本和进度的估计常常很不准确
2.用户对已完成的软件不满意的现象经常发生
3.软件产品的质量往往靠不住
4.软件常常是不可维护的
5.软件通常满意适当的文档资料
6.软件成本在计算机系统总成本中所占的比例逐年上升
7.软件开发上产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
2.产生原因:Page3
3.消除途径
1.软件=程序+文档+数据
2.技术措施与组织管理措施
二、软件工程
1.软件工程的介绍
1.软件工程是指导计算机软件开发和维护的一门工程学科
2.(1)吧系统的,规范的可度量的途径应用与软件开发,运行和维护过程,即把工程应用与软件(2)研究(1)中提到的途径
3.本质特性Page3
2.软件工程的基本原理
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
3.软件工程方法学
三要素:方法、工具和过程
方法:是完成软件开发的各项任务和技术的方法,回答“怎样做”的问题
工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境
过程:是为了获得高质量的软件所需要的一系列任务的框架,规定了完成各项任务的步骤
1.传统方法学,又称生命周期方法学或结构化规范
1.分阶段并顺序完成
2.每阶段结束前进行技术审查和管理复查(文档资料)
3.保证了软件的质量,提高了软件的可维护性大大提高软件开发的成功率与生产率
2.面向对象方法学
1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件
2.把所有对象划分成类 每个类包括数据和操作
3.继承
4.封装:对象彼此间仅能通过发送信息互相联系
5.三大特性:继承,封装,多态
6.面向对象方法=对象+类+继承+用信息通信
三、软件生命周期
1.软件定义
1.问题定义:“要解决的问题是什么?”
2.可行性研究:研究问题范围,是否值得解,是否可解
3.需求分析:“系统必须要做什么”
数据流图,数据字典和简要算法表示的系统的逻辑模型
需求规格说明书
2.软件开发
1.总体设计:“怎样实现目标系统”
2.详细设计(模块设计):“怎样具体实现这个系统”
详细规格说明书
算法与数据结构
编码和单元测试
系统实现
系统设计
3.运行维护
改正性维护:诊断和改正正在是用那个过程中发现的错误
适应性维护:修改软件以适应环境的变化
完善性维护:根据用户的要求改进或扩充软件使其更完整
预防性维护:修改软件为将来的维护活动预先作准备
四、软件过程
1.瀑布模型:规范的,基本上是文档驱动的模型,问题是最终开发出软件测评可能并不是用户真正需要的
需求分析->规格说明->设计->编码->综合测试->维护
2.快速原型模型:用途是获知用户的真正需求,需求一旦确定原型将被抛弃,广泛使用第四代语言(4CL)
3,增量模型:不同于瀑布模型与原型模型,分批逐步向用户提交产品,体系结构必须是开放的
4.螺旋模型:使用原型及其其他方法来尽量降低风险,可看作每个阶段之前都增加了风险分析过程的快速原型模型;属于风险驱动型
5.喷泉模型:面向对象型
6.Rational统一过程(RUP)
1.最佳实践
迭代开发
管理需求:用例分析来获取需求,并由它们驱动设计和实现
使用基于结构的体系结构
可视化建模
验证软件质量
控制软件变更
3.开发生命周期
纵轴代表核心工作流
1.核心过程工作流
业务建模
需求
分析与设计
实现
测试
部署
2.核心支持工作流
配置与变更管理
项目管理
环境
横轴代表工作阶段
1.初始阶段:建立业务模型,定义最终产品视图,确定项目范围
2.精华阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求
3.构建阶段,开发出所有构建和应用程序,把它们即称为客户需要的产品,并且详尽地测试所有供暖
4.移交阶段:把开发出的产品提交给用户使用
RUP迭代式开发:采用迭代和渐增的方式,每次循环都经历一个完整的生命周期,每次循环结束都向用户交付产品的一个可运行的版本
7.敏捷过程与极限编程
1.敏捷过程
个体和交互胜过过程和工具
可以工作的软件胜过面面俱到的文档
客户合作胜过合同谈判
相应变化胜过遵循计划
2.极限编程(eXtreme Progarmming,XP)
8.微软过程
规划阶段:市场调研
设计阶段
开发阶段
稳定阶段
发布阶段