zoukankan      html  css  js  c++  java
  • 关于《软件工程化》的“化”

    英文”Software Egineering“的后一个词,本身就是一个动名词,在中文里,我们翻译为名词”工程“,屏蔽了其”动词“属性。19698年NATO召开SE会议的目的是解决软件开发存在的经费、工期、质量(功能和非功能)等不可预测,无法计划,大量项目失败的危机。提出来向传统工程,例如,机械、建筑、制造工程等学习,让软件生产过程也能看见,摸得着。把”一抹黑“的、”变魔术“的软件开发过程,变成为:有序的、有计划的、可见的、可预测的(质量、工期、成本),进一步,可以向前追溯,查出责任,甚至要求负法律责任的工程过程。

    研究SE的目的是提高软件生产力。而软件生产力源于: 劳动的人、所使用的工具和设备、工艺方法、以及把前面三个组织起来的生产过程。

    对于传统工程,劳动过程,无论是福特公司的流水线、还是建筑工程过程,其劳动过程可以事先规定下来,进行重复劳动。但是,人们认为软件生产是不行的,因为每个项目的需求都不一样、工期、质量和经费也不同,你如何重复劳动?

    Humphery 提出了软件劳动的程序问题,最终演变为CMM/CMMI模型,他本人获得了美国总统颁发的大奖。他认为一个软件组织要从无序的劳动过程,提升为可重复的(Repeatable),然后是标准化或能够统一定义生产过程,再到可预测的量化管理,最终,能持续地对软件劳动过程进行优化。这个理论解决了不相同软件需求条件下的,软件劳动过程的工程有序性。 小到一个软件企业,大到一个国家或行业组织,要不断改进其组织管理能力,就可以提高组织的软件生产力。

    用“工程化”的目的是为了表达软件劳动过程的可变性,以及需要不断改进的过程。同时,软件劳动的工具与环境、劳动的人、工艺与方法也是需要不断地被改进,这些也是一个“工程化”改进过程。

    对于“工程化”的另一个解释是德国人于1994年提出的“Enginering of Software Development”,即,软件开发的工程化,把Engineering放到前面,强调其作为一个动名词的动的侧面。

    在中国,1992年,梁思礼先生(原航天工业部总工程师)在中国载人航天工程启动时,提“软件工程化”,其目的是要求软件工程技术人员向其他传统工程人员学习,把软件的研发、测试、发布和使用,搞成像火箭制造工程一样的,可以看得见的、有据可查的(可向前追溯的)、能够预测出软件故障(错误率)的、经费和工期可控的劳动过程,彻底消灭软件研制中的“自我设计、自我编程、自我测试,一包到底(三自一包)”的黑箱现象,通过工程质量的提高,解决软件质量。他说道:如果我们一下子做不到,那就当小学生,把美国的NASA、波音、SEI当做大学生,我们总归会学会的。这样,我们的软件生产能力才可以提高上去,质量和可靠性才是可预测的。

    这个指导意见是成功的,在何新贵为组长的软件工程专家组的带领下,航天领域的软件工程管理者和技术人员一起,保证了载人航天工程中软件的质量。中国国家科技最高奖获得者获得者王永志对此给予了高度的评价,认为:梁先生提倡的软件工程化发挥了很大的作用。

    《软件工程化》一书的英文,开始时时“Engineering of Software”,但编辑部认为作为一本教材还是保持“Software Engineering”为好。

    北京邮电大学的一位副校长,直接提出改版时,应该改为:Engineering of Software,以强调软件工程是一个不断进步和改进的过程。

  • 相关阅读:
    leetcode 33. Search in Rotated Sorted Array
    leetcode 32. Longest Valid Parentheses
    leetcode 28. Implement strStr()
    leetcode 27. Remove Element
    leetcode 26. Remove Duplicates from Sorted Array
    leetcode 24. Swap Nodes in Pairs
    leetcode 22. Generate Parentheses
    树莓派的频率管理和热控制
    sql执行insert插入一条记录同时获取刚插入的id
    全程直播个人博客重构过程,采用springboot+dubbo+jpa技术栈。
  • 原文地址:https://www.cnblogs.com/wang-SE/p/4936227.html
Copyright © 2011-2022 走看看