探讨敏捷开发在软件开发中的应用(代码片段)

author author     2023-04-08     428

关键词:

在软件工程领域,有过很多软件开发模型,如瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、喷泉模型、RAD模型、敏捷软件开发模型、XP极端模型。这么多的模型各有各的应用场景、各有各的适用范围,但我认为最实用开发模型还是敏捷软件开发。

中国式软件开发思路是什么样的呢?从我接触过的大多软件项目来看,基本都有一个共同特点——就是必须快,客户都是急脾气,恨不得今天立项,明天就要你拿出产品来。

面对公司和客户如此快节奏的要求,我们有办法吗?人们从生产、生活中总结出来一套即高效又优质的开发模式——敏捷软件开发。

什么是敏捷软件开发呢?

敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系、而又可以独立运行的小项目,并分别完成,从而实现快速开发的目的。

还是具体来说下敏捷开发是如何实现的?

1、将大的系统拆分成子项目。

以前我们接受过的思想是立项后先要需求调研、分析,调研后出各种调研报告及需求说明书,需求搞定后,再进行概要设计(UE设计、UI设计、交互设计、数据库设计、框架设计),概要设计完成后再进行详细设计……这样一个周期下来,耗费太长,当进度进入下一阶段,当上一阶段有问题时,会影响到整个项目流程的各个阶段。

而敏捷方法是会将大的系统拆分成一个个子项目,再把子系统拆分成子模块,尽量减少模块间的耦合性、增加其内聚性,这样我们可以把团队分成多个小组,各组可以同时作业。另外,当一个模块需求发生变化时,对其它模块的影响也不会太大,以实现降低开发难度的目的。

在之前提到的房产信息网平台建设中,我们就将系统拆分成自行成交、经纪成交、用户权限管理、建委等外部接口、大宗资产、交易管理、平台后台管理、网站前端等模块分别进行需求讨论,需求讨论后再将各模块拆分成各个对象,对象与对象间只是通过公有变量传递信息,尽量减少与外部对象间产生关系。

总结:化整为零个个击破

2、团队与客户呆在一起

为了降低沟通成本,我们团队所有人员直接开到客户现场,随时与客户沟通,通过面对面的沟通,减少了理解偏差。在项目的各个阶段,我们一直与客户保持零距离接触,随时交流、沟通。通过这种办法,可以第一时间获取需求、第一时间解决问题,减少出错的可能性,提高开发效率,保证开发质量。而且,通过这种方式会更容易取得客户信任,客户能够随时了解到项目的工作状态、工作进度。当相互间具备了信任关系后,余下的工作也会变得轻松、愉快。

在房产项目里,我们在客户现场办公,定期开会讨论需求和设计,当有一些小的不确定问题,团队成员会直接找到客户相关人确认。在整个项目周期中没有发生过大的需求变化。

总结:与客户面对面的交流,降低交流成本,促进相互信任。

3、用建模方式沟通

利用模型与客户沟通,用模型来获取用户需求,而不是通过大量的文档,编写文档费时费力,而且效果不好。实际,对于我们大多数人来说并不喜欢花大量时间看各种文字和参数,而模型则会更直观和立体。这里我说的模型不是单指我们平时设计的原型,它包括用例图、类图、部署图、状态图、活动图、包图、对象图、原型图、效果图、E-R图等,利用不同图形表达出产品的不同维度,使产品丰富而立体。

在房产项目里,我们用原型与客户讨论需求,用ER图沟通数据库设计,用类图来表达产品的对象,用部署图确定硬件部署环境及网络结构,用活动图来说明信息交互流程,用时序图来表达在时间轴下对象间的交互。通过各种图表来表达产品,利用这种方法会比较直观,而且当发现错误修改起来也容易,不像利用文档方式,修改不方便、维护困难,也不利于阅读、理解。

总结:利用模型来代替文档进行交流。

4、敢于迎接变化

市场环境是产品的风向标,我们要随时关注市场。为了迎合市场,产品也要随时变化。需求变化、设计变化……各种变化让我们焦头烂额,但做为产品人的我们同样也应该接受改变,只有产品的快速变化,才能很好的迎接未来。我们欢迎变化,只要是合理的,哪怕是开发阶段,需求也同样可能发生变化。敏捷开发允许变化,通过变化给客户带来更大的竞争力。敏捷开发利用图表来记录需求,所有代码都采用模块式设计,将不同功能尽量分割,减少关联。这就是它能够、也敢于迎接变化的原因。

