对专业课SE的看法 20.8

现实中的考试

今天是我第4次参与软件工程这门课程的考试,这一次我是万事俱备了。以前我都是以“不知道什么是软件工程,算法考7分”自居,想来不禁莞尔。

题外话
还记得4年前 第一次考这个课
当时我坐在第2列排头第1个的情形(因为按学号坐,我是11)。那时试卷还没有选择题之类的,就是纯写字题。当时看着第一题 ”软件工程是什么“,看着下方一片空白,两眼一抹黑,什么都不会。
开考没几分钟,我稀里糊涂的写了两句话就交了,我第一个交,监考老师拿了翻看,一脸嫌弃“好歹写点啊”。自然也是第一个出考场的,昂首挺胸阔步离开,心里其实不是滋味,余光能看到有好多人抬头看了我一眼。
现在想来,恍若一梦。

今天这次考试,只有我们3个人,我跟两个比我小3岁的孩子坐在考场,还是有种不情愿,虽然说他们现在也是大四的老油条了。这一次内容我是真的会,他们都交卷后我正好做完最后一题,交卷的时候还和老师聊了聊天。

不过交流得并不是让我心里很舒坦。我说以前陈老师给的范围太大了,那么多名词概念。老师说”那你们复习的时间长啊,不像这次是提前”,我说“我觉得你这个号,比较具体,我容易复习…”,他来了句“你们马上要毕业了,找点过了,不为难”。我竟然不知说什么好,转身出了教室。

我一直觉得这样几个人的考试没什么意义,谁一看都感觉像是做戏。更要命的是,现在哪怕你是真会,那些已经过的人还是不认可你,还是觉得你是不思进取的垃圾。其实现在你知道的比他还多,只不过他不说罢了。而且角色也有点对调了,当初你不会的时候,或者觉得学这些没有用的时候,他觉得你混子不想学习;现在你会了,他忘了,他又有东西说,仗着自己的研究生或者有工作,说你学这些没有意义,说白了你的印象在他心里已经钉死了,怎么弄都不行。当初还不如让我们过了,这样的走形式,反倒让人在学习道路上失去了不少“生机”。

记忆中的课上

教材是用的众所周知的黑皮书系列《软件工程-实践者的研究方法》Pressman,现在已经第8版了。其实学校还有这门软件工程的“双语”课,用的就是蓝皮书系列的原版,也是华章出品。

这门课就是除了具体编程语言之外的东西,可以概括成 ”程序员=软件工程课 + Java/C “ 之类,这门的定位就算这样吧。陈老师上课的时候,讲的很多都是和书本无关的事情,比如TIM开发插曲啦,抖音算法之类的。

这门课大家都不喜欢上,不是点名经,有老师的话说,”属于IT界的zz课“,像念经,所以每次上课前3排都没有人,偶尔有一个人,但也每次都是那个,我都记住了,是16班的10号。

每次上课前几分钟,老师就忙着在黑板上画课程结构框架,左边一个软件工程,右边一个过程模型,中间一个箭头写上”时代理解“。有时候还会画一条时间线,标上1991年RUP、2013年IOE…诸如此类的名词。
在这里插入图片描述

上学期的重修就少了几分生动,毕竟是网上教学,就看看视频,没有任何值得回忆的地方,感觉亏大了。

考试内容回忆

§ 选择题和判断题(40)

  • 软件老化问题(不断的变更)

  • 螺旋模型的特点

  • 极限编程的框架(选项里顺序)

  • 需求分析的目标(共3个,4个选项肯定有一个不是)

  • 需求建模,UML哪个图属于哪种类型,或者问图的概念,比如状态图是基于外部事件变化。

  • 软件测试交给独立测试组ITG的好处是什么?(消除利益冲突)

  • 确认测试阶段用户依据的是什么东西(需求说明书?其它什么书)

  • 通过了所以测试的软件就是安全的吗?

  • 判断压力测试意思是不是测试人的压力(面对非正常的情形)

