`
emowuyi
  • 浏览: 1479274 次
文章分类
社区版块
存档分类
最新评论

研发经理眼中软件产品层面

 
阅读更多

对于一个具体的软件产品,从不同的视角,关注点不同,作为研发经理,和普通的程序员,甚至架构师,不尽相同,需要从更加全面的角度进行分析。

对于一个理想的软件产品,可以如同立体三维一样,进行相关的把握。

首先,是纵向的分析,也就是软件产品采用的架构。对于典型的基于J2EE的产品,层次比较清楚,可以分为数据持久层,业务逻辑层,展示层。每个具体的层面,技术不同,对于同一个层面,采用不同的技术,其实不是个好主意,虽然听起来可以利用不同的长处,但是实际使用过程中经常会造成混乱。对于复杂的电信系统,属于混合系统,需要分开进行分析。

其次,是横向划分,也就是将整个业务系统划分为不同的业务子系统,可以称为领域驱动的开发。定义不同的业务子系统的接口,可能是架构师的责任,而从事具体的开发工作应该落到具体程序员身上。

最后,可以成为垂向,其实就是测试驱动开发,将产品划分为业务系统,和自动化测试系统。测试先行的开发策略,是对于敏捷开发质量非常重要的保障。对于J2EE系统,数据持久层和业务逻辑层的自动化单元测试是非常有必要的,对于展示层,可能需要相关的Mock技术,并且本身是可以通过人工测试来保障的,可以划为较为次要的地位。

拿一个大家熟知的Jpetstore的例子来分析:

纵向,系统采用的是IBATIS/Spring/Spring MVC架构;从横向,系统可以进一步细分为账户管理,产品管理,订单管理三个业务子系统。早期的版本没有相关的测试代码,加入相关的测试代码,其实是个熟悉掌握的最好途径。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics