UML之父Ivar Jacobson谈软件工程的新机遇和挑战

12月10日下午,由CSDN、《程序员》主办的第十八期TUP沙龙在北京知春路丽亭华苑酒店举行,本期沙龙的主题是“精益和敏捷软件开发”。除了UML之父Ivar Jacobson带来的精彩演讲,还有另两位来自雅各布森的敏捷专家黄邦伟、陈庆春也发表了热情洋溢的讲说。本次沙龙参会人数共计350人次,现场气氛十分热烈。

精益思想已在诸多行业取得了卓越的成效,敏捷软件开发更是让困境中的软件开发人员看到了曙光。本次大会中,敏捷专家们将精益和敏捷这两种思想的精髓揉合在软件开发中,帮助广大开发人员将广为接受的精益原则转换为适应具体环境的敏捷实践,从而提高组织的软件开发能力。

CSDN&《程序员》总编刘江主持

CSDN&《程序员》总编刘江担任本次活动主持,他简单介绍了TUP活动宗旨,并切合沙龙主题指出,软件研发企业越来越重视产品的用户体验,产品与设计也纳入到全面的产品研发的大范围,软件工程已处在一个革新的时期。近几年敏捷对于软件工程来说,已成为趋势,现在精益思想也出现在软件工程中。本次TUP沙龙请来的Ivar Jacobson就是这些方面的顶级大师。他同时对本次演讲的三位嘉宾一一作了介绍。

Ivar Jacobson:精益思想的复兴

Ivar Jacobson在演讲中表示,不管做任何事情,发现本质非常重要,不要让它的本质被其外表所呈现出的假象所掩盖,要抓住它的“内核”——而这正是精益思想的精髓。他举例说明软件开发者需要从软件工程中看到最核心的本质,而这个本质是可执行的、能动的,并且有清楚的目标蓝图。

Ivar Jacobson指出,软件工程发展到今天已开始面对层出不穷的各种新技术新语言,让开发者往往无从选择。在此背景下,Ivar Jacobson呼吁广大技术人员不要迷失方向,任何新事物都有两面性,如果盲目追新而将自己现有的技术扔掉将是极不明智的做法。而基于当前软件工程学院派和实践派的分歧,Ivar Jacobson认为重建软件工程理论的时刻已经到了,关键就在于如何抓准内核(kernel)。

在他看来,现在的软件开发越来越复杂,如果要用传统的敏捷方式,那在扩展方面就会有所欠缺。因此,敏捷方式本身也应该是敏捷的。在做软件产品的时候,关键要有一个核心系统,应用从框架式的、比较小的系统开始,从这个基础上去增加更多应用。

Ivar Jacobson表示,软件工程已经到了一个“革命”时期。他提出SEMAT的软件工程方法和理论。软件工程由于不成熟的实践正经受严重阻碍,具体表现在以下这些问题上:像时装业流行的时尚多于工程学科、缺乏可靠和普遍接受的理论基础、大量方法及其变种,而其分别缺乏理解或虚假地作大、没有可靠实验评估和验证、业界实践和学术业界存在分歧。而SEMAT能解决目前所面临的在软件工程领域的众多挑战。从本质上讲,最大的挑战是要了解如何开发卓越的软件,以及为什么我们需要一个软件工程的理论。SEMAT支持一个以坚实的理论﹑经过验证的原则和最佳实践(best practices)为基础, 重新定义软件工程的进程:包括广泛认同和可扩展的核心元素、能处理技术和人为问题、受到业界、学界、研究者和用户所支持、面对需求和技术转变时支持扩展。

Ivar Jacobson在演讲中还结合多个实际应用的案例分析,向与会者介绍内核(kernel)概念的核心思想。他认为,大量的事实已经证明,内核(kernel)的概念使得在大规模应用敏捷方法的同时,保持项目的可控性和清晰度成为可能。

Ivar Jacobson在演讲中

Ivar Jacobson是软件开发领域影响最大的世界级权威之一,UML、RUP、用例与组件之父,全球SEMAT计划领导者之一。

黄邦伟:用敏捷的方式来实施敏捷

