廉政网站建设的意义,自做网站打开速度慢,九讯鹿网站建设,网站开发华企云商好的开始相当于成功一半 开始之初的架构设计决定着软件产品的生死存亡。“好的开始相当于成功一半”。 开始的架构设计也是最难的#xff0c;需要调研同类产品的情况以及技术特征#xff0c;了解当前世界上对这种产品所能提供的理论支持和技术平台支持。再结合自己项目的特…好的开始相当于成功一半 开始之初的架构设计决定着软件产品的生死存亡。“好的开始相当于成功一半”。 开始的架构设计也是最难的需要调研同类产品的情况以及技术特征了解当前世界上对这种产品所能提供的理论支持和技术平台支持。再结合自己项目的特点(需要透彻的系统分析)才能逐步形成自己项目的架构蓝图。 比如要开发网站引擎系统就从Yahoo的个人主页生成工具 到虚拟主机商提供的网站自动生成系统以及IBM Webphere Portal的特点和局限 从而从架构设计角度定立自己产品的位置。 好的设计肯定需要经过反复修改从简单到复杂的循环测试是保证设计正确的一个好办法 由于在开始选择了正确的方向后来项目的实现过程也验证了这种选择但在一些架构设计的细部方面还需要对方案进行修改属于那种螺旋上升的方式显然这是通过测试第一的思想和XP工程方法来实现的。 如果我们开始的架构设计在技术平台定位具有一定的世界先进水平那么项目开发实际有一半相当于做实验是研发存在相当的技术风险。 因此一开始我们不可能将每个需求都实现而是采取一种简单完成架构流程的办法使用最简单的需求将整个架构都简单的完成一遍加入人工干预以检验各个技术环节是否能协调配合工作(非常优秀先进的两种技术有时无法在一起工作)同时也可以探知技术的深浅掌握项目中的技术难易点。这个过程完成后我们就对设计方案做出上面的重大修改丰富完善了设计方案。 设计模式是支撑架构的重要组件 架构设计也类似一种工作流它是动态的这点不象建筑设计那样一开始就能完全确定架构设计伴随着整个项目的进行过程之中有两种具体操作保证架构设计的正确完成那就是设计模式(静态)和工程项目方法(RUP或XP 动态的)。 设计模式是支撑架构的一种重要组件这与建筑有很相象的地方一个建筑物建立设计需要建筑架构设计在具体施工中有很多建筑方面的规则和模式。 我们从J2EE蓝图模式分类http://java.sun.com/blueprints/patterns/catalog.html中就可以很清楚的看到J2EE这样一个框架软件的架构与设计模式的关系。 架构设计是骨架设计模式就是肉 这样一个比较丰富的设计方案可以交由程序员进一步完成了载辅助以适当的工程方法这样就可保证项目的架构设计能正确快速的完成。 时刻牢记架构设计的目标 由于架构设计是在动态中完成的因此在把握架构设计的目标上就很重要因此在整个项目过程中甚至每一步我们都必须牢记我们架构设计的总体目标可以概括下面几点 1. 最大化的重用这个重用包括组件重用 和设计模式使用等多个方面。 比如我们项目中有用户注册和用户权限系统验证这其实是个通用课题每个项目只是有其内容和一些细微的差别如果我们之前有这方面成功研发经验可以直接重用如果没有那么我们就要进行这个子项目的研发在研发过程中不能仅仅看到这个项目的需求也要以架构的概念去完成这个可以称为组件的子项目。 2. 尽可能的简单明了我们解决问题的总方向是将复杂问题简单化其实这也是中间件或多层体系技术的根本目标。但是在具体实施设计过程中我们可能会将简单问题复杂化特别是设计模式的运用上很容易范这个错误因此如何尽可能的做到设计的简单明了是不容易的。 我认为落实到每个类的具体实现上要真正能体现系统事物的本质特征因为事物的本质特征只有一个你的代码越接近它表示你的设计就是简单明了越简单明了你的系统就越可靠。更多情况是一个类并不能反应事物本质需要多个类的组合协调那么能够正确使用合适的设计模式就称为重中之重。 我们看一个具备好的架构设计的系统代码时基本看到的都是设计模式宠物店(pet store)就是这样的例子。或者可以这样说一个好的架构设计基本是由简单明了的多个设计模式完成的。 3. 最灵活的拓展性架构设计要具备灵活性 拓展性这样用户可以在你的架构上进行二次开发或更加具体的开发。 要具备灵活的拓展性就要站在理论的高度去进行架构设计比如现在工作流概念逐步流行因为我们具体很多实践项目中都有工作流的影子工作流中有一个树形结构权限设定的概念就对很多领域比较通用。 树形结构是组织信息的基本形式我们现在看到的网站或者ERP前台都是以树形菜单来组织功能的那么我们在进行架构设计时就可以将树形结构和功能分开设计他们之间联系可以通过树形结构的节点link在一起就象我们可以在圣诞树的树枝上挂各种小礼品一样这些小礼品就是我们要实现的各种功能。 有了这个概念通常比较难实现的用户级别权限控制也有了思路将具体用户或组也是和树形结构的节点link在一起这样就间接实现了用户对相应功能的权限控制有了这样的基本设计方案的架构无疑具备很灵活的拓展性。 关于文档中观点的补充 1. 最大化的重用 提高重用需要架构中的构件具有较高的独立性构件的实现变更不导致其它构件的设计变更另外一点是构件间接口的稳定性和可扩展性如果因为实现新增需求必须对接口作变更如果相关构件不支持这个新增需求可以保持接口不变。 提高重用的另外一个手段是利用类似已有的构件。理想的重用是只需从不同地方拿来构件经过简单的组合可实现新的产品需求。 2. 尽可能的简单明了 使设计简单的方式可以是对系统做分层分层可以是基于功能需求的。比如协议方面的分层协议的编解码、协议的可靠传输、协议的应用层适配。 要使分层基于功能需求需要对原始需求做功能需求分析把原始需求总结归纳成几个或几十个类似或相近的功能需求以这些功能需求搭建系统的功能框架以此功能框架为基础对原始需求在此功能架构上做运行分析。如果有需求不能实现则调整架构。这个过程依赖于经验和能力。 3. 最灵活的拓展性 灵活的拓展性依赖于接口定义、模块间的松耦合性。