`
hanxuebo
  • 浏览: 17611 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

类国企的软件开发过程和工具集

阅读更多
在国企和类国企的软件开发过程中,如何把控质量是个让人比较头大的事情,因为有太多under table的东西需要顾及。敏捷的开发过程在类国企是难于实施的,这是外话。

先说结论吧,本人在开发过程中使用ICONIX

ICONIX过程是usecase driven的,但比RUP更轻巧。和敏捷方法相比,提供了充分的需求和设计文档。同时避免了过度分析。ICONIX过程只使用有四种UML图(usecase,class,sequence,robustness analysis)。
robustness analysis是ICONUX和其它过程的主要区别,它填补了分析和设计之间的GAP,在domain model的上下文编写,最大限度的消除了usecase的歧义,ICONIX使得usecase更容易设计、测试和评估。下图是ICONIX的概念图


为什么类国企系统开发适合使用ICONIX过程?这是因为
1、系统难于做到很好的迭代模型,难于以拥抱变化的态度去开发,商务上更注重SOW,变更就是CR;
2、业务人员和技术人员理解歧义很大,这个不是简单有个BA或客户代表什么的就能解决的,使用ICONIX的好处就是ICONIX是基于核心逻辑分析设计的一种建模过程;
3、ICONIX过程不用裁剪就可使用,避免掉企业过程工程师缺乏和裁剪过程的麻烦(如RUP)。
4、V模型的测试模型,更利于对测试的把控。

当然软件过程的使用还有很多相关的内容,比如CMM/CMMI的一些理念和过程要结合起来。


有了软件过程并不能保证按照时间和质量完成系统的开发,这个需要一些自动化的集成工具集来帮助解决,这部分参考了一些敏捷的方法,主要的工具集有(基于JAVA开发)
Issue Tracking和项目管理:redmine
版本控制:Subversion
持续集成:Hudson
单元测试:testNG
测试覆盖率:cobertura
代码检查:findBugs,pmd,checkstyle,cpd
集成测试:selenium
压力测试:jmeter

以下分别解释:
redmine基于ROR开发,提供了足够的项目Issue Tracking和管理功能,Subversion等的整合功能,开源里最好用。如果使用商业的Jira也很好。trac太难配了,mantis只是个bug tracking的工具。

Hudson是持续集成工具,原来我用CC,不过还是Hudson好使。
hudson会在每天生成一个daily build版本;10分钟compile以下源码,将错误发给相关开发者;每日做一次report,包括unit test,findbugs/pmd/checkstyle/cpd/cobertura的集成报告(使用jcreport集成https://github.com/jCoderZ/fawkez/wiki/JcReport),做一次selenium测试等等。也可手动/自动做部署。

Subversion是集中式VCS,本人对git十分感兴趣,毕竟是linus的大作。但git的理念是开放,没有权限控制,并不适合企业应用开发。

testNG,junit也OK,只是我会关注关联性的单元测试,而junit的理念是以隔离为主。另外单元测试可能是程序员比较反感的,但是写不写单元测试和单元测试的质量是我衡量一个开发商能力的重要指标,不写单元测试系统变更影响的BUG可能会大量下放到QA的测试,集成测试在这方面能力还是不足。

cobertura,java单元测试覆盖率的框架,和testNG集成很好。同样功能的还有emma,cobertura适合完整的报告,如果是eclipse使用,eclemma不错。使用测试覆盖率的问题是不能让unit test来欺骗它,另外我追求90%的覆盖率,实际上,能到70%就很不错了。

findBugs,pmd,checkstyle,cpd:
fingbugs基于bug pattern,检查javabytecode,如NullPointer
pmd检查源文件,如未使用变量
checkstyle主要是编码规范,如javadoc的规范等
cpd主要是copy paste

selenium:如果商业的可以用qtp
selenium可以录制web的脚本,现在对js的支持也很强大了。自动化集成测试只是个附加手段,不能有太高的期望值。

jmeter做部分压力测试的功能,比如数据库,web应用等,由于系统的复杂性,在一些场景,会自己实现压力测试的程序。jmeter一般不集成到hudson,因为它的行为可能引起hudson系统的不稳定。


结束语:虽然按照这种方式工作能有效提升软件开发的质量,对于开发成本的提升也不大,但真正能做到这样的项目少之又少,有时真是一种无奈。
  • 大小: 35.8 KB
分享到:
评论

相关推荐

    软件工程师面试常见问题

    - **软件复用**:重复利用现有软件组件以减少开发成本和时间。 - **复用范围**:不仅仅是代码级别的复用,还包括需求、设计、架构等多个层面。 - **复用构件**:可以被重复使用的软件组件。 #### 六、软件生存周期 ...

    2021年义乌地区纺织设计总监岗位薪酬水平报告-最新数据.pdf

    5. 企业性质差异:报告中提到的“Foreign Owned Enterprises(外商独资企业)、Joint Venture(合资企业)、Local Private Enterprises(本地民营企业)、State Owned Enterprises(国有企业)”反映了不同性质的企业在薪酬...

    企业人力资源管理管理信息化的道与法.docx

    宏景软件通过服务众多国有企业和民营企业,积累了丰富的eHR系统规划与实施经验,以下分享一些关键点,为企业的人力资源信息化建设提供指导。 1. **整体规划** - 人力资源信息化的成功始于整体规划,它定义了项目的...

    2021年薪酬报告系列之常州地区测试部门岗位薪酬水平报告.pdf .pdf

    从IT行业的角度来看,测试岗位属于软件开发流程中的重要一环,主要负责对软件产品进行功能验证、性能测试、安全测试等,以确保产品的质量和可靠性。该岗位对测试人员的技能要求较高,不仅需要具备良好的逻辑思维能力...

    2021年薪酬报告系列之鄂州地区外贸进出口门岗位薪酬水平报告.pdf .pdf

    数据分析时需要运用统计软件和编程工具来处理大量的数据集,运用各种统计方法和分析模型来确保结果的准确性和可靠性。 对于IT专业人员而言,这份报告也是一份宝贵的资料。因为他们需要了解行业薪酬水平,以便在设计...

    设计企业信息化解决方案参照.pdf

    设计院企业可根据业务性质分为工程公司、国企背景的综合企业、专业设计所等不同类型,它们各自有不同的业务特点和管理需求。 设计企业信息化解决方案的核心是建立一个综合的管理系统,覆盖经营管理、设计管理及办公...

    数据库课程设计:人事管理系统

    总的来说,企业人事管理系统是管理信息系统的一个具体实例,它结合了企业管理的需求和计算机技术的优势,旨在优化人力资源管理流程,提高工作效率,减少人为错误,为企业提供决策支持。通过数据库课程设计,学生可以...

    2021年威海地区多媒体开发工程师岗位薪酬水平报告-最新数据.pdf

    这些工程师通常会使用各种软件工具来设计、制作和优化视频、音频、动画、图形以及其他多媒体元素,以满足互联网、游戏、电影、电视和广告等行业的需求。多媒体开发工程师需要掌握的技能包括但不限于:图像处理、视频...

    2021年中山地区税务经理岗位薪酬水平报告-最新数据.pdf

    报告中区分了不同类型的公司:外商独资企业、合资企业、本地私营企业和国有企业。每种类型的企业由于管理模式、资金实力、行业地位等因素的不同,其薪酬水平也有所不同。例如,在报告中可以观察到外商独资企业的薪酬...

    2021年薪酬报告系列之西宁地区银行门岗位薪酬水平报告.pdf .pdf

    在这个过程中,IT专业人员可能会使用如Excel、SQL、SPSS或R语言等工具和软件。这些技能对于在数据分析、商业智能以及人力资源管理等领域的IT专业人士来说至关重要。 5. 数据可视化在薪酬报告中的应用 报告中可能会...

Global site tag (gtag.js) - Google Analytics