开始之初的架构设计军_着软g产品的生d亡?#8220;好的开始相当于成功一?#8221;?/p>
开始的架构设计也是最隄Q需要调研同cM品的情况以及(qing)技术特征,了解当前世界上对q种产品所能提供的理论支持和技术^台支持。再l合自己目的特?需要透彻的系l分?Q才能逐步形成自己目的架构蓝图?/p>
比如要开发网站引擎系l,׃Yahoo的个Z는成工?到虚拟主机商提供的网站自动生成系l,以及(qing)IBM Webphere Portal的特点和局?从而从架构设计角度定立自己产品的位|?/p>
好的设计肯定需要经q反复修改,从简单到复杂的@环测试是保证设计正确的一个好办法
׃在开始选择了正的方向Q后来项目的实现q程也验证了q种选择Q但在一些架构设计的l部斚wQ还需要对Ҏ(gu)q行修改Q属于U螺旋上升的方式Q显然这是通过试W一的思想和XP工程Ҏ(gu)来实现的?/p>
如果我们开始的架构设计在技术^台定位具有一定的世界先进水^Q那么,目开发实际有一半相当于做实验,是研发,存在相当的技术风险?/p>
因此Q一开始我们不可能每个需求都实现Q而是采取一U简单完成架构流E的办法Q用最单的需求将整个架构都简单的完成一遍(加入人工q? 预)Q以(g)验各个技术环节是否能协调配合工作(非常优秀先进的两U技术有时无法在一起工?Q同时也可以探知技术的深浅Q掌握项目中的技术难易点。这个过 E完成后Q我们就对设计方案做Z面的重大修改Q丰富完善了设计Ҏ(gu)?/p>
设计模式是支撑架构的重要lg
架构设计也类gU工作流Q它是动态的Q这点不象徏{设计那P一开始就能完全确定,架构设计伴随着整个目的进行过E之中,有两U具体操作保证架构设计的正确完成Q那是设计模式(静?和工E项目方?RUP或XP 动态的)?
设计模式是支撑架构的一U重要组Ӟq与建筑有很相象的地方,一个徏{物建立设计需要徏{架构设计,在具体施工中Q有很多建筑斚w的规则和模式?
我们从J2EE蓝图模式分类http://java.sun.com/blueprints/patterns/catalog.html中就可以很清楚的看到J2EEq样一个框架Y件的架构与设计模式的关系?/p>
架构设计是骨Ӟ设计模式是?/p>
q样Q一个比较丰富的设计Ҏ(gu)可以交由E序员进一步完成了Q蝲辅助以适当的工E方法,q样可保证目的架构设计能正确快速的完成?/p>
时刻牢记架构设计的目?/p>
׃架构设计是在动态中完成的,因此在把握架构设计的目标上就很重要,因此在整个项目过E中Q甚x一步我们都必须牢记我们架构设计的M目标Q可以概括下面几点:(x)
1. 最大化的重用:(x)q个重用包括lg重用 和设计模式用等多个斚w?/p>
比如Q我们项目中有用h册和用户权限pȝ验证Q这其实是个通用NQ每个项目只是有其内容和一些细微的差别Q如果我们之前有q方面成功研发经 验,可以直接重用Q如果没有,那么我们pq行q个子项目的研发Q在研发q程中,不能仅仅看到q个目的需求,也要以架构的概念d成这个可以称为组件的 子项目?/p>
2. 可能的单明了:(x)我们解决问题的L向是复杂问题简单化Q其实这也是中间件或多层体系技术的Ҏ(gu)目标。但是在具体实施设计q程中,我们可能?x)将单问题复杂化Q特别是设计模式的运用上很容易范q个错误Q因此如何尽可能的做到设计的单明了是不容易的?/p>
我认实到每个cȝ具体实现上要真正能体现系l事物的本质特征Q因Z物的本质特征只有一个,你的代码接q它Q表CZ的设计就是简单明了, 简单明了,你的pȝp可靠。更多情冉|Q一个类q不能反应事物本质,需要多个类的组合协调,那么能够正确使用合适的设计模式q为重中之重?/p>
我们看一个具备好的架构设计的pȝ代码Ӟ基本看到的都是设计模式,宠物?pet store)是q样的例子。或者可以这栯Q一个好的架构设计基本是q单明了的多个设计模式完成的?/p>
3. 最灉|的拓展性:(x)架构设计要具备灵zL?拓展性,q样Q用户可以在你的架构上进行二ơ开发或更加具体的开发?/p>
要具备灵zȝ拓展性,p站在理论的高度去q行架构设计Q比如现在工作流概念逐步行Q因为我们具体很多实践项目中都有工作的影子Q工作流中有一个树(wi)形结构权限设定的概念对很多领域比较通用?/p>
?wi)Şl构是组l信息的基本形式Q我们现在看到的|站或者ERP前台都是以树(wi)形菜单来l织功能的,那么我们在进行架构设计时Q就可以树(wi)形结构和 功能分开设计Q他们之间联pd以通过?wi)Şl构的节点link在一Pp我们可以在圣诞树(wi)的树(wi)枝上挂各U小C品一Pq些礼品就是我们要实现的各U功 能?/p>
有了q个概念Q通常比较隑֮现的用户U别权限控制也有了思\Q将具体用户或组也是和树(wi)形结构的节点link在一Pq样间接实C用户对相应功能的权限控制Q有了这L(fng)基本设计Ҏ(gu)的架构无疑具备很灉|的拓展性?/p>