软件工程实践总结
目录:
一、回望开学初对于软件工程课程的想象,回望博客开篇时对于这门课和这学期的期望
三、对下一届的建议
四、分析自身的团队
五、阅读笔记
七、介绍自己
八、个性发挥
一、回望开学初对于软件工程课程的想象,回望博客开篇时对于这门课和这学期的期望
1. 对比现在的你和开学初博客开篇的课程目标和期待
在开学初,对软件工程实践这门课,只是单纯的认为只要敲敲代码,做出一个app就万事大吉了,直到栋哥开始布置作业才知道当初的想法是多么的naive!!软件工程实践这门课不仅仅只是敲代码,不仅要在项目开始之前进行规划,更要在完成每个阶段后进行总结。
当初开博客时的目标就是希望能了解一个项目的开发流程和学习安卓的开发,课程结束了感觉对开发流程有了大概的了解,安卓开发也学习了一点,但还是要在结课后继续学习。生命不息,学习不止!!
2.学习和使用的新软件和工具:
- Visual Studio Code —— Markdown格式的博客基本都是在这款编辑器上编写的。
- Android Studio —— Android项目开发必不可少的开发工具!!
- MockingBot —— 一个移动应用原型设计工具,是这次项目开发主要用到的原型设计工具。
- Balsamiq Mockups —— Html页面的原型设计工具,在结对编程时用到,大爱手绘的风格!!
- 亿图 —— 一款强大的绘图工具,在做流程图,结构图的时候用到。
- Git —— 代码版本控制的强大工具,让编程更加方便。
3.学习到的新语言和平台:
- Java —— 虽然之前有去看Java的视频学习,但都只是大概的看一遍,经过这次实践,明白了学习一门语言只有经过实践能真正的检验你的成果。
- Eclipse —— 一个基于java的开发平台。
- GitHub —— 一个代码托管的平台,确实好用,但是到目前为止还是用不太熟练-。-
4.完成了多少行代码:
大概三、四百行吧(少的有点羞愧)
5.学习和掌握的新方法:
- 软工的核心:“做中学”,没有经验不要紧,要有一颗想学习的心,跟着团队学习。
- 写博客!!这个我一定要说!!上了软工课,知道了什么事情都能写博客。要开始项目了?那写一篇博客吧。今天冲刺了?那写一篇博客吧。开站立式会议了?博客里加张照片吧。冲刺结束了?那写一篇博客吧。。。。
- 原型设计,包括web啊,app啊。之前以为做app就是大家各拿一张凳子,坐在一起,你一句我一句商量好了,就可以开始做了。知道接触了各种设计工具,真是66666
......
二、属于自己的人月神话
原书《人月神话》中我比较有感概的应该是巴别塔的失败吧,一个大项目的失败,最后并不是因为项目本身的问题,而是因为做这个项目的团队之间缺少了交流和组织。好比我们的软工项目,最后项目会失败会是项目本身的问题吗?可能是......但但...但是,如果开发这个项目的团体如果发生了交流和组织上的问题,相互之间产生隔阂和摩擦,一个项目要如何进行下去?
所以我觉得我的人月神话应该是我们团队之间如何化解矛盾,最后共同开发成功一个项目的经历吧。当初在项目选题时就有不同的看法,想通过举手表决时的人数都很尴尬,后来大家都各自搬出自己的支持理由互相说服,最后得出统一的结果。如果不经过这个过程,消除这些芥蒂,后面的开发难免会产生各种小问题,甚至最后爆发,导致一个项目的失败。所以一个项目,要完成的前提就是保证团队成员间的合作,而要合作就要保证团队间交流和组织不发生问题。
三、对下一届的建议
栋哥的软件工程实践,不只是“实践”两个字,还有“工程”两个字哦。在这门课中,你不仅要敲代码,还要写大量的博客!!(据不可靠统计,所有软工老师中,栋哥的软工实践博客要求最多!)也正是如此,经历完一系列作业后,你才有一些载体来承载你成长的喜悦和你失败的惋惜,在实践过程中,写博客绝对不是一件令人开心的事,但是实践结束后,看博客才是一件最令人开心的事,小组内部的各种激烈碰撞和欢声笑语都记录在其中。如果你想要拥有一门有趣有意思(作大死)的软工课的话,那就选栋哥吧。
安利过后说一下实践过程中的事吧,第一的话就是要把握好时间,不要因为剩余时间充裕就把事情堆在最后,否则你肯定要见识下凌晨1234567点的太阳的,我知道说了你们也不一定会听但我还是要说,因为我也是这么过来的。╮(╯_╰)╭
第二,尽量分配好组内分工吧,不然到时每个人的任务产生交集又有冲突的话解决也是挺麻烦的,所以一开始组长进行分工是件很重要的事。
第三,每个人最好都学点东西,你肯去学的话都会有时间有机会的,学完再实践到软工作业中还是很有成就感的,软工最后的目的不就是这样吗,让学生在做中学,每一个人都能收获到东西。
四、分析自身的团队
按《构建之法》书上所说的,团队的发展有四个阶段:萌芽,磨合,规范和创造。按我的感觉来说的话应该是“规范之上,创造未满”吧,起初的萌芽阶段,我们都互相不是太了解,在团队选题和团队分工上都磕磕碰碰,但是通过相互的沟通交流,相互的理解,各自有不同的看法都会提出,都会通过理智的交流分析,选出最后的结果(文明人不会吵架),我们之间也到达了磨合阶段。
到达磨合阶段后,我们对我们的开发目标、app的前景都有了差不多一致的看法,团队也朝着一个目标努力,团队之间的问题都会很快得到解决,这时候才有一种真正的团队的感觉,有了问题都能建议性地和队友沟通交流。所以感觉基本到达了规范阶段,至于创造阶段,因为我们只是个短时间的团体,可能还有许多潜在性的问题没暴露出来,所以还太敢说自己的团队处于创造阶段。
五、阅读笔记
软件质量是软件的生命,它直接影响着软件的使用和维护。比较粗略地看了下了论文做出如下几点分析吧
- 软件需求是衡量软件质量的基础,不符合需求的软件就不具备质量。所以设计的软件应在功能、性能等方面都符合要求,并能可靠地运行。用户的需求就决定了一个软件的质量,如果一个软件无法满足用户需求,那么后果可想而知,寿命将很快的终结,更别提软件质量了。紧跟用户的需求并对软件做出改进,才能提高一个软件的质量。
- 软件结构良好,易读、易于理解,并易于修改、维护。像是栋哥之前提到的MVP模式,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用。采用这种模式,那么每个程序员的分工就会变得明确,并且开发效率随着项目的增大和提高。
- 讲到软件易读、易于理解,那肯定离不开代码的质量了。代码质量自己最有体会的就是编码标准了,不良的类命名,包命名啊之类的...还有就是代码重复了,许多只需要写一遍的方法在各个模块都写了一遍,造成冗余。
六、怎样证明你学会了软件工程?
1.研发出符合用户需求的软件:
在调研时就发现符合大部分用户的需求,而且就拿自己来说有的时候也会想玩手机,时不时的掏出来微博刷刷,qq聊聊,导致手头的事被耽误。但是要说到拥有一定的用户量并且保持一定的数量的话,其实自己也没什么信心。。。因为美工和功能数量的弊端,导致用户的推广是受到限制的,但是我能保证我们小组内部成员在3天后还在使用~~不过栋哥说的以后可以给学弟学妹用的建议真的不错,这样的话用户数量应该是能保持的。
2.通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
在两次冲刺中,虽然有许多没接触过的东西,但是最后还是能按照要求提交出自己努力过的“足够好”得软件。
在这里贴上两次冲刺的博客合集吧:
3.通过数据展现软件是可以维护和继续发展的
这个时候还是贴出我们的github项目地址吧!我们的软件是可以继续发展的!!!
七、介绍自己
栋哥说了一句“学生匆匆,时光匆匆”,在前几年的我看来,可能感觉就像是初高中的诗歌鉴赏,并不是很有感触却只是在此情此景很应景于是就说了出来。但是到了现在,大三下的我或许没多少时间就要脱离学校这座象牙塔,学生时代或许真的匆匆即逝,这时真的感概时光匆匆。
相处不易,这学期的授课就辛苦栋哥了。在最后介绍下自己吧,我叫林昊斌,对对对,栋哥你没记错,就是上课经常迟到坐在后排的那个,Clover组的那个,Clover就是那个拍小组集体照时想拉你一起的Clover组。“介绍”完自己希望我们组和我们组的app —— 放下我(Put Me Down)能给栋哥留下一个美好的印象吧。
八、个性发挥
学习使人进步,学习使人快乐,学习使人年轻、学习使人成功。所以这个模块,经过我仔细想了想,善良的我决定推荐给大家一个在软工课过程中发现的一款休闲放松小游戏
游戏名:Arrow.io
里面有很多有趣的bug等着大家发现喔