系统设计总结

来源:互联网 发布:解忧杂货店读后感 知乎 编辑:程序博客网 时间:2024/05/16 07:55

系统设计各个阶段的主要交付件是OR/DR/DS,这些交付件的含义和联系已经在另外一篇博文中讲过了。这里主要讲一下UML技术在系统设计中的应用。

以前UML的应用大多数是在单机的环境下作为画图工具使用,实际应用中全程建模很少。EA(Enterprise Architect)是一个可扩展到团队协作环境的UML工具,或者说是一个IDE吧!而且它也支持二次开发。部门的牛人基于EA开发了一个联机的系统设计平台,确实是这么多年我见过的系统设计方面的一个突出的实践。
相比于单机版的UML应用。EA团队开发环境是一个联机的企业应用,有客户端软件(EA)、有后台数据库、有配置库、系统账号和权限控制。所有的系统设计人员拥有自己的系统账号,通过自己的PC登陆到系统中,进行画图等操作。所有的交付并不保存在本地PC上,而是保存在后台数据库中。这样,一个团队的所有成员能够对一个大型系统进行协同的系统设计,避免了交付不能集中管理、互相冲突的缺陷。EA还支持插件式的开发。PS:EA联机设计系统的具体开发和部署方法还需要单独研究。

下面将一下OR/DR/DS在UML系统设计平台上的表现形式。
OR和DR都是Requirement,也就是需求,因此在系统中采用Use Case来表示。为了区分各种类型的需求,平台的设计者基于Use Case扩展了多种子类型Use Case。对于增量开发的新软件版本,可能部分需求是基于又有版本的修改,因此设计了3种类型的OR:新增OR、修改OR、扩展OR。在一个增量开发版本系统设计开始之前,一个重要的工作就是将旧版本软件的所有功能通过Use Case的方式全部录入系统中。录入新版本需求时,需要同时体现这些需求和旧版本需求的关系。这个关系通过用例之间的依赖关系来表示(分别是修改、扩展)。

Charter-TR1期间,系统设计人员根据OR分解出DR。DR本质上也是一个个的需求,因此也通过Use Case来表示,并在Diagram中体现出和OR的依赖关系。平台设计者开发了插件,基于这个插件录入的DR的详细信息中,会有现成的模板。系统设计人员根据模板的提示填入每个设计需求的详细信息,包括详细描述、输入参数、输出参数和其他质量属性等。
OR和DR完全是需求层面的信息,和系统架构关系不大。当DR分解为DS的时候,要将每个需求具体分解到系统中的各个子模块、子系统,因此在此之前,需要在设计平台上建立系统架构的视图。
UML的4+1视图是开发视图、进程视图、部署视图、逻辑视图,外加场景视图。上面讲的基于OR、DR的用例实际上就是场景视图。在部门设计的系统设计平台上,提供了另外三个视图:开发视图、进程视图和部署视图。
开发视图是基于子系统和组件来描述的,也可以理解为一般意义上的“架构图”。子系统的定义是可以独立运行的可执行程序,组件的定义是不能独立运行,但可以交付给各个子系统,并被子系统调用运行的软件包。开发视图从整个大型软件的角度描述系统中的所有子系统和组件,以及它们之间的依赖关系。需要强调的是,开发视图不描述每个子系统的内部结构。
进程视图是基于编译后部署到运行环境中的每个交付件来描述的,这些交付件包括:可执行文件、DLL、Jar包、配置文件等。也就是说,软件安装后部署在运行环境中的主要文件都需要在系统设计平台上表示出来,包括文件目录层次。
开发视图和进程视图之间的关系是从逻辑到物理实现的一个关系。因此也存在1对1或1对多的对应关系。通过Diagram可以体现出这两者的依赖关系。例如一个子系统包含了1个exe、2个dll、1个jar包。
部署视图体现了每个子系统部署到运行环境中每个硬件节点的情况,相对简单。
DR分解为DS的过程就是从实现的角度将一个需求分配到一个或者多个子系统(组件)。为了描述这个需求的具体实现,需要通过时序图来描述。时序图中的每个生命线实际上就是开发视图中的每个子系统或组件。举例说,一个DR需要通过3个时序图来表达,这3个时序图一共涉及到了4个子系统,因此可以说这个DR一共分解出了4个DS。这4个子系统的每一次交互,都实质上代表着两个子系统之间的一个接口。系统设计平台上开发了相应的插件。当系统设计人员绘制时序图生命线交互关系的时候,平台会自动弹出信息框,提示用户输入接口的详细信息,包括形式(API、文件、进程间调用……),输入输出参数等。
通过以上的这些视图,基本上表达清楚了系统设计阶段所需要关注的需求和架构信息。系统设计平台插件还支持信息导出功能,可以从数据库中导出OR/DR/DS列表、依赖关系、需求分配矩阵。这些信息既可以导出到Excel表格中,也可以导出到设计好的word文档模板中。当然,不可能所有的信息都能在EA平台上描述清楚。有一些信息(主要是需求和设计的质量属性)需要直接在word文档中进行写作。

以上就是一个基于EA平台的团队协同系统设计平台,这应该是企业级应用系统设计的一个方向,以后需要进一步学习并寻找合适的机会进行应用。

原创粉丝点击