关于软件工程的一些浅见
今天上午考完了整个大学阶段最后一门专业课。就对自己的专业--软件工程做个总结吧。个人浅见,仅供参考。
软件工程,顾名思义,是一个工程学科。什么是工程?建一座大楼是一个工程,修一个水库也是一个工程。那什么是软件工程呢?在我看来,就如同建大楼,软件工程需要有一个目标(建大楼),需要有一整个完整的流程(设计,规划,施工,验收等)。简单来说,软件工程就是编写一个软件以及围绕这件事要做的一系列流程。以下是维基百科对软件工程的定义:
软件工程研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
那么,我们会怎样去学习这个专业呢?
课程设计
课程教材
主要可以分为以下部分:
- 基础学科
《高等数学》(上下两册)、《概率统计及随机过程》、《线性代数》、《离散数学》、《大学物理》(上中下三册)、《基础物理实验》、《数字电路》 - 编程语言
《Visual C# 2013》、《Java编程思想》、《C++ Primer》 - 计算机基础知识
《数据结构》,《算法导论》、《计算机文化》、《数据库系统概念》、《深入理解计算机系统》、《编译原理及编译程序构造》、《计算机网络》 - 软件工程
《软件工程》、《软件工程实用教程》《系统分析与设计》、《软件工程过程》 - 其他
《数据挖掘导论》、《数学模型》
课程安排
在大一大二阶段,会安排基础数学、编程语言、数据结构和算法的教学。到了大三,就会安排工程类科目以及计算机知识的深入学习。我们可以将其分为三大类:
数学类基础学科
数学类的科目会分布在整个大一和大二上。这些知识是几乎所有科目的基础,学起来也有一些难度,但是学好数学带来的收获也不是一般的大。计算机知识
计算机知识包括了编程语言、计算机体系结构、网络等等,在整个学习阶段都会安排相应教学,重要度也是不言而喻。这些都是一开始学习会非常慢,学起来也比较吃力。但是当你到达一定程度,学习速度会变快很多。软件工程相关知识
我觉得这是软件工程学科与计算机专业的最大区别。一系列的软件工程相关课程会在大二下开始,一直持续到大三结束。这些课程会将简单的编码上升到一个项目工程的高度,教会我们现实世界中一个软件开发的全过程。
总结一下,不同阶段会有不同阶段的目标。
大一:学会编码,去解决一个已经抽象好的数学问题。在这个阶段,我们应当可以将自己的朴素思想转化为代码。
大二:提升代码能力,写出更加高效简洁的代码。对于同一个问题,我们应当可以从不同的角度进行思考,去提升自己的代码质量。另外,这个阶段还会学习一部分工程知识,了解需求、开发等概念,并学会管理自己的代码。
大三:提升工程能力 && 掌握计算机知识。在这个阶段,我们会更加系统地学习软件工程,掌握一些软件开发模型(这个阶段编码并不会被刻意强调,因为通过之前的学习默认你有一定的编码能力)。另外,对计算机知识的深入理解也有助于我们更好地进行编码。
Question && Answer
- Q1:为什么这个专业说起来会很累呢?
首先,这门课是一门实践学科!很多课程上学到的东西,如果没有用实践进行巩固,很容易还给老师。经常在电脑前敲代码容易给人一种很苦逼的感觉。其次,这门课的理论知识也很抽象,不是很好学。任何一门计算机大课(算法,操作系统,编译原理等)深入研究下去都是计算机的一个方向。要想学好这些科目要花不少时间。但是,我觉得你只要高中养成了良好的学习习惯,这些都不是问题。规划好自己的时间,软件工程还是比较好学的。以我自身为例,我每天生活都非常规律,晚上11点上床(玩手机并不会立刻睡),第二天早上7点起。并不会像宣传的那样每天肝到很晚,就算是考期,只要有一个好的复习节奏,也并不需要熬夜。
- Q2: 这门课的优势和弊端
优势
- 1 计算机专业就业前景很好,毕业起薪都比较高(虽然现在有些人说计算机泡沫正在破碎)。
- 2 软件工程专业学习到的开发知识可以让你更快地融入实际开发,上手更快
弊端
- 1 学习周期短,很多科目学得很快,需要较强的学习能力
- 2 实践不足,很容易“纸上谈兵”