提到了敏捷的一个很重要思想就是“勇于迎接变化”。就有人说了,你一定不是技术出身的吧。做技术的就讨论变化,最不允许的就是确定的需求再修改。当产品经理与技术人员沟通时,当谈的一个复杂性操作时,经常说:“你确定不会修改了吧,如果你确定需求不变,我就做!”,你要答应了,再找技术修改时哪就等于堵死了自己的后路。实际,哪能一定有不修改的需求呢?我们做产品不也是时刻在迎接市场的考验吗?在大海上航行,当风向变化,我们的大船不也得时刻准备掉头,准备调整。变化,本身就是为了适应,没有变化,就等于没有进步。但作为产品经理的我们,能做的应该是利用自己的智慧和敏锐的市场洞察力,尽量的去感知风向,尽量的控制需求,在需求发现初期就做好充足的调研。怕变化,不是办法,在项目初期就要做好灵活可调整的方案,如果需求真的变化了,我们应该怎么办,这才是敏捷的思想,需求的变化,我们谁能阻拦得了呢?

5、尽早、持续的交付可运行的阶段性成果

之前我曾经说过,一个项目的失败,一般不是技术原因,多是因为客户对我们失去信任。我们需要持续的、不断的给客户以信任感,一种是我们在客户现场不断的交流、沟通,让客户感受到我们的热度。同样,还需要尽早的、持续的给客户提供相应的成果物(可运行的产品),让客户看到我们的能力。当然,这样还有另一个好处是,能够把问题提早的暴露出来,不要羞羞答答像个小女人,不敢见人,只有提前暴露,才能提早解决,问题越晚暴露越难解决。

在房产项目中,当天完成的内容在编译没问题后,会把修改的功能部署到平台服务器上,以便于客户随时能够看到变化,了解项目进度。如有问题的话,也能够尽早暴露出来。

总结:为了降低项目风险,尽早交付可运行程序

6、面对面的沟通

最快的交流方式就是面对面的沟通,在敏捷开发中,最提倡的方式是减少哪此冗余的、效率低下的沟通方式,用最快速的方法来直接沟通。让技术人员、设计人员、客户等所有团队成员都在一起办公,减少信息交流的断路,让沟通变得顺畅。

在房产项目中,当有问题不理解,需要交流时,都是直接找我,我不清楚的直接找客户。当我不在时,同事们也会直接与客户进行沟通,任何人都可以直接获取需求。

总结:直接沟通,减少中间环节

7、可工作的软件是最主要的衡量标准

出再多的文档、再多的中间产物,都没有出结果来得真切。客户最观心的不是中间物,而是成果物。对于敏捷软件开发来说,可以工作的软件是评测开发进度的最主要衡量标准。唱的再好,也不如做的好,做事要落地,实实在在、踏踏实实是敏捷开发的核心,不玩花拳绣腿。

总结:做出可交付的软件是项目的核心

8、保持恒定的开发速度

项目开发是一次长跑,短期内迅速的加速,并不是长跑的方式,我们应该持续的、匀速的跑步方式,这样才能保证团队成员能一直坚持到最后。敏捷开发提供可持续的开发速度,这样不仅团队成员不至于疲惫,也有利于制定项目开发进度,控制开发周期。

总结:项目开发过程是长跑,不要一开始就冲刺

9、定期团队优化

我们会每隔一段时间进行一次团队建设,进行批评与自我批评,找出工作中的问题及影响个人与团队发展的瓶颈。我们通过交流、沟通方式找出团队及成员间的问题,然后进行自我调整,通过不断的优化、升级自有团队,打造出一个能战斗的队伍。

10、配合使用敏捷开发工具

CORNERSTONE是一个一站式项目管理协作平台,适合各大敏捷开发团队,旨在帮助各大企业进行智能管理,解决研发项目管理痛点,它支持持续交付与集成,能够透过各个维度跟踪记录项目进度,帮助团队轻松配合完成目标。

它为团队提供敏捷、任务、需求、缺陷、测试管理、WIKI、共享文件和日历等功能模块,帮助企业完成团队协作和敏捷开发中的项目管理需求;更有甘特图、看板、思维导图、燃尽图等多维度视图,帮助企业全面把控项目情况。

同时,CORNERSTONE还自带文件储存和共享、文档协作功能,并且可以实现团队之间的实时沟通。换句话说,选用CORNERSTONE,可以不需要再挑选文档协作工具、文件储存和共享工具、团队内部沟通工具。

此外,不仅是产品研发,销售、运营、行政审批也可以使用CORNERSTONE进行管理。使用统一的管理平台,对于企业来说无疑是大大降低了管理成本。

总结:

如果项目管理者能够很好的运用敏捷开发思想,就相当于在游戏世界里拥有了法器,美食世界里掌握了烹饪之道。在敏捷开发里还有许多其它思想,但有的思想本人并不太认同,如用“测试驱动开发”,在中国与在国外不同,在国外有CMMI,对测试要求非常高,测试实际就是质量检查部门、质量控制部门,有着很高的权限,对测试人员也是更加尊重和认同。在国内,公司多重开发而轻测试,从你公司测试人员与开发人员的薪水上就能看得出来,谁更受重视。想让测试人员驱动开发,在目前的现状中有些难以做到。有时我想,前人已经总结出了那么多好的思想,确实应该多学学、多看看、多用用,但拿来的思想并不一定全适用,每种思想都有着自己的成长土壤,不是只要多施肥、多浇水就能长出好庄稼。有时,也要看看,植物的习性,是否更适应我们的环境。CORNERSTONE现在申请20人以下团队即可免费使用。

