高等软工课程总结

软工最终总结

前言

  漫长的一个学期终于在前几天拉下帷幕,高等软工课程也完成了最终答辩,这次的信号灯系统建模任务算是画上一个句号。总结一个学期的反复修改与不断建模 ,可以说收获颇多,但同时也感觉似乎还有一些不那么理解的地方,在此一并说出,算是对软工课程学习的一个总结与感悟。


项目任务总结

  我们小组的课题任务是轨道信号灯控制系统,可以说一开始我们选择这个题目时,我们组成员的第一印象就是控制信号灯,红灯停绿灯行这些简单的规则。当时也想不到这个系统会如此庞大与复杂,甚至一度想这门课不过如此。然而,事情在我们第一次进行领域分析之后发生了变化,深入了解之后,才知道关于轨道信号灯控制系统一直以来都是铁路运行的一个重要研究,并且每个国家都有不同的标准以及相同的目标——系统能够安全运行并且拥有可观的效率。于是,领域分析之后我们对题目进行了重新的解读,我们后面对系统任务的认识是:轨道信号灯控制系统是通过对信号灯进行控制,确保在一个行车区间内列车数量不能超过规定容量,系统通过一系列的传感器感知当前系统的状态,确保列车快速且安全的行驶。

  领域分析帮助我们重新认识了系统任务,那么真正认识到我们系统的核心业务,是通过需求分析。这次课程的需求分析与我们本科软工的需求分析不太一样,不是随随便便写个文档,就说是需求分析。而是,真的需要对系统进行系统边界分析,系统核心业务与功能确定。系统边界是这门课第一次接触到的概念,并且也是个人觉得第一个收获点,系统边界的分析过程其实是对整个系统功能的一个梳理过程,哪些功能是外部模块需要调用的,哪些功能是我们系统内部不对外呈现的。这就能够比较规范的决定对外接口,而不是像过去那样,用到一个接口加一个接口。

  需求分析阶段除了学会系统边界的确定之外,第二个体会是如何根据系统运行场景进行类的抽象与划分。系统中,相关类的抽象与确定一直是很重要的任务,因为最终系统的所有功能都需要在类中进行体现。关于类的抽象,课程之前一直不得要领,上过这门课后,学会了根据系统运行场景,进行场景描述,再根据描述的结果进行类的提取与抽象以及类之间关系的确定。所以,尽可能多的找到系统不同的运行场景,抽象出来的类才会更加的完善。我们就找了系统中列车的行驶场景,系统区间发生故障场景以及列车进站场景等进行分析,抽象出我们系统的类图。

  需求分析阶段是对系统任务的初步分析与探索,进行过需求分析之后,对于系统的核心业务只是有一个大概的构思,那是远远不够的。接下来就需要对核心业务进行更加细致的规划与分析,从而完成系统的设计建模任务。需求分析阶段的收获是针对一个比较复杂的系统,如何井然有序的开展初期工作,以及初期工作需要关注的重点等。设计建模阶段的主要任务就是在初期工作的基础上,对整个系统的运转以及细节进行规划与设计。

  设计建模阶段我们小组可谓是经历了一次比较大的变化,之前我们一直是按照老师的要求按部就班完成任务,但设计建模阶段,我们觉得仅仅遵循老师的要求远远不够,于是我们主动去思考我们系统中的设计模块,首先是比较容易理解的三级系统架构以及分布式事务的处理流程;之后,针对我们系统可能发生的故障事件进行了故障等级的分级,我们在这个过程中利用了故障树对不同的故障进行分析总结,最终得到比较合理的故障分级制度;同样的,针对系统的分布式,可能会有多个区间同时发生故障,然而故障的等级确会伴随着列车位置不同,有着不一样的轻重缓急,针对此设计了动态调整故障等级的规则。最后,考虑的重点就是列车在正确行驶过程中,如何保证列车的信息能够持续传递与保存,我们利用数学归纳法来证明系统对于列车信息的正确保存。

  这次系统建模比较大的体会是,在设计中对各种系统思维的借鉴,例如分布式事务处理,借鉴了操作系统中的事务排队以及中断抢占的思想;而故障等级的动态调整,则是借鉴了网络中数据包优先级调整的思想;最后,列车信息的传递与保存则利用了分治的思想,将整个流程划分为一个个操作相同的子流程进行处理。这次软工课,还能够略微利用到其他专业课的相关知识,这点其实已经物超所值了,至少我们能够理解计算机基础课的其中一个意义何在。总结来说,设计建模阶段的收获是如何在一个有大致框架的系统中,进行模块划分以及功能细节的填充,需要尽可能的降低模块之间的耦合度,这样系统的模块设计才能更加有条理性

  以上这些是对我们项目整个过程的一个总结与体会,其中可能还有一些比较不恰当的表述以及很浅显的认识,这都需要之后进行不同的项目工作中去反复体会,并且也可能会改变现在的一些认识,这都是以后的事情了。


