﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我不是张嘎－小兵-随笔分类-软件工程</title><link>http://www.blogjava.net/grantbb/category/21744.html</link><description>期待交流</description><language>zh-cn</language><lastBuildDate>Wed, 18 Apr 2007 12:17:05 GMT</lastBuildDate><pubDate>Wed, 18 Apr 2007 12:17:05 GMT</pubDate><ttl>60</ttl><item><title>如何保证一个软件的质量</title><link>http://www.blogjava.net/grantbb/archive/2007/04/18/111729.html</link><dc:creator>我不是张嘎－小兵</dc:creator><author>我不是张嘎－小兵</author><pubDate>Wed, 18 Apr 2007 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/grantbb/archive/2007/04/18/111729.html</guid><wfw:comment>http://www.blogjava.net/grantbb/comments/111729.html</wfw:comment><comments>http://www.blogjava.net/grantbb/archive/2007/04/18/111729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/grantbb/comments/commentRss/111729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/grantbb/services/trackbacks/111729.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">软件过程方面<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>我们team采用的软件开发过程是借鉴了UP的迭代开发过程。坚持迭代的渐进式开发，每次迭代都是小步进行的，一般都是保持2周一次迭代。在开发过程中重视需求，要写清楚UseCase描述，而不是仅仅画出UseCase图。测试也是我们非常重视的，包括了单元测试和集成测试。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">软件开发方法<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>我们采用的是OO的设计和实现方法。通过一些开源框架的使用，提高效率和代码的质量。在设计的时候会用一些经典的设计模式来优化设计，为以后更好地满足需求变动做好准备。单元测试是我们非常重视的，要求必须写单元测试，而且要能够覆盖尽可能多的分支和边界。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>我们团队还会采用一些XP的开发实践例如：TDD、重构、CodeReview、结对编程、持续构建，通过这些实践却是能够极大提高代码的质量，进一步提高软件产品的质量。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">软件开发工具<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>我们也非常重视工具的使用，使用工具来帮助我们更好的提高质量，首先一定要有版本控制系统，可以使用CVS或者SVN。通过checkstyle这样的工具可以帮助我们检查代码是否规范。通过findbugs这样的工具帮助我们发现一些bug。使用一些自动化的测试工具，提高测试的效率和回归测试的质量。使用测试覆盖率工具检查单元测试的覆盖率。我还会使用一些性能测试工具测试系统的性能，发现一些性能问题。<o:p></o:p></span></p><img src ="http://www.blogjava.net/grantbb/aggbug/111729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/grantbb/" target="_blank">我不是张嘎－小兵</a> 2007-04-18 20:04 <a href="http://www.blogjava.net/grantbb/archive/2007/04/18/111729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从项目管理的九大知识领域来说明如何完成项目</title><link>http://www.blogjava.net/grantbb/archive/2007/04/18/111728.html</link><dc:creator>我不是张嘎－小兵</dc:creator><author>我不是张嘎－小兵</author><pubDate>Wed, 18 Apr 2007 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/grantbb/archive/2007/04/18/111728.html</guid><wfw:comment>http://www.blogjava.net/grantbb/comments/111728.html</wfw:comment><comments>http://www.blogjava.net/grantbb/archive/2007/04/18/111728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/grantbb/comments/commentRss/111728.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/grantbb/services/trackbacks/111728.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">我主要结合项目管理的九大知识领域来说明，需要说明的是在我接触的项目中，九个领域的内容有一些没有接触过的我就略过。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">范围管理：<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>首先会有产品经理提出我们要开发一个什么样的软件，有那些功能，基本上就是一些FeatureList，然后给出vision
and scope文档。软件开发的项目经理会根据这份文档，通过沟通，来写出SRS。其中主要包括了UseCase和非功能性需求以及一些约束条件。有了这些内容后，会开一个需求确认会，来确认已经明确的需求，会议上可以对不明确的需求进行讨论和完善。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">时间管理：<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>项目经理在接到软件项目开发任务后，就要制定出一个大致的项目计划，然后有了软件的需求文档之后，可以进一步细化项目的计划。在做项目计划的时候同时会牵扯到任务的分工。在项目进行的过程中严格按照项目计划进行。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">采购管理<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>项目的前期，项目经理需要明确软件安装需要多少服务器，服务器的配置是什么样的。什么时候必须到货，预算的经费是多少等。如果项目的人手不够，同时要考虑进行软件外包。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">人力资源管理<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>主要是提高团队的士气和凝聚力，让每一位团队成员都有清晰一致的目标，从生活等各个方面关心开发人员，帮助他们解决一些实实在在的问题。如果有软件外包，还要统一得管理好外包的软件开发人员。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">沟通管理<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>经常开项目小组会议，保持信息畅通，通过wiki等工具保持信息共享。每天都有晨会，周报发给小组的所有成员。通过聚餐、喝茶等方式增进交流。针对不同的员工可能需要采用不同的方式，例如：有的人喜欢面对面的沟通，有的喜欢email沟通，有得喜欢msn等等。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">风险管理<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>我认为比较重要的是抓住开发过程的几个环节，例如：需求分析、界面的设计、接口的设计、数据库的设计等。每天项目经理都要确认项目的进度是否正常，检查项目的质量，尽可能早的发现一些问题。经常得跟产品经理交流，确保开发的软件产品符合需求。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">成本管理<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>对于我接触的项目，牵扯到成本管理的主要就是开发人员的成本，分配好任务，把握住进度，提高开发团队的效率就能够为公司节省开支，从而达到控制成本的目的。<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;">质量管理<o:p></o:p></span></p>
<span style="font-size: 9pt; font-family: 宋体;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>我认为质量管理应该贯穿于整个的软件开发过程中。比较典型的有，首先就是要保证SRS的质量，只有需求的质量控制住了，整个项目才有保障。软件的编码要规范，有详细清楚的注释，要求写单元测试，定期的进行代码review会议，要有集成测试和系统测试。对于我们的互联网产品，由于产品环境比较复杂，所以一定要有相应的系统测试，也可以称为线上测试。</span><img src ="http://www.blogjava.net/grantbb/aggbug/111728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/grantbb/" target="_blank">我不是张嘎－小兵</a> 2007-04-18 20:03 <a href="http://www.blogjava.net/grantbb/archive/2007/04/18/111728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>