简单之美-软件开发实践者的思考 02
敏捷开发最注重的是人,或者说个体。目标是提高个体的主动性,提高产出效率。敏捷开发要求团队一起工作,甚至还有客户。结对编程。迭代交付,三周为一个周期,每个周期都发布可用地、经过测试的代码。2到5个周期后进行一次发布。敏捷开发积极拥抱变化,主要依靠代码重构来配合变化。
敏捷开发的优点在于发布时间短和响应需求变化,敏捷开发的缺点是可操作性差。实践者们常常走入各种各样的误区。根本原因还是人,人的主动性还有在软件开发中的行为受各种各样因素的影响。
在需求分析阶段准备两份文档。一份使用客户的术语表达客户的故事,另一份是使用软件术语表达软件实现的故事。需求分析人员是客户和项目组之间的桥梁,是客户和软件开发人员之间的桥梁,
十分类似于科手术过程,软件开发团队需要一个主刀医师,即软件架构师。软件架构师保证了整个软件的思想和架构是一个主体。而不是零散的,拼凑的。这有利于开发和维护。软件架构师在一个团队里一般只有一个,或者一个架构师团队由其中一个人作为领导。这样保证了整个软件系统的一致性。软件架构师工作的主要依据是经验。在软件开发过程中,人是最重要的因素,而责任、权利和利益是保证这个因素发挥作用的关键。负责文化是人类社会活动中必须具备的一种文化。团队往往成为不负责任的推辞。建立负责制度的目的不是为了惩罚,而是通过利益损失的形式,表明一个事实:没有金刚钻,别揽瓷器活。也是质量保证的一个重要推动力。关于第3章 关于需求的思考
需求就像一束光的源点,失之毫厘,谬以千里。没有人不重视需求问题,可是,有多少人能讲清楚解决需求问题的思路呢?扪心自问,需求跟踪矩阵和需求变更委员会提升了我们多少信心呢?
本章尝试给出解决需求问题的方法。这个方法的逻辑很简单,首先,我们需要准确表达需求,术语和讲故事是两种好的辅助手段;其次,我们要和客户一起,推动需求的变化,需求变化不是成本的代名词,被动接受需求变化才是吞噬成本的罪魁祸首。