当前位置:文档之家› 软件系统概要设计及总体架构设计

软件系统概要设计及总体架构设计

目录1.1软件系统概要设计及总体架构设计 (2)1.1.1系统设计概述 (2)1.1.2系统概要设计(结构设计) (3)1.1.3系统概要设计中的架构设计 (8)1.1.4层架构技术在系统设计中的典型应用 (16)1.1软件系统概要设计及总体架构设计1.1.1软件系统设计概述1、软件系统设计(1)什么是软件系统设计所谓的软件系统设计就是通过某种特定的平台,而达到完成整体软件的功能。

主要涉及和包括概要设计(静态结构)和详细设计(动态结构)两个阶段。

(2)软件系统设计的主要任务系统设计阶段的主要任务是在需求分析和建模的基础上,更加深入、综合地考虑辅助决策系统的目标、技术要求和约束,扩展和细化需求分析阶段的模型。

(3)软件系统设计的主要目标其一,精化设计方案并开发出一个明确描述设计方案的可视化模型;其二,保障设计模型最终能平滑地过渡到程序代码开发阶段,即“怎么做”的问题。

2、软件系统设计的目的(1)指明一种易转化成代码的工作方案,是对软件系统分析工作的细化。

也就是进一步细化分析阶段所提取的类(包括其操作和属性),并且增加新类以处理诸如数据库、用户接口、通信、设备等技术领域的问题。

(2)设计是对问题域外部可见行为的规格说明、并增添实际的计算机系统实现所需的细节,包括人机交互、任务管理和数据管理方面的细节。

3、软件系统分析和软件系统设计的合作(1)分析面向问题,是明确动力的过程,重在理解和翻译,灵活性高(2)设计面向方案,是排除阻力的过程,重在精化和适应,受约束大从整体上看,软件系统分析和软件系统设计的对立是保障问题和方案趋于一致的基本动力。

就像两个相反方向的张力,使软件系统能够朝着正确的方向前进。

1.1.2软件系统概要设计(结构设计)1、在什么时期进行软件系统概要设计在需求明确、准备开始编码之前,需要做软件系统的概要设计。

软件系统的概要设计对后续的软件系统开发、测试、实施、维护等阶段的工作都会起到关键性的影响。

2、系统概要设计工作的主要重点和核心工作的主要重点是要适应特定的实施环境和部署环境。

而工作的核心,则是规划设计方案的构造,在揭示实施细节的基础上得到设计方案的详细对象模型。

3、软件系统概要设计的重要性(1)软件系统分析和软件系统设计模型是交错的,并且也是迭代的(2)软件系统概要设计的重要性主要体现在,它是把需求转化为软件系统的最重要的环节,并且软件系统设计的优劣在根本上决定了软件系统的质量。

4、软件系统概要设计所涉及的内容(1)制定规范主要涉及体系结构、代码和接口规约、命名规则等的规范制定。

因为,这些是项目小组今后共同开发的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式和方法,开发团队就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。

(2)体系结构设计(架构设计)软件系统的体系结构是对复杂事物的一种抽象,如客户/服务器(C/S)和浏览器/Web 服务器/数据库服务器(B/W/S)结构等(参看如下示例图所示的结构关系示图)。

(3)模块设计(类的设计)1)功能独立根据用户的需求实现从功能上来划分各个功能模块,在模块设计中保持“功能独立”是模块化设计的基本原则。

因为,“功能独立”的模块可以降低开发、测试、维护等阶段的代价。

如下示例图所示为某个Web应用系统中的类图,各个功能模块相互独立。

2)模块设计的目的通过创建出类图、状态图和活动图来描述新的技术类,并扩展和细化分析阶段"素描"的商业对象类。

(4)数据结构与算法设计设计高效率的程序是基于良好的数据结构与算法,而不是基于编程小技巧的。

一般说来,数据结构与算法就是一类数据的表示及其相关的操作。

(5)用户界面设计软件系统界面的风格一般有两类,其一是“一致性”,其二是“个性化”。

商业应用软件的界面设计注重一致性(如B/S中的浏览器几乎成了唯一的客户机程序,因为用户希望用完全一致的软件来完成千变万化的应用任务),而在娱乐领域的软件开发中,有个性化的界面自然比泯然于众的界面更具有吸引力。

因此,对于通用的商业应用的软件系统,在用户界面的设计上一般都遵守“一致性”的规则,比如都采用Web浏览器作为客户端。

5、系统概要设计中所涉及的基本原则(1)先进性在设计思想、系统构架、采用技术和选用平台上均要有一定的先进性、前瞻性和扩充性。

特别要考虑一定时期内业务的增长和应用的变化趋势。

在充分考虑技术上先进性的同时,尽量采用技术成熟、市场占有率比较高的产品,从而保证建成的网站系统具有良好的稳定性、可扩展性和安全性。

(2)实用性在尽量满足业务功能需求的前提下,要适应各业务角色的工作特点,做到简单、使用和人性化。

实现统一身份和资源管理、统一认证、统一内容管理、个性化界面和内容定制。

(3)可靠性由于企业应用中不可避免地要涉及不同的用户群(操作层、管理层和业务层等人员),所以建设的信息服务网站系统必须在建设平台上保证系统的可靠性和安全性。

系统设计中,应有适量冗余及其他保护措施,平台和应用软件应具有容错性和容灾性。

(4)开放性在系统构架、采用技术和选用平台方面都必须要有较好的开放性。

特别是在选择产品上,要符合开放性要求,遵循国际标准化组织的技术标准,对选定的产品既有自己独特优势,又能与其他多家优秀的产品进行组合,共同构成一个开放的、易扩充的、稳定的和统一软件的系统。