课程总结

  高等软工课程结束了,这门课在一开始有写一个对课程的期望博客,在那个博客中,我写了三个期望:

  1. 希望对软件工程有一个全新的认识,认识到其在软件开发过程中的必要性。
  2. 学会构建一个大型系统时如何正确开启第一步工作,如何正确的去分解复杂系统,系统性分析。
  3. 体验写博客的感觉,并可能尝试下去 。

  从结果来看,这三个目标都有比较好的结果。首先是软件开发的重要性,这次的项目体验让我知道那些规范的需求文档以及设计文档是一个团队合作开发大型系统,并且能够保持一致的重要依据,如果缺乏书面的一个准确定义,每个成员脑子里面想到的东西很可能天差地别,这在系统合作开发中将是一个巨大的隐患。其次关于一个复杂的系统,如何正确的开始第一步。万事开头难,其实本科我就有很多次体验是,在碰到一个全新问题时,如何正确的开始第一步其实是最困难的,一旦能够找到道路,那之后就有迹可循,比较轻松了。这就类似于我们课程中的领域分析以及需求分析,其中领域分析是后期很多次设计中,无意间会发现领域中的一些相关规定和我们的设计不谋而合,这其实就是我们走在一个比较正确道路上的证明。所以,这次课程中学到的领域分析,以及系统场景描述进行类的抽象提取等技能,对之后再次分解一个比较复杂的工程有很大的借鉴意义。最后是博客这个东西,有一说一,能有一个地方可以记录一些自己的想法,这个体验还是蛮好的,我觉得后面我可能会随缘更一些自己想记录的内容吧。

  这次的课程可以说我收获颇丰,首先是认识到我这几个队友,能找到几个思路比较契合,并且愿意一起为一个目标奋斗的同志还是挺振奋人心的。之后是我对软件工程有了全新的认识,虽然收获没有我预期的那种完全醍醐灌顶的感觉,但我觉得已经足够,毕竟时间不够充分 ,而且仅仅靠一个项目就完全达到目标也不是特别的现实,所以我还是比较欣慰自己能够选择这门课,并且和队友一起努力坚持下去。最后,其实我对这门课有一个小小的建议,老师可以稍稍将课程节奏尽量评价一些,感觉课程前半段过于轻松,后半段的迭代又很紧凑,这其实可能会降低最终模型的质量,毕竟期末阶段,多门课程都有deadline。前期可以更多给一些建议以及思路,甚至可以给一些比较成功的案例作为一个参考,这样后面再进行建模会不会就更容易迅速进入正轨,少走弯路呢?

  另外,不谈其他的,我觉得能认识小组中的各位同学并成为朋友,是我本次课程很大的一个收获。最后,祝老师同学们,新年快乐,假期愉快!!

posted @ 2021-01-25 11:23  出没  阅读(59)  评论(0编辑  收藏  举报