开发者学堂课程【Scala 核心编程 - 进阶:项目开发流程】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9103
项目开发流程
内容介绍
一、课程任务
二、Scala 核心编程-项目
三、可走线路
一、课程任务
课程任务分为两大块,一是学完Scala功能一直没有去写一个项目,这个项目不管大小都应该写一下,用一用。
二是讲解一下AKKA,AKKA是Scala里面底层通讯,支持大并发的一个框架,用的非常多,所以会讲AKKA同时还讲的比较细致。
二、Scala 核心编程-项目
项目虽小,但是代码很多,动手量会大一些,希望大家多动手。
1.Scala 客户信息管理系统
完成的功能一步一步讲解,其实就是增删改查,带点结构。
(1)项目开发流程
①第一步是需求分析
准确的讲需求分析前面还有一步是可行性分析,但一般可行性分析与大家没有关系,了解一下对大家非常好。
前期公司会进行可行性分析,可行性分析指分析这个项目做什么,谁来做,会做出什么东西,干什么的目的是有没有市场,谁来做由市场部和销售部来做,销售部门知道市场的具体情况,甚至有些公司还给市场部销售部一个任务,定时告诉市场需要什么。
市场部和销售部完成这个任务,最后出一个可行性报告,有些报告给公司老总,有些是 CEO。
需求分析有一个职位是需求分析师,需求分析师要懂技术更重要的是要懂业务。要挖掘客户真正的需求因为有些客户说不出来真正需要什么所以就需要需求分析师进行挖掘。然后做一个需求分析报告,需求分析报告是白皮书是一个模板,就出来以后交给下一步流程
②第二步是设计阶段
有些公司是项目经理来做,有些公司是架构师来做。严格来说两个职位是有区别的,项目经理一般来说对项目整体负责任,架构师更关注技术层面,以技术为主的公司会以架构师为主。
项目经理要决定使用什么技术,例如使用 Java 还是 Scala 类型,使用 go 语言还是PHP。以及决定使用什么架构是用 ssm 还是用 ssh 是用 Linux 还是 UNIX,包括数据库。
项目经理还要选人因为项目组做完一个任务就解散。最后作为一个项目经理或者架构师要出一些设计图,设计图最经典的是类图、时序图、部署图、用例图、数据库,一般来讲要事先将数据库设计好,设计图设计好后设计文档。还有一个重要的点是界面,原型开发,
③第三步是实现阶段
由软件工程师来做,要看懂文档,实现各个模块,设计功能模块,模块代码。
④测试阶段
测试阶段与实现阶段不是完全独立的,是一个螺旋递增的模式。一边在进行开发,一边测试进行循环,由测试工程师进行,要测试用例,完成对软件的测试包括对底层的测试,包括白盒测试、黑盒测试、灰盒测试。黑盒测试点击出现问题告诉你有问题,白盒测试高级一点,要写用例测试代码进行测试。
下一步进行找 bug,标准 bug 第一步怎么做第二步怎么做第三步这么做出问题,要重现,如果找了一个 bug 出现过后按照你的流程去做没有错,这就不是一个有效 bug,是你没有找到 bug,这种 bug 最难调。
如果有测试工程师和你说有 bug,一定要他讲给你怎样才能复现,如果不能复现可以不理他。如果按照他说讲述的流程确实能够出现,那必须去调
⑤实施阶段
由实施工程师来做,项目做好后要部署到系统,并匹配好参数,能够正确运行。
实施工程师可能对编程能力要求不高,但是至少有两点要求很高,第一个是对系统很了解对产品本身了解,第二个是身体素质好,因为要经常出差
⑥维护阶段
维护阶段不一定由专人负责,因为维护阶段项目即使经过了非常严格的测试也抵不过有bug。
(2)时间分配
分配的时间取决于项目的大小,如果是小项目无所谓一个人全部搞定,大项目例如是一个500w的项目,需求分析就显得尤为重要,一般要达到30%左右,设计阶段至少不能低于20%,时间阶段不能低于20%,也就是在前期需求设计实现要拿到70%的时间,余下的时间交给剩下三个,如果项目很重要测试阶段也不会低于20%。剩下10%交给他们就行了。
三、可走线路
理论上讲每一个阶段都需要专人,需求需要需求分析师,设计需要项目经理或架构师,实现需要软件工程师,测试需要测试工程师,实施需要实施工程师。理论上各司其职,但是我们的国情是很多公司都是初步的创业型的公司,更喜欢从头到尾全部做完。
1.技术型
大家现在处于实现阶段,如果要走技术层面建议大家先向设计阶段走可以向项目经理或架构师方向发展,如果项目经理或架构师完成的差不多可以在向上发展到CTO,CTO就是技术长官,当下面几个软件组长或者程序员对一个技术实现有疑问时,CTO就要出面解决,CTO在向上走就是技术合伙人,可以在实现阶段做1-2年但是要快速成长,不要每天重复性的增删改查。要主动积极的去做项目经理。
2.全面发展平衡发展型
了解整个项目流程,例如对项目管理能力较强,就做管理型的人才
3.专攻需求分析和市场
4.实施维护
这条线路不建议大家选择,第一年纪大了太累,且不利于家庭和睦
5.专攻测试
很多测试工程师不懂编程,大家会编程就形成了优势加上会做开发可以直接应聘测试经理