首页 > 代码库 > 构建之法学习(3)

构建之法学习(3)

第三章 软件工程师的成长之路

软件工程包括了什么呢?第1章提到:软件工程包括了开发、运营、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件的可靠性和可维护性。软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的。在团队的大流程中,是每一个具体的个人在做开发、测试、用户界面设计、管理、交流等工作。因此,个人在团队中也有独立的流程。把每个人的工作有序地组织起来,就是团队的流程。这里说的“有序”,并不是“无争论”。在大部分成功的软件团队模型中,各个角色(开发、测试、项目管理等)考虑问题的出发点是有区别的,不同意见的冲突在所难免,一个好的团队流程能把冲突的积极方面(各自尽力把自己的工作做好,说服别人)释放出来,而避免消极方面(因为冲突而产生的消极、抵触情绪等)。我们可以用足球来作一个比喻,足球队中有没有个人流程?当然有,职业足球队对于球员有很严格的要求,例如:体能、技术、意识、斗志具体技术有传接、盘带、射门、定位球、跑位,等等。对一些特定的角色(如守门员),还有独特的技术要求。足球队有没有流程?当然有:阵型、配合、临场应变足球队有不少“阵型”:442、433、451以及它们的各种变体。还有不少风格:南美、欧洲;技术、力量;小快灵、抢逼围、两翼齐飞、全攻全守,等等。然而,尽管有这么多理论,足球的每一次盘带、传球、跑动、射门、扑救,依然都是单个球员完成的。如果单个运动员的技术、体能不行 ,无论是什么阵型用处都不大,有些阵型还会起反作用,例如,让体力弱的球队去打全攻全守。足球队有没有交流?当然有,教练和球员之间、球员之间都有很频繁的交流,有战前的计划和训练,有事后的总结和分析,当然还有争论。软件团队和团队中的工程师也是这样。软件系统的绝大部分模块都是由个人开发或维护的。在软件工程的术语中,我们把这些单个的成员叫做Individ-ual Contributor(IC)。IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下。 

通过交流、实验、快速原型等方法,理解问题、需求或任务
提出多种解决办法并估计工作量
其中包括寻找以前的解决方案,因为很多工作是重复性的
与相关角色交流解决问题的提案,决定一个可行的方案
执行,把想法变成实际中能工作的代码,同时验证方案的可行性和其他特性(例如程序的效能等)
和团队的其他角色合作,在测试环境中测试实现方案,修复缺陷(Bug)。如果此方案有严重的问题,那么就考虑其他方案
在解决方案发布出去之后,对结果负责每个人的工作质量直接影响最终软件的质量。

 

技术分享

 

构建之法学习(3)