产品工程化的核心能力是什么( 二 )


软件工程环境是软件工程学科各方面研究发展的物化表现,具有以下特点:
(1)软件工程环境强调支持软件生产的全过程 。实践表明:软件工具仅支持生命周期中某些特定活动,工具箱将一些相互关联的工具组织到一起,使其相互通信 , 从而支持了生命周期中某些成组活动,自动化程序有所提高 。软件开发环境旨在通过环境信息库和消息通信机制实现工具的集成,从而为软件生命周期中某些过程的自动化提供了更有效的支持 。不同的过程模型导致不同类型的软件开发环境 。然而,软件过程领域的最新研究结果表明,软件过程概念已不仅局限在软件开发和软件维护,而是发展到包括系统集成和软件产品的制作与生产 。SEE旨在解决软件过程中各个过程和活动如何按照各条路径并行完成 。管理、支持、获取、供应等过程贯穿于整个生存周期 , 特别是管理活动和支持活动,从合作观点来看 , 对于软件生产具有更为重要的地位 。因此,促使人们在更高的层次上考虑如何运用“整体大于各部分之和”的系统工程 , 提高整个软件过程的整体计算机辅助支持程度 。
(2)软件工程环境强调大型软件的工业化生产 。软件发展已经形成了大规模的产品市场 。因此 , 软件产品的生产也必将走上工业化的道路 。所请的工业化是指能够形成规模经济的生产形式 。工程化注重软件生产过程中软件生产者具有一定的工程训练 , 遵循一定的工程准则 。工业化则更加强调软件生产过程中生产资料的作用,表现为把大量的生产者的技能和经验转移到生产工具之中,从而减少生产过程中的劳动比例、减少生产工具的增值比例 。SEE是为工业化生产提供一整套的支持设施 。
(3)软件工程环境以集成和剪裁作为主要技术路径,实现软件工业化生产的目标 。SEE具有多维性,表现在不仅要集成与软件开发技术相关的工具 , 还要集成与支持技术、管理技术相关的工具 , 并将它们有机地结合在一起 。
(4)标准化 。软件生产走向工业化需要建立相应的工业标准 。
据说波音飞机有数十万个零配件,有很多都是跨州际的组装、外协工作 , 想想在软件开发中,几十个功能、几百个功能,可能就已经让人焦头烂额、疲于应对了,这个差别不仅仅是反映的造飞机和做软件的区别 , 更直接的是工程管理技术成熟度的差别 。如果拿出做飞机的架势来做软件产品,又有什么软件做不好、做不出来呢 。如何协作、如何计划、如何控制进度、如何分解任务、如何规范化,达到流程化、可重复的,这些都是软件行业需要向传统的工程技术领域学习的:要工程化管理 。IBM的网站开发规范有数百页,一架飞机的各种文档有几十顿,把工作做细 , 把工作规范化、程序化,才能在有限时间做出尽量好的产品 。工程化和创新矛盾吗?原来自己也认为是的 。其实,只有工程化了,少了排脑袋,少了不切实际,从而不依赖经验,不依赖具体的某个人的能力,才能少浪费时间,少走弯路,少打无准备的仗,开发人员也才能有更多时间去创新 , 否则开发人员总是被拙劣的管理搞的狼狈不堪,心灰意冷:他们没有时间思考,没有时间学习,如何进步呢?对于一个产品的研发,整体上是一定需要工程化的,但对于其中的具体执行细节,这都是创新的空间,工程化的目的并不是封锁创新,应该是为了给创新创造更多的时间和机会 。规范、流程、工程化就是把经验技巧、常识、个人的知识固化、理论化、规范化,建立一个可重复创造优秀产品的最优开发环境 。