软件工程学习总结
对软件开发本质和开发方法的理解和心得
本学期软件工程课我们做了很多项目,经历了一个个人项目、一个结对编程项目、团队项目Alpha阶段和团队项目Beta项目。每个项目的完成过程都不是一帆风顺的,但是都收获了很多。
个人项目是地铁出行路线规划程序,通过本次项目我学习了C#的语法,宽度优先搜索算法,并且提升了自己的数据分析和整合能力。
结对项目是地铁出行路线规划程序的GUI升级版,我们两个人在原来个人项目的算法的基础上,为地铁程序精心的绘制了GUI,其间做了很多的工作,例如根据地铁图获取相对坐标、使用C#的绘图函数进行绘制,同时也做了很多功能。
团队项目我们接手的是“祖传”的XuebaOnline项目,到我们的手上时这个项目已经复杂,我们在团队项目的过程中遇到了很多的坎,首先就是配置环境。正如http://www.ituring.com.cn/article/9363中所说的那样,一个FireFox程序要安装122个包,而每一个包都依赖更多的包,最后导致安装FireFox的时候要去检查系统中是否有26种Fortran编译器的其中一种。。。我们也遇到了类似的问题,因为自动安装的依赖包的版本和学长们安装的已经有了比较大的差异,所以在安装包的过程中报了很多的Error,导致我们前期花费了大量的时间进行依赖的安装与调试,那个时候每天都在百度、Google上搜索各种各样的解决办法,最后终于在学长们和StackOverflow的帮助下安装成功。如果让我重新做一次团队项目的时候,我可能就会考虑用一个虚拟机来安装好依赖,然后给大家拷贝虚拟机文件,这样就会减少问题的发生。
以前提问题的博客
http://www.cnblogs.com/jisuozhao/p/5881014.html
请说明哪些问题现在自己已经清楚了,请阐明一下,是如何通过看书,实践,或者讨论弄清楚的。
原来提出了一个问题,“在团队项目中是否每个人都需要具有比较高的编程技能?”,在结对项目和团队项目的实践中弄清楚了。在一个团队中有各种各样的角色,例如负责召开例会和给大家分配任务的产品经理,兢兢业业地写代码的程序员,做产品测试和报告bug的测试人员等,每个角色都需要不同的技能,而这些技能绝不仅仅局限于编程技能,况且很难做到一个团队中的每个人都具有比较高的编程技能。我们在实际做项目的过程中,让一部分人进行架构设计、新技术的学习以及文档的编写,让另一部分人进行编码,彼此互不冲突,这样能够保证团队的高效率。
软件工程这门学问有很多 “知识点”, 这门课强调 “做中学” - 在实践中学习知识点。请问你们在项目的 需求/设计/实现/测试/发布/维护 阶段(一共6 个阶段)中都学到了什么 “知识点”, 每个阶段只要说明一个知识点就可以。
需求阶段:需求分析的途径、需求分析说明书的编写
设计阶段:架构设计、前端设计、后端设计
实现阶段:ReactJS、Html、Linux环境配置、Solr配置、Django、jQuery等技术
测试阶段:单元测试
发布阶段:服务器配置和调试
维护阶段:服务器内容更新、访问量统计