以往考 过程框架(沟通~部署)、双V区别(确认和验证)、具体的某某测试是属于白盒还是黑盒、SCM过程层次顺序等。

§ 名词解释(20)

  • 设计模式

    描述了在某个特定场景与…影响力中,解决某个特定的设计问题的设计结构
    让设计人员确定 (1)是否适用于当前 (2)是否能复用 (3)是否能用于开发类似的

  • 模块化

    软件被划分分独立命名的、可处理的构件,把这些构建集成到一起可以满足问题的需求

  • 内聚和耦合

    内聚:模块内部。一个模块执行一个独立的任务,只完成一件事情。(∈信息隐蔽)
    耦合:模块之间。表明软件结构中多个模块之间的相互连接。

  • 白盒测试

    利用…所描述的控制结构来生成测试用例。

    (1) 独立路径至少被执行一次 (2) 逻辑判断 (3) 所有的循环 (4) 内部数据结构

每次都是考4个,以往每年第一题都是解释名词 软件工程 【3化+研究】,可能现在我的是重修卷没有这个要求。去年另外考的3个是 结对编程重构回归测试 的概念,说白了就是考前背诵,看谁印象深,必须背到考试范围内,不然根本没有效果,名词那么多不可能全记住的。

§ 简答题(40)

  1. ”软件就算代码,软件开发就是编程序。“这句话对吗?
  2. 需求分析的目标,建模的方法(回答 基于场景、基于类、行为模型、流模型 之类)
  3. 根据给出的Java代码画UML类图
  4. 依照给出的程序画流图 并且给出环复杂度

也是每次考4个,以往还要懂 Scrume过程、体系结构和框架差异。
其中 基本路径测试 的流图表示是必考,你得知道,“处理框序列和一个菱形判定框可以映射为单个结点” 这句话意思,也就是没有if的语句,几条都可以用一个圆点表示。做题的时候要先在程序段上标号序号,然后根据流图的规则(5种情况)画图。环复杂度计算也非常容易,数一下域的个数或者用公式 V(G)=E-N+2 =P+1 最方便的是 P+1,P这个判断结点数看程序的if条件结点就数出来了。

对这门课的反思

正如过去考试是考一门扔一门,课程学习,考完了应该记得多少记得哪些呢?还有一段时间把开发宣言4句话背得溜溜的,现在也忘了,没有用。

能记住的就是这么多,应该注意到,有些知识虽然具体,但并没有价值的,不能算作“自己的知识”,你只是当时看的时候好像记住了,后来还是忘了。小心浪费了自己的时间:

  • 以几个词的顺序细分出来的知识,比如模型分线性类(瀑布/V)迭代类(演化/螺旋)

  • 一大堆“特点特性”类的知识,比如 螺旋模型的特点(迭代性系统性可控性)之类,

  • 含有一大堆“优缺点”类的知识,比如 项目团队的4种组织方式各自好处和缺点?

  • 一大堆看起来清晰明朗的图,比如基线的形成过程(SCI经过评审加入项目数据库中)

    作为一个考试的重点,从图上看起来确实“学到了”的感觉,但在脑海里并不长久,也用不上,所以不要看最好。

记住软件测试策略在宏观上的样子即可,有一张圆形图,记住从里到外的顺序(单元-集成-确认-系统),至于具体的,比如集成测试细分的回归测试、冒烟测试,系统测试还细分的 压力测试、性能测试之类,不用记得。

应该记住:
  1. 过程框架里,框架活动——沟通、策划、建模、构建、部署。

    具体在瀑布、演化等模型中什么样子不用记

  2. 敏捷开发里,极限(XP)编程的过程——策划、设计(含重构)、编码(含结对)、测试

  3. 设计概念里,一共有12个概念,记——抽象、模式、重构

  4. 测试用例,知道白盒和黑盒,具体是流图的知识点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Husband Chen

你给我1毛,我还你5分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值