1.开发方法
1.1按照开发风范
- 自顶向上:大问题分成小问题,逐一解决
- 自底向下:从具体的部件开始,拼接设计者的技巧进行相互连接,修改和扩大
1.2.按照性质
- 形式化:数据推理方法,代表有净室工程(一般不考)
- 非形式化:各种开发模型
1.3适用范围
- 整体性方法:软件开发全过程的方法
- 局部性方法:某个具体阶段软件的方法
ps:净室工程(CSE)
- 使用盒结构规约进行分析盒建模
- 正确性验证排除错误
- 统计错误
- 质量控制
2.非形式化开发方法
2.1.原型法
按照实现功能化分:
- 水平原型:行为原型,用于界面细化需求但并未实现功能
- 垂直原型:结构化原型,给予复杂的算法的实现,实现了部分功能
按照最终结果划分:
- 抛弃式:探索式原型,解决需求不确定性,二义性,不完整性,含糊性
- 演化式:逐步演化为最终系统,用于易于升级和优化的场合。
2.2.结构化开发
优点:开发目标清晰化,开发工程阶段化,开发文档规范化,设计文档结构化
缺点:开发周期长,难以适应需求变化,很少考虑数据结构
2.3.敏捷开发方法
以人为本,与用户紧密协作,面对面沟通,尽早发布增量,小而自主的开发团队,适用于规模小的项目。
2.4.面向对象开发
Coad/Yourdon方法:OOA和OOD采用完全一致的概念和表示法,时期分析和设计之间不需要表示法的转换
Booch方法:静态模型描述系统的构成和结构,分为逻辑模型,物理模型,动态模型描述对象的状态变化和交互过程,包括状态图和顺序图
OMT方法:使用了建模的思想,使用对象模型(对象图),动态模型(状态图)和功能模型(DFD)
OOSE方法:用例取代DFD进行需求分析和功能建模
2.5.面向服务开发方法
抽象级别
- 操作:最低层,代表单个逻辑单元的事务,包含特定的结构化接口,并返回结构化的响应
- 服务:代表操作的逻辑分组
- 业务流程:最高层,为了实现特定业务目标而执行的一组长期运行的动作或者活动
2.6.面向构件的软件开发
构件的获取:
- 使用现有构件。
- 提取遗留工程构件
- 购买
- 开发
构件的复用方法:
- 检索与提取构件
- 理解与评价构件
- 修改构件
- 构件组装
构建分类:
- 关键字分类法:将应用概念分为树形或者有向无回路图结构,用关键字表示
- 刻面分类法:用刻面描述构件执行的功能,被操作的数据,构件应用的语境或者其他特征
- 超文本方法:可以按照人类的联想思维方式任意跳转到包含先关概念或者构件的文档。
3.开发模型
瀑布模型:结构化方法,开发阶段性,需求明确,文档齐全,风险控制弱
原型模型:迭代方法,分为原先开发与目标软件开发,需求不太明确
螺旋模型:带带方法,瀑布与原型研发模型的结合体,适用于大型,复杂,风险的项目
喷泉模型:面向对象的方法,复用好,开发过程无间隙,节省空间。
V模型:开发与测试结合
变换模型:适用于形式化开发
快速应用开发RAD:给予构件的开发方法,用户参与,开发或者复用构件,模块化要求高,不适用于新技术
RUP/UP:用例驱动,架构为中心,迭代,增量。
4.系统分析
4.1.结构化分析
- 功能模型:DFD数据流图,数据流不能从外部实体直接流向存储,加工要有输入和输出
- 数据模型:ER图
- 行为模型:STD状态转换图
4.2.面向对象分析:
- 功能模型:用例图,用例之间有包含、扩展、泛化三种关系,构件用例模型一般需要经理4个阶段,分别是识别参与者,合并需求获得用例,细化用例描述和调整用例模型,其中三个阶段是必须的。
- 数据模型:类图
- 行为模型:活动图,顺序图,状态图
通过面向对象的分析构件分析模型的过程:建立分析模型的过程大致包括定义概念累,确定类之间的关系(依赖,泛化,组合,聚合,实现)为类添加职责,建立交互图等。
5.系统设计
5.1.结构化设计:
- 概要设计:包括体系结构设计,接口设计,数据设计,使用SC系统结构图
- 详细设计:包括过程设计,使用程序流程图,IPO图,盒图,问题分析图,判定树,判定表。
5.2面向对象设计
架构图(包图),用例实现图,类图,其他(状态,活动图)