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,以强调软件工程是一个不断进步和改进的过程。

  • 相关阅读:
    JAVA7/8中的HashMap和ConrrentMap
    Redis
    SpringBoot
    JAVA反射优化
    spring多模块项目手动整合
    spring事物与传播行为
    [pixhawk笔记]7-MAVLink添加自定义消息
    [pixhawk笔记]6-uORB流程及关键函数解析
    [pixhawk笔记]5-uORB消息传递
    [pixhawk笔记]4-如何写一个简单的应用程序
  • 原文地址:https://www.cnblogs.com/wang-SE/p/4936227.html
Copyright © 2011-2022 走看看