软件方面的术语很多,历史上主要是欧美各门各派各自探索发展,所用的术语就存在差异,虽然经过了大量的交流,达成了许多共识,但遗留的问题仍然不少,而对于华语区,再要加上两岸4地不同翻译的问题,存在混淆的地方就更多。 再把这些词语组合起来,那就更让人糊涂了。对于初学者,一上来可能就犯晕;对于有点经验的程序员聚在一起讨论时,有时会因为对同一词汇有不同理解而无法达成共识。所以搞清术语(俗称说法)是一个组织很有必要做的事。 当上水木软件工程版主后,劲头十足,看看整理水木软件工程版精华区,首先发现一级目录不太合理,不少内容交叉重复,也有些无处可放。自认为搞软工这么多年,可以重构一个更合理清晰的精华区目录。 动手之后,处理了一些,但发现一级目录就有不少难于处理的情况,初始低估了其复杂程度,快要搞不下去了。只能潜心下来研究分析下到底哪里有问题,于是有了本文。 软工版精华区一级目录设置的问题也就是软工一级分类的问题。对有关软件工程一级分类的术语进行了收集,发现涉及最多的单词有如下: 过程 方法 开发 工具 技术 软件 把上述单词组合以后,常见的词组有: 开发技术 开发方法 开发过程 过程方法 开发工具 过程开发 过程技术 过程工具 技术方法 软件技术 哈哈,列出了以上,够晕吧。才刚刚开始,后面还有更晕的。 过程 *“过程”的4个定义 过程 – 为了给定目的而执行的一系列步骤 (From IEEE) 过程 – 将人员、材料、能源、设备和规程,设计成以产生特定最终结果的工作活动的逻辑组织 (Gabriel A.Pall Quality Process Management. Englewood Cliffs, N.J. : Prentice-Hall, 1987.) 过程 – 用以实现一个模型中多个实践的一系列活动 (CMMI术语) 过程是为达到一定目标的活动的偏序集。那么软件工程下的过程是如何称呼的呢? 1,是不是软件工程过程(software engineering process)? 软件工程过程通常的理解是“软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。”,“软件工程过程是指将用户需求转化为软件所需要的一整套软件工程活动”。 2,是不是软件开发过程(software developing process; software development process; process of software development;)? a,软件开发过程是指实施于软件开发和维护中的阶段、方法、技术、实践及相关产物的集合。 b,软件开发过程是指在软件生命周期内,以系统、规范、可度量的方法对软件进行生产、运行和维护的工程过程.软件生命周期包含前期建模、需求分析、系统设计、编码实现、软件测试、软件实施、软件维护这些步骤 哇,这“软件工程过程”,“软件开发过程” ,无论那个,都与软件工程的范畴几乎等同。 *方法 方法是个常用词,方法论是关于认识世界和改造世界的方法的理论。研究某一具体学科,涉及某一具体领域的方法理论是具体科学方法论。 对于日常应用和理解中,常将方法论理解为是得到文档记录的、系统化的方法。 那么在软件工程领域用什么完整的说法呢? *,软件方法论 ,百度一下,找到相关网页约12,600篇, Google搜索 “软件方法论” 获得约 4,750 条结果) *,软件工程方法,Google搜索 “软件工程方法” 获得约 34,100 条结果 *,软件工程方法论,百度一下,找到相关网页约6,150篇,Google搜索 “软件工程方法论” 获得约 161,000 条结果) *,软件开发方法,Google搜索 “软件开发方法” 获得约 50,300 条结果 *,软件开发方法论,百度一下,找到相关网页约7,000篇,Google搜索 “软件开发方法论” 获得约 278,000 条结果) *开发 看如下词汇: 开发环境,测试环境 软件开发、软件维护和软件测试 开发团队、测试团队 等等,不再列举,可以看出“软件开发”中的开发在不同的语境下有两个明显不同的含义,1得出软件的全过程,2单指编程实现。 *软件开发技术 看看这个http://www.bookschina.com/1333782.htm,和 http://www2.ccw.com.cn/06/0621/b/0621b04_2.shtml 可以发现这是一个泛词,什么都算是,但又不具体指什么,几乎可以与软件工程等同。 但是如果软件开发技术和软件测试技术放在一起时,其范畴就马上缩小了。 *软件技术 软件技术从理论上应该有两种:软件开发技术和软件应用技术。 1.软件开发技术就是利用计算机特有语言进行软件开发与编制。 2.软件应用技术是指利用已经编写好的软件为工作或生活服务。 *过程方法 感谢ISO9000,总算有一个靠谱的。http://zhidao.baidu.com/question/89635665.html 组织内诸过程的系统的应用,连同这些过程的识别和相互作用及其管理,可称之为“过程方法”。 但在软件工程领域,过程方法到底指什么? 一般的理解是 研究探索 得出软件过程中的各个环节,进而让软件质量更好,满足要求,增进满意度。这个范畴还是很大的。拿来做软工的一级分类还是不行。 *工具 谢天谢地,又一个靠谱的,而且是可以拿来作为软工一级分类的。至于工具下的二级分类,比如开发工具,过程工具,先不管了。 通过以上词汇来进行软工一级分类,看来是没指望了。 现有的软工一级分类方案有: 1, http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FSoftEng%2FSE.Concept%2FM.1071316764.I0 2, GB/T 15538-1995软件工程标准分类法 http://download.csdn.net/source/634269 从美国抄的,烂的不值一看。2005-10-14 作废。 3, 软件工程的三要素:工具,方法和过程。也有个老说法 软件工程三要素:管理、人员和方法学 。前文已经分析,其中重叠混淆的地方很多。 要另外定义才能说明,http://zhidao.baidu.com/question/20635183.html 给出了一个不错的方案。与我当初的想法是一致的。 {zd0}的问题是 要对软件工程方法和软件工程过程重新定义,一直存在歧义。最讨厌的是难以处理敏捷开发,敏捷开发常说是新的软件开发方法,而按这三元素的分类,敏捷开发划似乎应归到软件工程过程。方法乎?过程乎?口水战打不完了。 4,踏破铁鞋无觅处,写了{yt},突然看到了 SWEBOK (from http://d.wanfangdata.com.cn/Periodical_xtfzxb200817007.aspx ),之前虽然听说了,但没有细看。 再查到 http://www.computer.org/portal/web/swebok/htmlformat 还有中国的跟屁作 http://ishare.iask.sina.com.cn/f/6034510.html 原来IEEE已经看到了前文反映的困境了。IEEE现在所提方案还是难以xx的,按着IEEE的江湖地位和目前通达的交流,IEEE应当能做成这件事了。 因此,提议精华区一级目录可以大致参照SWEBOK的知识域。 |