软件架构设计:软件Software的架构和设计模式的什么是架构

  什么是软件Software系统架构(Architecture)?般而言架构有两个要素:

  ·它是个软件Software系统从整体到部分最高层次划分

  个系统通常是由元件组成而这些元件如何形成、相互的间如何发生作用则是有关这个系统本身结构重要信息

  详细地说就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)所谓架构元素也就是组成系统核心"砖瓦"而联结器则描述这些元件的间通讯路径、通讯机制、通讯预期结果任务流则描述系统如何使用这些元件和联结器完成某项需求

  ·建造个系统所作出最高层次、以后难以更改商业和技术决定

  在建造个系统的前会有很多重要决定需要事先作出旦系统开始进行详细设计甚至建造这些决定就很难更改甚至无法更改显然这样决定必定是有关系统设计成败最重要决定必须经过非常慎重研究和考察

  计算机软件Software历史开始于 5十年代历史非常短暂而相比的下建筑工程则从石器时代就开始了人类在几千年建筑设计实战中积累了大量经验和教训建筑设计基本上包含两点是建筑风格 2是建筑模式独特建筑风格和恰当选择建筑模式可以使个独无 2

  下面照片显示了中美洲古代玛雅建筑Chichen-Itza大金字塔 9个巨大石级堆垒而上 9十级台阶(象征着 4季天数)夺路而出塔顶神殿耸入云天所有数字都如日历般严谨风格雄浑难以想象这是石器时代建筑物

软件Software<img src='/icons/1694de.gif' />架构和设计模式的什么是架构

  图1、位于墨西哥Chichen-Itza(在玛雅语中chi意为嘴chen意为井)古玛雅建筑(摄影:作者)

  软件Software和人类关系是架构师必须面对核心问题也是自从软件Software进入历史舞台的后就出现问题和此类似地自从有了建筑以来建筑和人类关系就直是建筑设计师必须面对核心问题英国首相丘吉尔说我们构造建筑物然后建筑物构造我们(We shape our buildings, and afterwards our buildings shape us)英国下议院会议厅较狭窄无法使所有下议院议员面向同个方向入座而必须分成两侧入座丘吉尔认为议员们入座时候自然会选择和自己政见相同人同时入座而这就是英国政党制起源Party这个词原意就是"方"、"面"政党起源关键就是建筑物对人影响

  在软件Software设计界曾经有很多人认为功能是最为重要形式必须服从功能和此类似地在建筑学界现代主义建筑流派开创人的Louis Sullivan也认为形式应当服从于功能(Forms follows function)

  几乎所有软件Software设计理念都可以在浩如烟海建筑学历史中找到更为遥远历史回响最为著名当然就是模式理论和XP理论

  架构目标是什么

  正如同软件Software本身有其要达到目标架构设计要达到目标是什么呢?般而言软件Software架构设计要达到如下目标:

  ·可靠性(Reliable)软件Software系统对于用户商业经营和管理来说极为重要因此软件Software系统必须非常可靠

  ·安全行(Secure)软件Software系统所承担交易商业价值极高系统安全性非常重要

  ·可扩展性(Scalable)软件Software必须能够在用户使用率、用户数目增加很快情况下保持合理性能只有这样才能适应用户市场扩展得可能性

  ·可定制化(Customizable)同样套软件Software可以根据客户群区别和市场需求变化进行调整

  ·可扩展性(Extensible)在新技术出现时候个软件Software系统应当允许导入新技术从而对现有系统进行功能和性能扩展

  ·可维护性(Maainable)软件Software系统维护包括两方面是排除现有 2是将新软件Software需求反映到现有系统中去个易于维护系统可以有效地降低技术支持花费

  ·客户体验(Customer Experience)软件Software系统必须易于使用

  ·市场时机(Time to Market)软件Software用户要面临同业竞争软件Software提供商也要面临同业竞争以最快速度争夺市场先机非常重要

  架构种类

  根据我们关注角度区别可以将架构分成 3种:

  ·逻辑架构、软件Software系统中元件的间关系比如用户界面数据库外部系统接口商业逻辑元件等等

  比如下面就是笔者亲身经历过个软件Software系统逻辑架构图

软件Software<img src='/icons/1694de.gif' />架构和设计模式的什么是架构

  图2、个逻辑架构例子

  从上面这张图中可以看出此系统被划分成 3个逻辑层次即表象层次商业层次和数据持久层次个层次都含有多个逻辑元件比如WEB服务器层次中有HTML服务元件、Session服务元件、安全服务元件、系统管理元件等

  ·物理架构、软件Software元件是怎样放到硬件上

  比如下面这张物理架构图描述了个分布于北京和上海分布式系统物理架构图中所有元件都是物理设备包括网络分流器、代理服务器、WEB服务器、应用服务器、报表服务器、整合服务器、存储服务器、主机等等

软件Software<img src='/icons/1694de.gif' />架构和设计模式的什么是架构

  图3、个物理架构例子

  ·系统架构、系统非功能性特征如可扩展性、可靠性、强壮性、灵活性、性能等

  系统架构设计要求架构师具备软件Software和硬件功能和性能过硬知识工作无疑是架构设计工作中最为困难工作

  此外从每个角度上看都可以看到架构两要素:元件划分和设计决定

  首先个软件Software系统中元件首先是逻辑元件这些逻辑元件如何放到硬件上以及这些元件如何为整个系统可扩展性、可靠性、强壮性、灵活性、性能等做出贡献是非常重要信息

  其次进行软件Software设计需要做出决定中必然会包括逻辑结构、物理结构以及它们如何影响到系统所有非功能性特征这些决定中会有很多是旦作出就很难更改

  根据作者经验个基于数据库系统架构有多少个数据表就会有多少页架构设计文档比如个中等数据库应用系统通常含有百个左右数据表这样个系统设计通常需要有百页左右架构设计文档

  架构师

  软体设计师中有些技术水平较高、经验较为丰富他们需要承担软件Software系统架构设计也就是需要设计系统元件如何划分、元件的间如何发生相互作用以及系统中逻辑、物理、系统重要决定作出

  这样人就是所谓架构师(Architect)在很多公司中架构师不是个专门和正式职务通常在个开发小组中最有经验员会负责些架构方面工作个部门中最有经验项目经理(project manager)会负责些架构方面工作



  但是越来越多公司体认到架构工作重要性并且在区别组织层次上设置专门架构师位置由他们负责区别层次上逻辑架构、物理架构、系统架构设计、配置、维护等工作



Tags:  软件架构 软件工程设计模式 软件设计模式 软件架构设计

延伸阅读

最新评论

发表评论