几个概念
1 项目与产品
项目只是一次性验收,不投入实际的使用,不必过多考虑质量问题
产品要投入市场,质量是其生命,一切必须以质量为首要因素
开发项目跟开发产品是不同的。开发项目,就是要在最少的资源之下,提供给客户一个可以接受的烂货。可以花100万就让客户愿意结案,绝对不要花101万,让客户拥有一个比较好用的系统。越好用的东西越难做,出槌的机率也越高,为什么要这样做呢?
一、 软件工程过程
1 结合v模型和rup,50多天一轮开发,每一轮都有重构,
2 定期做code review和文档检查,以便防范之未然
3 用UML来实现文档,文档内容包括程序设计思路、程序构架要点说明、代码流程;做到所有的事情都有文档记录
4 代码规范,包括命名规范(文件名、变量名、类名、函数名)等
5 坚持做到每一次少提交一点代码。
5.1 每日建造(daily build),持续集成(Continuous Integration)
每修改3个bug,就会出现一下新bug,而每多100行新代码就会多付出1个小时的寻找bug的时间。所以即使是winNT这样的千万行代码的项目也坚持每日建造,不是别的,而是被层出不穷的bug搞怕了。
5.2 build、release、standard
build:每一次建造会得到一般版本,这样的版本我们叫build,它只是通过了白盒测试的版本。
Release:最后一个完全通过的build版,
Standard:已经符合市场的要求,达到成品标准的时候,你就可以认定它为一个standard,这就是一个真正的产品版。
实际情况往往是多版本同时开发。比如当你有了standard1·0之后,你要维护它,修补bug,于是会不断的推出1·1-1·2之类的版本。而同时你还在开发新的更多功能的2·0版本。
6 重构
7 公司可根据自己的实际需要,开发用于辅助软件项目管理的软件
软件工程师用脚本语言写小工具,优化工作流程,提高工作效率,流行的脚本语言如Perl、BournShell/CShell、Python、TCL/TK
二、 需求管理活动
作为产品,每次升级,所增加的功能是严格定义与管理的,不能用户有要求就加。
若是用户确有合理要求,但比较独特,不适合加入产品中,就要在产品中预留适当的接口,然后在外挂模块中实现。
三、 分析设计活动
1 用UML来实现文档,文档内容包括程序设计思路、程序构架要点说明、代码流程;
四、 编码实施活动
1 版本管理:VSS、CVS
1.1 版本管理工具就是告诉你当前的最新版本是什么,以前某一个时间的版本是什么……
记录每次集成情况,主要包括测试的版本,代码的版本,建造的时间,产生bug的记录。这些都是可以用工具自动执行的
1.2 一种手工管理版本的方法
每一个源文件更新时规定一定要写更新或修正说明
每一个版本要做一个Label,在Label说明中写上至上一个版本发布以来的新增功能,修正等信息.
在应用中碰到问题无法确定就查看历史版本的更新信息
1.3 借鉴linux的开发进程吧,全世界的程序员都在对他进行维护、管理、升级
2代码规范,包括命名规范(文件名、变量名、类名、函数名)等
五、 测试活动
1 使用自动测试工具,LOADRUNNER,WINRUNNER.等
2 用例复用
推荐图书:
《CVS和Nightly Build技术》,清华大学出版社,杨锦方等编著
Refactoring: Improving the Design of Existing Code Addison Wesley