转上一节:
http://t.csdnimg.cn/X0GjWhttp://t.csdnimg.cn/X0GjW
8.5:系统设计
考点1:系统设计概述
1:软件设计的任务与活动
体系结构设计:定义软件系统各主要部件之间的关系。
数据设计:基于E-R图确定软件涉及的文件系统的结构及数据库的表结构。
接口设计(人机界面设计) :软件内部、软件和操作系统间以及软件和人之间如何通信。
过程设计:系统结构部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
2:应用的工具
- IPO图
- PDL
- PAD
- 程序流程图
- N/S盒图
考点2:模块设计
1:模块设计原则概述
- 保持模块的大小适中
- 深度、宽度适中
- 扇入、扇出系数要合理
- 模块的作用域应该在模块之内
- 功能应该是可预测的
- 高内聚、低耦合
注:模块的作用域指的是该模块中判定影响的范围,模块的控制域指的是这个模块本身以及所有直接或间接从属于它的模块集合。
2:内聚性
3:耦合性
模块设计原则(内聚,低耦合)
考点3:人机界面设计
8.6:系统测试
考点1:测试的基本概念及分类
尽早、不断地进行测试
程序员避免测试自己设计的程序
既要选择有效、合理的数据,也要选择无效、不合理的数据
修改后应进行回归测试
尚未发现的错误数量与该程序已发现错误数成正比
考点2:黑盒测试
考点3:白盒测试
例如:
对于一个判定(X>=0&&Y<=5) 记作判定1,其中X>=0记作条件1, Y<=5记作条件2。
用例:①(x=1,y=1;resut) ②(x=1.y=6;result) ③(x= -1.y=1;resut)④(x= -1.y=6;resut)
分析如下表(真值记为Y,假值记为N) ::
思考:语句覆盖至少需要哪些用例?判定覆盖呢?条件覆盖呢?判定/条件覆盖呢?路径覆盖呢?
考点4:测试阶段划分
单元测试:模块测试,模块功能、性能、接口等。
集成测试:模块间的接口。[自顶向下-桩模块, 自底向上驱动模块,三明治-上下并行]
系统测试:真实环境下,验证完整的软件配置项能否和系统正确连接。
确认测试:验证软件与需求的一致性。内部确认测试、Alpha测试、 Beta测试、 验收测试。
回归测试:测试软件变更之后,需要测试变更部分的正确性以及对变更需求的符合性。
考点5:McCabe复 杂度计算
技巧:流程图转结点图时,相交位置补充结点。
计算有向图G的环路复杂度公式为::V(G)=m-n+2。 技巧:最小独立闭环数+1
说明:其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的结点数。
8.7:软件维护
考点1:软件维护相关概念
软件维护解决软件产品交付用户之后运行中发生的各种问题。
软件维护期通常比开发期长得多,投入也大得多。
软件的可维护性是软件开发阶段各个时期的关键目标。
相对于软件开发任务而言,软件维护工作要更加复杂,工作量也大得多。
软件维护可以对软件代码、软件软硬件等多种内容进行修改。
可维护性指标用1/ (1+MTTR) 标。
软件维护工具主要有:版本控制工具;文档分析工具;开发信息库工具;逆向工程工具;再工程工具;配置管理支持工具等。
考点2:软件维护分类
改正性维护。指为了识别和纠正软件错误、改正软件性能 上的缺陷、排除实施中的错误,应当进行的诊断和改正错误的过程。
适应性维护。指使应用软件适应信息技术变化和管理需求变化而进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。
预防性维护。系统维护工作不应总是被动地等待用户提出要求后才进行,应进行主动的预防性维护,通过预防性维护为未来的修改与调整奠定更好的基础。
完善性维护。扩充功能和改善性能而进行的修改。对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。
8.8:软件质量保证
软件质量保证ISO/IEC 9126
8.9:软件文档
开发文档(开发人员)
- 可行性研究和项目任务书
- 需求规格说明
- 功能规格说明
- 设计规格说明(包括程序和数据规格说明)
- 开发计划
- 软件集成和测试计划
- 质量保证计划、标准、进度
- 安全和测试信息
产品文档(用户)
- 培训手册
- 参考手册和用户指南
- 软件支持手册
- 产品手册和信息广告
管理文档(负责人)
- 开发过程的每个阶段的进度和进度变更的记录
- 软件变更情况的记录
- 相对于开发的判定记录
- 职责定义