ch01
软件工程危机
-
定义
软件在开发和维护过程中遇到的一系列严重的问题
-
含义
如何开发软件何维护数量不断膨胀的已有软件/p>
-
原因
- 客户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,在软件开发过程中,用户提出修改软件功能、界面、支撑环境等方面的要求。
-
软件开发人员对用户需求的理解与用户的本来愿望有差异。不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。
-
管理人员、软件开发人员等各类人员的信息交流不及时、不准确、有时还会产生误解。
-
缺乏有力的方法和工具方面的支持,过分地依靠程序人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。
-
表现(理解即可)
(1)软件开发的进度难以控制,经常出现经费超预算、完成期限拖延的现象。
(2)软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发过程带来灾难性的后果。
(3)软件文档资料不完整、不合格。由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下。
(4)软件的可维护性差,程序错误难以改正,程序不能适应硬件环境的改变。
(5)软件价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
软件工程学
-
存在的价值
克服软件危机,促进软件项目的成功
软件工程
-
定义
研究和应用如何以系统化的、规范的、可度量的方法开发、运行和维护软件,即将工程化应用到软件上
-
研究目标
- 软件开发成本降低
- 软件功能能满足用户需要
- 软件可靠性高
- 软件性能好
- 按时完成开发任务,并及时交付使用
- 软件易于使用、维护和移植
软件生存周期
-
定义
软件产品从考虑其概念开始到该产品交付使用,直至最终退役为止的整个过程。一般包括6个过程:计划、分析、设计、实现、测试、交付与维护
-
各个阶段的主要任务
1.计划阶段
确定待开发系统的总体目标和范围。
研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。
2.分析阶段
分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。
3.设计阶段(总体设计和详细设计)
设计阶段的目标是决定软件怎么做。
软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面。
4.实现阶段(编码)
实现阶段是将所设计的各个模块编写成计算机可接受的程序代码。
5.测试阶段
设计测试用例,对软件进行测试,发现错误,进行改正。
6.运行和维护阶段
应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确地实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
开发模型
-
瀑布模型
-
RUP统一软件过程
-
ICONIX过程
-
scrum敏捷开发
-
统一建模语言
ch02
ch05
-
健壮性分析的优点
- 将用例和对象连接起来
- 确保用例文本的正确性
- 能够持续发现对象
- 缩小分析和设计的鸿沟
-
健壮性分析图三种元素
边界类 实体类 控制器类
-
交互原则
- 执行者只可以和边界通话
- 边界对象和控制器可以互相通话
- 控制器可以和另一个控制器通话
- 实体类对象可以和控制器相互通话
-
健壮性分析图
ch06
-
关键设计的四个步骤
- 将现有的域模型直接作为第一版静态类图
- 基于用例描述和健壮性分析结果,画出每个用例的序列图
- 整理静态类图和序列图
- 关键设计复核,迭代更新用例图、类图和序列图
-
注意
健壮性图中的控制类会转化为方法。如果也转化为控制类,那么就添加到类图中(一般的边界类不添加到类图中)
-
画图时控制器类的转换
-
逐步贯穿健壮性图上的每一个控制器,每次一个,画出序列图上相应的方法,然后核对,移至下一个控制器。
-
控制器和方法之间并不一定是完全一对一匹配的,也可能会转化为两个或多个方法。
-
有时,控制器也可能会转换为一个真正的控制类。
-
用例序列图
-
注意
关键设计的复核阶段不需要甲方人员的参与
ch07
-
详细设计的内容
选择开发语言
络拓扑及安全
体系结构
硬件支持环境
软件支持环境
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!