`
cppmule
  • 浏览: 436103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java软件架构设计慨论

阅读更多

Java软件架构设计慨论
    开始之初的架构设计决定着软件产品的生死存亡。“好的开始相当于成功一半”。
  开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和技术平台支持。再结合自己项目的特点(需要透彻的系统分析),才能逐步形成自己项目的架构蓝图。
  比如要开发网站引擎系统,就从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在一起,这样就间接实现了用户对相应功能的权限控制,有了这样的基本设计方案的架构无疑具备很灵活的拓展性。
分享到:
评论

相关推荐

    Java高级互联网MCA架构师 架构师全景概论

    java Java高级互联网MCA架构师 架构师全景概论

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    所属分类:计算机 > 软件与程序设计 > JAVA(J#) > Java 编辑推荐   Jworld@TW技术论坛版主,Java权威技术顾问与专业讲师,Java畅销书作者——林信良全新力作。  国内第一本Java 7,前期版本累计销量5万册。  ...

    java面试题库2021.pdf

    ②请求/相应架构原理 ③web 容器 四、 JDBC 编程 1、 SQL 基础 2、 JDBC 基础 ①数据库 ②数据库连接池 ③事物管理, 批处理 3、 JDBC 进阶 五、 XML 编程 1、 XML 基础 2、 XML 进阶 3、 Web service ①WSDL 与 ...

    移动操作系统原理与实践——基于Java语言的Android应用开发.zip

    移动操作系统原理与实践——基于Java语言的Android应用开发 目录 基础篇 第1章移动操作系统概论 1.1操作系统的原理与概念 1.1.1隐藏硬件细节 1.1.2资源管理 1.1.3操作系统的历史 1.2操作系统的分类 1.2.1...

    Javaweb城市公交查询系统的设计与实.docx

    4.1 概要设计的概论 15 4.2 架构设计 15 4.3 系统功能结构图及分析 15 4.3.1 系统功能结构图…………………………………………………………………………………………………15 4.3.2 系统基本功能……………………...

    数据库课程设计-模块设计报告.doc

    萨师煊编著,《数据库系统概论》,高等教育出版社,2006年 [4] 李昆编著,《SQL SERVER 2000课程设计案例精编》,中国水利水电出版社,2005年 [5] 刘大伟,马传宝编著,《数据库项目案例导航》,清华大学出版社,2005年 ...

    嵌入式系统开发圣经

    第5章 Smart Handheld Device软件系统设计 5-1 前言 5-2 嵌入式操作系统基本概念 5-2-1 嵌入式操作系统 5-2-2 软件组件 5-3 PDA产品面面观 5-3-1 Palm-PDA的创作先驱 5-3-2 WinCE Pocket PC多媒体的佼佼者 ...

    android开发入门教程

    11.1 兵马未动粮草先行——应用规划及架构设计 11.2 应用开发步骤 11.2.1 界面设计始终是第一位——实现UI 11.2.2 必备的动力源泉——数据操作和存储 11.2.3 华丽转身——实现多页面跳转 11.2.4 始终为用户做好服务...

    《嵌入式系统开发圣经(第二版)》电子版

    mode:i-appli 326 4-7 Java Chip让Java飞起来 337 4-7-1 Java Chip的诞生 338 4-7-2 各家的JavaChip 339 4-7-3 小结 343 4-8 总结 344 第5章 Smart Handheld Device软件系统设计 345 5-1 前言...

    J2EE电子商务系统开发从入门到精通

    1.1.1 双层(C/S)软件架构设计..... 1 1.1.2 传统三层软件设计架构..... 2 1.1.3 n层软件架构及Web软件架构..... 3 1.2 J2EE简介..... 4 1.2.1 什么是J2EE... 4 1.2.2 J2EE体系架构概述..... 5 1.2.3 J2EE主要技术....

    积分java源码-tiger-zone:CEN3031基于carcassonne的游戏

    Small教授的软件工程概论(CEN3031)“学期”项目。 目的是让游戏能够有两个玩家,能够实现人工智能,并能够与锦标赛服务器通信以与类的其余实现竞争。 在这个项目过程中获得的任何和所有设计文档都放在 /...

    大数据专业是学什么课程.pdf

    以中国⼈⺠⼤学为例: 基础课程:数学分析、⾼等代数、普通物理数学与信息科学概论、数据结构、数据科学导论、程序设计导论、程序设计实 践。 必修课:离散数学、概率与统计、算法分析与设计、数据计算智能、数据库...

    《Google Android开发入门与实战》.pdf

    11.1 兵马未动 粮草先行——应用规划及架构设计 202 11.2 应用开发步骤 202 11.2.1 界面设计始终是第一位——实现ui 203 11.2.2 必备的动力源泉——数据操作和存储 203 11.2.3 华丽转身——实现多页面...

    android开发入门与实战(下)

    11.1 兵马未动粮草先行——应用规划及架构设计 11.2 应用开发步骤 11.2.1 界面设计始终是第一位——实现UI 11.2.2 必备的动力源泉——数据操作和存储 11.2.3 华丽转身——实现多页面跳转 11.2.4 始终为用户做好服务...

    android开发入门与实战(上)

    11.1 兵马未动粮草先行——应用规划及架构设计 11.2 应用开发步骤 11.2.1 界面设计始终是第一位——实现UI 11.2.2 必备的动力源泉——数据操作和存储 11.2.3 华丽转身——实现多页面跳转 11.2.4 始终为用户做好服务...

    2009.6.19—30举办3S研讨会暨Google Earth与Google Map等仿真建模与共享及ARCGIS与遥感高级程序员培训班

    (3)、介绍用于工程设计、选线、规划、工程选址及铁路与公路交通三维仿真的应用软件的关键技术—————国际最优秀的Creator/Vega软件操作与制作应用上机(机房),将介绍如何利用可免费获得的OPENGL函数库与控件的...

    ViewBaseAppTemplate:ViewBase应用程序模板

    ViewBaseAppTemplate清洁建筑概论通用架构MVP(模型视图演示者)使用MVP时的一些注意事项Presenter -仅Java / Kotlin,没有Android组件(例如Activity,Context,R ...),如果要使用这些组件,则必须将它们包装在...

    Google.Android开发入门与实战

    11.1 兵马未动粮草先行——应用规划及架构设计 11.2 应用开发步骤 11.2.1 界面设计始终是第一位——实现UI 11.2.2 必备的动力源泉——数据操作和存储 11.2.3 华丽转身——实现多页面跳转 11.2.4 始终为用户做好服务...

    J2EE应用开发详解

    第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用服务器 13 1.5 小结 16 第2章 建立...

    Google Android开发入门与实战的代码

    11.1 兵马未动 粮草先行——应用规划及架构设计 202 11.2 应用开发步骤 202 11.2.1 界面设计始终是第一位——实现UI 203 11.2.2 必备的动力源泉——数据操作和存储 203 11.2.3 华丽转身——实现多页面...

Global site tag (gtag.js) - Google Analytics