雅各布森国际的首席顾问、亚太技术总监黄邦伟认为敏捷精益开发能带来以下好处:迅速应变满足客户需求,减少浪费,不断反省、学习、改进。而这整个过程本身也应该是敏捷的。黄邦伟表示,很多项目非常成功,但也有很多项目没得到巨大收益,而这类没得到巨大收益的项目主要是基础打得不好。他提出一些学习方法以便打好基础。在精益方面,黄邦伟提出“轻便软件工程核”的概念,他认为,软件开发工程应该是实际、简单、轻便、指导性强能够适应大小项目,而不是一堆没人看的东西。在软件开发工程中,要把握不同维度,不同级别的进展与健康度。而如何衡量进展与健康呢,可用表明“状态”的状态卡来控制。

黄邦伟指出,这是把抽象的工作变为可视化的一种有效手段。每一个状态都对应一张状态卡,而软件工程核以不同的粒度展示。应用这些软件工程核与卡片来指导开发,软件开发是一系列策划、执行及调整的轮回。在这个循环往返的过程中,会重复以下步骤:反省,回顾;寻找更适合的工作方式;改善工作质量;减少浪费;迈向下步状态;跟踪工作项;解除所遇到的障碍;确认当前状态;确认下步状态;确认如何达到下步状态。这个过程到项目结束而结束。在这个过程中,软件工程核和状态卡发挥了以下价值:1.实际,简单,轻便且容易学习;2.指导性强,即指导计划,执行,改进;3.可重用的过程定义;4.容易高速来适应自己的特殊情况。

每个项目都有其特殊性,有的接近用户有的比较远、有的团队技术力量较强而有的团队新员工较多。假设一个方式就能够适应所有团队是不可能的,如果要实施敏捷,方式本身也应是敏捷的,它必须很快抓到项目要点和团队的现状,再来促进他们的提升,并要保证这种提升的可持续性。

黄邦伟介绍了轻便软件工程核(kernel)及其卡片呈现形式,以及它们如何体现敏捷和精益精神。他通过轻便软件工程核(kernel)与一系列案例,演示如何用敏捷的方式实施敏捷。

黄邦伟在演讲中

黄邦伟是雅各布森国际的首席顾问、亚太技术总监。他帮助许多团队和组织提高软件工程能力,包括实施敏捷及精益开发,架构,设计,从构,需求管理,测试设计等多方面的支撑,在敏捷及精益开发方面拥有丰富的经验。

陈庆春:Use-Case 2.0,敏捷在行动

Use-Case一直是一种针对业务和系统需求都有效的工作方式。在软件开发中,开发者应该使用最有效的工作方式、一种能允许持续改进的方式。在过去的很多年中,开发者已经学会如何使用Use-Case来取得真正的成功,同时也从其他技术,比如userstory和面向方面(Aspect-Orientation),学习了一些新的东西,这些激励开发者在维持Use-Case的核心价值的同时把它做得更好。

陈庆春对新Use-Case的独到特性进行了详细介绍。他表示,Use-Case可以分解成切片以组成合适的日志以支持Scrum和Kanban。

新Use-Case的独到特性:1.如开发者所需的敏捷和轻量级;2.扩展到大项目和复杂项目、扩展到整个生命周期、适应不同特点的项目以满足需要;3.它不只是需求,它是针对整个软件开发生命周期;4.它也可以适用于非功能需求;5.它不只是为软件开发,它也用于业务。

以Use-Case做切片以支持产品owner和开发团队。陈庆春也指出了识别切片的策略和方法,他认为每个切片必须对客户具有价值,这些价值往往会表现为业务对象状态的变化;好的切片的测试方式应该可以被系统测试所复用;要求一个切片的完成时间不应该超过一个迭代的三分之一;切片之间减少依赖,避免网状依赖;切片描述可用于沟通;切片尽量有可参考的,以估计工作量;切片尽量从系统外部的角度来看。

陈庆春在演讲中

陈庆春现为雅各布森中国咨询总监,曾参与Rational中国技术团队、IBM Rational中国服务团队的组建和管理。他拥有十多年软件开发和咨询经验。曾组织和参与多家知名公司的大规模软件工程变革,涉及软件工程的各个方面,并为超过百家的企业实施相关的服务和培训。

现场座无虚席

演讲结束后,与会者对关于敏捷在某个具体软件工程中发挥的特点、切片和扩展的区别、测试时提到的需求等众多技术细节方面提出了问题,三位演讲嘉宾给予了解答,会议现场进行了热烈讨论。最后的抽奖环节,来自方正科技、华信、用友软件、腾讯移动、北工大等单位的多位与会者获得了奖品。