技术图片

20165322实验三敏捷开发与xp实践(代码片段)

实验三敏捷开发与XP实践安装alibaba插件,解决代码中的规范问题根据老师的教程:打开Settings->Plugins->Browserepositories...在搜索框输入alibaba即可看到AlibabaJavaCodeGuidelines插件,点击Install进行安装,然后重启IDEA生效在IDEA左目录栏... 查看详情

20165201实验三敏捷开发与xp实践(代码片段)

##20165201实验三敏捷开发与XP实践敏捷开发与XP实践-1实验目的与要求:http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使... 查看详情

敏捷开发流程(代码片段)

...起源2001年2月,MartinFowler,JimHighsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地,举行了一次敏捷方法发起者和实践者的聚会。在这次会议上面,他们正式提出了Agile(敏捷开发)这个概念,并共同... 查看详情

20165302敏捷开发与xp实践作业(代码片段)

20165302敏捷开发与XP实践实验报告一.提交点一1.实验要求参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)把下面代码重新格式化,再研究一下Code菜... 查看详情

20165229实验三敏捷开发与xp实践(代码片段)

===任务一:1.实验要求实验三敏捷开发与XP实践(http://www.cnblogs.com/rocedu/p/4795776.html),Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->Reform 查看详情

力软敏捷开发框架工作流实现技术(代码片段)

工作流管理联盟(WFMC)提出了一个工作流参考模型,约定了工作流系统的体系结构、应用接口及特性,主要目的是为了实现工作流技术的标准化和开放性。下面简要介绍系统中的各个部分,并对参考模型中的五类接口进行描述... 查看详情

20165220实验三敏捷开发与xp实践实验报告(代码片段)

实验三敏捷开发与XP实践-1实验要求:实验三敏捷开发与XP实践http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具... 查看详情

20155327实验三敏捷开发与xp实践(代码片段)

20155327实验三敏捷开发与XP实践实验内容任务一参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)把下面代码重新格式化,再研究一下Code菜单,找出... 查看详情

20165226实验三敏捷开发与xp实践(代码片段)

实验三敏捷开发与XP实践实验目的一、安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)格式化代码,研究一下Code菜单,比较功能。二、在码云上把自己的学习搭档加入自己的项目中,下载搭档实验... 查看详情

20165309实验三敏捷开发与xp实践(代码片段)

2017-2018-220165309实验三《Java面向对象程序设计》实验报告一、实验内容1.XP基础2.XP核心实践3.相关工具二、实验步骤(一)代码规范1.在IDEA中安装Alibaba插件,解决代码中的规范问题在项目名称上单击右键后选择"编码规约扫描",源... 查看详情

2017-2018-220165306实验三《敏捷开发与xp实践》实验报告(代码片段)

实验三《敏捷开发与XP实践》实验报告实验报告封面实验内容XP基础XP核心实践相关工具实验步骤(一)敏捷开发与XP实践-1实验要求:参考代码规范安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)... 查看详情

2018-2019-220175303实验三敏捷开发与xp实践《java开发环境的熟悉》实验报告(代码片段)

2018-2019-220175303实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告实验报告封面课程:Java程序设计班级:1753姓名:柴轩达学号:20175303指导教师:娄嘉鹏实验日期:2019年4月29日-5月2日实验序号:3实验名称:敏捷开发与XP实... 查看详情

2018-2019-220175320实验三《敏捷开发与xp实践》实验报告(代码片段)

2018-2019-220175320实验三《敏捷开发与XP实践》实验报告一、实验步骤及内容软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软... 查看详情

敏捷开发-每日站立会议(代码片段)

每日站立会议是敏捷流程scrum中的很重要的一个制度之一。功能:1.快速同步进展,让项目组内部的员工互相了解彼此的进展,从而了解本项目的整体进展。2.给每个人一种精神压力,信守承诺。这是一种面对面的... 查看详情

实验三《敏捷开发与xp实践》实验报告(代码片段)

一、实验内容 任务一1.参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。2.在IDEA中使用工具(Code->ReformateCode)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最... 查看详情

20165339实验三《敏捷开发与xp实践》实验报告(代码片段)

实验步骤参考http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)把下面代码重新格式化,再... 查看详情

2018-2019-220175224实验三《敏捷开发与xp实验》实验报告(代码片段)

...2019年4月29日实验时间:13:45-15:25实验序号:24实验名称:敏捷开发与XP实验二、实验目的一、安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)格式化代码,研究一下Code菜单,比较功能。二、在码云... 查看详情

2017-2018-220165231实验三敏捷开发与xp实践(代码片段)

...4月28日实验时间:15:25-17:15实验序号:实验三实验名称:敏捷开发与XP实践敏捷开发与XP实践-1参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。 查看详情