结构化开发方法:
适合规模不大,不复杂,变化不大的系统开发
基于构件的开发方法:
需要对构件做合格性检验,适应性修改,然后集成。
1.增量模型:
难点:
2.瀑布模型
以文档驱动。适合需求明确,对交付时间有严格要求。
2.1 V模型
瀑布模型的优化模型。通过提前加入测试,与其他阶段对应,
3.快速模型
设计出一个具有初级功能的项目,根据用户反馈,逐步改进。适合对软件需求缺乏的情况。
4.原型模型
根据一些需求,模拟出最终产品形态。
不适合超大规模的产品。
4.演化模型
2次基于瀑布模型的开发,第1次产出实验性的产品,用于探索,第2次得到较为满意的产品
软件先投入使用,再使用过程中不断完善
5.螺旋模型
针对大型产品的开发。引入风险管理
6.敏捷模型
尽可能早的,持续的交付有价值的软件
①极限编程:
以人为中心的理念
4大价值观:
5原则:
12最佳实践:
结对开发,开发速度与传统单人相当
②水晶法:
每个项目都需要不同的策略,约定,方法论。
以人为中心的理念
③并列争球法scrum:
以迭代的方法,30天认为是一个冲刺,按需求的优先级实现产品。
④自适应软件开发法:
6个基本原则:
一个使命作为指导,设立了项目目标
特征future被视为客户
7.统一过程模型UP
以用例和风险驱动,架构为中心,受控的迭代增量开发。
四个阶段:
起始阶段:确定项目的可行性,产出需求和用例。里程碑:生命周期目标。
精化阶段:建立系统需求和架构,产出系统架构,问题领域,修改后的需求,开发计划。里程碑:生命周期架构。
构建阶段:集成可用包。里程碑:初始化运作功能
交付阶段:交用户。里程碑:产品发布。
8.喷泉模型
各个阶段都存在重叠和反复,像喷泉一样,水上去可以落下,可以落到中间,也可以落到底。
软件设计的2个阶段:
概要设计(结构化设计):
软件体系结构的设计、数据设计、接口设计
详细设计(结构化设计):
数据结构、算法的设计
概要设计(面向对象)
体系结构、类、数据设计、
详细设计(面向对象)
软件工程开发阶段:
系统分析:软件的可移植性,可能影响软件的维护界面
系统设计:
功能需求:
具备什么功能
非功能需求:
性能,可靠性,响应时间,扩展性,
程序的三种控制结构:
顺序,选择,重复
软件开发企业成熟度分级
初始级(级别1):软件开发过程无序,混乱
可重复级(级别2):拥有基本项目管理过程,对类似的项目,可以重复既有的流程完成
确定级(级别3):管理、工程的软件过程文档化。全部项目均可采用标准的流程来操作
管理级(级别4):软件过程和产品质量有度量标准,可以定量认识和控制
优化级(级别5):不断的对新技术,流程改进
软件质量:
人主导因素
McCabe计算复杂度:
v = E-N +2,E表示边的数目,N表示节点数,
流程图中简单路径:
软件复杂度:
规模:代码行数
难度:操作数的数目多少
智能度:算法的难易程度
结构:
项目最小时间相关:
从一个节点到最后一个节点中使用天数最多的。
松弛时间:某一个节点到下一个节点的松弛时间为,与当前节点相同的关键路径时间之差。
人员管理:
需要考虑开发人员的工作能力,知识背景,兴趣爱好,工作风格
工作任务分配清楚,不鼓励全流程参与
风险:
是一种具有负面后果的,人们不希望发生的事件。
风险管理:根据风险优先级确定风险控制策略,而优先级是根据风险暴露来确定。在一个肯定有风险的环境中,把风险降至最低。
风险监控:对风险的发展与变化进行全称监督,并及时调整策略。
风险暴露=风险影响*风险出现概率
风险影响:可能造成的损失
①项目风险:项目复杂度,规模,结构的不确定性。预算,进度,人员,资源,和客户相关问题
②技术风险:设计,实现,测试,维护等问题
③业务风险:建立一个无人想要的优秀产品的风险,失去预算
④商业风险:市场风险,
风险控制最好的策略:风险避免。为了避免X发生,则主动做一些操作。
gantt:
水平条形图,以日历为基准
TODO 示例图
pert图:
可以知道任务开始时间
任务的结束时间
各个任务之间的依赖