淺談軟體工程
對於一個沒有專案經驗的人來說,或許談軟體工程有點為之過早,不過在這裡我還是想表述下我對於軟體+工程的理解。
為什麼將軟體工程拆分為:軟體+工程,我覺得軟體是一個領域,而工程又是一個領域。現在我們把軟體和工程結合在一起,希望能夠開發出更好的軟體。在一開始學習C 語言的時候,認為一個“Hello World”就是一個軟體,不過現在我認為一個軟體應該具有市場,具有面向客戶的物件,能夠產生經濟價值。而平時我們在課堂上學的和課後練的充其量也就是個程式罷了。也就是說,一個軟體產品必須由一個完整的配置組成,軟體配置主要包括程式,文件和資料等成分。而非我們認識重視程式而忽視軟體配置的其餘成分的糊塗觀念。
現在談談工程,最初的工程我想應該是建築領域的,後來在軟體領域也引入了工程的概念。這意在說明軟體開發不是某種個體勞動的神祕技巧,而應該是一種組織良好,管理嚴密,各類人員協同配合,共同完成的工程專案。必須充分吸取和借鑑人類長期以來從事各種工程專案所積累的行之有效的原理,概念,技術和方法,特別要吸取幾十年來人類從事計算機硬體研究和開發的檢驗教訓【1
把各自的特點和聯絡說完了之後,得出了一個結論:軟體工程 = 技術 + 管理。
在最近的思考中,發現自己犯了一個很嚴重的錯誤,就是太偏重於解決問題,而缺乏分析問題的能力,在一個程式中,我知其然而不知其所以然,當程式一旦發生變化時,我就手足無措,不知道問題出在什麼地方。而更令我感到自卑的就是,同是高中畢業的同學,他也選擇的是IT,在培訓機構呆了一年之後,現在已經找到了工作,開始立足社會了,而我的專案卻不知道還在何方。這不禁令我發出一句感慨:我們讀大學究竟讀的是什麼,大學生和非大學生的區別究竟是什麼?就我們的專業而言,也許一個專門的培訓機構培養出來的人比我們更容易找到工作。那麼我們讀這個大學,學這個專業,到底應該何去何從?如果你之前問我這個問題,我肯定答不上來,不過現在我想說的就是,大學生和非大學生最主要的區別不在於是否掌握了一門專業技能。如果是這樣的話,那大學跟技校也就沒有什麼兩樣了。而且就專業技能而言,大學生肯定還比不過技校生,因為技校廚師專業的學生第一節課可能就是學切菜,而假如大學開設了廚師專業,肯定要用兩年時間來研究廚師的社會使命,職業道德,歷史演變,階級屬性和學術分類【
在談完了分析和解決問題之後,現在來給大家看一段程式碼:“
主函式(空){
有一個整型 a;
輸入(a);
如果 a 等於 5;
就輸出:你輸對了!
否則
就輸出:錯誤!
}【4】”
不知道大家看完了這個程式碼之後有一種什麼感覺,我當初看完之後我就想到了一個詞“換湯不換藥”,然後我就大聲地笑了。。。可是笑過之後我有一個疑問:為什麼在軟體領域,外國人比我們先行一步了,這都不重要,關鍵是為什麼我們和他們的差距那麼大了?為什麼我們就不能有屬於自己的程式語言,有屬於自己的作業系統了?究其歷史,文藝復興以來,源遠流長的科學精神和逐步形成的學術規範,使西方國家在自然科學的各個領域取得了壟斷性的優勢;也正是這樣的傳統,使美國的產業界與教育界越來越緊密地結合,計算機學科中的許多泰山北斗同時身處科研和教學的最前線,由此而產生的經典科學著作,不僅規劃了研究的範疇,還揭示了學術的源變,既遵循學術規範,又具有學者的個性,其價值並不會因年月的流逝而減退【5】。而我國從1991年引進網際網路,在這之前又有幾個人知道何為 http ? 我國的計算機產業迅速發展,但是又有幾家能夠走向世界,遍地開花的軟體小作坊,帶給我們的是計算機行業的繁榮,還是在這種繁榮下掩蓋的改革?猿之於為人,“學會製作和使用工具”是最重要的標誌。因而我們不知道“語言只是工具”這句話,究竟是對語言的膜拜,還是漠視。程式猿之於程式設計師,這兩者之間的鴻溝又有多大了?
【1】:張海藩 軟體工程 清華大學出版社 2010
【2】:覃彪喜 讀大學究竟讀什麼 南方日報出版社 2008
【3】:阿朱 走出軟體作坊 電子工業出版社 2009
【4】:來源於CSDN
【5】:Bruce Eckel Thinking in java Fourth Edition China Machine Press 2007