《现代软件工程讲义》 观后感
最近看 邹欣老师《现代软件工程讲义》 觉得确实是一份比较适合我们大学生的课程,但对课程提出一些自己的想法。
不得不羡慕清华大学的高要求高标准的课程,但是我相信高考完到进入软件这个学科的起点不会差太多。以高标准来要求自己,高姿态衡量自己才能让自己变的更出色
评分标准,这个我很欣赏,想起自己在学校参加比赛,苦心的把功能实现、测试、用户界面尽量的做好,到评审的时候就看个3分钟的演示视频而草草了事,不禁心寒。
理论知识 到 实际知识的运用 大多数普通大学老师自身对理论知识运用到项目中估计也不怎么样(我的软件工程老师自己根本就没有真正做过软件需求等的东西如何来讲,照本宣科而已)
原文:
软件课程一般教学流程:
软件学院的小慧老师对阿超抱怨,软件工程这门课看似容易,实际太难教。
小慧说:我是按照经典的瀑布模型来讲课的,本来以为会是高屋建瓴,一泻千里,但是实际情况是这样的:
- 需求分析:学生们都不懂企业的需求是什么,上课睡觉。
- 设计阶段:学生们画了许多 UML 图,用设计工具画了不少矩形框,菱形框,如此而已
- 实现阶段:学生们开始讨论非常细节的问题,UML 图早已经扔到一边。
- 稳定阶段:学生们中十分之一的人开始写代码,其他人不知道在干什么.代码大部分情况下都不能工作,所有设计好的种种黑箱和白箱测试都无从开始。
- 发布阶段:这个只有一天时间,就是最后检查的那一天,同时还有人在调试程序.
- 维护阶段:课程结束了,同学们对自己的产品没有任何维护,放假了!
《现代软件工程》理想的流程:
- 开始维护以前同学开发出来的程序,理解程序。
- 找bug,改bug,重构小部分代码,以满足用户的需求。
- 一部分同学可以开发测试用例
- 在现有版本的基础上做增量开发
- 理解需求 (这个时候理解了客户需求是什么)
- 设计
- 开发
- 回归测试 (用到上面开发的测试用例)
看到对一般的软件工程教学流程的评价,就让我想到自己的老师,不光是自己的老师,相信很多大学的老师其实并不具备教软件工程的资格,别说学生不懂企业需求了,又有多少老师懂呢?大多照本宣科,拿“需求分析“为例:有多少老师会教你捕获需求分析的方式方法技巧,如何写出可用的、优秀的需求文档,如何鉴别需求文档的好坏,需求如何验证,功能需求或非功能需求又如何量化,后期如何验证等等。又有多少老师会告诉你软件工程的国际规范,IEEE标准,SWEBOK这套体系内容呢?
以下是对《现代软件工程》流程的理解:
这样的流程可以理解成对之前的项目进行一个维护以及二次开发,在开发的过程中加入了一些软件工程以及项目管理的东西来做练习,让大学生能够接触到一种开发流程也是挺好的。(确实也缺乏运用这些知识的能力,并且每个环节都将所有理论知识运用进去对于没什么项目经验的人是很难。但个人觉得相比《软件工程》高度还是不够的)
“找bug,改bug,重构小部分代码,以满足用户的需求。“ 会不会给同学一种一上手就编码的错觉呢?而软件工程最大的意义就是让同学们知道 软件≠编码,语法上的BUG好改,那么业务逻辑上的bug呢?都是在无需求下进行,那么如何满足用户的需求呢?不知道会不会有同学提出,我为什么要改?根据什么来改,怎样改才是对的?如果换成其他的项目我应该如何下手呢?
需求:这样的流程对需求并不能理解很深刻,以及需求为项目带来的风险。和一般课程对比,到增量开发的时候学生们依然还是不懂企业的需求是什么,甚至连客户需求如何捕获都不知道,如何写出可用的需求文档,以及怎样的需求文档才是好的,可用的呢?给我的感觉最后还是成了一个实训课,知道的除了编码以外还需要测试,修BUG,而最重要,也是决定项目成败的需求分析和系统架构被忽略。
设计阶段:一般课程相当于是做了一个UML的练习课,而问题所在我认为只是把UML当成单独的课程来讲,并没有很好的与项目相结合起来,并不是错在UML本身。 在《现代软件工程》课程中我想提出的问题是,在设计阶段最要注意和解决的大多是客户的非功能性需求,在做二次开发的情况下让学生设计会不会有障碍,甚至有学生可能会想,不用之前的版本,重新开发也许会更好。
最后:当看到指出对一般软件工程课程流程存在的问题以及弊端时,原以为更多的会改进存在的问题,但是貌似并没有做到,并且我认为软件工程流程之间的联系与关联并没有很好的体现出来,内容相对独立。还有一点是不管是个人开发或是团队开发最重要的都是落实到文档当中,但是文档对于软件项目的重要性在课程没有体现出来。但是不得不说可能中将很多理论性的知识加入到了实际中运用,这恰恰是我认为大学中最缺乏的。
以上纯属个人观点,有错误的地方欢迎提出,共同讨论共同进步。
浙公网安备 33010602011771号