第八章:系统开发
考点1:开发模型(★★★★★)
- 瀑布模型:阶段明确,包括需求分析、设计、编码、运行与维护。一旦需求变,整个项目推倒重新开始。适用于需求明确或二次开发的项目
- V模型:强调测试贯穿项目始终
- 喷泉模型:面向对象模型,特点是迭代、无间隙。
- 原型模型:适用于需求不明确的场景(需求分析阶段)
- 增量模型:结合了瀑布模型和原型模型,在完成核心功能的基础上,每轮迭代会都会产生新的增量来强化核心功能
- 螺旋模型:结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析
考点2:软件开发过程(★)
- 需求分析:软件要完成的功能及性能要求
- 功能需求:考虑系统要做什么,在何时做,在何时以及如何修改或升级。
- 性能需求:存储容量限制、执行速度、响应时间及吞吐率等性能指标。
- 设计约束:操作系统限制、开发语言限制等。
- 概要设计:确定软件的模块划分,包括系统架构、模块划分、系统接口及数据设计
- 详细设计:数据结构和算法设计
- 编码:代码编写和单元测试
- 软件复杂性度量参数
- 规模:指令数或源程序行数
- 难度:程序中出现的操作数
- 结构:程序结构
- 智能:算法的难易程度
考点3:系统设计(★★)
- 系统设计的原则:高内聚、低耦合
- 内聚性
- 偶然聚合:模块完成的动作之间没有任何关系
- 逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关
- 时间聚合:模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。
- 过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行
- 通信聚合:模块的各个组成部分所使用同一个数据或产生同一输出数据。
- 顺序聚合:模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。
- 耦合性
- 功能聚合:模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都比不可少
- 非直接耦合:两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。
- 数据耦合:两个模块彼此间通过数据参数交换信息。
- 标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
- 控制耦合:两个模块彼此间传递的信息中有控制信息。
- 外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
- 公共耦合:两个模块之间通过一个公共的数据区域传递信息。
- 内容耦合:一个模块需要涉及到另一个模块的内部信息。
- 内聚性
考点4:软件测试(★★★★)
-
测试方法分类
考点6:软件过程改进(★★)
-
统一过程(UP、RUP):典型特点是用例驱动、以架构为中心、迭代和增量,四个阶段:
-
初启阶段:项目的初创活动,里程碑是生命周期目标
-
精化阶段:需求分析和框架演进,里程碑是生命周期架构
-
构建阶段:系统的构建,产生实现模型,里程碑是初始运作功能
-
移交阶段:将产品发布给用户进行测试评价,并收集用户的意见,产生软件增量,里程碑是产品发布
-
敏捷开发:是一种以人为核心、迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想
- 极限编程
- 四大价值观:沟通、简单、反馈、勇气
- 五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作
- 十二个最佳实践
- 计划游戏:快速制定计划、随着细节的不断变化而完善
- 隐喻:找到合适的比喻传达信息
- 小型发布:系统的设计能够尽可能早的交付
- 简单设计:只处理当前的需求使设计保持简单
- 测试先行:先写测试代码在编程
- 重构:重新审视需求和设计,以符合新的和现有的需求
- 水晶法:强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论
- 并列争球法:核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件
- 自适应软件开发:核心是三个非线性的,重迭的开发阶段:猜测、合作、学习
- 极限编程
-
软件能力成熟度模型
-
CMM:5个级别
- 初始级(第1级):混乱和不可预测
- 重复级(第2级):建立基本的项目管理过程和实践来跟踪项目经费、进度和功能特性
- 定义级(第3级):组织具有标准软件过程
- 管理级(第4级):对软件过程的产品都有定量的理解与控制
- 优化级(第5级):过程的量化反馈和先进的新思想、新技术促使过程不断改进
-
CMMI:6个级别
-
未完成级(第0级):过程域的目标未满足
-
已执行级(第1级):完成过程域的目标
-
已管理级(第2级):针对单个过程实例的能力
-
已定义级(第3级):过程的组织级标准化和部署
-
定量管理级(第4级):过程定量管理
-
优化管理级(第5级):过程不断的改进
-
-
连续式模型
- CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标。
- CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
- CL2(已管理的):其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制、和评审。
- CL3(已定义级的):其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程中裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。
- CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。
- CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效。
-
考点7:项目管理
- Gantt图和PERT图
- 甘特图:难以反映多个任务之间存在的逻辑关系
- PERT图:不能清晰的描述各个任务之间的并行关系
- 计算
- 关键路径:图中源点至汇点的最长路径,关键路径的时间称之为项目工期,也表述为项目完成所需的最少时间
- 总时差(松弛时间):最晚结束时间减去最早结束时间,或以最晚开始时间减去最早开始时间求取
- 最早开始时间:顺推
- 最晚开始时间:逆推
- 风险管理
- 风险的特性:具有不确定性,可能会造成损失。
- 风险分析
- 风险识别:系统化的确定项目风险的威胁
- 风险预测:风险发生的可能性或概率
- 风险评估:根据风险发生的概率和产生的影响预测是否影响参考水平值
- 风险控制:辅助项目组建立处理风险的策略,有效的策略应该考虑风险避免(最有效)、风险监控、风险管理及意外事件计划
- 风险类别
- 项目风险:预算、进度、人员、资源以及和客户相关的问题
- 技术风险:设计、实现、对接、及维护问题
- 商业风险:市场风险、策略凤险、管理风险和预算风险
- 项目估算方法
- 专家判断方法:受专家经验和主观性影响
- 算法方法:模型中的参数难以确定
- 机器学习方法:难以定义训练数据的特征以及定义数据对象之间的相似性
- 风险曝光度 = 风险出现率 X 风险损失
- 文档知识
- 系统开发计划:用于系统开发人员和项目管理人员在项目期内进行沟通,包括工作任务分解表、PERT图、甘特图和预算分配表
- 总体规划和开发合同:用于与系统分析人员在系统规划和系统分析阶段的沟通
- 测试计划:用于系统测试人员与系统开发人员之间的沟通
- 特点
- 针对性:文档编制应考虑读者对对象群体
- 精确性:文档的行文应该十分确切,不能出现多一性的描述
- 完整性:任何文档都应该是完整的、独立的,应该自成体系
- 灵活性:各个不同软件项目的规模和复杂程度存在差距,不能一律看待
- 追溯性:各个开发阶段编制的文档与各个阶段完成的工作有密切关系,所以在一个项目各个开发阶段之间提供的文档必定存在着可追溯关系
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!