如何进行软件架构设计?

上次有幸给大家介绍了软件架构设计的“七种武器”,对于这“七种武器”的修炼是一个漫长的过程,除了需要不断的学习理论、原理之外,还要不断的在软件架构设计的工作中去实践,而且这样的实践机会有限,因为毕竟公司的项目就那么多,失去一次这样的机会就只有等下一个项目了,所以我想在这里就具体怎样进行软件架构设计提供一些思路和方法给大家,希望能对大家在软件架构设计的工作中有所帮助。

软件架构设计的目的

对于外包业务类型的项目,软件架构设计的目的与产品类型的项目有所不同,在这里主要讨论外包类型项目的软件架构设计目的。

1、为大规模开发提供基础和规范,并提供可重用的资产,软件系统的大规模开发,必须要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求。架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的。

2、一定程度上缩短项目的周期,利用软件架构提供的框架或重用组件,缩短项目开发的周期。

3、降低开发和维护的成本,大量的重用和抽象,可以提取出一些开发人员不用关心的公共部分,这样便可以使开发人员仅仅关注于业务逻辑的实现,从而减少了很多工作量,提高了开发效率。

4、提高产品的质量,好的软件架构设计是产品质量的保证,特别是对于客户常常提出的非功能性需求的满足。

软件架构设计的原则

软件架构设计必须遵循以下原则:

1、满足功能性需求和非功能需求。这是一个软件系统最基本的要求,也是架构设计时应该遵循的最基本的原则。

2、实用性原则,就像每一个软件系统交付给用户使用时必须实用,能解决用户的问题一样,架构设计也必须实用,否则就会“高来高去”或“过度设计”。

3、满足复用的要求,最大程度的提高开发人员的工作效率。

软件架构设计的几种视图

我们常常在讨论架构设计该做些什么的时候,或是在架构设计评审的会议上,会提出各种各样的问题,例如开发人员该如何记录Log,事务如何控制?怎样才能提高我们的开发人员的工作效率,即在单位时间内更有品质的完成更多的功能?怎样满足客户的非功能性需求?怎样让生产环境的平台管理人员更好的维护系统?

上面这些问题,实际上是软件系统的不同的干系人站在不同的角度上提出的问题,要回答上面这些问题,我们就得从不同的视角来看待软件架构设计这项工作。

1、逻辑架构视角,从系统用户的角度考虑问题,设计出来的软件架构能够满足业务逻辑的需求,能够处理现在越来越复杂的业务逻辑需求。

2、开发架构视角,从系统开发人员的角度来考虑问题,设计的架构要易于理解,易于开发,易于单元测试,最好做到让开发人员可以用最少的代码行数完成功能的开发。

3、运行架构视角,从系统运行时的质量需求考虑问题,特别关注于系统的非功能需求,客户常常都会要求我们系统的功能画面的最长响应时间不超过4秒,能满足2000个用户同时在线使用,基于角色的系统资源的安全控制等。

4、物理架构视角,关注系统安装和部署在什么样的环境上,例如现在最流行的企业应用服务解决方案IBM Http Server + WebSphere Application Server + DB2,WebLogic + Oracle等。

5、数据架构视角,如今我们开发的各类系统,如MIS,ERP,SAP,基本上都是对各类数据的操作,把一堆不太好懂的数据展现成用户容易看懂的数据,自动处理各类数据的运算等,所以数据的持久化是十分重要的一件事情。

时间: 2024-10-30 02:38:01

如何进行软件架构设计?的相关文章

Web基础架构设计原则经典论文《架构风格与基于网络的软件架构设计》导读

1. 概述 Roy Fielding博士(见个人主页)是IETF发布的HTTP和URI协议的主要设计者.HTTP和URI是两个最为重要的Web基础技术架构协议,因此Fielding博士可谓是Web架构的奠基者之一. 除了学术上的卓越成就之外,Fielding博士还参与过很多开源软件的设计和开发工作.他是libwww-perl(世界上最早的HTTP开发库之一)的开发者,曾经负责Apache HTTP服务器中与HTTP.URI协议相关部分代码的开发.Fielding博士还指导过很多其他团队在HTTP

小议软件架构设计要点

如何更好地进行软件架构设计,这是软件工程领域中一个永恒的重点话题.过去几十年来,国际软件工程界在软件架构设计方面已经获得了长足发展,大量图书.文章和文献记载了这方面的成熟经验与成果.软件架构设计往往是一件非常复杂的工作,涉及到很多细节和方方面面,可探讨的话题也非常之多.囿于篇幅限制,以下只能根据笔者个人理解,遴选出软件架构设计的个别要点,结合当前流行的敏捷软件工程思想,与大家分享一下自己在软件架构设计方面的心得和体会. 架构决定成败 软件架构是软件产品.软件系统设计当中的主体结构和主要矛盾.任何

