在没有提出软件工艺思想前 , 软件工程学认为工程学是一成不变的 , 是可以解决所有软件研发问题,工程学的一套方法并不会太多的考虑客户的需求 , 软件的领域 , 人员的技能 , 项目目标要求等诸多内容 。而为了保证工程学思想的严谨,工程学将所有无法把握和预测的内容都作为了工程学基本的入口假设 。它们假设需求一开始就清楚的,需求是不会变化的,人员的技能是满足的 , 客户的需求是可以无偏差传递的等等 。
为了应对这些现实的问题,我们引入了敏捷思想和敏捷软件开发过程 。对于敏捷方法我们一直再看 , 其核心思想究竟有哪些 。
敏捷思想第一点是肯定了人在软件开发中的核心价值,如果不是这样那么软件开发就是传统工厂,软件生命周期就是流水线,软件过程也应该是全自动化的过程 。但是事实并不是如此,对于软件开发,如果一群新手在一起,即使有再好的工程学思想也无法开发出高质量的软件 。
敏捷思想第二点是证实了软件研发过程中的不确定性 , 认可了需求是可能存在变化的,认可了我们开始并不能完全地预测和认知一切 。变化是绝对的,那么我们剩下的就是适应变化 。为了适应变化我们进行快速原型,短周期迭代,通过适应变化我们将浪费降低到最少的精益思想 。
敏捷思想的第三点是我们在管理方法上的进一步改进 , 我们认为软件项目管理其核心是对人的管理,软件项目管理应该以人为核心展开,因此首先强调自我的管理,强调在个人高度自治下的自适应团队 。过程的敏捷来源于使用过程的人的敏捷,而非过程本身 。同时我们借鉴其他管理学经验,认为管理应该是可视化的,而不是一个黑盒 , 在此我们将任务可视化 , 进度可视化 , 结果可视化 。而看板可能仅仅是我们借鉴的一种思路 。
软件开发应该是工程学和工艺学的融合
文章插图
工程学关注科学,技术和方法工具;而工艺学根据关注人,学习和自适应 。工程学关注最终高精度的产品,工艺学关注外部的环境,人,需求对工程的影响 。工程学希望系统化地解决一切问题,工艺学希望充分发挥人的主动能动性,采用不同的方法灵活应对各种问题 。工程学培养的是机器和螺丝钉,而工艺学培养的是让产品发挥生命力的匠人和大师 。工程学循规蹈矩和严谨科学,而工艺学则以人为本体现软件艺术之美 。
软件工程不应该抱着将软件开发工厂化和机器化的思想;而软件工艺也不能完全抛弃工程,将软件单纯地看做一个艺术品 。工程和工艺思想的结合,过程和人的结合是不二选择,而不能从一个极端走到另外一个极端 。
软件工艺部分思想整理
文章插图
软件工艺是我比较钟爱的一本书,虽与传统的软件工程思路有出入,但里面有很多思想&思路可以借鉴 。其实软件工艺和软件工程并不矛盾和敌对 。项目的特点不同,周期不同,我们在做项目的时候确实应该采用不同的策略和方法论 。其目的只有一个就是保证项目成功和按期交付 。
软件项目中人始终是最重要的因素,这是软件项目管理和其它工程项目管理的一个重要区别 。忽略了人的因素很难管理好项目 。我们离CMMI5级还有距离,离软件工厂还有距离,如果真正能够实现软件工厂 , 说明某阶段工作可以自动化 , 这时候可以不考虑人的因素 。否则必须考虑到人对项目的重要影响 。
相关经验推荐
- 固体胶和液体胶有什么区别
- 新生儿呕吐和吐奶的区别
- 如何吃蚕蛹才不会中毒?蚕蛹和蝉蛹营养成分相同吗?
- 龟苓膏和烧仙草的区别有哪些?龟苓膏和烧仙草哪个好?
- 怎么查内网和外网的ip
- 斯宾塞:想让COD像《我的世界》一样登陆NS和手机
- 太极泥和小气泡哪个先用
- 洒金木的养殖方法和注意事项 洒金木的养殖方法
- 阳台种南瓜的方法和技术 种南瓜的方法和技术
- 南洋金珠和大溪地黑珍珠哪个好