免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件开发之路:垂直开发模式(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-4 )( 1-3 )如果把项目看成是一个 大矩形 如图 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项目程序结构)总体上,垂直开发模式具有六大优势: 更好的促进一个交流、 支持两个开发、应对三个变化。更好的促进技术交流, 契约就是各方沟通的桥梁, 开展工作的依据更好的支持持续开发, 物理逻辑层次结构清晰明了, 易于维护和新增功能更好的支持团队开发, 可以纵向, 也可以横向组建开发团队, 甚至合纵连横更好的应对需求变化, 契约是相对很稳定的, 需求的变化大多只是领域层的变化更好的应对系统变化, 通过拆分、 整合的方式, 能快速的重组新系统或抽取子系统更好的应对部署变化, 各层为独立程序集, 面向契约编程, 能快速的实现分布式部署第六节参考知识垂直管理 网格化管理属地管理 横向管理面向接口编程面向对象编程(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级注册安全工程师之安全生产技术基础能力检测试卷B卷附答案
- 胆汁尿的护理
- 雨课堂学堂在线学堂云《财政与民生(辽宁大学 )》单元测试考核答案
- 2026年网络预约出租汽车驾驶员从业资格考试题库及参考答案(能力提升)
- 2025四川成都市武侯区玉林社区卫生服务中心第三次社会招聘编外人员2人参考题库带答案解析
- 2026秋季国家管网集团华中公司高校毕业生招聘备考题库附答案
- 南昌农业发展集团有限公司劳务派遣岗招聘历年真题汇编附答案解析
- 2025重庆三峡学院招聘4人模拟试卷附答案解析
- 2026年设备监理师之设备监理合同考试题库及参考答案(典型题)
- 2026年质量员之土建质量基础知识考试题库含答案ab卷
- 粉笔线上协议班 合同
- 二十届四中全会测试题及参考答案
- 边检站笔试题目及答案
- 23G409先张法预应力混凝土管桩
- EQ2102培训讲义1课件
- 计算机专业职业规划-PPT
- 监护人培训台账
- 超星学习通《人工智能、语言与伦理》章节测试答案
- 计算机导论期末考试试题及答案
- 电批知识培训精品课件
- 多宝视多媒体生物刺激知觉学习视觉训练系统课件
评论
0/150
提交评论