嵌入式软件架构设计?

问题描述 嵌入式软件架构设计? 我是做智能电表嵌入式软件开发的,因项目需要,现打算设计一个软件架构以实现模块化编程,同时兼顾单相.三相电表.同时,方便多人合作开发.方便以后维护.大家不知有什么好的建议? 解决方案 参考下设计模式,用面向对象的方式设计软件架构,方便扩展维护 解决方案二: 谢谢,不知能否举例说明一下?

《架构师》反思:软件架构设计

最近在看<软件架构师教程>,今天就第五章<软件架构设计>总结一下,其中还有自己所联想到的.主要从以下几个方面来描述: 软件架构 ABSD 架构模式 DSSA 架构评估   软件架构 架构的定义,在业界,目前主要分为两类:结构派 和 策略派.结构派认为架构是指软件中各构件的组织结构以及各构件之前的相互关系.策略派认为软件的架构设计是要为软件的每个重要的决择进行权衡,并作出最终决定. 架构,作为系统中最重要的组成部分,对整个系统有着重要的作用: 对于软件开发而言,首先,架构设计能使系统

SoC嵌入式软件架构设计

内存是SoC(System on Chip,片上系统)集成设计的重要模块,是SoC中成本比重较大的部分.内存管理的软硬件设计是SoC软件架构设计的重要一环,架构设计师必须要在成本和效率中取得平衡,做到在节省内存的同时保证整个系统的性能.系统内存需求评估是对嵌入式软件架构师的最基本要求,同时也是其最重要的技能之一.一般在SoC项目立项的时候,架构师就要完成系统内存需求评估.     下面以一个多媒体电子解决方案中的SoC设计为原型,说明大致的评估流程:     1. 根据产品规格,对各个应用场景进

硬件软件架构设计乱侃

      这篇文是我在今天工作休息之余写下来的,乱侃侃,偷懒一下,呵呵. 首先,我的原本专业是电子信息科学与技术,所以对一些芯片级硬件和软件比较感兴趣,但我现在的工作是软件设计师,又对计算机软件有较深入的理解.闲暇之余,我喜欢看硬件相关的书籍,特别对计算机硬件比较痴迷.其实早在06年学习软件架构设计的时候,我就常乱想设计软件架构.这里说说,一部分中国人的特点,就是从模仿开始.火车不会造,先买别国的火车,然后研究,接着自己造,比买的便宜,搞得人家都不敢卖先进的东西给国人了.软件也一样,架构方面,

软件架构设计的三个维度

架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多 的是实践中去体会.这篇文章主要介绍面向对象OO.面向方面AOP和面向服务SOA这三个要 素在架构设计中的位置与作用. 架构设计有三个维度,或者说是我们在考虑架构时需要思考三个方向. 这三个维度分别为面向对象.面向方面.面向服务. 这三个维度可以看作是正交的,但不同维度会互相印证,互相支撑,整个架构的示意 图如图所示. 图:架构三维度结构图 面向对象 面向对象技术最初是从面向对象的程序设计开始的,它的出现以上世纪60年代S

Java软件架构设计慨论

开始之初的架构设计决定着软件产品的生死存亡."好的开始相当于成功一半". 开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和技术平台支持.再结合自己项目的特点(需要透彻的系统分析),才能逐步形成自己项目的架构蓝图. 比如要开发网站引擎系统,就从Yahoo的个人主页生成工具 到虚拟主机商提供的网站自动生成系统,以及IBM Webphere Portal的特点和局限 从而从架构设计角度定立自己产品的位置. 好的设计肯定需要经过反复修改

软件架构设计感悟

如果你要开一家能处理公司相关业务的公司.你将要面对如何设计这个公司的职能部门,定义工作岗位,业务如何通过这些职能部门进行处理的问题.如果是10人以内小公司,那无所谓.如果是上百人的公司,那么就得有详细的职能部门划分,有规范的业务办理流程. 软件的架构设计与设置一家公司的组织架构有异曲同工之处. 接口类,其实就是定义一个工作岗位.定义了这个岗位的职能范围. 每个类实例化的对象,其实都是这个工作岗位上的员工. 设置一个工作岗位之前,我们一定要想清楚这个岗位的职能范围.要给这个岗位命一个明确(一看就知