摘 要:敏捷开发是以人为核心、迭代、循序渐进的开发方法。用友UAP总结了七个不可忽略的关键步骤。第一,积极参与。第二,简单地建模。第三,丢弃临时模型。第四,为交流建模。第五,为理解建模。第六,测试优先设计。第七,重构。
技术日新月异,软件开发同样如此,各种实时的变化和不确定因素都会影响软件开发的进程和效果。比如,用户对需求描述不准确,或从需求到开发较长的链条中出现信息丢失,都会导致软件开发出现偏差,产品交付后需要重新设计;即便最初需求准确,在移动互联网世界中,用户的需求在不断变化。软件开发的速度必须足够快,才能紧跟需求,不断满足用户需求。
这就要求研发团队每个个体提升能力、开发过程每个环节提高效率、提升整个软件开发的弹性,让软件在快速变化中能够很快适应,及时应对。“敏捷开发”是很多开发者想到的一种方法。它以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
用友UAP作为面向大型企业与组织的计算平台,涵盖了支撑软件应用的全生命周期和IT服务管理过程。用友UAP能够支撑企业信息化各个阶级应用,满足企业管理变化快并及时响应市场需求的目标。用友UAP正是用了敏捷开发方法,在敏捷开发实践中,用友UAP总结了七个不可忽略的关键步骤。
第一,积极参与。开发人员需要和用户保持现场的接触;现场的用户要有足够的权限和能力,提供目前建构中的系统相关的信息;及时、中肯的做出和需求相关的决策;并决定它们的优先级。
第二,简单地建模。当你考虑所有你能够使用的图表(UML图、用户界面图、数据模型等)时,你很快会发现,大部分时候你只需要这些图表符号的一部分。一个简单的模型能够展示你想要了解的主要功能,例如,一个类图,只要能够显示类的主要责任和类之间的关系就已经足够了。不错,编码的标准告诉你需要在模型中加入框架代码,比如所有的get和set操作,这没有错,但是这能提供多少价值呢?恐怕很少。
第三,丢弃临时模型。你创建的大部分的模型都是临时使用的模型,如设计草图,低精度原型,索引卡片,可能架构/设计方案等等,在它们完成了它们的目的之后就再不能提供更多的价值了。模型很快就变得无法和代码同步,这是正常的。你需要做出决定:如果“同步更新模型”的做法能够给你的项目增添价值的话,那就同步更新模型;或者,如果更新它们的投入将抵消它们能够提供的所有价值(即负收益),那就丢弃它们。
第四,为交流建模。建模的次要原因是为了和团队之外的人交流或建立合同模型。因为有些模型是给团队之外的客户的,你需要投入时间,使用诸如文字处理器,画图工具包,CASE工具来美化模型。
第五,为理解建模。建模的最重要的应用就是探索问题空间,以识别和分析系统的需求,或是比较和对照可能的设计选择方法,以识别可能满足需求的、最简单的解决方案。根据这项实践,你通产需要针对软件的某个方面建立小的、简单的图表,例如类的生命周期图,或屏幕顺序,这些图表通常在你完成目的(理解)之后就被丢弃。
第六,测试优先设计。这是一项开发实践。在你开始编写你的业务代码之前,你要先考虑、编写你的测试案例。从AM的观点来看,这项实践强制要求你在写代码之前先通盘考虑你的设计,所以你不再需要细节设计建模了。
第七,重构。这是一项编码实践。重构,就是通过小的变化,使你的代码支持新的功能,或使你的设计尽可能的简单。从AM的观点来看,这项实践可以保证你在编码时,你的设计干净、清楚。
用友UAP的开发平台具有很好地敏捷性。它提供可视化的领域建模工具,将客户需求直接转换为领域模型,通过代码生成将领域模型转换为开发成果,快速响应需求的变化。领域模型是开发人员和客户交流的有效工具。
用友UAP开发平台提供了自动代码框架,在此框架下,基于DSL自动生成的代码与程序员的手工代码通过接口隔离,两类代码存于不同的程序文件中,从而使二者解耦。在此框架下DSL可以重复生成代码,用户对模型的修改可随时生成代码且不影响手工代码的逻辑结构。基于UAP开发平台可以做到对已有系统的变更(如果只涉及领域模型的变化)只需手工调整领域模型后重新生成代码,再重复构造和发布即可。
用友UAP基于DSL模型的代码自动生成
敏捷开发提倡在不改变系统功能的前提下对代码进行重构,通过重构提升程序可维护性,可扩展性。单元测试代码是保证重构质量的有效手段,用友UAP开发平台可为领域模型自动生成测试代码,程序员也可以创建自己的测试用例,在IDE环境中提供测试用例运行支持。另外,用友UAP开发平台提供完整的组件构造和运行环境配置功能,帮助程序员方便的构造出组件并生成安装盘。