1. 软件生命周期
- 问题定义
解决问题是什么 - 可行性研究
对于上一阶段所确定的问题有没有行得通的方法 - 需求分析
主要确定目标系统必须具备哪些功能 - 总体设计
怎样实现目标系统 - 详细设计
怎样具体的实现这个系统 - 编码和单元测试
写出正确的容易理解、容易维护的程序模块 - 综合测试
通过各种测试使软件达到预期要求 - 软件维护
通过必要的维护活动使系统持久地满足用户的需要
2. 瀑布模型的特点和缺点
- 特点:具有顺序性和依赖型,必须等前一阶段完成任务后才能开始后一阶段的工作,前一阶段的输出是下一阶段的输入。
- 缺点:在进行软件开发的前期就必须要清楚的知道所有的用户需求,当需求阶段出现的错误只有在后期才能发现。
3. 快速原型模型
- 特点:在需求不明确的情况下便可以进行开发
4. 可行性研究
- 技术可行性
- 经济可行性
- 操作可行性
5. 数据流图
- 概念:数据流图(DFD)是一种图形化技术,他描绘信息流和数据从输入移动到输出过程中所经受的变换
- 4种成分和表现
- 数据的源点和终点
- 变换数据的处理
- 数据存储
- 数据流
6. 与用户沟通获取需求的方法
- 访谈
- 面向数据流自顶向下求精
- 简易的应用规格说明技术
- 快速建立软件原型
7. 层次方框图用处P68
8. IPO图用处P69
9. 模块化P94
10. 模块独立
- 原则:高内聚低耦合
- 耦合
- 数据耦合
- 控制耦合
- 特征耦合
- 公共环境耦合
- 内容耦合
- 尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合
- 内聚
- 功能内聚 10‘
- 顺序内聚9’
- 通信内聚7‘
- 过程内聚5’
- 时间内据3‘
- 逻辑内聚1’
- 偶然内聚0‘
11. 层次图P102
12. 结构图P102
13. 结构程序设计概念
一个程序的代码块仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的
14. 程序流程图缺点
- 程序流程图本质上不是逐步求精的好工具,他诱使程序员过早考虑程序的控制流程,而不去考虑程序的全局结构
- 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神随意转移控制
- 程序流程图不宜表示数据结构
15. 盒图(S-N)的组成
- 功能域
- 不可能任意转移控制
- 很容易确定局部和全程数据的作用域
- 很容易表现嵌套关系,也可以表示模块的层次结构
16. PAD图P126
17. 判定表和判定树
18. McCabe方法
- 流图
- 计算环形复杂度的方法
- 流图中线性无关的区域等于环形复杂度
- 流图G的环形复杂度V(G)=E-N+2,其中E是流图中边的条数,N是结点数
- 流图G的环形复杂度V(G)=P+1,P是流图中判定结点的数目
19. 测试方法
- 黑盒测试
- 完全不考虑内部结构和处理过程
- 白盒测试
- 测试者知道程序的结构和处理算法,白盒测试又称为结构测试
20. 测试步骤
- 模块测试
- 子系统测试
- 系统测试
- 验收测试
- 平行运行
21. 集成测试
- 自顶向下集成
- 自底向上集成
22. 确认测试
确认测序也成为验收测试,目标是验证软件的有效性
23. 黑盒测试技术
- 等价划分
- 边界值分析
- 错误推测
24. 软件维护的定义
- 第一项维护活动:改正性维护
- 第二项维护活动:适应性维护
- 为了和变化了的环境适当的配合而进行的修改软件的活动,是即必要又经常的维护活动
- 第三项维护活动:完善性维护
- 使用软件的过程中用户往往会提出增加新功能或修改已有功能的建议,还可能会提出一般性的改进意见
- 第四项维护活动:预防性维护
25. 面向对象模型三要素
表示法
过程
工具
26. 软件模型的内容
业务模型
需求模型
逻辑模型
设计模型
实现模型
测试模型
27. 对象的概念
对象是系统中用来描述客观事物的一一个实体,它是构成系统的一个基本单位。
对象既可以描述客观存在的事物,也可以表示由人主观构造的抽象观念。
28. UML: Unified Modeling Language
统一建模语言。
29. UML构成概述
基本语言组成
语言的构成成分,包括:要素,关系,图
语义规则:
语言的语法和语义规则
公共机制:
规范说明,语言扩展等
30. UML的构成
31. UML关系
●关联
●泛化
●依赖
●实现
32. UML中的图
●用例图
●类图
●对象图
●顺序图
●协作图
●状态图
●活动图
●构件图
●部署图
33. 用例关系:
①. 关联关系
②. 泛化关系
③. 包含关系
④. 扩展关系
34. 发现用例的一般方法:
① 找出系统外部参与者,确定系统边界和范围。
② 确定各参与者所期望的系统行为。
③ 把这些系统行为命名为用例。
④ 确定各用例之间的关系(泛化,包含,扩展)。
⑤ 绘制用例图。
⑥ 编制用例说明。
⑦ 对异常流程确定单独用例。
⑧ 优化用例图,解决用例之间的冲突和重复。
35. 类之间的关系
关联
聚集和组合
泛化
依赖
36. 类的表现形式
37. 聚集与组合的区别
① 聚集松散,组合紧密;
② 一个部分事物对象可以属于多个聚集对象,但一个部分事物对象仅能属于一个组合对象;
③ 聚集的对象生命周期可以不同,但组合对象则是同存同亡。
38. 交互图的概念
交互图(interaction): 用来描述对象之间,以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。
39. 交互图的类型
顺序图,协作图
40. 交互图的作用
分析为了实现一个用例的功能所参与的对象,以及这些对象相互之间的动态消息联系。
41. 建立顺序图
① 从用例中识别交互过程;
② 识别参与交互过程的对象;
③ 为每一个对象设置生命线,并确定对象的存在期限;
④ 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息;
⑤ 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。