构建的管理基本可以分为代码的管理、配置的管理、进度的管理、质量的管理和人的管理。
代码的管理核心就是鼓励写出好的代码,不管用什么样的方式。可以制定代码标准,用版本控制的工具,可以用各种技巧比如结对编程,审阅,张贴好的代码示例等等。
配置的管理就是对变化的管理。各种各样的变化,需求的,设计的,代码的等等,怎么让它们的影响最小,保证项目可持续完工。方法很多,详细的可参考下面的checklist。只强调两点:一是要分批分阶段处理更改请求,这样可以控制选择最可实现的去实现;二是要做好备份,电脑,硬盘都是有可能坏的,不怕一万,只怕万一。
Checklist: Configuration Management
General
Is your software-configuration-management plan designed to help programmers and minimize overhead?
Does your SCM approach avoid overcontrolling the project?
Do you group change requests, either through informal means such as a list of pending changes or through a more systematic approach such as a change-control board?
Do you systematically estimate the effect of each proposed change?
Do you view major changes as a warning that requirements development isn't yet complete?
Tools
Do you use version-control software to facilitate configuration management?
Do you use version-control software to reduce coordination problems of working in teams?
Backup
Do you back up all project materials periodically?
Are project backups transferred to off-site storage periodically?
Are all materials backed up, including source code, documents, graphics, and important notes?
Have you tested the backup-recovery procedure?
进度的管理关键在于如何准确的估算时间。影响时间的因素很多,可以借助于工具或者专家,也可以靠自己的经验。一般来说,估算的越细节,准确率越高;越接近于完成,估计的准确率越高。所以可以周期性的重估来提高最终的估算准确率。软件项目十有八九都会滞后,那么发现已经滞后了怎么办呢?基本上指望后面赶上是不太可能的,绝大多数情况是后面滞后越来越多。增加人手基本也不太好用,除非那个人很熟悉这个项目或者这个项目的一部分可以单独分出来。比较可行的一个解法是看看是不是有些特性是可以不要的,有些是要求不那么高的,减少一下工作量。
质量的管理最关键是要能测量。什么东西好不好都要有个标准,能测量才能比较,有比较才有提高。所以,定可测量的标准,然后测量,分析结果,想办法改进。
人的管理关键就是尊重,把人当人。程序员是人,老板也是人。人都有七情六欲,各种各样的需求,要提高效率这些都是要考虑的因素。作者在书中提到一组数据表明客观物理环境对效率有很大的影响,把环境从最差的25%提高到最好的25%可以使效率翻番。这里环境是指像私人工作面积的大小,工作场所是不是安静,干扰多不多等等。
代码的管理核心就是鼓励写出好的代码,不管用什么样的方式。可以制定代码标准,用版本控制的工具,可以用各种技巧比如结对编程,审阅,张贴好的代码示例等等。
配置的管理就是对变化的管理。各种各样的变化,需求的,设计的,代码的等等,怎么让它们的影响最小,保证项目可持续完工。方法很多,详细的可参考下面的checklist。只强调两点:一是要分批分阶段处理更改请求,这样可以控制选择最可实现的去实现;二是要做好备份,电脑,硬盘都是有可能坏的,不怕一万,只怕万一。
Checklist: Configuration Management
General
Is your software-configuration-management plan designed to help programmers and minimize overhead?
Does your SCM approach avoid overcontrolling the project?
Do you group change requests, either through informal means such as a list of pending changes or through a more systematic approach such as a change-control board?
Do you systematically estimate the effect of each proposed change?
Do you view major changes as a warning that requirements development isn't yet complete?
Tools
Do you use version-control software to facilitate configuration management?
Do you use version-control software to reduce coordination problems of working in teams?
Backup
Do you back up all project materials periodically?
Are project backups transferred to off-site storage periodically?
Are all materials backed up, including source code, documents, graphics, and important notes?
Have you tested the backup-recovery procedure?
进度的管理关键在于如何准确的估算时间。影响时间的因素很多,可以借助于工具或者专家,也可以靠自己的经验。一般来说,估算的越细节,准确率越高;越接近于完成,估计的准确率越高。所以可以周期性的重估来提高最终的估算准确率。软件项目十有八九都会滞后,那么发现已经滞后了怎么办呢?基本上指望后面赶上是不太可能的,绝大多数情况是后面滞后越来越多。增加人手基本也不太好用,除非那个人很熟悉这个项目或者这个项目的一部分可以单独分出来。比较可行的一个解法是看看是不是有些特性是可以不要的,有些是要求不那么高的,减少一下工作量。
质量的管理最关键是要能测量。什么东西好不好都要有个标准,能测量才能比较,有比较才有提高。所以,定可测量的标准,然后测量,分析结果,想办法改进。
人的管理关键就是尊重,把人当人。程序员是人,老板也是人。人都有七情六欲,各种各样的需求,要提高效率这些都是要考虑的因素。作者在书中提到一组数据表明客观物理环境对效率有很大的影响,把环境从最差的25%提高到最好的25%可以使效率翻番。这里环境是指像私人工作面积的大小,工作场所是不是安静,干扰多不多等等。