(5)可维护性系统设计应标准化和规范化,按照分层设计,组件化实现。

对于采用的软件构件化开发方式要满足如下的基本要求:一是系统结构分层,业务与实现分离;二是以统一的服务接口规范为核心,使用开放的标准;三是构件语意描述要形式化;四是提炼封装构件要规范化。

(6)可伸缩性考虑到一般的企业应用的Web网站系统的网上业务建设是一个循序渐进、不断扩充的过程,系统要采用积木式结构,整体构架的考虑要与现有的软件系统进行无缝连接,为今后软件系统的扩展和集成留有扩充的余量。

(7)可移植性在选择开发的应用平台上,应该考虑能够建设出一套与平台无关,以统一的服务接口规范和与各种数据库相连的应用组件。

6、系统概要设计的重要输出(1)编码规范接口规约、命名规则和代码风格。

(2)物理模型组件图、配置图。

如下示例图为某个CRM系统的分层包图,体现该系统的分层架构设计方案。

(3)不同角度的构架视图用例视图、逻辑视图、进程视图、部署视图、实施视图、数据视图(可选)。

(4)系统总体布局系统各部分的组成、各部分在物理上、逻辑上的相互关系。

如下示例图为某个CRM系统的业务处理流程示例图,体现了各个业务之间的逻辑关系。

1.1.3系统概要设计中的架构设计1、架构设计的几点原则(1)好的开始相当于成功一半开始之初的架构设计决定着软件产品的生死存亡。

“好的开始相当于成功一半”。

开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,熟悉和了解当前世界上对这种产品所能提供的理论支持和技术平台支持,再结合自己项目的特点(需要透彻的系统分析),才能逐步形成自己项目的架构蓝图。

好的设计肯定需要经过反复修改,从简单到复杂的循环测试是保证设计正确的一个好办法。

由于在开始选择了正确的方向,后来项目的实现过程也验证了这种选择,但在一些架构设计的细节方面,还需要对设计方案进行修改,属于那种螺旋上升的方式。

比如,某项目采用目前比较成熟的J2EE多层系统架构设计,同时采用MVC的设计模式来设计本项目中的业务模型层、表示层和控制器。

(2)设计模式(静态)和统一过程(RUP)开发方法是支撑架构的重要手段架构设计也类似一种工作流,它是动态的,这点不象建筑设计那样,一开始就能完全确定,架构设计伴随着整个项目的进行过程之中,有两种具体操作保证架构设计的正确完成,那就是设计模式(静态)和统一过程(RUP)开发方法。

设计模式是支撑架构的一种重要组件,这与建筑有很相象的地方,一个建筑物建立设计需要建筑架构设计,而在具体施工中,也有很多建筑方面的规则和模式。

从J2EE蓝图模式分类中就可以很清楚地看到J2EE这样一个框架软件的架构与设计模式的关系,因为在J2EE系统平台中为开发人员提供了许多设计模式。

设计模式偏重于程序结构, 采用设计模式可以使得程序更具有扩展性, 健壮性和伸缩性。

(3)结合商业需求选择合理的架构因为各个企业信息系统都有自己独特的要求,如果脱离商业需求,而单独的讨论技术本身的优势是不够的。

各项技术都有产生的特定背景,其中很多都是来自工业需求而触动的。

一般而言,企业信息系统(EIS)都要求自己稳定、安全、可靠、高效、便于维护。

同时,各个企业信息系统都有自己独特的要求,可能有些时候需要考虑与原有遗留系统的集成,所以了解各个企业信息系统具体的商业需求对于整个软件系统的架构则显得很关键。

(4)成熟的Framework框架(内部和外部的)的合理选用设计模式在J2EE应用系统中扮演着重要的角色。

因此,有一个问题摆在大家面前,是自己来实现具体的设计模式,还是借助于Third-party Framework的第三方的框架?一般选用现有的较为成熟的、稳定、与现有J2EE 规范相兼容的技术框架会比较明智(如在Web应用开发中,可以选择Apache 的Struts框架来构造Web客户端;而在实现分布式的业务时可以考虑采用J2EE的多层体系的框架或者微软的.Net框架)。

因为大多数的J2EE应用需要共享如下的许多任务:日志, 数据库存取, 事物处理、数据校验, 属性管理, 异常操作, 生成HTML等。

因此,不要在每一个项目中重新实现这些功能,同时也不要在同一个项目用不同的方法实现这些功能。

(5)电子商务平台架构设计的基本要求该类型的项目一般应该具备有方便性、安全性、稳定性和实用性等四大特点。

2、由架构设计的里程碑基线所带来的好处(1)各种因数初步确定为了形成架构基线,系统架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡。

往往架构设计师在这个过程中要阅读大量的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额。

(2)定向技术培训一旦系统架构师设计的系统架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了。

众多的项目经理都会对预备项目组成员的技术功底感到担心;有了架构里程碑基线,项目经理能确定这个项目开发会采用什么技术,这时候如果提出培训需求应该是最精确的。

(3)角色分工有了一个好的系统架构蓝图,开发团队就能准确地划分工作。

一个好的系统架构蓝图同时也能规范化任务,能很好地把任务划分为几类,在同一类中的任务的工作量和性质相同或相似。

这样工作量估计起来有一个非常好的基础。

(4)运行维护由于各个任务在系统架构图上都有比较好的定位,借助它很快就能够熟悉整个项目的运行情况,错误出现时也能比较快速地定位错误点。

相关主题