關于軟件工程的一些淺見
今天上午考完了整個大學階段最后一門專業課。就對自己的專業--軟件工程做個總結吧。個人淺見,僅供參考。
軟件工程,顧名思義,是一個工程學科。什么是工程?建一座大樓是一個工程,修一個水庫也是一個工程。那什么是軟件工程呢?在我看來,就如同建大樓,軟件工程需要有一個目標(建大樓),需要有一整個完整的流程(設計,規劃,施工,驗收等)。簡單來說,軟件工程就是編寫一個軟件以及圍繞這件事要做的一系列流程。以下是維基百科對軟件工程的定義:
軟件工程研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。它涉及到程序設計語言、數據庫、軟件開發工具、系統平臺、標準、設計模式等方面。
那么,我們會怎樣去學習這個專業呢?
課程設計
課程教材
主要可以分為以下部分:
- 基礎學科
《高等數學》(上下兩冊)、《概率統計及隨機過程》、《線性代數》、《離散數學》、《大學物理》(上中下三冊)、《基礎物理實驗》、《數字電路》 - 編程語言
《Visual C# 2013》、《Java編程思想》、《C++ Primer》 - 計算機基礎知識
《數據結構》,《算法導論》、《計算機文化》、《數據庫系統概念》、《深入理解計算機系統》、《編譯原理及編譯程序構造》、《計算機網絡》 - 軟件工程
《軟件工程》、《軟件工程實用教程》《系統分析與設計》、《軟件工程過程》 - 其他
《數據挖掘導論》、《數學模型》
課程安排
在大一大二階段,會安排基礎數學、編程語言、數據結構和算法的教學。到了大三,就會安排工程類科目以及計算機知識的深入學習。我們可以將其分為三大類:
數學類基礎學科
數學類的科目會分布在整個大一和大二上。這些知識是幾乎所有科目的基礎,學起來也有一些難度,但是學好數學帶來的收獲也不是一般的大。計算機知識
計算機知識包括了編程語言、計算機體系結構、網絡等等,在整個學習階段都會安排相應教學,重要度也是不言而喻。這些都是一開始學習會非常慢,學起來也比較吃力。但是當你到達一定程度,學習速度會變快很多。軟件工程相關知識
我覺得這是軟件工程學科與計算機專業的最大區別。一系列的軟件工程相關課程會在大二下開始,一直持續到大三結束。這些課程會將簡單的編碼上升到一個項目工程的高度,教會我們現實世界中一個軟件開發的全過程。
總結一下,不同階段會有不同階段的目標。
大一:學會編碼,去解決一個已經抽象好的數學問題。在這個階段,我們應當可以將自己的樸素思想轉化為代碼。
大二:提升代碼能力,寫出更加高效簡潔的代碼。對于同一個問題,我們應當可以從不同的角度進行思考,去提升自己的代碼質量。另外,這個階段還會學習一部分工程知識,了解需求、開發等概念,并學會管理自己的代碼。
大三:提升工程能力 && 掌握計算機知識。在這個階段,我們會更加系統地學習軟件工程,掌握一些軟件開發模型(這個階段編碼并不會被刻意強調,因為通過之前的學習默認你有一定的編碼能力)。另外,對計算機知識的深入理解也有助于我們更好地進行編碼。
Question && Answer
- Q1:為什么這個專業說起來會很累呢?
首先,這門課是一門實踐學科!很多課程上學到的東西,如果沒有用實踐進行鞏固,很容易還給老師。經常在電腦前敲代碼容易給人一種很苦逼的感覺。其次,這門課的理論知識也很抽象,不是很好學。任何一門計算機大課(算法,操作系統,編譯原理等)深入研究下去都是計算機的一個方向。要想學好這些科目要花不少時間。但是,我覺得你只要高中養成了良好的學習習慣,這些都不是問題。規劃好自己的時間,軟件工程還是比較好學的。以我自身為例,我每天生活都非常規律,晚上11點上床(玩手機并不會立刻睡),第二天早上7點起。并不會像宣傳的那樣每天肝到很晚,就算是考期,只要有一個好的復習節奏,也并不需要熬夜。
- Q2: 這門課的優勢和弊端
優勢
- 1 計算機專業就業前景很好,畢業起薪都比較高(雖然現在有些人說計算機泡沫正在破碎)。
- 2 軟件工程專業學習到的開發知識可以讓你更快地融入實際開發,上手更快
弊端
- 1 學習周期短,很多科目學得很快,需要較強的學習能力
- 2 實踐不足,很容易“紙上談兵”