答:
1、软件重用可以显著地改善软件的质量和可靠性。
2、软件重用可以极大地提高软件开发的效率。3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。
2. 螺旋模型的特点:
可应用在计算机软件的整个生命周期
是开发大型系统和软件的理想方法
把原型开发作为降低风险的机制
3.原型模型的主要特点
快速制订原型开发的计划、快速建模和快速构建
原型应交付给客户试用,并收集馈意见,改进原型
(1) 统一过程(UP)是一种“用例驱动、以架构为核心,迭代并却增量”的软件过程。其包括并发进行的起始、细化、构建、转化和生产5个阶段。
l 起始阶段包括沟通和策划,定义软件的需求,提出系统的大致框架,并制定开发计划,以保证开发具有迭代和增量的特性。
l 细化阶段包括沟通和建模活动。细化阶段扩展了起始阶段定义的用例,并扩展体系结构以包括软件的5种视图:用例模型、分析模型、设计模型、实现模型和部署模型。
l 构建阶段于通用软件过程中的构建活动相同,构建采用体系结构模型作为输入,开发系统构建,使最终用户能够操作用例。
l 转化阶段包括通用构建活动的后期活动以及部署活动。软件被提交最终用户进行beta测试,并发布支持信息(手册、问题解决指南及安装步骤)。转换阶段结束时,软件增量称为可用的发布版本。
l 生产阶段和通用过程的部署活动一致。在该阶段,监控软件持续使用,提供运行环境的支持,提交缺陷报告和变更请求。
4.(1)软件设计是软件工程过程的技术核心,它开始于需求分析和需求建模完成之后。设计模型提供了数据/类设计、体系结构设计、接口设计和构件设计的细节。
(2) 软件设计工程中,进行数据/类设计、体系结构设计、接口设计和构件设计的目的
① 数据/类设计:将分析类模型转化为设计类的实现以及软件实现所要求的数据结构。
② 体系结构设计:定义软件的主要结构元素之间的联系、可用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束。
③ 接口设计:描述软件和协作系统之间、软件和使用人员之间是如何通信的。
④ 构件设计:将软件体系结构的结构元素变换为对软件构件的过程性描述。
6. 抽象是人类处理复杂问题的基本方法之一,主要有数据抽象和过程抽象两种。
7.(1) 体系结构设计可以使用结构模型、功能模型、动态模型、过程模型和框架模型来表示。
8.(1) 模式(Pattern)是解决某一类问题的方法论,它将解决某类问题的方法总结归纳到理论高度。软件模式主要有分析模式、体系结构模式、设计模式和编码模式(又称习惯用语)四种。
9.(1信息隐蔽原则建议模块应该具有的特征是:每个模块对其他所有模块都隐蔽自己的设计决策。
10.
(1) 在设计模型通常定义了用户接口类、业务域类、过程类、持久类和系统类五种不同的设计类。良定义设计类的四个特征是完整性与充分性、原始性、高内聚和低耦合。
11.
(1) HP公司开发了软件质量属性FURPS:
① 功能性(Functionality ):评估程序的特征集和能力、所提交功能的普遍性以及整个系统的安全性。
② 易用性(Usability ):通过考虑人为因素、整体美感、一致性和文档来评估。
③ 可靠性(Reliability):通过测量故障的频率和严重性、输出结果的精确性、故障平均时间、故障恢复能力和程序的可预见性来评估。
④ 性能(Performance) :度量处理速度、响应时间、资源消耗、吞吐量和效率。
⑤ 可支持性(Supportability ) :综合了可扩展性、适应性和耐用性三面的能力。
5.重构是在不改变代码(或设计)的外部行为的前提下,改进软件系统内部结构的过程。通过重构提高模块的内聚性,降低模块间的耦合性,在实施重构前,保证已有足够的测试用例,以在重构之后进行回归测试。
(1) 分析模型应为基于计算机的系统提供必要的信息、功能和行为域的说明。分析模型主要包括基于场景的元素、基于类的元素、行为元素和面向信息流的元素。
(1) 传统软件的测试策略是将测试分为单元测试、集成测试、确认测试和系统测试。
① 单元测试是针对程序中的模块或构件,主要揭露编码阶段产生的错误。
② 集成测试针对集成的软件系统,主要揭露设计阶段产生的错误。
③ 确认测试是根据软件需求规约对集成的软件进行确认,主要揭露不符合需求规约的错误。
④ 系统测试是针对基于计算机系统中的软件,以揭露不符合系统工程中对软件要求的错误。
(2)单元测试的主要内容包括:模块接口、局部数据结构、边界条件、所有独立路径和所有错误处理路径。在单元测试中,每个被测模块开发一个驱动(driver)程序和若干个桩(stub)模块。
(3) 集成测试通常采用增量方式,其主要有自顶向下集成和自底向上集成方法。
① 自顶向下集成的优缺点:
l 优点:不需要驱动模块;能尽早对程序的主要控制和决策机制进行检验,能较早发现整体性的错误;深度优先的自顶向下集成能较早对某些完整的程序功能进行验证。
l 缺点:测试时低层模块用桩模块替代,不能反映真实情况;重要数据不能及时回送到上层模块。
② 自底向上集成的优缺点:
l 优点 :不需要桩模块,所以容易组织测试;将整个程序结构分解成若干个簇,对同一层次的簇可并行进行测试,可提高效率。
l 缺点:整体性的错误发现得较晚。、
(4) 回归测试是对已进行过的测试的子集的重新执行,以确保对程序的改变和修改,没有传播非故意的副作用。回归测试集(已经过测试的子集)包括三种不同类型的测试用例:
① 能测试软件所有功能的代表性测试用例
② 专门针对可能会被修改影响的软件功能的附加测试
③ 注重于修改过的软件模块的测试
(5) 冒烟测试是一种常用的集成测试方法,它让软件团队频繁地对项目进行评估。冒烟测试提供了下列好处:
① 降低了集成风险
② 提高最终产品的质量
③ 简化错误的诊断和修正
(6) α测试和β测试是确认测试的两种常用方法。
① α测试是由用户在开发者的场所进行的,软件在开发者对用户的“指导下”进行测试。经α测试后的软件称为β版软件。
② β测试是由软件的最终用户在一个或多个用户场所进行的,与α测试不同,开发者通常不在测试现场。
(7) 系统测试是对整个基于计算机的系统进行的一系列测试。常用的系统测试主要包括:恢复测试、安全测试、压力测试和性能测试。
(8) 测试的目的是发现错误,调试(也称排错)的目的是确定错误的原因和准确位置,并加以纠正。调试的方法主要有蛮力法、回溯法和原因排除法。