《软件架构之美05架构解剖欣赏.ppt》由会员分享,可在线阅读,更多相关《软件架构之美05架构解剖欣赏.ppt(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PI Solution 2008年年8月月架构解剖之美架构解剖之美-类类-“编码规范编码规范”头顶三尺有神灵:写代码是在和电脑交流;是在和背后的人交流 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-2架构示意图架构示意图编码规范 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-3代码质量三要素:可读、可维护、高效率代码质量三要素:可读、可维护、高效率1.可读性规范而且好看2.可维护性 可读性支撑了可维护性,但进一步要求代码易于维护、易
2、于变更3.高效率在关键应用场景中,我们要关注代码效率 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-41.1.类组织元素声明类组织元素声明1-1:包名:包名:com.企业名称企业名称.项目名称项目名称.一级模块名称一级模块名称.二级模块名称二级模块名称.层次名称层次名称1-2:类名与接口名:业务名词:类名与接口名:业务名词+层次后缀层次后缀 1-3:常量属性、变量属性 1-4:方法名方法名1-5:局部变量:禁止使用单个字符,命名要清晰、明了,有明确含义,同时使用完整:局部变量:禁止使用单个字符,命名要清晰、明了,
3、有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。的单词或大家基本可以理解的缩写,避免使人产生误解。1-6:用正确的反义词组命名具有互斥意义的变量或相反动作的方法等。:用正确的反义词组命名具有互斥意义的变量或相反动作的方法等。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-52.2.必要的属性及变量必要的属性及变量2-12-1:去掉没必要的属性变量。:去掉没必要的属性变量。2-22-2:仔细定义并明确属性变量的含义、作用、取值范围及:仔细定义并明确属性变量的含义、作用、取值范围及属性变量间的
4、关系。属性变量间的关系。2-32-3:明确属性变量与操作此属性变量的方法的关系,如访:明确属性变量与操作此属性变量的方法的关系,如访问、修改及创建等。问、修改及创建等。2-42-4:当向属性变量赋值时,要十分小心,防止赋与不合理:当向属性变量赋值时,要十分小心,防止赋与不合理的值或越界等现象发生。的值或越界等现象发生。2-52-5:防止局部变量与属性变量同名。:防止局部变量与属性变量同名。2-62-6:给所有变量赋初始值:给所有变量赋初始值2-72-7:合理地设计数据类型,尽量减少没有必要的数据类型:合理地设计数据类型,尽量减少没有必要的数据类型默认转换与强制转换。默认转换与强制转换。2008
5、,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-63.3.必要的方法必要的方法3-13-1:方法访问权限声明,要有明确的权限控制。:方法访问权限声明,要有明确的权限控制。3-23-2:方法声明的完整性,对返回类型、参数、例外都要有明确的:方法声明的完整性,对返回类型、参数、例外都要有明确的说明。说明。3-3:明确方法功能,精确地实现方法设计 3-43-4:明确规定对接口方法参数的合法性检查应由方法的调用者负:明确规定对接口方法参数的合法性检查应由方法的调用者负责还是由接口方法本身责还是由接口方法本身负责,缺省是由方法调用者
6、负责。负责,缺省是由方法调用者负责。3-5:防止将方法的参数作为工作变量。3-6:方法的规模尽量限制在200行以内 3-7:避免方法中不必要语句,防止程序中的垃圾代码。3-83-8:避免重复代码:如果多段代码重复做同一件事情,那么在方:避免重复代码:如果多段代码重复做同一件事情,那么在方法的划分上可能存在问题。法的划分上可能存在问题。3-9:功能不明确的较小的方法,特别是仅有一个上级方法调用它时,应考虑把它合并到上级方法中,而不必单独存在 3-103-10:设计高扇入、合理扇出(小于:设计高扇入、合理扇出(小于7 7)的方法。)的方法。3-11:减少递归算法:减少方法本身或方法间的递归调用。2
7、008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-74.4.必要的注释必要的注释4-0:支持自注释,通过对类,方法、变量等正确的命名以及合理地组织代码的结构,:支持自注释,通过对类,方法、变量等正确的命名以及合理地组织代码的结构,使代码成为自注释的。使代码成为自注释的。4-1:一般情况下,源程序有效注释量必须在:一般情况下,源程序有效注释量必须在20以上以上 4-2:边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。:边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注
8、释要删除。不再有用的注释要删除。4-3:注释的内容要清楚、明了,含义准确,防止注释二义性。:注释的内容要清楚、明了,含义准确,防止注释二义性。4-4:避免在注释中使用缩写,特别是非常用缩写。:避免在注释中使用缩写,特别是非常用缩写。4-5:java程序文件应该包涵下列头文件:版权说明、版本号、生成日期、作者、内容、程序文件应该包涵下列头文件:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等。功能、与其它文件的关系、修改日志等。4-6:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,
9、在声明时都必须加以注释,说明其物理含义。变量、常量的注释应放在其上方相邻位置或右方加以注释,说明其物理含义。变量、常量的注释应放在其上方相邻位置或右方 4-7:方法头部应进行注释,列出:方法的目的:方法头部应进行注释,列出:方法的目的/功能、输入参数、返回值、调用关系、功能、输入参数、返回值、调用关系、例外情况等。例外情况等。4-8:方法内注释应与其描述的代码相近,对代码的注释应放在其上方或右方(:方法内注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。对单条语句的注释)相邻位置,不可放在下面,如放于上方
10、则需与其上面的代码用空行隔开。4-9:注释与所描述内容进行同样的缩排:注释与所描述内容进行同样的缩排 4-10:对条件分支、循环语句必须编写注释:对条件分支、循环语句必须编写注释 4-11:避免在一行代码或表达式的中间插入注释:避免在一行代码或表达式的中间插入注释 4-12:在代码的功能、意图层次上进行注释,提供有用、额外的信息。:在代码的功能、意图层次上进行注释,提供有用、额外的信息。4-13:在程序块的结束行右方加注释标记,以表明某程序块的结束。:在程序块的结束行右方加注释标记,以表明某程序块的结束。4-14:注释格式:尽量统一,建议使用:注释格式:尽量统一,建议使用“/*/”。4-15:
11、注释语言:建议多使用中文,除非能用非常流利准确的英文表达。:注释语言:建议多使用中文,除非能用非常流利准确的英文表达。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-85.5.排版规范排版规范5-1:程序块要采用缩进风格编写,缩进的空格数为:程序块要采用缩进风格编写,缩进的空格数为4个。个。5-2:相对独立的程序块之间、变量说明之后必须加空行。:相对独立的程序块之间、变量说明之后必须加空行。5-3:较长的语句(:较长的语句(120字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,字符)要分成多行书写,长表
12、达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。5-4:循环、判断等语句中若有较长的表达式或语句,则要进行适当的划分,长表达式要在低优:循环、判断等语句中若有较长的表达式或语句,则要进行适当的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。先级操作符处划分新行,操作符放在新行之首。5-5:若方法中的参数较长,则要进行适当的划分。:若方法中的参数较长,则要进行适当的划分。5-6:不允许把多个短语句写在一行中,即一行只写一条语句。:不允许把多个短语句写在
13、一行中,即一行只写一条语句。5-7:if、for、do、while、case、switch、default等语句自占一行,且等语句自占一行,且if、for、do、while等等语句的执行语句部分无论多少都要加括号语句的执行语句部分无论多少都要加括号。5-8:对齐只使用空格键,不使用:对齐只使用空格键,不使用TAB键。键。5-9:方法声明,循环、判断等语句中的代码都要采用缩进风格,:方法声明,循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句语句下的情况处理语句也要遵从语句缩进要求。也要遵从语句缩进要求。5-10:程序块的分界符:程序块的分界符 和和应各独占一行并且位于同一列
14、,同时与引用它们的语句左对齐。应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在方法体的开始、类的定义、结构的定义、枚举的定义以及在方法体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。语句中的程序都要采用如上的缩进方式。5-11:在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后:在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符
15、(如),后不应加空格。),后不应加空格。5-12:一行程序以小于:一行程序以小于120字符为宜,不要写得过长。字符为宜,不要写得过长。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-96.6.代码可读性代码可读性6-16-1:避免使用默认优先级:注意运算符的优先级,并用括:避免使用默认优先级:注意运算符的优先级,并用括号明确表达式的操作顺序。号明确表达式的操作顺序。6-26-2:避免使用不易理解的数字:用有意义的常量标识符来:避免使用不易理解的数字:用有意义的常量标识符来替代。替代。6-36-3:源程序中关系较为紧
16、密的代码应尽可能相邻。:源程序中关系较为紧密的代码应尽可能相邻。6-46-4:不要使用难懂的技巧性很高的语句,除非很有必要时。:不要使用难懂的技巧性很高的语句,除非很有必要时。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-107.7.关注程序效率关注程序效率7-17-1:编程时要经常注意代码的时间效率和空间效率。:编程时要经常注意代码的时间效率和空间效率。7-27-2:在保证软件系统的正确性、稳定性、可读性及可测性:在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。的前提下,提高代码效率。7-
17、37-3:提高空间效率的建议:不要保存无谓的数据在内存中,:提高空间效率的建议:不要保存无谓的数据在内存中,内存清理或磁盘内存清理或磁盘ioio都是很耗费效率的。都是很耗费效率的。7-47-4:关于循环的效率,不要在循环中做无谓的事情:关于循环的效率,不要在循环中做无谓的事情7-57-5:精细化算法处理:仔细分析有关算法,并进行优化,;:精细化算法处理:仔细分析有关算法,并进行优化,;但不应花过多的时间拼命地提高但不应花过多的时间拼命地提高“调用不很频繁调用不很频繁”的方法的方法代码效率。代码效率。7-67-6:不要一味追求紧凑的代码,可读性、可维护性比紧凑:不要一味追求紧凑的代码,可读性、可
18、维护性比紧凑的代码重要。的代码重要。PI Solution 2008年年8月月架构解剖之美架构解剖之美-类之间有哪些关系类之间有哪些关系-“OO-“OO面向对象面向对象”面向对象的认识论:这个世界是由对象以及对象之间的关系组成的,这是人认识世界的基本方法。软件系统反映的是客观世界,最好也用对象以及对象的关系来表述,这样人就不用思维转换了,而且系统比较稳定。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-12架构示意图架构示意图如何描述类关系 2008,PI Solution2008年年8月月探索更好的开发方法,过上
19、快乐的软件生活探索更好的开发方法,过上快乐的软件生活-131.OO1.OO理论的由来理论的由来客观世界是由事实组成的事实是由相互作用的对象组成的物理上存在的事物在人类思维中形成的概念用于沟通的信息以前的方法论中:一切都可以成为对象,使得对象的产生过于随意。通过业务建模、分析建模、设计建模形成对象,形成必要的稳定的对象模型。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-142.OO2.OO关系关系-继承继承 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,
20、过上快乐的软件生活-153.OO3.OO关系关系关联关联 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-164.OO4.OO关系关系依赖依赖 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-175.OO5.OO关系关系-实现实现接口实现PI Solution 2008年年8月月架构解剖之美架构解剖之美-如何定义类关系如何定义类关系-设计模式设计模式对共性的问题特征形成的最佳答案,被抽象模式在象棋/围棋中被称为为定式在系统设计领域,被称
21、为设计模式在RUP中被推广了,业务机制-设计机制-实现机制 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-19架构示意图架构示意图用设计模式产生类 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-201.1.设计模式的概念设计模式的概念设计模式的基本概念针对设计中特定的问题模型,提供一种或多种固定的结构模型。设计模式本身反应了一种重用的思想,那就是解决方案级别的重用。设计模式的实现手段包括:重用、接口与实现分离、结构分解。2008,P
22、I Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-212.2.设计模式概览设计模式概览 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-223.Singleton3.Singleton(创建)(创建)意图一个类只有一个实例,其状态在全局保持一致,系统可以全局访问这一个实例。解决方案效果保证单一对象实例的状态一致性有效节省内存空间全局唯一的访问控制点 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发
23、方法,过上快乐的软件生活-234.4.(Abstract Abstract)FactoryFactory(创建)(创建)意图接口定义与实现分离,一个接口存在多种类型的实现,系统在运行时根据具体的环境条件创建具体的实现类的实例。解决方案(见右图)效果接口与实现分离后,支持了系统级的多态性,系统扩展性增强。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-245.Builder5.Builder(创建)(创建)意图将复杂对象的创建和表示分离,使得很容易创建不同的表示。解决方案(见右图)效果使得对象的创建过程透明,便于修改
24、成其它对象。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-256.Adapter(Wrapper)6.Adapter(Wrapper)(创建)(创建)意图一个类想使用两外一个类提供的服务,但是接口不匹配。一个类仅仅想实现某个接口的部分服务。解决方案(见右图)效果使得不兼容的接口类可以为另外一个类提供服务。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-267.Composite7.Composite(结构)(结构)意图“整体部分”关系
25、,以一种一致的方式操作树节点。解决方案(见右图)效果客户代码简单。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-278.Fa8.Faadeade(结构)(结构)意图为系统一组接口提供一个一致的界面。解决方案(见右图)效果屏蔽系统内部结构,使得外部系统松耦合。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-289.Proxy(9.Proxy(结构结构)意图Client在调用Server的service时,要求访问是受控的。解决方案(见右
26、图)效果使得对某个接口的访问是受控的。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-2910.Command10.Command(行为)(行为)意图客户端在某种情况下,知道要调用某个服务,但是又不能直接访问。解决方案(见右图)效果使得客户端与其调用服务之间实现松耦合。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-3011.Observer11.Observer(行为)(行为)意图一个对象的状态发生改变时,有多个相关对象处理该事件。解
27、决方案(见右图)效果支持1对多基于事件的依赖关系 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-31设计模式应用方式在演变设计模式应用方式在演变设计模式的应用依然广泛,被广泛的应用到各种软件框架中,在使用软件框架的时候,我们不知不觉中就应用了很多设计模式。在使用了软件框架后,一般情况下不推荐再应用过多的设计模式。PI Solution 2008年年8月月架构解剖之美架构解剖之美-如何对类分层如何对类分层-MVC-MVCMVC是软件框架的基础,让我们从这里学起 2008,PI Solution2008年年8月月探索
28、更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-33架构示意图架构示意图利用MVC来分层 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-34一.经典的MVC 经典的MVC结构,是我们理解体系结构的敲门砖,后来流行的体系结构,都隐藏了MVC架构的影子。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-351.为什么使用 Model-View-Controller 设计?1870年,某人写了一本小说:有2002个录
29、音版本有1926个类似羊皮版本有2005个印刷版本1987年,它拍成了电影同一个小说 有4种不同的表现方式 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-362.MVC中的三个角色Model:包含的是描述问题的数据Controller:响应用户请求,告诉模型如何响应这个请求。View:向用户显示当前模型的状态 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-373.如何实现MVC如何实现MVC设计呢?:1.首先创建Model,并且只创
30、建一次-Model 包含问题领域数据-Model提供了数据的set/get方法2.创建 View 实例-View可能包含 GUI构件-配置View,使得Model更新时,可以自动更新View3.创建Controller实例-添加用户行为的监听器-使得每个监听器都适当的改变了Model 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-38二二.CS.CS架构中的架构中的MVCMVC数据库为中心的应用程序分布到不同设备,C/S概念就形成了,CS程序时代的体系结构,有过多种探索。ModelView/ControlCont
31、rolModelViewControlModelView/Control 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-39三.BS架构中的MVC B/S应用,鉴于在View/Control之间是用http协议链接的,改变了MVC的实现方法 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-401.J2EE1.J2EE中的中的MVC-Model 1MVC-Model 1View/ControlModelDB浏览器动态网页HTTP 200
32、8,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-412.J2EE2.J2EE中的中的MVC-Model 2MVC-Model 2ViewModelDB浏览器动态网页ControlHTTP 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-423.J2EE3.J2EE的的MVC-Model 3MVC-Model 3ViewModelDB浏览器动态网页HTTP ADaptorControlPI Solution 2008年年8月月架构解剖之美架构解
33、剖之美-数据层的科学数据层的科学-ORMapping-ORMapping 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-44架构示意图架构示意图数据层的科学 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-451.1.让工具类集中处理让工具类集中处理SQLSQLModelDBDBUtil 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-462.2.给予每个
34、表一个给予每个表一个SQLSQL封装类封装类ModelDBDBUtilDBUtilDBUtilTable Mappping 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-473.3.给每个对象一个封装类给每个对象一个封装类ModelDBDBUtilDBUtilDBUtilObject Mappping 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-484.4.通过引擎实现通过引擎实现ORMORMModelDBDBUtilDBUtil
35、DBUtilObject MapppingORM EnginePI Solution 2008年年8月月架构解剖之美架构解剖之美-连接层的科学连接层的科学-IOC/AOP-IOC/AOP 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-50架构示意图架构示意图连接层的科学 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-511.View1.View与与ControlControl之间应用之间应用IOCIOCViewHttpAdapter
36、ControlIOC 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-522.Control2.Control与与ModelModel之间应用之间应用IOCIOCControlModelORM EngineDBIOC 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-533.AOP3.AOP基础基础程序主体前置切面后置切面独立开发程序的不同功能部分 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探
37、索更好的开发方法,过上快乐的软件生活-544.4.拦截器拦截器/过滤器,特殊的过滤器,特殊的AOPAOP业务逻辑用户请求数据处理拦截/过滤处理 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-555.Web5.Web之之ajaxajax1.动态页面之动态刷新是优势,因为动态页面让互联网成为应用,而不再是网站jsp=java object+html+javascript+css2.动态页面之动态刷新也是逆势,因为传递了大量重复的界面数据在浪费效率Ext=javascript+html+json/xml+cssPI S
38、olution 2008年年8月月架构解剖之美架构解剖之美-重用的科学重用的科学 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-57架构示意图架构示意图重用的科学 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-581.1.技术构件重用技术构件重用将常用的技术构件开发出来,作为软件软件框架的基本组成部分构件1构件2构件3软件系统 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法
39、,过上快乐的软件生活-592.2.基础类型的重用基础类型的重用封装一些基础父类,在软件开发时继承使用,可以完善语义定义,也能提高重用性。基础类1基础类2基础类3软件系统构件1构件2构件3 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-603.3.基于接口的开发,提升业务重用能力基于接口的开发,提升业务重用能力业务接口业务逻辑类业务逻辑类Model 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-614.4.单接口,多种类型的发布模式单
40、接口,多种类型的发布模式应用接口Control类ControlHttp ActionWebServiceRMIPI Solution 2008年年8月月架构解剖之美架构解剖之美-已经成型的学科已经成型的学科-体系架构体系架构 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-63架构示意图架构示意图软件架构的科学 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-641.1.体系架构,是关于软件结构的逻辑定义体系架构,是关于软件结构的逻辑定
41、义 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-652.2.软件框架软件框架-为体系架构提供了技术职称为体系架构提供了技术职称 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-663.3.基础平台基础平台-为应用系统提供各种使能服务为应用系统提供各种使能服务 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-674.SOA4.SOA,正在走向成熟,正在走向
42、成熟界面界面业务业务逻辑逻辑数据库数据库界面界面业务业务逻辑逻辑数据库数据库界面界面业务业务逻辑逻辑数据库数据库业务线业务线1业务线业务线2业务线业务线3应用应用应用应用应用应用业务线业务线1业务线业务线2业务线业务线3服务服务应用整合应用整合服务重用服务重用效率效率灵活性灵活性SOA的方法的方法条线式架构条线式架构面向服务架构面向服务架构 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-685.OSGi5.OSGi,构件化软件的里程碑,构件化软件的里程碑1.真正的构件化软件,让构件从逻辑上和物理上都独立存在。2.
43、可以动态部署构件,极大提升应用程序的维护能力。PI Solution 2008年年8月月架构解剖之美架构解剖之美-技术架构表达方法技术架构表达方法-4+1-4+1模型模型 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-70架构示意图架构示意图连接层的科学 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-711.1.系统架构(系统架构(System ArchitectureSystem Architecture)组成的)组成的4+14+
44、1模型模型 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-72逻辑视图逻辑视图(Logical View)(Logical View)表示法表示法逻辑视图属于系统设计的范畴,它表现的是对系统架构实现有重要意义的子系统、包、类、接口、及它们之间的关系。逻辑视图的标记方法来自于UML 逻辑视图表示法(如图4所示),逻辑视图的风格采用了面向对象的风格,使用Rational Rose从事相关设计工作。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件
45、生活-73进程视图进程视图(Process View)(Process View)概念概念进程视图以图形方式说明了系统中进程的详细组织结构,它考虑一些非功能性的需求,如性能、可用性、并发性、分布性、系统完整性、容错性等方面,并且它考虑逻辑视图的主要抽象如何与进程结构相配合在一起,即在哪个控制线程上,对象的操作被实际执行。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-74开发视图开发视图(Development View:Component View)(Development View:Component View
46、)开发视图关注在软件开发环境下代码的模块组织结构,软件打包成小的程序块,它们时程序包或子系统,可以由一位或几位开发人员开发。子系统可以组织成为分层结构,每个层为上一层提供良好定义的接口。2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-75部署视图部署视图(Deployment View:Physical View)(Deployment View:Physical View)部署视图主要关注系统非功能性的需求,如可用性、可靠性(容错性)、性能和扩展性。软件在计算机网络或处理节点上运行,被识别的各种元素(子系统、进程
47、/线程、任务和对象)需要被映射至不同的节点。我们希望使用不同的物理配置:一些用于开发和测试,另外一些则用于不同地点和不同客户的部署。因此软件至节点的映射需要高度的灵活性及对源代码产生最小的影响 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-76场景视图场景视图(Scenario View)(Scenario View)前面描述的五种视图从各个方面描述了系统设计的体系架构。这些体系架构之间协同工作,共同实现系统功能性需求和非功能性需求,我们利用场景(用例实现)来表达这种协同关系。PI Solution 2008年年
48、8月月架构解剖之美架构解剖之美-企业信息化模型企业信息化模型 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-781.1.企业信息化架构:最宏观架构企业信息化架构:最宏观架构业务架构应用架构数据架构系统架构 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-79业务架构业务架构-业务线业务线决策管理决策管理风险控制线风险控制线业务推动线业务推动线稽核监督线稽核监督线后台支撑线后台支撑线报报告告重大风险情况重大风险情况重大违规情况重大违规情
49、况重大决策重大决策汇汇报报确定风险边界确定风险边界业务推动情况业务推动情况业务风险情况业务风险情况监督监督提供支持保障提供支持保障支持保障需求支持保障需求提供支持保障提供支持保障支持保障需求支持保障需求提供支持保障提供支持保障支持保障需求支持保障需求业务风险情况业务风险情况监督监督重大决策重大决策重大决策重大决策 2008,PI Solution2008年年8月月探索更好的开发方法,过上快乐的软件生活探索更好的开发方法,过上快乐的软件生活-80业务架构业务架构-业务群组业务群组风险控制线风险控制线风险控制线风险控制线后台支撑线后台支撑线后台支撑线后台支撑线稽核监督线稽核监督线稽核监督线稽核监督
50、线业务推动线业务推动线业务推动线业务推动线决策管理决策管理决策管理决策管理业务计划业务计划预算管理预算管理绩效管理绩效管理业务开发业务开发经营分析经营分析内部控制内部控制现场稽核现场稽核非现场稽核非现场稽核政策研究政策研究财会管理财会管理法律支撑保障法律支撑保障结算清算管理结算清算管理ITIT支撑体系支撑体系思想建设与思想建设与宣传教育宣传教育后勤服务保障后勤服务保障人力资源管理人力资源管理贷款审批贷款审批贷款合同管理贷款合同管理贷款发放支付贷款发放支付贷款本息回收贷款本息回收贷后管理贷后管理资产保全资产保全资金管理资金管理投资业务投资业务贷款评审贷款评审资金交易资金交易资金筹措资金筹措信用风