用工程化的思想做软件
一、软件开发方法(/原则)
-
软件开发方法(重点)
-
结构化法(面向过程/函数) C
- 概念
- 用户至上
- 严格区分工作阶段,每个阶段有各自的任务和成果
- 强调系统开发的整体性和全局性
- 系统开发工程化,文档标准化
- 自顶向下,逐步分解(求精)
- 缺点
- 写死,不灵活,修改起来困难;
- 而需求是不断变化的,因此出现了面向对象
- 概念
-
原型法 特殊
- 需求分析阶段,适用于需求不明确的开发
- 做一个原型化的界面呈现给客户,让客户有直观感受并反馈提出自己的详细需求,避免完成后再返工
- 包括 抛弃型原型、进化型原型
-
面向对象 C++、Java
- 复用性好
- 建立一个全面、统一、合理的模型
- 分析、设计、实现三个阶段没有明确的界限(做前一个阶段时,一并将后一阶段的一部分做完;而结构化方法每一个阶段做完并且评审后才开始下一个阶段,界限很明确)。
-
面向服务 (颗粒度比对象大)
- SO方法 三个抽象层级
- 操作,传统函数、方法。(抽象类)
- 服务(模块)
- 业务流程,由服务协作完成。(应用程序)
- SOAD 三个层次
- 基础设计层(底层服务件)
- 应用结构层(服务之间的接口和服务级协定)
- 业务组织层(业务流程建模和服务流程编排)
- 服务建模 三阶段
- 服务发现(做什么)
- 服务规约(做的过程中遵循的规则约定、参数)
- 服务实现(做出来)
- SO方法 三个抽象层级
-
-
软件开发模型(重点)
-
瀑布模型(结构化方法产物,适用于需求明确项目)
一阶阶下来像瀑布流水,每个阶段需要进行需求评审,如果评审阶段或者下一阶段发现本阶段有问题不符合要求,需要回退(红色箭头)进行修改。
-
定义阶段
-
软件计划
-
需求分析(论文)
- 缺点 不适合需求不明确的项目,因为需求分析一旦错误,所有阶段都错了,再迭代时间、人力成本太高,且失败概率大于九成。
- 优化 加一个原型给客户,经过几轮修改反馈得到明确的项目;如果还不明确或者客户喜欢创新,从以下两方面解决
- 项目管理,不要制定总价合同,写明迭代的责任方和成本利润
- 选择原型模型
- 演化出其他模型
- 和原型模型演化出
- 增量模型
- 螺旋模型
- 和原型模型演化出
-
-
开发阶段
-
软件设计
-
-
-