软件开发之路.doc_第1页
软件开发之路.doc_第2页
软件开发之路.doc_第3页
软件开发之路.doc_第4页
软件开发之路.doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

_软件开发之路:垂直开发模式(VDP)(2010-09-19 16:49:44) 转载标签: 软件开发软件设计设计模式it垂直开发网格开发矩阵开发vdp第一节指导思想俗话说没有砖瓦,何以建大厦,再庞大的再复杂的事物都是有小的简单的事物组成,要解决复杂问题,第一步就是分解问题,把一个大问题分成若干小问题,分而治之,各个击破,最终解决大问题。软件开发是一个系统工程,也是一个极其复杂的问题,早期,个人英雄辈出,单打独斗:通常一个项目按一个模块一个人来完成开发工作,如图1-1。后来,应用越来越广泛,要解决的问题越来越复杂,团队开发思想出现,追求协同作战:把一个项目按业务特征分成若干模块,由不同人来分担模块的开发工作,通过函数接口把各模块整合成一个系统,如图1-2。再后来,分层开发思想出现,科学定位的呼声高涨,可谓百家争鸣:一般按项目(如图1-3)或按模块(如图1-4)划分为界面层(UI,即展现层)、逻辑层(BLL)和数据访问层(DAL)。按项目划分依据是功能特征,比如都是处理界面的、实现业务逻辑的,负责存取数据的代码放到同一层次,是横向的,水平方向的开发(如图1-3),这种层次化的开发模式称为横向开发、水平开发。按模块划分的依据是业务特征,比如用户管理、日志管理、报表管理等每个模块都有自己的界面层、业务逻辑层和数据访问层,是按纵向的,垂直方向的开发(如图1-4),这种先模块化后层次化的开发模式称为纵向开发、垂直开发。 (1-1)(1-2)(1-3)(1-4)如果把项目看成是一个大矩形如图1-1,按模块垂直划分层次后变成一个矩阵或者网格如图1-4,这样就把解决大矩形的问题转化为解决若干处于不同层次的小矩形的问题,把解决网格的问题转化为解决若干单元格的问题,所以垂直开发也可以叫做矩阵开发或网格化开发。垂直开发包含了横向开发的精髓(对比图1-3和图1-4),更好的做到科学定位、合理分工,不但能协同作战,也提高了精确打击的能力,是本文推荐的开发模式。第二节 实施方案垂直开发把对程序结构的关注从项目转移到模块,每个模块有固定的层,也有自己特有的层,本文倡导把一个模块分为契约层、领域层、构建层、控制层和界面层等,每个层一般为独立的程序集,图2-1表达了层间基于契约粘合的组织关系。(图2-1 模块程序结构)契约层(Contract):定义本模块要实现的功能即服务接口(IService),以及实现这些功能所关心的数据即值对象(VO,Value Object),也就是数据传输对象(DTO,Data Transfer Object),本层是对逻辑的抽象表达,主要完成对服务接口和值对象的声明。领域层(Domain):实现本模块契约层定义的服务接口(IService),是对逻辑的具体实现,本层强依赖于契约层,主要包括服务(Service)、管理(Manager)、域对象(DO,Domain Object)、数据验证对象(DVO,Data Validation Object)等类,Service调用Manager和DO,实现契约层服务接口的功能,是较为粗粒度的;Manager是对Service行为的子步骤化,是细粒度的;DO是对领域实体的客观表达,相对于值对象,它更接近现实、更稳定、更具层次感;DVO实现对VO的属性值有效性的验证。构建层(Builder):实现服务对象的创建逻辑,本层强依赖于契约层和领域层,不是必需的,可引入IOC,进而嵌入AOP功能。控制层(Controllers):实现用户界面和数据的流转逻辑控制,本层强依赖于契约层和构建层。界面层(UI):实现对数据的展现,本层强依赖于契约层、控制层或构建层。(图2-2 项目程序结构)契约层贯穿整个过程,是其他层次开发的基础,从这个意义上讲,是在面向契约编程,契约就是合同,而其他层次就是根据自己的职责履行合同,然后基于契约组成模块,集成为一个系统。第三节开发演练在D:Projects目录下以项目为单位组织开发目录环境,并以项目英文名建项目根目录,分别放置调试(bin)、发布(lib)、文档(doc)、源代码(src),工具(tools)等其他子目录,如图3-1。(图3-1)(图3-2)Examples(项目名)bin(调试目录,所有Debug版程序集输出到本目录)doc(文档目录,存放项目相关的文档资料)lib(发布目录,所有Release版程序集输出到本目录,模块引用模块外部程序集到本目录)src(源代码目录,所有源代码按模块组织子目录存放到本目录下)tools(工具目录,存放与项目相关的三方工具)在源代码目录以模块名建模块根目录,并独立创建解决方案和各层项目,引用本模块解决方案包含的项目输出程序集时通过引用项目方式,引用其他程序集到发布目录(lib)引用,以安全管理为例,如图3-3。(图3-3)Security(以模块名为模块的解决方案目录,如安全:Security)Builder(本模块构建层项目目录)Contract(本模块契约层项目目录)Controllers(本模块控制层项目目录)(图3-4)Domain(本模块领域层项目目录)Model(本模块领域层域对象目录,这里可引入ORM:Hibernate、ibatis、XPO)Service(本模块领域层服务对象目录,放置类名如XxxxxService的服务类文件)Manager(领域层项目根目录一般放置类名如XxxxxManager的代理类源代码文件)Validation(本模块数据验证对象目录,如XxxxXxxxValidator)Tests(本模块单元测试项目目录,一般的类签名为XxxxxServiceTest)第四节关键技术成功实施垂直开发的关键在于必须完成基础框架建设,提供以下七大服务: 对象构建服务,能通过参数化属性值和创建方式实现对象初始化 对象转换服务,能通过参数化类型实现值对象和域对象相互转换 契约声明服务,能通过参数化值对象类型派生从公共服务接口新的服务接口 能力共享服务,能通过参数化值对象和域对象类型从公共服务派生新的服务 数据验证服务,能通过参数化值对象实例实现数据有效性验证 数据适配服务,能通过参数化域对象类型实现域对象持久化 系统集成服务,能通过参数化模块信息实现功能安装和卸载第五节相对优势(图5-1 项目程序结构)总体上,垂直开发模式具有六大优势:更好的促进一个交流、支持两个开发、应对三个变化。 更好的促进技术交流,契约就是各方沟通的桥梁,开展工作的依据 更好的支持持续开发,物理逻辑层次结构清晰明了,易于维护和新增功能 更好的支持团队开发,可以纵向,也可以横向组建开发团队,甚至合纵连横 更好的应对需求变化,契约是相对很稳定的,需求的变化大多只是领域层的变化 更好的应对系统变化,通过拆分、整合的方式,能快速的重组新系统或抽取子系统 更好的应对部署变化,各层为独立程序集,面向契约编程,能快速的实现分布式部署第六节参考知识 垂直管理 网格化管理 属地管理 横向管理 面向接口编程 面向对象编程(OOP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论