第二次作业
1、采访工业界的软件团队(通过邮件,微博,微信,阅读博客等方式),询问他们的软件开发流程
2、分组讨论,
(1)投票选出你们小组成员最喜欢的两个团队类型。
(2)辩论你们在这门课程中最应该采取哪种类型。
(3)列出优劣,课堂发言,或发表博客。
一、软件开发流程
软件开发流程即软件设计思路和方法的一般过程,包括对软件先进行需求分析,设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编码和调试、程序联调和测试以及编写、提交程序等一系列操作以满足客户的需求并且解决客户的问题,如果有更高需求,还需要对软件进行维护、升级处理,报废处理。(摘自百度)
我们分公司性质来说一个软件的开发流程,软件公司和非软件公司
1、非软件公司
需求分析-概要设计-程序编码-程序测试-软件交付-客户验收-码农维护
2、软件公司
需求分析-概要设计-详细设计-程序编码-程序测试-软件交付-客户验收-码农维护
需求分析
一个软件没有出现之前,只是有一部分人有一个想法,我需要一个这样的东西(想要一个孩子了)用来管理我的什么什么,这个时候一个想法出现了,就会有这个需求,他会找软件公司需求分析师来商量,这个时候一个软件就怀孕了,相当于开始发育了.需求分析是听完要求以后会将大概的功能描述一下,用Word或者Axure画出一个简单的Demo给用户看,经过几次确认以后需求分析师会最后确认功能是不是完善的,确认了以后进行我们的下一步,概要设计
概要设计
这个功能主要是干嘛的呢?很多的公司觉得没必要,其实是很有必要的,这个就是相当于先规划一下怎么平安度过怀孕期,对于软件来说就是软件的处理逻辑,大概的一个流程是怎么走的,大概需要哪些模块,怎么运行,需要大概多少接口,后期怎么维护等问题,做这些干呢吗?为了下一步-详细设计
详细设计
有人说,详细设计是很麻烦的一步,其实不是很麻烦的一步,我觉得是最难的一步,详细设计主要是用来确认细节的,接口的名字啊,控制器的名字啊,多少个控制器,谁来调用谁,这个不可以有错,因为后期码农是需要看这个开发的,你怎么起名字,他们就怎么写,所以这里出错也就意味着编码的时候也会错,最后会有一份详细设计书出现,这个就是告诉孕妇具体吃什么,怎么吃,多少量。
码农编码
很多人觉得这个就是搬砖,看着设计书就直接写就可以了,理论是这样的,但是为什么还有很多的bug出现呢?很大一部分原因并不是设计的原因(当然也有可能),很大原因是不规范造成的,还有就是是不是一个项目组的人可以协作处理代码,怎么做可可以提高编码的效率,这些问题都是在编码的时候出现的问题。这个是相当于孕妇实施那一套套餐的时候具体是不是按规范来吃的。
程序测试
这一步是里面很重要的一步,测试,我们不可能说写好直接就给用户用了,这个是不现实的,我们需要做的是先给测试部门进行系统的测试,当然这个测试不是按照用户的想法来的,他们会很暴力,举个栗子,一个按钮,正常的用户使用的时候会直接点击一次,看到效果就可以了,但是测试的时候不是,他们会疯狂的点击,知道他们觉得这个世界上不会有人比他们暴力的时候他们会停止,当然这是一个好的测试人员,很多的测试不会是这样的,他们觉得正常使用没问题就是没事的,其实一个软件好不好,很大一部分在于测试人员的测试力度。最后写一份测试报告就可以了。
软件交付
测试结束以后没有任何的问题的话,就可以写安装手册了,这个其实就是用户使用指南。
客户验收
交付后客户简单的测试以后觉得是和自己想的一样的,就收货,交钱.
码农维护
是不是验收以后就没事了呢?当然不是,一个软件很多时候是在用一段时间以后才会出问题的,所以会一直需要人来维护他们,当然不是说只是出问题才会维护的,主要的原因是软件会根据不同的需要更改功能,这样的过程也是维护的过程,QQ已经更新多少代了,是不是,这也是一个维护的过程。
项目重构
这个是一个项目如果出现了新的技术,功能没有改变的时候,为了用户体验,例如之前是SSH写的,但是运行的速度很低,用SpringBoot,大家都在用,用户反映很好,那么这个时候就需要项目重构了,用新的技术将之前的功能重新实现。
基本那就是这些了,另外细心的人也看到了非软件公司是没有详细设计的,这个解释一下,为什么呢?很简单,其实详细设计是和耗费时间的,非软件公司的人不会花费这个时间在设计上,他们就是直接告诉你需求,码农只需要直接编码就可以了,一般这样的对你用什么技术,什么框架是没有要求的。
二、分组讨论
社区模式和特工团队
就我个人而言,我建议采用社区模式。
因为大家都是学生,知识方面不够完善,在这个模式中,每个人都扮演着重要的角色,都可以为这个团队出一份力,同时集体出力更好的弥补了个人的视野不足,对软件开发有着很好的帮助,也会促进个人的知识成长,个人的进步。
当然缺点也很明显的是效率不够,质量不好。