第二章 考试大纲
- 软件需求分析与定义
- 软件设计、测试与维护
3. 软件复用
4. 软件质量保证及质量评价
5. 软件配置管理
6. 软件开发环境
7. 软件过程管理。
知识点:
1. 软件需求分析与定义
什么是软件需求:
软件需求就是系统必须完成的事,以及必须具备的品质,软件需求包括功能需求、非功能需求和设计约束3 方面内容。
容易混淆的概念,并非软件需求:
业务需求: 是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求
用户需求: 是指描述用户使用产品必须要完成什么任务,通常是进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度的需求。
系统需求: 是从系统的角度来说明软件的需求,包括用特性说明的能需求、质量属性,以及其他非功能需求,还有设计约束。
这分别对应于需求的3个不同的层次,从目标到具体,从整体到局部,从概念到细节。
需求开发:
需求开发:包括需求捕获、需求分析、编写规格说明书和需求验证4个阶段.
可行性研究工作的任务
- 技术可行性:现有的技术力量是否达到? 否有多种不同的解决方案?
- 经济可行性:效益分析、投资回报率、其他方案是否超过开发成本?
- 社会可行性:是否符合企业实际情况?是否符合员工利益?是否符号相关法规行业规范?
可行性研究工作的步骤
- 实问题定义与目标:使问题定义更加清晰、明确、没有歧义性,并且对系统的目标、规模,以及相关约束与限制条件提出更加细致的定义, 确保可行性性研究小组的所有成员达成共识。
- 研究分析现有系统。
- 新系统建模: 用例模型、ER关系图、
- 客户复核:建立起来的系统模型是系统分析员眼里问题定义,这与客户心目中的问题是否一致?
- 提出并评价解决方案。在这个阶段,应该尽量列举出各种可行的解决方案,并且对这个解决方案优点、缺点 一个综合性的评价,以便下一步决策。
- 确定最终推荐的解决方案。选中一个最合理、最 行的解决方案,更加详细地说明理 ,并且还要对其进行更加完善的成本/效益分析。
a. 成本估计:对于软件系统而,主要的成本是人力资源成本,另外还包括 直接的费用、设备采购的费用等。对系统工作量(用人月、人
年等单位进行说明)进行合理、科学的评估,并在此基础上进行计。
b. 效益分析:将会带来的直接、间接收益,以及成本降低的具体数额进行量化。
c. 草拟开发计划。
d. 以书面的形式提交《可行性分析报告》并进行审查。
完成可行性研究工作之后,必须将这成果文档化地记录下来,形成 《可行性研究》报告 。
需求分析定义
所谓分析就是通过对问题域的研究,获得对该领域特性及存在于其中(需要解决) 问题特性的透彻理解并用文档说明。
需求分析的工作任务
- 绘制系统上下文范围关系图:定义系统与系统外部实体间的界限和接口的简单模型
- 创建用户接口原型:在需求分析段通过快速开发工具开发一个可抛弃原型。
- 分析需求的可行性:对所有获得的需求进行成本、性能、技术实现方面的行性研究,以及这些需求项是否与其他的需求项有冲突,是否有对外赖关系等。
- 确定需求的优先级: 可以采用满意度/非满意度指标进行说明,需求被实现时用户的满意度。
- 为需求建立模型:模型的表现形式主要是图表加上少量的文字描述。
- 创建数据字典:对数据项和结构进行定义。以确保开发人员使用统一的数据定义。
- 使用质量功能调配(QFD ):需求优先级基础上的一个升华,QFD 将需求分为三类:期望需求,即如果缺少会让其感到不满意的需求;普通需求;兴奋需求:实现了客户会感到惊喜,但没有也不会遭到责备。
需求分析方法论
- 结构化分析方法
- 软系统方法
- 面向对象分析方法
- 面向问题域的分析
2. 软件设计、测试与维护
软件设计基本原则
- 信息隐蔽:要是坐在后排聊天的同学能像中间打牌的同学那么安静,就不会影响到前排睡觉的同学,如果不想让坏事传播开来,就应该把坏事隐藏起来。
- 模块独立性:模块独立的概念是模块化、抽象化 、信息隐蔽和局部化概念的直接结果。
a. 高内聚(high cohesion): 理想状态一个模块只干一件事。
b. 低耦(low coupling):耦合是程序结构中模块相互关联的度量。
结构化设计方法
- 总结出系统应有的功能。
- 细化数据流。
- 分析各过程之间的耦合关系。
用户界面设计
发展:第一代是以文本为基础的简单交互,第二代直运操纵的界面。它大量使用图形、语音和其他交互媒介,充分地考虑了人对美的需求。
好的用户界面应具有以下特点:
- 可使用性:简单、标准化、一致性、拥有帮助功能、快速响应和低的系统成本、容错能力
- 灵活性:考虑用户 特点、能力、知识水平,满足不同用户要求,还可定制和修改界面
- 复杂性和可靠性:界面的复杂程度,无故障使用的间隔时间。
设计评审:尽量不让错误传播到下一个阶段。设计评审一般采用评审会议的形式来进行。
软件测试
- 测试用例设计:测试用例是为特定目标开发的测试输入、执行条件和预期结果的集合,两种常用的测试方法:黑盒测试和白盒测试。
a. 黑盒测试:不考虑内部结构,检查程序的功能是否符合它功能说明,又称为性能测试或数据驱动测试。
黑盒测试方法:
i. 等价类划分:
ii. 边界值分析
iii. 错误推测法: 靠经验和直觉推测程序中可能存在的各种错误。
iiii. 因果图:考虑输入条件的各个组合, 使用一种适于描述多种条件的组合。
b. 白盒测试:允许测试人员利用程序内部的逻辑结构和有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
c. 逻辑覆盖:它属白盒测试,包括语句覆盖、判定覆盖、条件覆盖、 判定-条件覆盖、条件组合覆盖、路径覆盖等。 - 软件测试策略: 分为:单元测试、集成测试 (又称组装测试)、确认测试和系统测试。
- 软件测试类型:功能测试,可靠性测试,强度测试,性能测试,恢复测试,启动/停止测试,配置测试,安全性测试,可使用性测试,安装测试,过程测试,容量测试,文档测试,兼容性测试。