系统开发(上)-软件设计(三十二)https://blog.csdn.net/ke1ying/article/details/129697626
需求分类:
软件需求分为 业务需求、用户需求、系统需求。
系统需求 之后就有了 功能需求、性能需求、设计约束(用java或者.net或者指定什么数据库等约束)。
从QFD角度可以分为:基本需求(必须要做的需求)、期望需求(理所应当做到的需求)、兴奋需求。
机构化设计:
结构化方法软件设计:概要设计 和 详细设计。
要求:
- 自顶向下,逐步求精。
- 信息隐蔽
- 模块独立(高内聚、低耦合、复杂度)
低耦合:一个模块尽可能低的与其他模块相关联。
高内聚:一个模块内部各个部件连接紧密程度。
保持模块的大小适中、尽可能减少调用深度、模块作用域在范围之内。
功能内聚层次最高、偶然内聚(巧合内聚)最差。
内容耦合程度最高,非直接耦合 耦合程度最低。
软件测试:
尽早不断进行测试、
程序员避免测试自己设计程序。
选择有效合理的数据,也要选择无效不合理的数据。
修改后进行回归测试。
尚未发现的错误数量与该程序已发现错误数成正比
动态测试:黑盒测试法、白盒测试法、灰盒测试法。(涉及到计算机)
静态测试:桌前检查、代码走查、代码审查。(未涉及到计算机)
灰盒测试 = 黑盒测试+白盒测试 结合起来。
黑盒测试:等价类划分、边界值分析、错误推测、因果图。
看不到里面什么东西的黑盒子,只可以看到输入输出。
(
等价类划分:分不同等级去测试。
边界值分析:超过最大值和最小值,比如300岁年龄。
错误推测:猜哪些地方有问题。
因果图:找到原因。
)
白盒测试:基本路径测试、循环覆盖测试、逻辑覆盖测试。
可以打开盒子看里面程序构造是什么样子。
(
语句覆盖:通过测试用例覆盖所有可能情况。(层次最低,因为可能漏掉)
判定覆盖:所有判断测试。
条件覆盖:判定拆分成两个条件。
)
测试阶段:
单元测试、集成测试、确认测试、系统测试。
集成测试 主要是:一次性组装、增量组装。
确认测试:需求确认。产品β测试,用户参与进来。
系统测试:负载测试、强度测试、容量测试。
McCabe复杂度:
V(G)=m-n+2
所以V(G) = 11 -8+2 = 5
系统运行与维护:
可维护性:
- 易分析性
- 易改变性
- 稳定性
- 易测试性
维护类型:
- 改正性维护 百分之25:也叫正确性维护,软件开发出来会有瑕疵,维护修改瑕疵。
- 适应性维护 百分之20:适应环境。适应不同系统
- 完善性维护 百分之50:扩充新的功能。
- 预防性维护 百分之5:现在不维护,将来可能导致的问题。(比如写文档方便后人了解细节)
软件过程改进CMMI:
由cmm发展而来
等级:
- 混乱级:不需要评级,所有机构没通过cmmi都属于混乱级。
- 已管理级:项目需求管理,配置计划,配置管理,项目监督控制,供应商合同管理,度量分析,过程和产品质量保证。(项目级别)
- 已定义级:需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定义、组织级培训、风险管理、(组织级别、文档化,标准化)
- 定量管理级:定量项目管理(量化)
- 持续优化:量化都做好了,继续持续优化。
连续式:
过程管理、项目管理、工程、支持。
项目管理:
主要考 时间管理 和风险管理。
时间管理有Gantt图和PERT图。
Gannt图最直观的看到计划怎么样,简洁明了,时间和进度。
缺点就是不能清晰表达任务之间的逻辑关系。(不知道哪个任务先做或者后做)
所以选D
因为里面最少需要 2+2+5+6 15天
通过逆推 15-4-1 = 10
所以最晚开始时间是10