☞ 软件需求是一个为解决特定问题而必须由被开发或被修改的软件展示的特性。这个问题可能是使用软件的某人的任务中的一个自动化部分,或是支持委托开发软件的组织的业务流程,或修正当前软件的缺点,或是控制一个设备等。
☞ 所有软件需求的一个基本特性就是可验证性。验证某些软件需求可能很困难或者成本很高。软件需求和软件质保人员都必须保证,在现有的资源约束下,需求可以被验证。
☞ 除了其表达的行为特性外,需求还有其他特性,如优先级,以便在资源有限时进行权衡。通常,要唯一地标识软件需求,才能在整个软件生命周期中,进行软件配置控制和管理。
☞ 需求分析涉及分析需求的过程,其目的如下:
(1)检测和解决需求之间的冲突。
(2)发现软件的边界,以及软件与其环境如何交互。
(3)详细描述系统需求,以导出软件需求。
1)软件设计。
☞ 软件设计由两个处于软件需求和软件构造之间的活动组成。
(1)软件架构设计:有时叫做高层设计,描述软件的结构和组织,标识各种不同的组件。
(2)软件详细设计:详细地描述各个组件,使之能被构造。
(3)软件架构是“一个描述软件系统的子系统和组件,以及它们之间相互关系的学科”。架构试图定义软件的内部结构。通过视图可以从不同角度描述软件结构,主要包括逻辑视图(满足功能需求)、过程视图(并发问题)、组件视图(实现问题)、部署视图(分布问题)。
(4)模式提供了架构设计的某些方法。模式是“给定上下文中普遍问题的普遍解决方案”,主要涉及设计模式(微观架构模式)和架构模式(宏观架构)。
2)软件测试。
测试:是为评价和改进产品质量、识别产品的缺陷和问题而进行的活动。
软件测试是针对一个程序的行为,在有限测试用例集合上,动态验证是否达到预期的行为,需要选取适当的测试用例。测试不再只是一种仅在编码阶段完成后才开始的活动。现在的软件测试被认为是一种应该包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分。测试不仅是检查预防措施是否有效的主要手段,而且是识别由于某种原因预防措施无效而产生的错误的主要手段。需要注意的是,在广泛的测试活动成功完成后,软件可能仍包含错误,交付后出现的软件失效的补救措施是由软件维护达成的。
软件测试随开发和维护过程,通常在不同的级别上进行,可以在概念上区分三个大的测试阶段:单元测试、集成测试和系统测试。
3)软件维护。
软件维护包括如下类型。
(1)更正性维护:软件产品交付后进行的修改,以更正发现的问题。
(2)适应性维护:软件产品交付后进行的修改,以保持软件产品能在变化后或变化中的环境中可以继续使用。
(3)完善性维护:软件产品交付后进行的修改,以改进性能和可维护性。
(4)预防性维护:软件产品交付后进行的修改,以在软件产品中的潜在错误成为实际错误前,检测和更正它们。
☞ 软件复用是指利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用。
☞ 软件复用的主要思想是,将软件看成是由不同功能的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写某一特定软件的工作就变成了将各种不同组件组织连接起来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。
软件质量管理过程包括:质量保证过程、验证过程、确认过程、评审过程、审计过程等。
(1)软件质量保证过程通过计划制订、实施和完成一组活动提供保证,这些活动保证项目生命周期中的软件产品和过程符合其规定的需求。
(2)验证与确认过程使用能够定位缺陷并便于以后改正的测试技术直接处理软件产品质量问题。验证与确认过程确定某一开发和维护括动的产品是否符合活动的需求,最终的软件产品是否达到其意图并满足用户需求。验证过程试图确保活动的输出产品已经被正确制造,即活动的输出产品满足前面活动施加的规范说明;确认过程则试图确保建造了正确的产品,即产品满足其特定的目的。
(3)评审与审计过程包括:管理评审、技术评审、检查、走查、审计等。
☞ 软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件。它由软件需求工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。
☞ 软件需求工具包括需求建模工具和需求追踪工具。
(1)软件设计工具用于创建和检查软件设计,因为软件设计方法的多样性,这类工具的种类很多。
(2)软件构造工具包括程序编辑器、编译器和代码生成器、解释器、调试器等。
(3)软件测试工具包括测试生成器、测试执行框架、测试评价工具、测试管理工具、性能分析工具。
(4)软件维护工具包括理解工具(如可视化工具)和再造工具(如重构工具)。
(5)软件配置管理工具包括追踪工具、版本管理工具和发布工具。
(6)软件工程管理工具包括项目计划与追踪工具、风险管理工具和度量工具。
(7)软件工程过程工具包括建模工具、管理工具、软件开发环境。
(8)软件质量工具包括检查工具和分析工具。
☞ 软件过程管理是提高软件生产率和保证软件质量的一个重要的方法。
☞ 软件工程管理集成了过程管理和项目管理,包括以下六个方面。
(1)启动和范围定义。
(2)软件项目计划。
(3)软件项目实施。
(4)评审和评价。
(5)关闭。
(6)软件工程度量。