软件设计·构件级设计(component

您所在的位置:网站首页 机械设计构件的定义 软件设计·构件级设计(component

软件设计·构件级设计(component

2024-07-10 04:55| 来源: 网络整理| 查看: 265

作为复习笔记使用 

体系结构设计的第一次迭代完成之后,就应该开始进行构件级设计,在构件级设计这个阶段,全部的数据和软件的程序结构会被建立,从而将设计模型转化成为运行软件

一、构件的定义

1. 通常来说,构件是计算机软件中的一个模块化的构造块

2.OMG03a定义:构件是系统中模块化的、可部署的以及可以替换的部件,该部件封装了实现并对外提供一组接口

3. 由于构件存在于软件体系结构中,所以构件在完成所需系统的需求和目标的过程中有重要的作用,同时由于构件驻留在软件体系结构的内部,所以它们必须和其他的构件、存在于软件边界之外的实体(e.g. 其他系统、设备、人员)进行通信合作

二、针对构件的不同观点(view)

这一个部分将会介绍“什么是构件以及在设计建模中如何让使用构件”的三种观点

面向对象观点(object-oriented view)

在面向对象的软件工程环境中,构件是协作类的集合,在某些情况下,构件可以包含一个简单的类。在面向对象的观点下,构件中的每个类都会得到对于类的所有属性和与其实现相关操作的详细的阐述,同时所有与其他设计类相互通信协作的借口也必须被定义。

构件的协作类可以分为分析类(和问题域有关: analysis class)和基础类(为问题域提供支持性服务 : infrastructure class)

传统观点(conventional view)

在传统软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑、实现处理逻辑所需要的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成

过程相关的观点(process-related view)

上面提到的两种观点都是假定从头开始设计构件,也就是设计者必须根据从需求模型中导出的规格说明创建新的构件,但是还存在另一种方法

软件工程已经开始强调使用已有构件或者设计模式来构造系统的必要性,实际上,软件工程师在设计过程中就可以使用已经验证过的设计或者代码级构件目录,当软件体系结构设计完成之后,就可以从目录中选取构件或者是设计模式,用于组装体系结构 

三、设计基于类的构件

选择面向对象的软件工程方法之后,构件级设计主要关注需求模型中问题域特定类的细化和基础类的定义和细化,这些类的属性、操作、接口的详细描述是开始构造活动之前需要的设计细节

基本设计原则 

使用下面这四种原则的根本动机在于:使得产生的设计在发生变更的时候能够适应变更并且减少副作用的传播 

 开闭原则(The Open-Closed Principle,OCP): 构件应该对外延具有开放性,对修改具有封闭性,简单来说,设计者应该采用一种无需对构件自身内部的代码或者逻辑做修改就可以进行扩展,通俗一点说,就是当你想在家里放一些健身器材,与其在家里腾出空间来放,不如再建一层楼专门放器材Liskov替换原则(Liskov Substitution Principle , LSP): 子类可以替换它们的父类依赖倒置原则(Dependency Inversion Principle, DIP): 依赖于抽象,而不是具体实现,这就相当于你去市场买菜,如果每在一个摊位买菜就提一个塑料袋,那么到后面越提越多,再买菜就不好提了,我们就比较倾向于拉一个车车,把塑料袋都放在里面,这个车车就相当于我们对“购买的菜”的抽象接口分离原则(Interface Segregation Principle, ISP): 多个客户专用接口比一个通用接口要好,这个在生活中其实也很常见,如果我们在超市结账的时候,超市里面只有一个收银台,那么就势必会排长长的队,但是如果有多个收银台,那么结账速度就会提高

尽管构件级设计原则提供了有益的指导,但是构件本身并不能独立存在,在很多情况下,单独的构件或者类被组织到了子系统或者包中,那么就像我们要打包行李一样,总要考虑箱子里面的东西怎么摆,于是下面是3种打包的原则 

发布复用等价性原则(Release Reuse Equivalency Principle, REP): 复用的粒度就是发布的粒度共同封装原则(Common Closure Principle, CCP): 一同变更的类应该合在一起共同复用原则(Common Resue Principle, CRP): 不能一起复用的类不能分到一组  四、实施构件级设计 

在上面的介绍中,我们明白其实构件级设计本质是精细化的,要求设计者必须将需求模型和架构模型中的信息转化成一种设计表示,这种设计表示提供用来指导编码和测试的充分信息

应用面向对象的软件工程环境的时候,有以下的步骤:

1. 标识出所有和问题域相关的设计类

2. 确定所有与基础设施相对应的设计类

3.细化所有不需要作为复用构件的设计类

在类或者构件协作的时候说明消息的具体细节为每个构件确定合适的接口细化属性,并且定义实现属性所需要的数据类型和数据结构详细描述每个操作中的处理流

4.说明持久数据源(数据库&文件)并确定管理数据源所需要的类

5. 开发并且细化类或者构件的行为表示

6. 细化部署图来提供额外的实现细节

7. 考虑每个构件级设计表示,并且时刻考虑其他可选方案



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3