BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SEMAT:软件工程方法和理论

| 作者 Mark Levison 关注 0 他的粉丝 ,译者 麦天志 关注 0 他的粉丝 发布于 2010年5月31日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

SEMAT於2009成立并发表宣言,不过跟敏捷宣言很不一样:

软件工程目前受到不成熟的实践严重阻碍,具体问题包括:
  • 像时装业流行的时尚多于工程学科
  • 缺乏可靠和普遍接受的理论基础
  • 大量方法及其变种,而其分别缺乏理解或虚假地作大
  • 没有可靠实验评估和验证
  • 业界实践和学术业界存在分歧
我们支持一个根据牢固理论、已证实的原则、最佳实践来重新建立软件工程学:
  • 包括广泛认同和可扩展的核心元素
  • 能处理技术和人为问题
  • 受到业界、学界、研究者和用户所支持
  • 面对需求和技术转变时支持扩展

签名人士包括在软件业界和敏捷社区的人士:Scott Ambler、Barry Boehm、Larry Constantine、Erich Gamma、Tom Gilb、Ellen Gottesdiener、Sam Guckenheimer、Watts Humphrey、Capers Jones、Ivar Jacobson、Philippe Kruchten、Robert Martin、Stephen Mellor、Bertrand Meyer、James Odell、Ken Schwaber、Edward Yourdon...

SEMAT的愿景描述联署人士同意去创造的核心内容:“集中去寻找和描述所有软件工程工序中必需的元素,通常例子包括团队合作、项目管理和过程改进.这核心亦会结合一些其他工程学科的概念,这核心必需适应改变。”

目前分成五个工作类别

  1. 定义:定义软件工程同相关概念
  2. 理论:寻找相关支持理论(倾向于数学理论)
  3. 共同元素:寻找软件工程中的共同元素
  4. 核合语言:找到一套语言来描述其他元素
  5. 评估:评估软件工程实践和理论的方法

《设计模式》的作者 Ralph Johnson担心学术所谓的“理论”是纯粹数学,而不是业界人士所指的,他还指出连什么是软件工程都不清晰:“是指所有软件开发,还是持有软件工程学位的人所实践的软件开发活动?还是工作头衔上包含软件工程的呢?那些一般银行或者保险公司里的软件开发部门,他们的经理只有少许软件开发背景,而他们一般开发人员可能都没有计算机科学学位,没怎么接受过软件工程正规训练的又如何呢?”他认为软件业界真正的问题在于:很多人没有理会过一些在已经存在三十多年的实践。

Jorge Aranda同意软件业界里存在很多“流行事物”,但指出这些曾经被指为“流行事物”,例如面向对象开发、极限编程等等现在都被主流开发所接受,他担心如果持保守态度下将来的创意会有所局限。

一年前, Tom DeMarco认为软件工程这概念已死,DeMacro怀疑早年关于度量(Metrics)的研究是否仍然有效:

“控制软件项目:管理、量度、估计在过去软件工程师量代规划项目时起到重要作用。在自我回顾的时候,我在想,到底这些建议是否在当时正确,现在是否还有用,我是否仍然认为这些度量是成功软件开发中必要的工作?我的管案是:不是,不是,以及不是”

他继续指出:“稳定性和可预测性仍然重要,但已经不是最重要的事情”。

Geert Bellekens支持SEMAT,他指出:

我认为可以稳妥地说我们见识过很多不同方法学,但他们背后都很类似。

如果我们把这些方法学放在一起,从远距离观看,我们都可以看出他们相似和不同的地方。

而这正是SEMAT所做的事情,尝试找出他们共同之处,以一套中立的方式表达出来。

Scott Ambler 亦支持SEMAT,认为业界需要比现在更好的方法,能够有很多人参与,他也希望SEMAT可以产出有价值的东西。

Alistair Cockburn曾参与SEMAT会议,但现在选择退出,他在文中有五点重点:

  1. 他们提出行动的请求基于未仔细研究甚至逻辑不通的论据;他以新一套“流行用语”来代替旧的“流行用语”,他内里自相矛盾,提出的问题没得到解决,而提出的解决方案根本不对题,提出的路线没有公正性,根本是误导,透过权力、夸张宣传和野心来产生支持。
  2. 组织者不关心我所关心的题目。
  3. 他们没什么机会会提到工程或者工程理论,更适合他们的名字是 "超过程核心"(“Meta-Process-Kernel”) 行动。
  4. 他们造出来的东西很难会对业界有什么影响。
  5. 他们在短期内做到什么的概率很低。

Martin Fowler亦有被邀请参与SEMAT,持有类似观点:

人才是软件开发中最中心的元素,而人却是不能预测的,尝试去找出共同过程元素只会是白费工夫,除非有一天,人变成可以用数学描述的。

您对SEMAT有什么想法呢?会局限将来创意吗?它会创造任何有价值的事情?还是真正的问题在于团队根本不知道自己忽略了重要的软件工程实践?欢迎您在文后留下您的观点。

查看英文原文SEMAT - Software Engineering Method and Theory

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

Martin Fowler 说出了根本问题 by Dong Yang

我跟同事在团队挣扎了许久之后得出了 Fowler 的结论:人是核心。这个结论对于理性派的人来说是悲剧,但对于感性派的人来说是好消息。

Re: Martin Fowler 说出了根本问题 by chen index

现在偏有很多公司企图消除人在软件开发中的作用,采用了CMM之类的过程来使人可以被替换, 尤其外包公司

