净室过程对许多当前使用中成功的软件实践提供了强有力的支持。
一、面向对象
净室过程为面向对象开发提供了可管理性和技术严密性(Ett和Trammell 1995)。对象从本质上来说是封装了数据和一系列服务的状态机器。一个净室组件用黑盒视图(一个对象的外部行为)、状态盒视图(一个对象的封装数据)和明盒视图(处理外部需求和访问封装数据的服务)来定义。一个净室组件从技术上讲就是一个对象。净室盒子结构有助于产生一个完备、一致和正确的对象行为规范。而且,盒子结构有助于定义和管理数据并且控制数据在各个对象之间的流动。
在净室技术中,数学形式化方法成为规范、设计、正确性验证和认证测试的基础。这种成熟的形式化方法可为相对直观的面向对象方法增加精确性和可预见性。净室是应用工程而非领域工程的一种方法。面向对象方法的普遍力量在于寻求某领域应用特征的关系和抽象。面向对象的领域分析可作为净室应用工程的补充。
二、软件复用
成功的软件组件复用需要对组件功能在语义上有精确的定义,还需组件在特定使用环境中得到质量和可靠性认证。没有这些保证,复用将是不可预见的和冒险的。
净室黑盒规范能从语义上定义所有可能的使用情况。如果内部重用的范围窄于组件的范围(如减小了可变范围),可通过限制黑盒函数的定义域来制定范围减小的规范。一个“包装”(一个包含重用组件的组件)可以加强调用组件的并置条件。
一个现成重用组件的适应性常常是通过试运行来评估的。净室认证通过统计测试能提高特定使用环境的质量和可靠性度量。统计测试允许从特定使用情况和指定置信度水平评估组件的可靠性。
结合净室可靠性方案,Poore、Mills和Mutchler(1993)改进了一种复用分析的定量方法。利用这种方法,在顶层设计时就可建立组件的可靠性和转移概率。如果给定组件的可靠性指标,通过顶层组件网的定量分析可得到关于系统可靠性的上界。分析结果可用于评估组件重用的生命力。
三、软件体系结构
在众多软件体系结构的定义中,一个共同的主题是:软件体系结构定义了主要的组件和它们之间的关系。净室提供了一个过程来准确定义体系结构的功能性语义--------是什么组件以及它们之间有什么关系。
净室状态盒和明盒中高层的内部设计关系到系统主要组件以及它们之间的关系:主要的数据对象由状态盒设计确定,数据对象的主要操作由明盒设计完成。最后,高层明盒设计体现了系统体系结构的主要元素。
净室规范和设计包括对一个系统解空间的系统的探索。黑盒和状态盒的关系是一对多,必须从一个对象集中做出选择。状态盒和明盒的关系也是一对多,必须从一个对象操作集中做出选择。软件体系结构的进化将产生设计模式的分类,净室工作者的设计选择随着盒子结构设计被编成目录。
简而言之,净室系统总在明晰体系结构,但从没命名(除“系统顶层明盒”之外)。在研究软件体系结构时对设计模型的命名和描述将加速对设计选择的评估。
四、检查和评审
净室正确性验证允许在检查和评审中增加额外的技术严密性和精确性。除了使用本地检查列表外,净室还利用基于函数的理论:一个程序(代码)实现一个函数(规范)对代码和设计进行评审。净室评审的目的是验证实现了的功能规范的正确性。对代码的评审总是对照其所实现的功能规范进行,而不是空对空的。
净室规范和设计产品具有内部的可跟踪性。在盒子结构规范和设计的每一步都要进行同样的评审。要对每个工作产品进行评审,对应的小组成员要对工作产品的正确性负责。最终的成功是小组的成功,失败也是小组的失败。健全的技术和小组对正确性的责任的结合是预防缺陷非常有效的方法。
五、软件测试方法
净室测试基于使用模型对给定版本的软件的预期操作性能产生有根据的统计参考。净室使用模型也可用于其他测试目的,如最大覆盖测试和加强关键功能。使用模型为模型覆盖测试、随机测试、重点测试、划分测试和其他形式的测试提供了科学的基础。
人工测试(Crafted testing)同样可用于净室过程。有必要为特定环境的系统运行提供专门的测试用例以消除不确定性。另外,在后台运行的代码覆盖工具可作为使用测试的补充。回归测试、结构(白盒)测试和其他测试方法和净室是兼容的。 |
相关推荐
在软件工程实践中,笔者深刻体会到,一个优秀的Leader需要能够协调团队成员之间的关系,有效地沟通信息,激发团队成员的潜力,并合理地分配任务。经历危机之后,笔者学会了如何信任团队成员,并恰当地分配任务,最终...
吕云翔的《软件工程理论与实践》作为一本专业教材,其中包含了大量与软件工程相关的理论知识和实践指导。在附录C中提供的习题参考答案,反映了与该学科相关的若干知识点: 首先,从提供的部分内容中可以看出,习题...
《软件工程实践教程》是一本深入探讨软件开发过程和最佳实践的教材,旨在帮助学生和专业人士理解并掌握软件工程的核心原则。本教程涵盖了多个关键领域,包括需求分析、设计、编码、测试以及维护,旨在提升软件项目的...
除了Power Designer和UML,软件工程实践教程还可能包括其他关键主题,如需求工程,它涉及需求的收集、分析、定义和管理;软件设计,包括架构设计和详细设计,它们决定了系统的整体结构和组件间的接口;软件测试,...
软件工程方法与实践 软件工程方法与实践是软件开发过程中的一个重要环节,它包括需求分析、结构化分析、设计、实施、测试和维护等阶段。 software engineering 方法与实践是软件开发中不可或缺的一部分,它可以帮助...
为了确保软件工程行业的健康发展,以及保障公共利益,IEEE-CS(美国电气和电子工程师协会计算机学会)和ACM(美国计算机协会)的软件工程道德和职业实践联合工作组发布了《软件工程职业道德规范和实践要求 5.2版》,...
《软件工程:实践者的研究方法》是一本深入探讨软件开发过程和管理的权威书籍,它为读者提供了理解和应用软件工程理论的实用框架。这本“打黑砖头”般的著作通常被视为软件工程学习者的必读经典,其课后题旨在巩固和...
《软件工程:理论与实践(第二版 中文版 影印版)》是一本深入探讨软件开发过程、方法和技术的专业书籍。它旨在为读者提供全面的软件工程知识,结合理论与实际操作,帮助读者理解并掌握软件开发的核心要素。本文将...
在软件开发过程中,软件工程实践项目文档起着至关重要的作用。这些文档不仅是团队协作的桥梁,也是项目管理、质量控制和后期维护的关键工具。本文将深入探讨“软件工程实践项目文档”的重要性、组成和实践要点,以...
从给定的文件信息中,我们可以提炼出一系列关于软件工程的重要知识点,涵盖了软件的基本属性、软件工程的核心要素、软件开发模型、软件危机及其成因、以及软件过程模型的多样性及其特性。下面,我们将对这些知识点...
这些材料为读者构建了一个完整的软件工程实践框架,从需求定义到项目结束,再到质量控制和过程改进,全方位地展示了软件开发的生命周期。了解并掌握这些知识,将有助于提升软件开发的专业性和效率,实现更高质量的...
### 自考软件工程实践样例知识点解析 #### 一、背景与目标 本文档旨在指导高等教育自学考试《计算机软件专业》中的软件工程课程实践部分。通过一个具体的案例——开发一个针对“长江技工学校”的课程注册系统,来...
第5章 系统工程,探讨了软件工程与系统工程的关系,强调软件是更大系统的一部分,需要考虑系统级的设计和集成,确保软件与其他硬件、人员和环境的协调。 第6章 需求工程,讲解了需求获取、分析、建模和管理的全过程...
### 软件工程实践报告书关键知识点解析 #### 一、需求分析阶段 ##### 编写目的 - **目标**: 明确本模块的主要功能是管理超市的采购进货过程,帮助超市经营管理者快速了解公司的货物采购状况,以便于制定合理的战略...
除了上述两种主要方法学,软件工程还包括其他诸如形式化方法学、敏捷方法学等,不同的方法学适应不同的开发场景和需求。而随着软件工程的不断进步和发展,新的技术和方法学也在不断地涌现和进化。 综合来看,软件...
重点关注客户/服务器架构下的软件工程实践,探讨了分布式系统的设计和实现。 - **第29章:计算机辅助软件工程** 探讨了CASE工具在软件生命周期各个阶段的应用,以及它们如何提高开发效率。 - **第30章:未来之...