系统开发与项目管理基础
# 系统开发与项目管理基础
# 3. 系统开发与项目管理基础
# 3.1. 软件生命周期
软件产品从计划到软件交付使用, 直到最终退出为止的过程。包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试及维护阶段。
# 3.2. 软件开发模型
分为 瀑布模型、螺旋模型、喷泉模型、原型化模型、演化模型
瀑布模型:严格遵循软件生命周期各阶段的固定顺序, —个阶段完成再进入另一阶段, 适用于结构化开发方法。 瀑布模型分为以下几个阶段: 软件计划、需求分析、软件设计、程序编码、软件测试、运行维护 瀑布模型的优点:
- 为项目提供按阶段划分的检查点。
- 当前阶段完成后, 只需关注后续阶段
- 可在迭代模型中应用瀑布模型
- 适用于大规模系统项目
瀑布模型的缺点:
各阶段划分完全固定, 阶段之间产生大量文档, 增加了工作量。
用户直到工程末期才能见到开发成果, 增加了开发风险。
不适应用户需求变化。
原型化模型:开发人员对用户提出问题进行总结, 就主要需求达成—致意见, 开发—个原型并运行, 然后对原型进行反复修改, 使之完善。衡量原型化模型开发人员能力标准是快速获取需求能力。
优点: 用户需求清楚, 降低开发风险与成本用户参与决策, 减少项目管理, 要求完整的生命周期 缺点: 不适用大型系统, 系统难于维护。
演化模型:根据用户需求, 快速分析构造该软件的—个初始版本, 称之为原型, 根据用户在使用原型过程中提出的建议改进原型, 获得原型的新版本, 重复这一过程, 使用户最终获得满意的软件产品。
螺旋模型:将瀑布模型和原型模型结合, 强调了其它模型所忽略的风险分析, 适合大型复杂系统。 优点: 支持用户需求的动态变化, 降低风险。 缺点: 增加开发成本
喷泉模型:主要用于描述面向对象的开发过程, 核心的特点是迭代。所有开发活动没有明显边界, 允许各种开发活动交叉进行。
# 3.3. 软件测试
别名 | 测试阶段 | 测试对象 | 测试人员 | 测试依据 | 测试方法 | |
---|---|---|---|---|---|---|
单元测试(UT) | 组件测试/模块测试 | 在编码之后进行,检验代码的正确性 | 模块、类、函数和对象也可能是更小的单元(如:一行代码,一个单词) | 白盒测试工程师或开发人员 | 依据代码、详细设计文档来进行测试 | 白盒测试 |
集成测试(IT) | 组装测试/联合测试 | 单元测试之后,检验模块间接口的正确性 | 模块间的接口 | 白盒测试工程师或开发人员 | 单元测试的文档、概要设计文档 | 黑盒测试+白盒测试 |
系统测试(ST) | 集成测试之后 | 整个系统(软件、硬件) | 黑盒测试工程师 | 需求规格说明书 | 黑盒测试 | |
验收测试 | 交付测试 | 系统测试通过后 | 整个系统(软件、硬件) | 最终用户或需求方 | 用户需求、验收标准 | 黑盒测试 |
白盒测试:需要了解程序内部结构,测试用例是根据程序内部逻辑来设计。白盒测试用于软件的单元测试。
黑盒测试:对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试不关心内部逻辑结构,只根据程序的功能说明来设计测试用例。黑盒测试用于软件的功能测试。
灰盒测试:关注输出对于输入的正确性,同时也关注内部表现,但不像白盒那样详细完整。
测试的步骤:单元测试、集成测试、系统测试、验收测试
# 3.4. 项目管理
项目管理可分为九大类,分别是:范围管理,时间管理,成本管理,质量管理,人力资源管理,沟通管理,风险管理,采购管理,整体管理。
# 3.4.1. 时间管理
甘特图:用水平线段表示任务的工作阶段;线段的起点和终点对应任务的开始和完成;线段的长度表示完成任务所需时间。
相关计算:
松弛时间:关键路径所需时间 - 从节点开始到项目完成时间或该节点最晚开始时间- 最早开始时间
最晚开始时间:关键路径用时 - 该节点到项目完成用时。
最早开始时间:项目开始到该节点需要的最长时间。
关键路径:所有路径所需时间最长的路径为关键路径,也可以理解为松弛时间为 0 的任务构成了完成整个工程的关键路径。
甘特图优点: 清晰的描述每个任务从何时开始到何时结束以及各任务之间的井行性。 甘特图缺点:不能反映任务之间的依赖关系,难以确定任务关键所在,也不能反映任务中有潜力部分。