软件工程——个人总结
回想开学初对于软件工程这门课的期望,总结本课程对你带来的提升:
- 学习和使用的新软件:vs2013——编写计算器界面时利用MFC
Apicloud apploader——开发APP
- 学习和使用的新工具:墨刀——原型设计工具,刚开始接触的时候还需要摸索一番,但是渐渐上手后,画图什么的就比较容易,效率很高
TeamViewer——是一个能在任何防火墙和NAT代理的后台用于远程控制,桌面共享和文件传输的简单且快捷的方法,对于网速的要求不高,团队作业时,无法一起工作时,我们可以通过这个软件来共享资
源,处理问题,解决问题
- 学习和掌握的新语言:PHP、JavaScript、数据结构的一些知识
- 学习和掌握的新平台:MySQL——主要是用于存储数据
coding——代码托管,在之后的大作业和以后的项目实现都可以利用coding来完成高效有序的代码托管
博客园——博客本身就是一个交流平台,我们可以在博客中了解和查询到一些自己想要的知识,和同道中人探讨问题,也可以发表一些自己的经验和心得
微信平台——虽然微信在我们日常生活中很常见,但是它的运作以及怎样生成一个微信公众号,都是需要我们花时间去了解学习的
- 统计一下,你在这软件工程实践中,完成了多少行的代码:完成了大约两千到两千五的代码,主要是编写计算器和最后的大作业以及一些小程序
- 学习和掌握的新方法:怎样往微信公众号里添加功能
写程序,尤其是大程序,一定会遇到各种各样的问题,学会上网查找有效的解决方案是个不错的学习途径
需求分析,这是基础也是必不可少的
测试,无论是黑盒测试、白盒测试、单元测试、简单测试,写一个程序,是离不开测试这一环节的,测试也能更好的帮助优化算法,提高效率
总结和展望
- 记录自己在软件工程课上的经验总结
刚开始接触这门课,确实有些疑惑,虽说是专业课,可是却和之前的专业课完全不同,没有学习新的语言,没有做什么和编程相关的任务,只是在学习如何画图,如何分析,如何在项目里做很多铺垫,后来慢慢学习,在学习的过程中,在做项目的过程中,发现前面学的一些东西都是必不可少的,需求分析,各种分析图,单元测试,每个人适合什么样的角色,敏捷流程,MSF等等一系列东西,都在无形中有利于我们的工作,任何一门课程,我们都可以学习到一些有用的东西,而且做项目时一定会遇到很多问题,很多从来没有接触过的问题,学会查找资料,学会动手去试。
- 对于下一届的学弟学妹有什么建议和告知
对于任何一门课,跟着老师的步骤走,不要因为最开始的疑惑就放弃,等到了要你动手的时候,你会发现,所学内容其实都是有用的,这门课,可能·刚接触,会有些疑惑,不知道重点在哪儿,不知道应该做些什么,但是学习,就是一个循序渐进的过程。学着学着就清晰明了很多了。
- 分析一下自己所处的团队。软件工程实践是大学校里少有的认真的团队协作经验,你们团队经历过吗,最后到达了哪一阶段?
我们团队,在大作业上面其实花的时间不多,但是我们基本上都是商量着来,根据每个组员的能力特长,来分工,遇见问题的时候,我们都会一起讨论,解决,团队协作,做的还是很不错的,但是,肯定存在问题,各自的任务不能按时完成,讨论问题时遇到一些分歧,甚至是争吵,不过我觉得,这些问题都是正常的,总的来说,我们的团队合作还是比较顺利,比较愉快的,最后的产品还是有很多问题,有的功能还没有完善,我们也会在后面接着完成我们的项目。
通过本学期学习,对第一次作业中提出的五个问题提出回答
- 什么时候、什么样的项目、什么样的团队适合选择敏捷?我们又该怎样的去做好敏捷?
通过学习--敏捷流程这一章,大致了解敏捷的概念,虽然书上说了敏捷开发的原则,但是敏捷对质量不放松,那么对人员要求就提高了,对项目领导人的要求也提高了,那么怎么样的一个团队做什么样的项目时,比较合适敏捷。
答:因为敏捷开发不是用来解决所谓的“开发效率”问题的,如果真是开发效率可以从人的技能培养、流程优化、工具改进等方面来提升,而跟敏捷开发本身没太大关系,敏捷反而会降低所谓的效率。因为这里的“效率”被理解为相同的人,在更短的时间内开发完成既定功能, 或者在相同的时间内能够开发更多的功能。因为客观地讲敏捷开发本身会降低效率,原因主要有:
1)敏捷开发中更加强调沟通,沟通频率可能比以前更高,沟通时间可能会比以前更长,占用更多的个人工作时间,反而可能因此导致实际开发时间起过原来开发出某个功能的时间;
2)敏捷开发是从用户视图出发,把用户放在第一位,尽量去满足用户,这又增加了工作的难度,人员的任务分配方式的不同,必然要求人员技能结构的调整,会增加一定量的学习成本,使开发人员反而感觉工作量增加了,短时间内会表现出开发效率的下降,而且要求所有开发人员对需求的理解能力也要求更高了,所以很多人会感觉敏捷开发对人员的要求更高,其实是因为对人员要求的改变导致现有开发人员能力木桶效应现象发生。
3)很多人会有功能不断被修改导致了很多浪费的感觉。这种感觉如果不能正确认识,不仅会误以为影响了工作效率,而且会使程序员很受伤,因为他们认为是在不停地返工。
4)信息的透明性要求较多的数据收集,敏捷成熟度越高,收集的信息就越多,收集这些数据会占用一定的精力,如果不能够正确的理解这些数据的价值,会让程序员感觉浪费了很多时间在做无用功,反而降低了开发效率。
所以敏捷开发是需要很多先决条件的,一个团队,首先应该是可以适应变化,适应不同于计划的变化出现,并且能够很快的响应变化,同时是可以做到快速将功能推向市场的这样一只团队,团队自身的能力很强,沟通能力也要很强,提高效率,从而达到敏捷,虽然敏捷编程不等同于能提高开发效率,但是敏捷二字一定要体现的很好。要根据现实情况而定。
- MSF是怎样支持Agile,在哪些方面支持的?
通过学习--MSF这一章,我觉得MSF更加强调了团队的合作协同,互相学习,目标一致等,而Agile更强调时刻响应客户的需求,那么 ,从哪些方面体现的呢?
答:MSF基本原则:推动信息共享与沟通,为共同的远景而工作,充分授权和信任,各司其职对项目共同负责,交付增量的价值,保持敏捷预期和适应变化,投资质量,学习所有的经验,与顾客合作;
Agile和MSF的基本原则都差不多,基本都是支持了MSF,只有细微的差别,但是对于团队的要求,对适应变化,时刻响应用户的需求,这些方面都是一致的,不需要去刻意的区分,到实际情况,再考虑用哪种即可。
- 市场的前瞻性是一个技术团队所需要具有的吗?
通过学习--需求分析这一章,强调的就是做出让用户满意的东西,但是这个流程不应该是:市场投资人员发现商机,想要实现一个软件,找到我们,我们根据客户的需求来实现技术,那么我们不是应该做好实现即可吗?并且我们要分析的,应该是客户的需求,至于用
户满不满意,不是市场投资人员应该关注的吗?
答:我们所要做的是尽量为我们的客户着想,因为有时候,我们的客户都不一定清楚·的知道他们的需求到底是什么,所以要求我们要做的,就是尽可能的将我们的软件设计成用户需求的那样,那么我们是需要市场的前瞻性的,同时,我们为用户考虑的很多,无形中也会增强我们团队的吸引力,不单单是技术上的吸引。现在市面上的的软件公司,水平大抵相同,那么就要从其他的方面增强。
- 软件质量到底应该怎么去衡量?是软件的完善性,还是用户的使用感良好?软件质量的保证涉及太多方面,哪一方面是最重要的?哪一方面是最容易被忽视的?
通过学习--质量保障这一章,感受到了测试人员的无比重要,之前,大多关注怎么去实现功能,实现之后就不怎么想优化改进什么的了,而且,我们不仅仅考虑功能,还要考虑质量,那么我们应该怎么去衡量一个产品的好坏呢?
答:其实软件的完善性相对于用户的使用感,还是后者重要,因为,一个软件的完善并没有比一个软件有闪光点更有吸引力,当然,有闪光点之后再去完善是最好的情况啦,一个产品的好坏,当然是由客户来衡量的,而且,一个产品不会一出市场就是完美的,它的改进建议和需求也是由广大用户来给出的,所以,软件质量由用户来衡量是最好的,也是最重要的。
- 创新思维是如今社会最缺乏的,也是教育界极具争论的话题,那么应该如何更好地做到IT的创新思想?
通过学习--IT行业的创新这一章,IT不缺少代码手,缺少的就是思想,任何一个行业都是如此,我们大多喜欢重复的工作,或者做自己擅长的工作,不喜欢动脑子,却喜欢创新之后人们投来的羡慕,或者说,有过创新的想法,因技术不够,不敢去实现,那么应该怎样
去提高创新思维呢?
答:怎样提高创新思想,动手,敢于实现,敢于接受挑战,敢于接受失败,敢于从失败中汲取经验,让一个菜鸟去创新的几率比较小,还是不要沉迷于想象,脚踏实地地积累经验,积累技术,不过前提还是要由一定的兴趣,才会有花心思的想法,而越思考,越明白,越明白,越自信,越自信,越有兴趣,试问谁不喜欢自己得心应手的领域呢?学而不做则罔,思而不做则怠!