软件过程管理是软件开发的重要部分。它关注软件如何被制作出来。软件过程管理研究如何组织团队。它研究如何安排工作步骤。它研究如何保证软件质量。很多人写书讨论这个问题。这些书提供了很多方法和经验。
软件过程管理最早的想法很简单。人们需要一种有序的方式开发软件。早期软件项目经常出现问题。项目可能花费太多时间。项目可能超过预算。软件可能有很多错误。人们开始寻找更好的方法。瓦茨·汉弗莱写了《软件过程管理》这本书。他提出过程改进的概念。他认为好的过程才能产生好软件。他曾在IBM工作。后来他加入软件工程研究所。他创造了软件能力成熟度模型。这个模型影响很大。
软件能力成熟度模型帮助很多组织。它分为五个等级。初始级是混乱的。可重复级有基本管理。已定义级过程被标准化。已管理级过程被测量。优化级持续改进。这个模型提供清晰的路径。组织知道如何进步。马克·保尔克写了《CMMI实践解析》。他详细解释如何实施。他给出具体例子。他解答常见问题。这本书很实用。
另一个重要方法是敏捷开发。敏捷强调灵活和快速响应。它不喜欢沉重的文档。它喜欢面对面交流。肯·施瓦伯写了《敏捷项目管理》。他提出Scrum框架。Scrum有固定角色。产品负责人决定做什么。Scrum主管帮助团队。开发团队完成工作。工作被分成短周期。每个周期叫冲刺。每天有短会议。团队同步进度。这种方法很流行。
极限编程是另一种敏捷方法。肯特·贝克创造极限编程。他写了《极限编程解析》。极限编程关注工程实践。它提倡结对编程。两个人共用一台电脑。它提倡测试驱动开发。先写测试再写代码。它提倡持续集成。经常合并代码。这些实践提高代码质量。
软件过程管理需要平衡纪律和灵活。有时候需要严格流程。有时候需要快速适应。巴里·玻姆提出螺旋模型。他写了《软件工程经济学》。螺旋模型结合设计和原型。它强调风险分析。项目每轮循环都评估风险。这种方法适合大型项目。
团队合作很重要。人比流程更重要。艾利·高德拉特写了《目标》。这本书讲约束理论。它虽然不专门讲软件。但它的思想被广泛应用。它帮助识别瓶颈。它帮助优化整体流程。很多软件团队学习它的思想。
项目管理是过程管理的一部分。项目管理关注时间、成本、质量。项目管理协会发布《项目管理知识体系指南》。这本书是项目管理标准。它定义十个知识领域。它包括范围管理、时间管理、成本管理。软件项目可以参考它。但它不是专门为软件设计。
专门针对软件的项目管理书很多。史蒂夫·麦康奈尔写了《快速软件开发》。他收集很多项目数据。他分析什么做法有效。他给出实际建议。他讨论估算和计划。他讨论控制和风险管理。这本书基于大量实践。
质量是核心目标。软件过程必须保证质量。菲利普·克罗斯比写了《质量免费》。他强调预防错误。他认为质量不是检测出来的。质量是建造出来的。他的思想影响软件领域。缺陷预防很重要。评审和测试是关键活动。
同行评审是有效方法。卡尔·威格斯写了《同行评审程序》。他详细描述评审过程。评审发现很多缺陷。评审提高软件质量。评审也传播知识。团队通过评审学习。
过程改进需要测量。你不能改进你不测量的东西。汤姆·德马科写了《人件》。他强调人的因素。他警告过度测量的问题。测量应该帮助团队。测量不应该成为负担。平衡很关键。
个体软件过程关注个人能力。瓦茨·汉弗莱也写了《个体软件过程》。他帮助程序员管理自己。程序员学习估算任务。程序员记录时间。程序员分析错误。个人改进汇聚成团队改进。
团队软件过程扩展个体实践。瓦茨·汉弗莱接着写了《团队软件过程》。他指导团队如何协作。团队定义共同目标。团队协调工作。团队跟踪进度。团队软件过程提供具体脚本和表单。
现代软件开发很复杂。过程管理需要适应变化。吉姆·海史密斯写了《敏捷软件开发生态系统》。他讨论敏捷项目管理。他结合传统和敏捷。他提供平衡观点。
精益思想来自制造业。玛丽·帕彭迪克写了《精益软件开发》。她应用精益原则到软件。消除浪费是核心。只做客户需要的。尽快交付价值。持续改进。尊重人。这些原则很有用。
看板是可视化工具。大卫·安德森写了《看板方法》。看板板显示工作流。任务用卡片表示。卡片在列间移动。限制在制品数量。流程变得顺畅。瓶颈很容易看到。团队自己调整。
过程管理离不开文化。组织文化支持好过程。杰拉尔德·温伯格写了很多书。他写了《成为技术领导者》。他关注人和关系。好的过程需要好的领导。好的过程需要信任。好的过程需要沟通。
安全关键系统需要严格过程。南希·莱文森写了《高完整性软件》。她讨论航空、医疗等领域。这些软件不能失败。过程必须极其可靠。验证和确认很重要。标准如DO-178C被制定。
开源软件开发有独特过程。埃里克·雷蒙写了《大教堂与集市》。开源像集市。很多人贡献。过程是开放透明的。协调通过互联网。质量通过同行审查。这提供另一种模型。
持续交付是当前趋势。杰斯·亨布尔写了《持续交付》。自动化是关键。自动化构建。自动化测试。自动化部署。任何变更可以安全发布。这减少风险。这加快反馈。
DevOps融合开发和运维。金·亨伯写了《凤凰项目》。这本小说讲DevOps故事。它展示如何打破部门墙。开发和运维合作。自动化基础设施。监控生产环境。快速解决问题。
过程管理工具很多。工具支持流程。工具跟踪需求。工具管理代码。工具运行测试。工具部署软件。工具生成报告。但工具只是辅助。根本还是人和过程。
软件过程管理领域不断更新。新方法不断出现。旧方法不断调整。没有唯一正确方法。不同项目需要不同过程。小团队适合敏捷。大系统需要严格。关键系统需要认证。
学习过程管理要多读书。也要多实践。书上理论需要验证。团队要找到适合自己方式。过程应该帮助人。过程不应该阻碍人。好过程让工作更顺畅。好过程让软件更好。好过程让客户更满意。
这些书是宝贵资源。它们记录前人经验。它们提供框架和模型。它们启发思考。它们帮助避免错误。它们指导改进方向。软件过程管理很重要。它值得认真学习。它值得持续实践。