00:00
那么说完了我们这个项目的商业背景,我们再来探讨一下这个项目,一个软件哈。它是怎么样从无到有给开发出来的?这其实涉及到一个学科的知识呢,叫做软件工程啊,软件工程呢,如果你上大学学这门课的话呢,里边你一定会学到一个东西叫瀑布模型,哎瀑布模型呢,他主张按照工程化的方法,一步一步的非常严谨的去开发我们这个项目啊,拿到一个呃,项目的时候,我们想要立项的时候,我们先做一个可行性研究。诶,咱们先看一下这个项目呢,是不是一个可行的一个事儿,这事儿咱们能不能干啊,从咱们团队的技术能力,工期啊,他的这个报酬啊,包括这个法律世俗的观点,传统各个方面啊,看这事儿是不是可行啊,哎,如果我们觉得这事儿可行的话,那咱们下一步做需求分析,就是说咱们看要想完成这个项目的要达成的目标啊,这个我们这项目呢,需要具备哪些个功能啊,我们先做,再接下来做需求分析,需求分析下一步呢,需求分析完了以后,我们知道要开发哪些功能了,咱们呢就做概要设计,就是大概的去设计一下啊,这概要设计呢,就比需求分析呢就要更详细一些了,然后呢,概要设计哈,相当于是确定了我们具体有哪些模块,每个模块呢,就是有需要有哪些个功能,下一步详细设计就会涉及到这个功能的里边具体的分哪些个步骤。
01:34
啊,然后详细设计完了以后,下一步就参考我们详细设计的。这些个文档就可以直接去编码了。这里边儿有一个典型的例子,现在不太听说了哈,过去我们有这个对日的外包,这个日本过来的这个项目哈,这个人家做过的以后,就说里边所有的注释呢,都给你加好了,特别的严谨,你只需要对照这个注释把它翻译成代码,只要你翻译的没问题,这程序运行就肯定没问题啊,你这翻译的不对的话,这程序就运行就会出问题啊,就是严谨到那一步,所以说这个对日的外包就技术含量特别低啊,不需要你做任何的分析啊,设计啊,不需要考虑这方面,你只是去做一个翻译啊,只是把注释翻译成代码。
02:19
这个时候所以说他技术含量低,就工资就特别低啊,这个对日的外包,然后呢,编码完了以后就测试,测试完了以后呢,上线以后啊,进行进入到运行维护的这个阶段呢,就是由因为工程师去维护我们这个项目啊,整个这个流程走下来以后,其中到任何一个环节出了问题,就再向上去追溯,我们上一个环节是不是需要进行这个调整。哎,总体上它分成计划阶段,开发阶段和维护阶段啊,这就是我们所谓的这个瀑布模型,它是非常典型的把我们一个软件的开发这样一个过程,诶,用工程化的方法变成了一个好像工业产品的一个生产的过程一样,啊这个时候呢,它追求的是一种严谨,是一种标准化。
03:12
哎,要是这么说的话,我们觉得这个挺好的呀啊,让我们这个软件产品的开发这个过程更加的可控是吧,让他这个呃,降低它软件开发的一个风险,这不挺好的吗?啊,但是我们说啊,这种这种模型呢,其实是理论上呢,是能够说得通,但是实际操作的时候呢,没有那么简单啊,实际真正这个软件开发呀,越复杂的软件,那你开发的流程,整个团队的管理啊,人与人之间这个协调就更加的复杂,大家如果说有兴趣的话,你可以去看一本书哈,叫做人月神话。什么叫人月神话呢?不是说嫦娥奔月这个意思啊,这是一个外国人写的一本书哎。说这个一个。哎,多少个人干多少个月啊,这是一种这个衡量工作位的一种这个计量单位,那么这个时候你就发现一个软件工程,一个整个一个项目哈,你没有办法。
04:09
就是很简单的进行这种数学的换算啊呃,十个人干一个月。假设啊,这个活十个人干一个月能完成,那么100个人是不是我们只需要十分之一个月就能干完呢?其实还不是有可能100个人呢,反而他得干两个月,甚至于说干半年,因为100个人和十个人相比,他的这个沟通的成本,他的组织机构哈,就是说人的这个团队的结构就会复杂的很多啊,这是一种指数级的可能,因为人与人之间的这个关系沟通啊,这个变得复杂了,反而这个软件的开发这个工作量也相应的变得很复杂了。啊,所以说它不能做一个简单的一种换算,哎,所以说呢,我们其实从这个角度把一个软件哈,看成是一个工业化的一种标准品啊,一种标准的工业产品这样的来生产,这个其实还是。
05:05
不能说完全的不成立哈,就是它这个并不能够适应我们说全部的情况,特别是现在我们这个互联网应用啊,互联网应用要求我们更新迭代非常的快,所以这个瀑布模型呢,就显得非常的死板,就跟不上我们时代的一个需求了。所以说下边呢,就应运而生的就是一种这个我们现在这个敏捷开发,这个怎么理解敏捷开发呢?很多同学可能也听说过敏捷开发这个概念啊,但是呢,你如果上网去查的话,关于敏捷开发呃,这个论述很多看的也非常的头疼啊,那么我们怎么去理解啊,我在这儿以非常通俗的方式给大家去介绍什么叫敏捷开发,咱们从技术角度和商业角度这两个角度来看一下,从技术角度呢,就是说让一个需求更快的去变成。可以运行的代码。
06:04
呃,当然说这个说变成吧,这个也好像有点不是很贴切哈,因为它毕竟不能像巴拉巴拉小魔仙一样是吧?哎,说这个,呃,用魔杖点一下啪一下,它就能够变了啊,所以这个我换一种方式来表述哈。说根据需求开发出来可以运行的代码,哎,这个过程更快,或者叫加速了,根据需求开发出来可以运行的代码。这个过程为什么能够做到这一点呢?因为我们敏捷开发呀。他不追求我们瀑布模型要求的这么严谨啊,他也不会非常的。可以要求说你必须有非常详尽的这个文档,所以说这个敏捷开发呢。它是根据我们提出的需求,然后呢,你去呃制作一个圆型,诶这个原型呢,往往就是这个HL页面的这样一种形式啊,根据这个原型我们直接去进行这个编码,这个就很快了,在这儿呢,我们来看一下啊。
07:15
咱们这个。给大家看一下,我们有个参考资料。这是另外一个项目,它的一个原型啊,我们去找一下它的首页。原型怎么理解?就是草图?哎呀,这个火狐,呃,这个come打不开了。我们使用这个火狐打开一下啊。就是草图就是草稿,哎,我们在这个页面上,咱们可以去定制一下它的这个。你看在这儿就是一个草图,在这儿告诉你这个位置放logo,但是具体这logo图片是啥,这没有在这儿开始体验啊,在这但是可以点。哎。
08:01
啊,刚才那个地方点不了啊,这个地方是登录的一个界面,哎,然后呢,这边这要找回密码,就是到这儿,哎,然后呢,比如说我们看一下这啊,这是一个资讯,这里边有的地方有图片。有的地方它没有图片啊,有的地方没有图片,然后呢,呃,说我们这个。这些啊,就告诉你说这个图标放在这儿啊,整个这个页面的布局大致是这样,但是它没有那么详细,没有那么难啊,它只是一个草图。哎,然后这里边儿呢,就是它整个这个结构哈,你看这个树形的结构,就是我们整个这个项目的一个结构啊,所以参考这个圆形呢,我们就可以去开发我们这个项目了啊,包括我们前端也好,后端也好,UI设计师也好,大家就都知道我们怎么去去做了,这个就很直观,根据这个去开发呢,就很快啊,这是我们说从技术角度说,它为什么能够变得更快。呃,从这个我们商业角度,我们公司的这个运作的这个角度来说呢。
09:05
它加速了,哎,用户体验新的功能的这个速度啊,这个过程。呃,互联网公司里边有一句话叫做小步快跑。什么意思呢,每次我只是往前迈一步啊,我是有一个小的修改,我就要去迭代,就要去更新,就要马上用户体验到,哎,然后但是我虽然说每个更新的更新的幅度不大,但是我更新的非常的快啊,所以说这个就叫做这个小步快跑,哎。嗯,这个时是让每一个功能都,嗯尽量做。都做尽量少的修改,但是呢,加大我们更新的频率,这有什么好处呢?就是他加快这个迭代的速度啊,能够非常快的响应这个用户的新的需求啊,让用户呢,不断的能够有这个新的这个体验,增加这个用户的这个年度,同时这个功能有任何的这个问题以后呢,我们能够马上的进行这个调整。
10:21
啊,所以说呢,其实我们从技术角度开发的速度变快了,那么我们从商业,从公司运营的这个角度上来说,它跟这个用户的联系呢,也更紧密了啊,所以说这个敏捷开发,它是更适合我们互联网环境下边啊,这个软件开发,或者说系统开发啊,或者说这个APP的开发这样一种需求的,因为互联网开发呢,这个用户啊,他是口碑是很很吊的啊,他经常他会你不断的及时得跟上这个新的潮流,你才能够把你的用户才能够留住。所以说这个敏捷开发呢,和我们前面的瀑布开发,瀑布模型的开发啊,有一个最重大的一个区别,从本质上来说呢,敏捷开发是把一个软件产品看成是一个哎生命体,或者叫做一个生物,嗯。
11:21
呃,每一个小功能的细微的迭代,哎,就好像是生物逐渐。在进化一样,哎,它这个你从宏观上来看,它这个小的功能呢,不断的在迭代是吧,就好像是这个生物呢,在逐渐的慢慢的这个去变化一样啊,它是从这个我们生物学生态学这个角度,从这来类比我们软件的开发,而我们这个瀑布模型呢,它是把我们这个软件产品看成是一个工业。
12:07
画的标准品。以这个工厂。生产。产品的这样的一种这个呃,流水线思路啊,来进行这个开发,所以说呢,这是两种完全不同的这个角度啊,你按照这种工业品的。角度来看,我们这个开发呢,它就会很生硬啊,它很标准,是可以计量,可以可以量化,但是它会很生硬,很不灵活,但是呢,你要是我们把它看是一个生命体啊,把它看成是一个生物体的一个演化,这个时候它就会很柔性啊,一个很刚性,一个很柔性,一个很呃很标准,但是很僵硬,另外一个呢,是它不是那么特别的标准,但是它很有弹性,它很灵活。
13:00
这就是它们的一个区别,那么我们现在看呢,其实敏捷开发啊,把它看成是一个生命体,这个更贴近于我们现在的商业的环境,现在商业环境更多的确实是把我们公司呢看成是一个生命体,把公司所在的环境看成是一个生态环境啊,从这个角度来看待我们的一个公司,而我们现在很多公司呢,它都是以这个软件产品为一个。呃,载体的啊,所以说这个时候其实跟我们敏捷开发呢,也都是这个相通的啊,所以说大家从这个角度来理解我们这个敏捷,你就能够和我们这个腹部模型就能够区分开了。
我来说两句