是不是现在开始流行签署协议了? by 鲍 央舟

通过签署协议的方式来promote某种思想,是不是本身就是一种流行浪潮啊?

Re: Martin Fowler 说出了根本问题 by Jun Ran

完全同意此观点,软件工程说到底,一切都是人,是人,还是人。

废话,有哪个行业最中心的不是人? by s y

有哪个行业最中心的不是人?貌似全地球都是以人为中心的。感觉这话就是一废话,就像强调1+1=2式的

Re: 废话,有哪个行业最中心的不是人? by 李 冬

呵呵 语言不要太偏激 Ran Jun 想强调的是人的思想 1+1=2也要人教吧 没人生出来就领悟了吧

SEMAT 将是一群大师的重大失误 by Jay Xiong

SEMAT 将是一群大师的重大失误:
(1) 抓住芝麻当西瓜 - 软件工程的根本性问题是不完整、质量差、效率低、项目成功率低、而成本高、风险大、软件灾难发生越来越频繁等, 根本不是什么时尚和方法太多大乱问题 - 没有一个方法不是过时的,全都是线性思维和还原论的产物。
(2)从一开始就迷失了方向 - 软件和如软件工程体系都是非线性系统,应该用复杂性科学来处理,因为复杂性科学是人类继相对论和量子力学之后最伟大的科学研究成果,专门针对非线性复杂系统,从整体与全局而不是部分与局部的观点来处理问题,是解决软件工程一系列问题的法宝。 可惜SEMAT的大师们却对复杂性科学视而不见,而盲目地企图寻找什么新的软件工程理论,完全迷失了方向。
(3)SEMAT对解决软件工程的关键性、根本性问题的建树将微乎其微 - 软件工程是一个包含许多模块(组成部分,Components)的非线性复杂系统。根据复杂性科学的整体性原理,一个复杂系统整体的行为与特性是其各个部分相互作用而涌现出来的,是其各个部分所不具有的,也不能继承其每个部分所单独拥有的行为和特性。所以,不管SEMAT对于软件开发方法的改进贡献有多大,其对软件工程整体的行为和特性的影响都微乎其微,因为现有软件工程的其他部分也全都过时了,包括它的过程模型、测试方法、质量保证体系、文档体系、软件维护体系、软件项目管理体系等,这些部分如果不以复杂性科学来进行革命性改造, 光改进软件开发方法就根本没有什么作用。
(4)除非太阳从西边出来,否则,用过时的砖瓦是不可能建造坚实的未来大厦的 - 还未建成就将倒下。看看SEMAT列举的所谓最佳实践就不难发现,实际上全都是过时的东西 - CMMI?它的所谓过程改进也是抓住芝麻当西瓜的:软件开发总成本和总工作量的75%以上都花费在软件维护上而不是狭义的软件开发上,但CMMI对软件维护过程却既不定义也不改进 (实际上由于它所依附的全是线性过程模型,所以根本无法进行软件的有效维护);那么,对软件开发过程的改进如何?CMMI再一次抓住芝麻丢了西瓜 - 它要求用户自己去选择现有的软件过程模型而不是由它去改进软件过程模型,然后才进行什么改进 - 试想,如果用户所选择的过程模型根本就不适合其项目,CMMI还能作什么过程改进?说不定是越改越糟糕;Use Case与UML? 它们正是线性思维和还原论的典型产物,作成的是一大堆局部图,丢了整体,这些图形或者模型由于不可追溯而难以进行静态查错,它们更不能动态运行而无法进行动态查错,天知道它们的质量如何,又怎么能成为指引其后的软件工程实践的蓝图呢?而且,它们势必与最终的源码不一致 - 这样的东西能不过时吗?取代它们的,将是源码(包括不含逻辑语句的骨架源码)驱动的动态建模技术等。

是我们有五千年历史的黄炎子孙来收拾软件工程这个烂摊子的时候了!

Re: SEMAT 将是一群大师的重大失误 by yu wentao

人与人之间的相互影响和作用在软件工程整个过程中比较关键,也就是人与人之间具体包括项目经理与工程师之间,工程师与工程师之间,甲方和乙方的一个博弈的过程。

Re: SEMAT 将是一群大师的重大失误 by Jay Xiong

yu先生,您说得很对,人与人之间的关系很重要,但人是非线性的,非常容易犯错- 几乎所有软件错误都是人引进的,所以,当我们说人的因素第一时,必须考虑到两个方面:正面和负面。所以,不仅要提供必要的条件发挥人的主观能动性和协作精神,更要主动预防认人为错误的引入,才能真正提高软件质量,最大限度地预防软件灾难的`发生。现有软件工程体系的根本问题,在于软件是一个非线性系统,不能以线性思维、线性过程、还原论为基础,一切软件开发任务和活动都线性地、部分地、局部地处理,而应以复杂性科学为基础,非线性地、整体地、全局地处理- 欢迎访问:www.amazon.com/Software-Engineering-Paradigm-Co...
(我的新书:New Software Engineering Paradigm Based on Complexity Science: An Introduction to NSE)

欢迎大家下载美国Springer出版社的我的新书(基于复杂性科学的软件工程新体系)的前言等 by Jay Xiong


www.springer.com/physics/complexity/book/978-1-...
您可以看到:

Download Table of contents (pdf, 1.4 MB) 目录
Download Preface 1 (pdf, 1.8 MB) 前言
Download Sample pages 1 (pdf, 1.7 MB) 第二章 现有软件工程体系
已经完全过时?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

10 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT