软件建模正在成为一种普遍的技术来帮助软件工程师理解,
图9.1。软件工程模型和方法知识领域主题的分解
工程师,并与适当的利益攸关方沟通软件的各个方面。利益攸关方是指那些对软件有明确或隐含兴趣的人(例如,用户、买方、供应商、架构师、认证机构、评估者、开发人员、软件工程师,也许还有其他人)。
虽然在文献和实践中有许多建模语言、表示法、技术和工具,但是有一些统一的通用概念以某种形式应用于它们。以下各节提供这些一般概念的背景知识。
1.1建模原则
建模为软件工程师提供了一种有组织的和系统的方法,用于表示正在研究的软件的重要方面,促进关于软件或要素的决策,并将这些重要的决策传达给利益攸关方团体中的其他人。指导此类建模活动的一般原则有三个:
对基本要素进行建模:好的模型通常不会在所有可能的条件下代表软件的每个方面或特性。建模通常只涉及开发那些需要特定答案的软件方面或特性,抽象掉任何不重要的信息。这种方法使模型保持可管理和有用。
提供透视图:建模使用一组定义好的规则来表达每个视图中的模型,从而提供正在研究的软件的视图。视图驱动方法为模型提供了维度(例如,结构视图、行为视图、时间视图、组织视图,以及其他相关视图)。将信息组织到视图中,使用适当的符号、词汇表、方法和工具,将软件建模工作集中在与视图相关的特定关注点上。
实现有效的沟通:建模使用软件的应用领域词汇、建模语言和语义表达(换句话说,环境中的意思)。当严格和系统地使用时,此建模将产生一种报告方法,它将促进软件信息与项目利益攸关方的有效交流。
模型是软件组件的抽象或简化。使用抽象的一个结果是没有单一的抽象完全描述一个软件组件。相反,软件的模型被表示为抽象的集合,当这些抽象集合在一起时,它们只描述选中的方面、透视图或视图——只描述那些需要做出明智的决定并首先对创建模型的原因作出响应的方面、透视图或视图。这种简化导致了一组关于放置模型的环境的假设,这些假设也应该被捕获到模型中。然后,在复用模型时,可以首先验证这些假设,以建立被复用模型在其新用途和环境中的相关性。
1.2模型的属性和表达
模型的属性是一个特定模型的显著特征,用于在所选择的建模符号和所使用的工具中描述其完整性、一致性和正确性。模型的属性包括:
完整性:所有需求在模型中被实现和验证的程度。
一致性:模型不包含冲突的需求、断言、约束、功能或组件描述的程度。
正确性:模型满足其需求和设计规范以及无缺陷的程度。
模型被构建来代表真实世界的对象和它们的行为,以回答关于软件如何被期望运行的具体问题。询问模型——通过探索、模拟或回顾——可能会暴露模型和模型所引用的软件中的不确定区域。这些关于需求、设计和/或实现的不确定性或未回答的问题可以得到适当的处理。
模型的主要表达式要素是实体。实体可以表示具体工件(例如,处理器、传感器或机器人)或抽象工件(例如,软件模块或通信协议)。模型实体使用关系(换句话说,目标实体上的行或文本操作符)连接到其他实体。模型实体的表达可以使用文本或图形化的建模语言来完成;这两种建模语言类型都通过特定的语言构建连接模型实体。实体的意义可以由它的形状、文本属性或两者同时表示。一般来说,文本信息遵循特定于语言的句法结构。与使用这些实体和关系的环境、结构或行为建模相关的精确含义依赖于所使用的建模语言、应用于建模工作的设计严密性、被构建的特定视图,以及可能附加特定符号要素的实体。可能需要模型的多个视图来捕获软件所需的语义。
当使用自动化支持的模型时,可能会检查模型的完整性和一致性。除了显式工具支持之外,这些检查的有用性在很大程度上取决于应用于建模工作的语义和语法的严格程度。正确性通常通过模拟和/或评审来检查。
1.3语法、语义和语用学
模型可能具有惊人的欺骗性。模型是一种缺少信息的抽象,这一事实可能会导致人们产生一种错误的感觉,认为从单个模型就可以完全理解软件。一个完整的模型(“完整”相对于建模工作而言)可以是多个子模型和任何特殊功能模型的联合。在这个子模型集合中,对单个模型的检查和决策可能会有问题。
理解建模构建的精确含义也很困难。建模语言是由语法和语义规则定义的。对于文本语言,语法是使用定义有效语言结构(例如,巴克斯-纳尔形式(BNF))的符号语法来定义的。对于图形化语言,语法是使用称为元模型的图形化模型定义的。与BNF一样,元模型定义了图形化建模语言的有效语法结构;元模型定义了如何组合这些构建来生成有效的模型。建模语言的语义指定附加到模型中捕获的实体和关系的意义。例如,由一条线连接的两个盒子组成的简单图表可以有多种解释。知道盒子被放置和连接的图表是一个对象图或活动图可以帮助解释这个模型。
作为一个实际问题,通常有一个好的理解一个特定的软件模型的语义建模语言选择,如何建模语言是用来表达模型中实体和关系,建模者的经验基础和建模的环境中进行表示。即使在不完整的信息存在的情况下,也可以通过抽象来传达意义;语用学解释了如何在模型及其环境中体现意义,并有效地与其他软件工程师沟通。
然而,仍然有一些实例需要注意建模和语义。例如,必须检查从另一个模型或库导入的任何模型部件,以确定在新建模环境中存在冲突的语义假设;这可能并不明显。应该检查模型是否有文档化的假设。虽然建模语法可能是相同的,但是模型在新环境中可能意味着完全不同的东西,这是一个不同的环境。另外,考虑到随着软件的成熟和变更,可能会引入语义不和谐,从而导致错误。随着时间的推移,随着工具的更新和可能的新需求,许多软件工程师都在工作于一个模型部分,模型的一部分有机会表示与原始作者的意图和初始模型环境不同的东西。
1.4前置条件、后置条件和不变量
建模功能或方法时,软件工程师通常从一组关于软件在功能或方法执行之前、期间和之后的状态的假设开始。这些假设对于函数或方法的正确操作是至关重要的,并且被分组,作为一组先决条件、后置条件和不变量进行讨论。
先决条件:在执行函数或方法之前必须满足的一组条件。如果这些先决条件在函数或方法执行之前不保持,该函数或方法可能会产生错误的结果。
后置条件:在函数或方法成功执行后保证为真的一组条件。通常,后置条件表示软件的状态如何改变,传递给函数或方法的参数如何改变,数据值如何改变,或返回值如何受到影响。
不变量:操作环境中的一组条件,在函数或方法执行之前和之后保持不变(换句话说,不变)。这些不变量对软件和函数或方法的正确操作是相关和必要的。
审核编辑:汤梓红
-
工程师
+关注
关注
59文章
1567浏览量
68468 -
软件
+关注
关注
69文章
4838浏览量
87222 -
建模
+关注
关注
1文章
301浏览量
60750 -
模型
+关注
关注
1文章
3184浏览量
48763
原文标题:软件建模
文章出处:【微信号:QCDZYJ,微信公众号:汽车电子工程知识体系】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论