高等软工课程总结

  一学期的高等软件工程课程结束,可以很客观的说,这门课程是自己这学期投入时间最多的一门课程,也是收获很大的一门课程。在最开始选择这门课程时候,差点被老师的“劝退课”成功劝退,现在想想,还好当时坚持选择了这门课,体验到了这样一门痛并快乐着的、有意义的课程。

  我们小组所选的项目是轨道信号灯控制系统。随着一学期的学习以及对项目的迭代,我们所面对的主要问题发生了改变:从我们怎样通过建模表达自己的意思,到我们要通过建模表达什么意思。说起来可能有些绕,但我觉得这种问题的转变正是体现我们收获的地方。在最开始进行需求建模的时候,我们都还不太熟悉UML的规则,所以需要去学习UML各种图的绘制方法,学习怎样通过UML图表达出我们想要表达的信息,学习怎样通过建模表达自己的意思。但随着我们不断熟悉建模工具,我们意识到自己所面对的是另一个更深刻也更难解决的问题,我们通过建模工具构建出来的模型是空的,只是一些必要的图形元素堆放在一起,而没有真正的有意义、有价值的东西。我们也意识到,我们站错了位置,我们是在很远的地方之外看这个项目,只看到了一些朦朦胧胧的框架和不清晰的部件。而我们要做的,是离项目近一些,从系统的使用者和设计者角度去理解项目。而正是这样一种“位置”的转变,让我们设计了系统的三级架构、不同层级系统间的通信、系统的故障处理、并发调度、连续性监测、动态风险评估等。也正是这样一种转变让我们理解到,这门课程需要我们做的不是拼凑出一种模型然后强行赋予它意义,而是在我们有了自己对模型的思考和架构之后,通过建模来梳理和表达自己的思考与架构,并完善自己的思考与架构。

  另外经过一学期的学习,我对软件工程的认识也有了变化。本科时上过软件工程这门课,但是当时所学的内容大部分是文档的撰写,当时老师强调“文档驱动”。但我当时对“文档驱动”的认识就是通过一些专业性的词汇去唬住别人,或者是将一个没什么好讲的系统扩充成几十或上百页的文档。但经过这一学期的学习,特别是通过自己去参与完成一个项目,我对这句话或软件工程有了新的认识。在现实世界中,有这样一些人对世界有深邃的思考与独特的认识,但却一直沉默,他不进行表达或不能很好的表达,而我们往往会把这个沉默的智者评价成呆子。同样的,在一个系统的架构与设计过程中,如果设计者只是进行了一些详尽的思考,却没有将自己所考虑的内容表达出来,那么实现人员很难完成一个与设计者预期相符的系统。在系统的实际开发过程中,文档就是设计者的“语言”,系统架构师或设计者以文档为媒介表达自己的想法,程序员从文档中获得设计者的想法并实现。这样,文档在某种程度上可以决定系统的设计与实现是否一致,也在某种程度上可以决定系统的能否很好的实现。

  最后就是在团队合作上,随着项目的不断推进,小组的分工与合作也逐渐流畅。记得在项目刚开始的时候,每次的讨论都很和谐,但经常碰到的一个问题是,任务分发下去,大家完成后一起汇总的时候,发现会存在很多不一致的地方。讨论的时候没有很好的表达和交流,导致对同一个问题两个人有着完全不同的理解,而我们却以为已经达成了一致。后来随着项目的不断完善,大家在不断的交流过程中越发熟悉,在讨论时每个人都可以较好的表达自己的观点,但这时候又出现一个问题,两个人纠结在一个细节上互不退让,花费太多时间在一些无关紧要的细节上,导致讨论的效率低下。经过反思,我们觉得在讨论的过程中,有一些小的问题没办法得到很好地解决,因为有些东西没有绝对的好坏,两种观点各有优劣。而且针对这种问题辩论的最后,往往是两个人分别输出自己的观点,没有去尝试理解另一个人的想法,是一种没太有意义的讨论。所以后来,我们学会了一种妥协的办法:“我保留意见”。当我们发现针对某个问题继续讨论没有意义的时候,就会把该问题暂时放下,留待线下讨论结束后线上交流,而将线下讨论的时间集火在更加重要的一些问题上,提高线下讨论的效率。去做争论与妥协的平衡,是我们在团队合作过程中很大的一个收获。

  另外,不谈其他的,我觉得能认识小组中的各位同学并成为朋友,是我本次课程很大的一个收获。

posted @ 2021-01-25 10:18  雨夜人未寐  阅读(67)  评论(0编辑  收藏  举报