社区项目开发的问题以及未来的建议

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    社区项目开发的问题以及未来的建议 - Presentation Transcript

    1. 社区项目开发的问题以及未来的建议
      TonyDeng
      http://friendfeed.com/tonydeng
      http://twitter.com/wolfdeng
      http://delicious.com/wolf.deng
      http://wolfchina.blogbus.com
    2. 目前表现出来的问题
      开发人员天天加班赶进度,但是出来产品,还是不放心
      多个项目对同一个数据库的表做操作,容易产生错误数据以及逻辑混乱
      多项目组合作不顺畅,REST服务不够明确
      缺乏版本控制
      项目中依赖的第三方的jar混乱
      太依赖MyEclipse来做内部项目间的依赖管理
      代码架构混乱,高耦合低内聚
      页面与数据库耦合太紧,业务逻辑更多的由前端展现层的javascript和持久层的SQL来维护,中间的业务逻辑层只是做的一个左手交右手的工作
      文档不清晰
    3. 我们的目标
      建立一个开放的服务平台
      建立一个高性能,可扩展,健壮的网站
      团队更好的协作和分享
      让工作更有效率
      把工作变成兴趣
      提高自我修养,实现个人价值
      公司与个人双赢
    4. 解决方案
      关键的思路:
      专注
      关注点分离
      开发团队拆分方式改变,让每个人都发挥自己擅长的技能,更专注于自己的领域
      开发人员必须进行单元测试
      使用Maven进行项目的生命周期管理、依赖管理
      使用Subversion官方推荐的trunk、branches、tags的方式来管理项目的版本
    5. 团队拆分方案
      按技术拆分
      优点:
      专注
      测试驱动
      容易低耦合,高内聚,关注点分离
      对技术研究的更透彻
      更容易形成规范和风格
      更容易技术积累
      更容易扩展和优化
      缺点:
      对团队成员有较高的要求
      沟通成本相对较高
    6. 常规的技术拆分方式以及需要掌握的技能
      数据访问层(DAO)
      Ibatis、Hibernate、JDBC、JNDI、JPA、JTA
      Oracle、MySQL、PostgreSQL 、SQL优化
      Key-ValueStorage、NoSQL
      半个DBA
      业务逻辑层(Business Logic)
      SpringIOC、AOP、JMS
      Restlet、Jersey、RESTeasy、ApacheCFX
      MemCached、Terracotta
      Design Pattern 、DDD (Domain-Driven Design领域驱动设计)
      REST、SOA、ROA
      Http
      展示层(MVC & UI)
      Struts、WebWork、SpringMVC
      Velocity、FreeMarker、JSTL、JSF
      JavaScript 、JQuery、Dojo、Prototype 、RIA、Widget
      HttpCache、JavaScriptCache
    7. 拆分后的工作流程
      所有成员一起听取业务需求
      所有成员共同进行需求分析,确定系统架构,以及各层的技术选型
      项目负责人创建项目
      根据产品提供的UseCase以及页面原型,
      数据访问层的成员和DBA一起确定数据库模型,定义Dao的接口
      业务逻辑层的成员规划REST资源的URI,定义Service的接口以及领域模型
      展示层的成员定义ViewBean,串联项目的PageFlow
      各层通过单元测试、压力测试等各种测试方式来验证开发的成果
      通过依赖注入等方式将各个模块合并起来
      项目合并后,整体测试
      交付测试部门测试
    8. 使用Maven管理项目
      建议使用多模块模式来管理项目
      club-rest-project
      club-domain-model
      定义jaxb注解的domainmodelobject或者通过xslschema定义domainmodelobject
      club-dao
      依赖club-domain-model模块
      定义dao的interface,生成dao的javadoc
      club-dao-impl
      依赖club-domian-model,club-dao
      club-dao的实现,sqlmap,Dao的测试
      club-rest-api
      定义rest service interface,生成restservice 的javadoc以及restresource的URI说明文档
      club-rest-impl
      依赖club-domain-model,club-dao,club-dao-impl
      restapi的实现,业务逻辑处理,定义restresource,业务逻辑测试
      club-rest-agent
      依赖club-domain-model
      club-rest-api的实现,代理操作restresource,resource 测试
      club-rest-webapp
      依赖club-domain-model,club-dao,club-dao-impl,club-rest-api,club-rest-impl
      通过配置文件整合依赖的项目,打成war包发布
      club-web-project
      club-web-component
      依赖club-domain-model,club-rest-api,club-rest-agetn
      社区的MVC,用户权限管理
      club-webapp
      依赖club-domain-model,club-rest-api,club-rest-agent,club-web-component
      通过配置文件整合依赖的项目,打成war包发布
    9. 使用Subversion管理软件版本
      通过软件版本,我们能够得知我们每次发布和更新都做了些什么。
      Subversion官方推荐使用trunk,branches,tags这种方式来管理软件的版本,而且大多数使用Subversion的开源项目也是这么来做的。GoogleCode等SubVersion服务提供者也是使用这种方式来管理软件版本
      trunk
      项目的主要开发版本。
      在这里存放的永远是正在开发的代码,是不稳定的代码。
      branches
      当我们在某个项目开发之后,需要对这个项目进行紧急的修改,而且不能等待正在进行的项目开发完毕,那么我们需要在branches上建立一个分支来进行项目的紧急的修改和发布。
      tags
      这里存放的我们已经发布过的版本,这里的版本都是经过测试的稳定版本。
      如果我们需要建立分支,那么就需要在这里选择相应的版本来建立分支
    10. 谢谢!
    SlideShare Zeitgeist 2009

    + Tony DengTony Deng Nominate

    custom

    129 views, 0 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 129
      • 107 on SlideShare
      • 22 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 4
    Most viewed embeds
    • 22 views on http://wolfchina.blogbus.com

    more

    All embeds
    • 22 views on http://wolfchina.blogbus.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories