软件工程:实践者的研究方法第13章设计概念和原则

软件工程:实践者的研究方法第13章设计概念和原则,第1张

软件工程:实践者的研究方法第13章设计概念和原则,第2张

第13章 设计概念和原则

  在任何工程化产品或系统的开发阶段中,设计是第一步。它可以定义为“为了能够足够详细地定义一种设备、一个处理或一个系统,以便保证其物理实现,而应用各种技术和原则的过程。”[TAY59]。

  设计者的目标是生成一个随后要构造的实体的一种模型或表示。开发模型的过程综合了基于构造类似实体的经验的直觉和判断、一系列指导模型演化路径的原则和直观推断、一系列判断质量的标准以及导出最终设计表示的迭代过程。

  象其他学科中的设计方法一样,软件设计随着新的方法、更好的分析和更广泛的理解的引入而不断地变化着。与机械或电子设计不同的是,软件设计在它的演化过程中处于一种相对早期的阶段。我们对软件设计(相对于“编程”或“代码书写”)给予正式考虑仅仅才三十年,因此,软件设计方法学缺少那些更经典的工程设计学科所具有的深度、灵活性和定量性。但是,软件设计的方法是存在的;设计质量的标准是能够获得的;设计符号体系也是能够应用的。在本章中,我们探讨可以应用于所有软件设计的基本概念和原则。第14章和第21章考察各种软件设计方法。

13.1软件设计和软件工程

  软件设计处于软件工程过程中的技术核心位置,并且它的应用不考虑所使用的软件过程模型。软件设计开始于对软件需求进行分析和规约之后,它是构造和验证软件所需的三项技术活动—设计、代码生成和测试—之一,每一项活动都最终导致经过验证的计算机软件的方式变换信息。

  分析模型(第12章)的每一个元素均提供了创建设计模型所需的信息。软件设计中的信息流表示在图13-1中,通过数据、功能和行为模型展示的软件需求被传送给设计阶段,使用许多设计方法(在后面章节中讨论)中的一种,设计阶段产生数据设计、体系结构设计、接口设计和过程设计。

  数据设计将分析时创建的信息域模型变换成实现软件所需的数据结构。在实体—关系图中定义的数据对象和关系以及数据字典中描述的详细数据内容为数据设计活动奠定了基础。

  结构设计定义了程序的主要结构元素之间的关系。这种设计表示—计算机程序的模块框架—可以从分析模型和分析模型中定义的子系统的交互导出。

  接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何通信。一个接口意味着信息流(如数据和/或控制流),因此,数据和控制流图提供了接口设计所需的信息。

  过程设计将程序体系结构的结构元素变换为对软件构件的过程性描述。从PSPEC,CSPEC和STD获得的信息是过程设计的基础。

  我们在设计时作出的决策最终将会影响软件构造是否成功,更重要的是会决定,软件维护的难易程度,但是,为什么设计如此重要呢?

  软件设计的重要性可以用一个词来表达—质量。设计是在软件开发中形成质量的地方,设计为我们提供了可以用于质量评估的软件表示,设计是我们能将用户需求准确地转化为完整的软件产品或系统的方法。软件设计作为所有软件工程和软件维护步骤的基础,没有设计,我们将冒构造出不稳定系统的风险—稍作改动就会失败;难于测试的系统;直到软件工程过程后期才能评估系统的质量,到那时时间已不够并且已经花销很多经费。

13.2 设计过程

  软件设计是一个迭代的过程,通过它需求被变换为用于构造软件的“蓝图”。初始时,蓝图描述了软件的整体视图,也就是说,设计在高的抽象层次上表示—在该层次可以直接追踪到特定数据、功能和行为需求。随着数据迭代的开始,后续的精化将导致更低抽象级别的设计表示,这些表示仍然能够追踪到需求,但是连接更微妙了。

13.2.1 设计和软件质量

  在整个设计过程中,演化的设计的质量可以通过在第8章讨论的一系列正式技术复审或设计追踪审查来评估。McGlanghlin[McG91]提出了可以指导良好设计演化的三个特征:

  ·设计必须实现所有包含在分析模型中的明显需求,并且必须满足客户希望的所有隐式需求。

  ·对于那些生成代码和那些进行测试并随后维护软件的人而言,设计必须是可读的,可理解的。

  ·设计应该提供软件的完整面貌,这与从某个实现视角看到的数据、功能、和行为域有关。

  这些特征中的每一个实际上都是设计过程的目标。但是如何达到这些目标呢?

  为评价一项设计表示的质量,我们必须建立良好的设计技术标准,在本章的后面部分,我们将详细讨论设计质量标准,现在,我们给出下面的指南:

  1.设计应该展示一种层次性组织,从而使得可以有指导性地使用软件元素间的控制。①

  2.设计应该模块化,也就是说软件应该逻辑地划分成完成特定功能和子功能的构件。

  3.设计应该既包含数据抽象,也包含过程抽象。

  4.设计应该导出具有独立功能特征的模块(例如,子例程或过程)。

  5.设计应该导出降低模块和外部环境间复杂连接的接口。

  6.设计应该通过使用由软件需求分析过程中获得的信息导出要驱动的可重复的方法。

  这些标准不是偶然获得的,软件设计过程通过应用基本设计原则、系统化的方法学和完全的复审来促进良好的设计。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 软件工程:实践者的研究方法第13章设计概念和原则

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情