系统概要设计中的构架设计1.docx
- 文档编号:11577365
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:13
- 大小:193.02KB
系统概要设计中的构架设计1.docx
《系统概要设计中的构架设计1.docx》由会员分享,可在线阅读,更多相关《系统概要设计中的构架设计1.docx(13页珍藏版)》请在冰豆网上搜索。
系统概要设计中的构架设计1
第三章系统概要设计中的架构设计
系统分析的目的就是把需求转换为系统的设计,分析与设计是一个前后相互关联的过程。
通过对本章内容的学习,读者将被引入软件开发的设计阶段。
软件系统的设计一般分为
概要设训和详细设计,概要设计中最重要的工作是系统的架构设计。
从软件系统的开发实现角度来看,系统的架构设计主要可以分为逻辑架构设计与物理架构设计两个紧密相关的设计内容。
系统的逻辑架构设计结果定义了应用系统中的基本逻辑组成元素,以及这些逻辑元素之间的关系,这在UML中主要通过架构包图来表示;系统的物理架构设计主要关注“目标程序及其依赖的运行库和系统软件”如何安装或部署到客户最终
环境的物理主机中.以及如何部署主机(如各种形式的服务器主机)和网络配置来保证软件系统的可靠性、可伸缩性和稳定运行性等方面的要求.这主要通过UML中的部署图来表示。
在系统的架构设计中,应尽可能地分析清楚系统中哪些逻辑元素是稳定的需求,哪些是
经常变化的需求。
以便在进行系统设计时,能够将软件系统的核心部分建立在稳定的需求上。
本章主要介绍系统概要设计中与“架构设计”有关的内容,并通过州上商城项目中系统架构
设计的示例来阐述与架构设计有关的思想、原则和方法以及模式的具体应用。
3.1概要设计
3.1.1软件系统设计概述
.软件系统设计概述
(1)什么是系统设计?
系统设计就是通过某种特定的平台,完成软件系统的整体功能(也就是把软件需求转变
为软件的具体方案)的实现。
从工程管理的角度来看,软件设计分为如下两个阶段:
概要设计和详细设计。
图3.1为概要设计和详细设计的具体工作内容。
图3.l概要设计和详细设计的具体工作内容
概要设计的工作重点在于进行系统的静态结构或者高层架构设汁;详细设计的工作重点
在于系统的用户界面、动态结构设计以及测试计划的制定等。
(2)系统的概要设计。
将软件系统的功能性需求和非功能性需求转化为数据结构和软件的系统结构,并合理地
设计和规划出组成软件系统的物理元素:
程序、数据库、过程、文件等内容。
分析设计人员可以利用UML中的包图来建立和体现软件系统的体系架构。
图3.2所示为某图书馆管理系统项目中的架构包图。
图3.2某图书馆管理系统项目中的架构包图
从上面的架构包图中,很明显地能够看出,该系统采用标准的4层架构实现:
表示层、
控制层、业务处理层和数据访问层;并日还能够了解每层中各个核心的组件及其关系。
(3)系统的详细设计(重点是系统的动态结构设计)。
通过对软件系统结构表示的进一步细化和完善,最后获得软件系统的详细数据结构和算
法、关键性问题的解决等方面的解决方案。
为此,分析设计人员可以利用UML中的类图建
立相应的体系结构,同时再辅以UML中的4种动态分析图(顺序图、活动图、状态图和协
作图),进一步地描述和体现系统中各个用例的实现行为。
图3,3所示为某图书馆管理系统
项目中业务层的类图。
StockManagerlnterface
(from采购…)
RuleManagerlntertace
(from规则…)
图3.3某图书馆管理系统项目中业务层的类图
在分析阶段,软件系统的开发者通过建立特定的软件系统模型来表示真实世界中的问
题,以便理解业务过程以及这个过程中需要用到的各种信息(业务数据和数据之间的关系)
图3,4所示为某图书馆管理系统项目中管理员的各种可能的活动状态图示。
图3.4某图书馆管理系统项目中管理员的各种可能的活动状态
在具体实施系统的分析时,首先要学会分解问题,把复杂软件系统中的各种信息和需求进行综合考虑,然后分解成多个易于理解的小问题。
最后通过建立软件系统的需求模型来对问题领域进行组织、构造和模拟,并且编制出相应的技术文档。
在对软件系统进行分析建模的过程中,必须要邀请用户方的有关人员参与,并且需要用
户进一步地解释这些需求。
其目的是验证开发者建立的软件模型是否是正确的、合理的、可
行的。
因为软件系统的设计本身,实际上也是个建模的过程,它把分析阶段得出的信息,也
就是需求模型,转换为称为解决方案的设计模型。
利用组件图能够帮助客户理
图3,5所示为某图书馆管理系统项目中的各个组件的图示,
同时组件图还能帮助开发
解最终的系统结构,并使开发人员的实现工作有一个明确的目标;组中的其他人员(如帮助文档人员)理解系统。
T]AciionSenlct
二组件
生Actron's
■匚勺组件
II
[组件
图3.5某图书馆管理系统项目中的各个组件的图示
.为什么要进行软件系统的设计
(1)进行软件系统设计的主要原因。
因为建立的软件系统逻辑模型中的用例及用例图并不是分析模型,或者说不能够满足系
统的分析需要。
它们只是形成分析模型中的素材,而对于用例的分析,开发者可以构造出一
个分析模型,但是很少有开发者直接根据这个分析模型去完成软件系统的程序编程实现的。
为什么呢叫发者首先应该了解这样一个事实,从用例及用例图得到的分析模型,只表达了软件系统中的一些关键性概念,而不能表达软件系统中的性能和系统的外观(如用户界面GUI)等方面的内容。
系统分析模型对于最终的软件系统结构设计来说,又往往过于简单和粗糙,而在软件开
发中倡导的“组件复用”、“模块分离”和“面向接口编程实现”等原则在这个系统分析模型中都不能被考虑。
因此,软件系统的分析设计人员有必要再对前面构造出的分析模型进一步地设计和完善,以最终构造出开发者期望的软件系统发计模型。
以利于指导软件系统的编程实现。
(2)进行软件系统设计的目的。
对软件系统进行全面设计的主要目的是指明一种易转化成软件系统功能代码的解决方案,是对系统分析工作的进一步细化和具体实现。
也就是进一步细化分析阶段提取的各个类
(包括其操作和属性),并H增加新的类以处理诸如系统中涉及的数据库系统、用户接口、与其他设备的通信、控制和驱动其他的设备等技术领域的问题。
.系统设计的基本要求
(1)系统分析和系统设计两者之间应该是相互合作的。
系统分析是面向问题的,是明确和了解问题的过程,重在理解和翻译,灵活性一般比较高;而系统设计则是面向解决方案的,是排除技术困难和解决问题的过程,重在精化和适应,受约束性和限制条件一般比较多。
从整体上看,分析和设计是不同的,在分析阶段关注的是对需求的描述和理解,而在设
计阶段,主要考虑的是具体的技术实现方案。
它们是保障问题和针对该问题的解决方案趋于
合理和有效的基本动力。
(2)在进行软件系统设计时应该注意的要点。
・应该考虑能否使用重复的体系结构模式或者重用成熟的系统架构。
也就是要考虑本系统能否达到在体系结构级别上的软件重用,即能否在不同的软件体系
结构中,使用同一个体系结构。
比如,人们经常提及的客户服务器模式的C/S体系结构和浏
览器服务器模式的B/S体系结构等的具体应用问题。
•体系结构从更高的层面上应该考虑的问题主要体现在“不变”的因素上。
软件系统的体系结构一般应关注应用系统中的设计模式,更加体现在通过技术解决这些
业务差异所带来的影响。
比如,关注是否是分布式应用程序、系统分层是如何设计和实现的,也关注系统的性能和安全性等方面的要求是如何满足的。
为了能够达到该设计目标,软件系统的设计者必须要了解和分离系统中的“不变”和“可
变”部分,然后将它们分离开。
对“不变”部分或者是稳定的部分,尽可能地加以重用。
.软件设计中的“3W原则
软件设计既是面对软件工程的具体应用技术,同时也是聚焦于大批开发者相互协作结果
的艺术,成功的软件系统产品应该来自于合理的系统设计。
什么是合理的系统设计呢?
软件系统的开发者在进行软件系统开发时,最需要考虑的问题就是他们开发和设计出的
软件系统或者产品必须满足客户企业发展战略规划的需求,并且能够帮助企业解决实际经营
中的问题,提高本企业在同行业中的竞争力。
一个合理的软件系统的设计,应该遵守软件设
计中的“3w”原则。
Who(为谁而设计,应该明确软件系统的真正用户是谁)。
为谁设计表达的是软件系统的开发者必须认真研究客户企业的业务领域、研究企业本身
的工作特点,从而对于企业本身的业务规则和流程有深刻的理解,最后形成针对这个企业业
务经营状态的解决方案。
What(要解决用户在应用系统时的哪些问题,功能有哪些?
性能又有哪些?
)。
要解决用户的什么问题,表达的是开发者必须把企业存在的问题提取出来,分析研究哪
些问题可以用信息化技术或者特定的软件系统和工具解决;同时还应该搞清楚,企业应用了
该信息化技术以后,企业的业务流程需要进行的更改,以及这些更改带给企业的正面和负面
影响。
Why(为什么要解决这些问题?
将这些问题解决后,能否为用户带来价值、降低开发方的成本等)。
为什么要解决这些用户问题,表达的是如何帮助企业产生可度量的价值,而这些价值是
在研究企业目前存在的问题的基础上产生的,没有这些价值的产生,对软件系统的投资是没
有意义的。
价值不可度量,企业领导者就不可能积极地支持应用该软件系统或者开发出某套软件系统。
另外,还要注意的是设计必须是便于用户使用的。
减少系统维护和培训资源的消
耗,而且系统应操作简单、应用方便。
“3W”原则的本质,就是要求软件系统的设计者围绕“用户”而不是围绕“开发者”或者“时髦的技术”来开展软件系统的设计和开发工作。
因此满足“用户的需求、便于用户的使用,同时又能使开发出的软件系统在应用新技术方面尽可能简单.相应地降低开发成本”,这就是软件系统的开发者应该追求的设计目标。
软件系统设计过程中的各项活动,其实就是权衡“利与弊”的过程,设计人员需要在“简
单”与“复杂”之间、“功能实现”与“系统性能”之间、一种“技术方案”与另一种也可
行的“技术方案”之间进行权衡。
因此,好的设计方案,一定是“中庸”的设计。
.软件系统常用的设计方法
(1)面向过程的设计方法。
面向过程设计方法的基础建立在3种能够构成结构化程序的逻辑构造方面,顺序、选择
和重复上;并且面向过程的设计方法采用的是“自顶向下、逐步精化”的瀑布式设计方法,由于瀑布式设计方法是按“自顶而下”的顺序进行的,这就要求设计者在一开始就要对系统需要解决的各个问题有全面的、周密的了解。
(2)面向对象的设计方法。
面向对象的设计方法主要定义系统中各种可能类型的对象,并对每种类型的对象进行细
化,以找出对象之间的关系;面向对象的设计方法关注的是消息和响应机制。
3.1.2面向对象设计方法
1.面向对象设计方法
(1)面向对象设计方法的特点。
在面向对象设计(Object-OrientedDesign,OOD)方法中,可以充分利用对象具有的抽象性、封装性、继承性、多态性等特性,同时面向对象设计方法是一种“自下而上”的设计方法,这与面向过程的设计方法中的“自上而下”刚好相反。
另外,面向对象设计方法的最基本的概念是类、职责、状态、角色等,及与这些概念相关的耦合度、聚合度、可重用性、可扩展性、可维护性等。
(2)“自下而上”的设计方法的优点是能够形成一种螺旋上升的软件开发方式。
不像面向过程式设计那样,在设计的开始阶段就需要明确整个软件系统本身,面向对象
的设计往往从问题的一部分(局部)着手,一点一点地构建整个软件系统的各个模块。
随着开发者在开发过程中逐步加深对软件系统需求的理解,开发者将分阶段和分层次地添加对这些
新功能的具体实现。
这些新的理解以及开发中遇到的需求变化.都会再作用到软件系统开发本身(也包括设
计阶段),从而形成一种螺旋式上升的开发方式和开发过程。
在这种开发方式中,对于已有的系统设计或者部分编程实现的代码,只需要进行局部修改或者调整以体现系统的变化即可。
433aa-Numbered_a1e1c0e9-0124-41.面向对象设计方法与面向过程设计方法的最根本的区别
(1)面向对象的设计方法将整个软件系统看成对象集。
面向对象的设计方法把软件系统看成是一起工作来完成某项任务的对象集合,对象是软
件系统中对消息做出响应的事物。
对象之间的关系体现问题之问的关系,对象中的属性体现问题的特征,对象中的方法体现问题的行为或者功能服务。
在面向对象的设计中产生的各个逻辑对象,其实就是对软件系统所在问题域中各个问题
的映射,设计的结果是有指导意义的。
(2)面向对象设计方法关注的核心。
面向对象设计方法中关注的不是它该做什么(这在面向对象的分析中已经明确),而是它如何做出反应,也就是对消息的响应,这是与面向过程方法的根本不同点。
由于面向对象方法把对象看成软件系统对消息做出响应的事物,这种与面向过程完全不
同的看待计算机软件系统的方法,必然会构造出完全不同的分析、设计和编程实现方式。
(3)在面向对象设计(当然也包括编程实现)中更多地看重类之间的关系。
从面向对象的角度来看各个对象之间的关系时,一般有“关联”、“继承”和“内聚”等
形式。
面向对象编程的过程就是将各个类按以上的各种关系组合在一起,这些关系本身都非
常简单,不过组合在一起却能提供强大的设计能力。
例如例3.1的代码示例体现了客户和订单之间的关联关系,因为每个订单对应特定的客户,每个客户对应一些特定的订单。
例3-1体现了客户和订单之间关联关系的代码示例。
PublicclassUserInfo{PrivateArrayListOrders;//…其他的成员定义,在此加以省略}
PublicclassOrder{privateUserInfosomeOneUser;
//…其他的成员定义,在此加以省略}
面向过程中的结构化设计历来备受冷落的主要原因就是软件系统的需求和系统的设计之间存在一定的分离和鸿沟,因为在结构化设计中的模块和模块之间的关系,被紧紧地局限
于信息流,这限制了对模块之间众多关系(比如继承和内聚关系)的表达,也无法体现模块和
模块之间其他的众多关系,包含各种各样的结构、行为、依赖、包含(在结构化设计中这种关系隐含在分层中)、继承、关联关系等。
(4)面向对象的设计是适应性过程,而面向过程的设计是预测的。
面向对象设计更多地将重点放在“职责”的划分、“变化点”的隔离、“交互机制”的确
定等问题上,并且面向对象的设计认为变化是不可避免的驱动因素,整个设计是在迭代变更
中完成的。
433aa-Numbered_a1e1c0e9-0124-41.面向对象设计的应用场合
(1)设计中强调的是软件系统的重用和重构。
面向对象的设计,更倾向于建立一种灵活多变、便于修改、便于升级的软件系统,设计
中强调的是软件系统中各种组件的重用和重构。
(2)设计中强调的是软件系统的可扩展性。
由于面向对象设计技术的成熟和不断发展,面向对象设计已经形成了一系列的重要设计
原则和方法、设计模式。
这些原则和方法可以大大提高系统的设计质量;从而使得应用面向
对象设计的方法设计和建立一个大型的、分布式的、可升级的、可维护的而且安全的软件系
统成为可能。
3.1.3系统设计中的概要设计
.概要设计又称为系统的结构设计
(1)在什么时候应该进行系统的概要设计。
在系统需求相对比较明确并对需求进行域建模之后,接着进行系统的概要设计。
概要设
计对随后进行的编程实现、单元测试和集成测试、系统安装部署实施和维护工作都将起到关键性的影响作用。
通过对系统进行概要设计,将系统开发过程中“做什么”的逻辑模型变换
为“如何做”的物理模型。
(2)系统概要设计的重要性
系统分析过程中产生的分析模型和系统设计过程中产生的设计模型,两者应该是交错的,并且是迭代进行的;概要设计的重要性,主要体现在它是把系统需求转化为软件系统的实现过程中最重要的开发环节,并且系统概要设计的优劣会在根本上决定软件系统的整体质量和性能。
.系统概要设计中涉及的主要内容
(1)制定本软件系统的开发规范。
制定本软件系统的各种开发规范是项目小组今后共同开发的基础,有了开发规范和程序
模块之间、项目成员彼此之间的接口规则、方式和方法,开发团队中的各个成员就有了共同
的工作语言、工作平台,使整个软件开发工作可以协调、有序地进行。
制定规范涉及的主要
内容如下:
・代码体系、模块之间的接口和命名规则。
・规定设计文档的编制标准。
•规定与硬件、操作系统的接口规约和命名规则。
(2)体系结构设计(架构设计)。
体系结构是对复杂软件系统的一种抽象,如客户/服务器(C/S)和浏览器/Web服务器/
数据库服务器(B/W/S)结构等的应用。
同时在架构设计中还应该考虑采用框架技术的形式和服务器的平台类型等内容。
(3)划分系统中的各个模块并进行组件类的设计。
根据用户的需求,实现从功能上来划分各个功能模块。
在模块设计中应该遵守功能独立的单一职责原则(Single-ResponsibilityPrinciple,SRP)。
因为功能独立的模块可以降低开发、测试、维护等阶段的代价,而且被重用的可能性更高。
(4)数据结构与算法设计。
设计高效率的程序是基于良好的数据结构与算法的,而不是基于编程技巧的。
因为数据
结构与算法就是一类数据的表示及其相关的操作。
确定软件系统涉及的文件系统的结构,以
及数据库中数据访问的模式,进行数据完整性和安全性的设计,并确定输入、输出文件的详
细数据结构是本阶段需要考虑的问题。
(5)数据库的逻辑设计。
根据模块设计和划分出的各个实体类、实体类之间的关系、实体类中各个成员的属性等
确定出数据库表中的字段和各个字段的数据类型。
构造数据库的表结构必须遵循一定的规则。
在关系数据库中,这种规则就是范式。
一般说来,数据库只需满足到第3范式(3NF)
即可一一通常被认为在性能、扩展性和数据完整性方面达到了比较好的平衡。
(6)其他如可靠性等方面的设计。
软件系统在运行过程中,为了能够适应环境的变化和用户新的功能要求,需经常对软件
进行修正、完善。
在软件开发的一开始就要确定软件可靠性和其他质量指标,考虑相应措施,
使得软件易于修改和易于维护。
3.概要设计中涉及系统设计的基本原则
软件系统设计的主要任务是什么?
如何正确地进行系统各个子模块的功能划分?
在模块划分时要遵守的原则和方法、设计的目标是什么加价一个软件系统设计的优劣,主要考
查如下指标是否达到或者满足。
(1)先进性。
在设计思想、系统构架、采用技术和选用平台上均要有一定的先进性、前瞻性和扩充性。
特别要考虑一定时期内业务的增长和应用的变化趋势。
在充分考虑技术先进性的同时,应尽
量采用技术成熟、市场占有率比较高的产品,从而保证建成的网站系统具有良好的稳定性、可扩展性和安全性。
(2)实用性。
在尽量满足业务功能需求的前提下,结合各业务角色的工作特点,做到简单、实用和人
性化。
(3)可靠性。
由于企业应用中不可避免地要涉及不同的用户群(操作层、管理层和业务层等人员),
因此建设的信息服务网站系统必须在建设平台上保证系统的可靠性和安全性。
系统设计中应
有适量冗余及其他保护措施,平台和应用软件应具有容错性和容灾性。
(4)开放性。
在系统架构、采用的技术实现和选用的平台等都必须要有较好的开放性。
特别是在选择
产品上,要符合开放性要求,遵循国际标准化组织的技术标准,对选定的产品既要有自己的
独特优势,又能与其他多家优秀的产品进行组合,共同构成一个开放的、易扩充的、稳定的
和统一的软件系统。
(5)可维护性。
系统设计应标准化和规范化,按照分层设计、模块化实现并遵守面向接口编程实现的基本原则。
(6)可伸缩性。
企业应用网站系统的网上业务建设是一个循序渐进、不断扩充的过程,系统要采用积木
式结构,整体构架的考虑要与现有系统进行无缝连接,为今后系统的扩展和集成留有扩充空
间。
(7)可移植性。
在选择开发应用的平台上,应该考虑能够建设一套与平台无关,有统一的服务接口规范
和与各种数据库都能够相连的应用组件。
4.概要设计后的重要输出
(1)概要设计说明书。
编码规范:
信息形式、接口规约、命名规则;
物理模型:
组件图、配置图;
不同角度的构架视图:
用例视图、逻辑视图、进程视图、部署视图、实施视图、数据视图(可选):
系统总体布局:
组成部分以及各部分在物理上、逻辑上的相互关系。
(2)数据库设计说明书,主要给出使用的DBMS简介、数据库的概念模型、逻辑设计、结果。
(3)用户手册,对需求分析阶段编写的用户手册进行补充。
(4)制定初步的测试计划,并对测试策略、方法、步骤提出明确要求。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 概要 设计 中的 构架
![提示](https://static.bdocx.com/images/bang_tan.gif)