程序设计小组
主程序员组(成员之间相互平等,工作目标和决策都由全体成员民主讨论)、无主程序员组和层次式程序员组
风险控制
目的:辅助项目组建立处理风险的策略。
策略:风险避免(最好)、风险监控和风险管理及意外事件计划
数据内聚
①偶然内聚:指一个模块内的各个处理元素之间没有任何联系。
②逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
③时间内聚:把需要同时执行的动作组合在一起形成的模块。
④通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
⑤顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行, 前一个功能元素的输出就是下一个功能元素的输入。
⑥功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可
开发模型
瀑布模型
阶段评审和文档控制。只用于需求明确或者二次开发;对时间严格要求
原型模型
做出简易的系统原型模型,以此来获得客户全面的需求,在进行正式开发,只用于需求分析阶段
增量模型
先做出核心功能给用户看,之后在一部分一部分做(给用户试用),最后完成项目;
其优点包括:
- 短时间内交付可用品;
- 逐步增加产品的功能,使用户有较充裕的时间学习和适应新产品;
- 优先级最高的服务首先交付,然后依次将其他构件集成进来,这意味着最重要的服务将接受最多的测试。是一种能够快速构造可运行产品的方法
螺旋模型
演化模型包括原型和螺旋
结合并循环执行以上三个模型,又添加了风险分析
V模型
细化了测试;尽早进行各种测试,测试贯穿于开发中
以上皆是结构化开发模型
喷泉模型
面向对象开发;迭代、无间隙
快速开发模型
RAD;由瀑布模型和构件化开发模型组合形成;快速构建应用系统
构件组装模型
CBSD;以构件拖动形式进行开发,提高软件开发复用性;提速、降成本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLpRodLY-1570878366207)(F:\TyporaWorkplace\文件\图片\构建组装模型.png)]
敏捷开发方法
目的:尽可能早地、持续地对有价值的软件的交付,使客户满意
- 极限编程XP是一种轻量级的软件开发方式,由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期
- 水晶法Crystal认为每一个不同的项目都需要一套不同的策略、约定和方法论
- 并列争球法Scrum使用迭代的方法,并按需求的优先级来实现产品
- 自适应软件开发 ASD有6个基本原则
- 敏捷统一过程:采用“大型上连续,小型上迭代”的原理构建软件系统,以交付客户
*维护
①正确性维护。为了识别和纠正软件错误,改正软件性能上的缺陷,排除实施的误使用,应进行的诊断和改正错误的过程。
②适应性维护。由于信息技术飞速发展,软件运行的外部环境或数据环境可能发生变化,为了使软件适应这种变化而修改软件的过程。
③完善性维护。在软件使用过程中,用户往往会对软件提出新的功能与性能要求, 为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性而进行的维护活动。
④预防性维护。为了提高软件的可维护性和可靠性等,为以后进一步改进软件打下良好基础而进行的维护工作。
*质量特性
McCall软件质量模型
- 产品运行方面包括正确性、可靠性、易使用性、效率和完整性;
- 产品修正方面包括可维护性、灵活性和可测试性;
- 产品转移方面包括可移植性、复用性和互用性
复杂性度量
McCabe度量法:程序(环路)复杂性V(G)= m-n + 2p(m是图G中弧的个数,n是图G中顶点的个数,p为图G中的强连通分量数)
ISO/IEC9126软件质量模型
- 易分析性是指为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性;
- 易改变性是指与进行修改、排错或适应环境变换所需努力有关的软件属性;
- 稳定性是指与修改造成未预料效果的风险有关的软件属性;
- 易测试性是指为确认经修改软件所需努力有关的软件属性
软件质量
软件容错技术
在屏蔽硬件错误的容错技术中,冗余附加技术包括:
- 关键程序和数据的冗余及调用
- 检测、表决、切换、重构和复算的实现
在屏蔽软件错误的容错技术中,冗余附加技术包括:
- 冗余备份程序的存储及调用;
- 实现错误检测和错误恢复的程序;
- 实现容错软件所需的固化程序。
*软件测试
- 单元测试:模块测试:侧重于内部的处理逻辑与数据结构;特征:模块接口/局部数据结构/执行路径/出错处理/边界条件
- 组装测试:集成测试:把功能模块组合起来进行测试,测试的是各个模块集成起来后有没有达到预期的功能
- 确认测试:是指进一步检查软件的接口、功能和性能是否与用户要求一样
- 系统测试:是指软件与网络、外部设备等其他因素结合部署工作的情况。
- a.所有功能需求得到满足
- b.所有性能需求得到满足
- c.其他需求(如安全性、容错性、兼容性等)得到满足
白盒测试
结构测试
- 语句覆盖是指选择足够的测试用例,使被测程序中每条语句至少执行一次。
- 判定覆盖是指*使得被测程序中每个判定表达式至少获得一次“真”植和“假”值。if
- 条件覆盖是指*使得每一个判定语句中每个逻辑条件的各种可能的值至少满足一次。switch
- 路径覆盖是指覆盖被测程序中所有可能的路径。
在这些覆盖技术中,从弱到强依次为语句覆盖、判定覆盖、条件覆盖和路径覆盖。