软件架构设计:软件Software的架构设计

  好开始相当于成功

  开始的初架构设计决定着软件Software产品生死存亡“好开始相当于成功半”

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

  比如要开发网站WebSite引擎系统就从Yahoo个人主页生成工具到虚拟主机商提供网站WebSite自动生成系统以及IBM Webphere Portal特点和局限 从而从架构设计角度定立自己产品位置

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

  由于在开始选择了正确方向后来项目实现过程也验证了这种选择但在些架构设计细部方面还需要对方案进行修改属于那种螺旋上升方式显然这是通过测试第思想和XP工程思路方法来实现

  如果我们开始架构设计在技术平台定位具有世界先进水平那么项目开发实际有半相当于做实验是研发存在相当技术风险

  因此开始我们不可能将每个需求都实现而是采取种简单完成架构流程办法使用最简单需求将整个架构都简单完成遍(加入人工干预)以检验各个技术环节是否能协调配合工作(非常优秀先进两种技术有时无法在起工作)同时也可以探知技术深浅掌握项目中技术难易点这个过程完成后我们就对设计方案做出上面重大修改丰富完善了设计方案

  设计模式是支撑架构重要组件

  架构设计也类似种工作流它是动态这点不象建筑设计那样开始就能完全确定架构设计伴随着整个项目进行过程的中有两种具体操作保证架构设计正确完成那就是设计模式(静态)和工程项目思路方法(RUP或XP 动态)

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

  我们从J2EE蓝图模式分类http://java.sun.com/blueprs/patterns/catalog.html中就可以很清楚看到J2EE这样个框架软件Software架构和设计模式关系

  架构设计是骨架设计模式就是肉

  这样个比较丰富设计方案可以交由员进步完成了载辅助以适当工程思路方法这样就可保证项目架构设计能正确快速完成

  时刻牢记架构设计目标

  由于架构设计是在动态中完成因此在把握架构设计目标上就很重要因此在整个项目过程中甚至每步我们都必须牢记我们架构设计总体目标可以概括下面几点:

  1. 最大化重用:这个重用包括组件重用 和设计模式使用等多个方面

  比如我们项目中有用户注册和用户权限系统验证这其实是个通用课题每个项目只是有其内容和些细微差别如果我们的前有这方面成功研发经验可以直接重用如果没有那么我们就要进行这个子项目研发在研发过程中不能仅仅看到这个项目需求也要以架构概念去完成这个可以称为组件子项目

  2. 尽可能简单明了:我们解决问题总方向是将复杂问题简单化其实这也是中间件或多层体系技术根本目标但是在具体实施设计过程中我们可能会将简单问题复杂化特别是设计模式运用上很容易范这个因此如何尽可能做到设计简单明了是不容易

  我认为落实到每个类具体实现上要真正能体现系统事物本质特征事物本质特征只有代码越接近它表示你设计就是简单明了越简单明了系统就越可靠更多情况是个类并不能反应事物本质需要多个类组合协调那么能够正确使用合适设计模式就称为重中的重

  我们看个具备好架构设计系统代码时基本看到都是设计模式宠物店(pet store)就是这样例子或者可以这样说个好架构设计基本是由简单明了多个设计模式完成

  3. 最灵活拓展性:架构设计要具备灵活性 拓展性这样用户可以在你架构上进行 2次开发或更加具体开发

  要具备灵活拓展性就要站在理论高度去进行架构设计比如现在工作流概念逐步流行我们具体很多实战项目中都有工作流影子工作流中有个树形结构权限设定概念就对很多领域比较通用

  树形结构是组织信息基本形式我们现在看到网站WebSite或者ERP前台都是以树形菜单来组织功能那么我们在进行架构设计时就可以将树形结构和功能分开设计他们的间联系可以通过树形结构节点link在就象我们可以在圣诞树树枝上挂各种小礼品这些小礼品就是我们要实现各种功能

  有了这个概念通常比较难实现用户级别权限控制也有了思路将具体用户或组也是和树形结构节点link在这样就间接实现了用户对相应功能权限控制有了这样基本设计方案架构无疑具备很灵活拓展性

  以上只是本人实战中些体会愿和大家共同讨论

Tags:  组织架构设计 架构设计 软件架构 软件架构设计

延伸阅读

最新评论

发表评论