系统概要设计中的构架设计(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章系统概要设计中的架构设计
系统分析的目的就是把需求转换为系统的设计,分析与设计是一个前后相互关联的过程。通过对本章内容的学习,读者将被引入软件开发的设计阶段。软件系统的设计一般分为概要设训和详细设计,概要设计中最重要的工作是系统的架构设计。
从软件系统的开发实现角度来看,系统的架构设计主要可以分为逻辑架构设计与物理架构设计两个紧密相关的设计内容。系统的逻辑架构设计结果定义了应用系统中的基本逻辑组成元素,以及这些逻辑元素之间的关系,这在UML中主要通过架构包图来表示;系统的物理架构设计主要关注“目标程序及其依赖的运行库和系统软件”如何安装或部署到客户最终环境的物理主机中.以及如何部署主机(如各种形式的服务器主机)和网络配置来保证软件系统的可靠性、可伸缩性和稳定运行性等方面的要求.这主要通过UML中的部署图来表示。
在系统的架构设计中,应尽可能地分析清楚系统中哪些逻辑元素是稳定的需求,哪些是经常变化的需求。以便在进行系统设计时,能够将软件系统的核心部分建立在稳定的需求上。本章主要介绍系统概要设计中与“架构设计”有关的内容,并通过州上商城项目中系统架构设计的示例来阐述与架构设计有关的思想、原则和方法以及模式的具体应用。
3.1 概要设计
3.1.1 软件系统设计概述
1.软件系统设计概述
(1)什么是系统设计?
系统设计就是通过某种特定的平台,完成软件系统的整体功能(也就是把软件需求转变为软件的具体方案)的实现。从工程管理的角度来看,软件设计分为如下两个阶段:概要设计和详细设计。
图3.1为概要设计和详细设计的具体工作内容。
图3. l概要设计和详细设计的具体工作内容
概要设计的工作重点在于进行系统的静态结构或者高层架构设汁;详细设计的工作重点在于系统的用户界面、动态结构设计以及测试计划的制定等。
(2)系统的概要设计。
将软件系统的功能性需求和非功能性需求转化为数据结构和软件的系统结构,并合理地设计和规划出组成软件系统的物理元素:程序、数据库、过程、文件等内容。分析设计人员可以利用UML中的包图来建立和体现软件系统的体系架构。图3.2所示为某图书馆管理系统项目中的架构包图。
图3.2某图书馆管理系统项目中的架构包图
从上面的架构包图中,很明显地能够看出,该系统采用标准的4层架构实现:表示层、控制层、业务处理层和数据访问层;并日还能够了解每层中各个核心的组件及其关系。
(3)系统的详细设计(重点是系统的动态结构设计)。
通过对软件系统结构表示的进一步细化和完善,最后获得软件系统的详细数据结构和算法、关键性问题的解决等方面的解决方案。为此,分析设计人员可以利用UML中的类图建立相应的体系结构,同时再辅以UML中的4种动态分析图(顺序图、活动图、状态图和协作图),进一步地描述和体现系统中各个用例的实现行为。图3.3所示为某图书馆管理系统项目中业务层的类图。
图3.3某图书馆管理系统项目中业务层的类图
在分析阶段,软件系统的开发者通过建立特定的软件系统模型来表示真实世界中的问题,以便理解业务过程以及这个过程中需要用到的各种信息(业务数据和数据之间的关系)。图3.4所示为某图书馆管理系统项目中管理员的各种可能的活动状态图示。
图3.4某图书馆管理系统项目中管理员的各种可能的活动状态在具体实施系统的分析时,首先要学会分解问题,把复杂软件系统中的各种信息和需求进行综合考虑,然后分解成多个易于理解的小问题。最后通过建立软件系统的需求模型来对问题领域进行组织、构造和模拟,并且编制出相应的技术文档。
在对软件系统进行分析建模的过程中,必须要邀请用户方的有关人员参与,并且需要用户进一步地解释这些需求。其目的是验证开发者建立的软件模型是否是正确的、合理的、可行的。因为软件系统的设计本身,实际上也是个建模的过程,它把分析阶段得出的信息,也就是需求模型,转换为称为解决方案的设计模型。
图3.5所示为某图书馆管理系统项目中的各个组件的图示,利用组件图能够帮助客户理解最终的系统结构,并使开发人员的实现工作有一个明确的目标;同时组件图还能帮助开发组中的其他人员(如帮助文档人员)理解系统。
图3.5某图书馆管理系统项目中的各个组件的图示
2.为什么要进行软件系统的设计
(1)进行软件系统设计的主要原因。
因为建立的软件系统逻辑模型中的用例及用例图并不是分析模型,或者说不能够满足系统的分析需要。它们只是形成分析模型中的素材,而对于用例的分析,开发者可以构造出一个分析模型,但是很少有开发者直接根据这个分析模型去完成软件系统的程序编程实现的。为什么呢?开发者首先应该了解这样一个事实,从用例及用例图得到的分析模型,只表达了软件系统中的一些关键性概念,而不能表达软件系统中的性能和系统的外观(如用户界面GUI)等方面的内容。
系统分析模型对于最终的软件系统结构设计来说,又往往过于简单和粗糙,而在软件开发中倡导的“组件复用”、“模块分离”和“面向接口编程实现”等原则在这个系统分析模型中都不能被考虑。
因此,软件系统的分析设计人员有必要再对前面构造出的分析模型进一步地设计和完善,以最终构造出开发者期望的软件系统发计模型。以利于指导软件系统的编程实现。
(2)进行软件系统设计的目的。
对软件系统进行全面设计的主要目的是指明一种易转化成软件系统功能代码的解决方案,是对系统分析工作的进一步细化和具体实现。也就是进一步细化分析阶段提取的各个类(包括其操作和属性),并H增加新的类以处理诸如系统中涉及的数据库系统、用户接口、与其他设备的通信、控制和驱动其他的设备等技术领域的问题。
3.系统设计的基本要求
(1)系统分析和系统设计两者之间应该是相互合作的。
系统分析是面向问题的,是明确和了解问题的过程,重在理解和翻译,灵活性一般比较高;而系统设计则是面向解决方案的,是排除技术困难和解决问题的过程,重在精化和适应,受约束性和限制条件一般比较多。
从整体上看,分析和设计是不同的,在分析阶段关注的是对需求的描述和理解,而在设计阶段,主要考虑的是具体的技术实现方案。它们是保障问题和针对该问题的解决方案趋于合理和有效的基本动力。