軟體工程的歷史雖然說只有短短的四十多年時間
(1968
年提出),
但是軟體工程的主體
– 人類
– 已經出現在世界上好些年了。
人還是那些人,事兒還是那些事兒
,好的,壞的,可笑的模式同樣會出現。
我看到同學們在分析前面的學生的軟體專案的時候,
(link1
, link2
)我不禁想起乙個相聲
– 畫扇面。
我們不妨拿它和軟體工程做個比較
:畫扇面
做軟體工程團隊專案
相聲是一門說學逗唱的藝術… 甲
: 我剛買了一把紙扇乙:
哦,拿來看看,一把白紙扇
… 上面空空如也太可惜,拿不出手啊。
如果能畫上畫就更好了。
我這幾天也沒什麼事
, 我就給你免費畫畫!
軟體工程講究的是需求分析
, 專案管理
, 開發
, 測試和維護…甲
: 我覺得咱們團隊專案做乙個好用的小工具就好了
,我已經做好了乙個原型。乙:
這想法固然好
,但是我們這麼些個程式設計高手
, 就做這麼小的乙個工具
, 未免拿不出手。我們要把它搞大!甲:
太好了,您能畫什麼? 乙
: 畫個美女圖怎麼樣
? 美女出浴圖
, 或美女春遊圖都可以考慮。甲:
我激動ing…甲:
那我們做什麼呢?乙
: 我們擴充套件一下
, 把所有工具都實現了,一統天下。幾種工具結合起來!甲
: 我激動
ing…
過了幾天
, 甲問
: 我那美女畫好了麼?乙
: 喔,美女
, 畫好了!你看這美女的小臉蛋兒
, 眼睛稍稍大了點…但是
, 我不如給你改成張飛算了!都是人體
,我可以很快重構一下
, 我畫張飛最拿手了,過幾天就好。
過了幾周…甲
: 通過調研才發現
, 這麼多工具都有自己獨特的需求
, 不同需求互相衝突,不好協調, 怎麼辦? 乙
: 我們可以做成乙個通用的工具,統一需求
, 解決使用者從頭到尾的問題。
過了幾天...
甲問:
我那張飛?
乙:張飛?!
喔對的,
張飛也畫得差不多了, 嗯
, 你看這張飛的鬍子,
這身軀…
是粗了點
… 要不咱們畫成山水,這張飛,這張飛... 馬上就可以變成一塊怪石!
甲: 大熱天的我等這扇子... 我容易嗎...
過了幾周… 甲
: 通用的工具聽上去很好
,但是太通用了
, 不好掌握,我們到底要實現哪些具體功能呢?乙
: 我們可以做成乙個開放式的平台!這樣所有人都可以做乙個外掛程式
, 來實現這個平台的一些功能!而且別人還可以用我們這乙個通用的框架開發任意別的軟體。你想想 -任意軟體啊! 甲:
我激動,不過我們軟工課快要結束了, 要交作業啊
…過了幾天, 甲
: 我那山水? 乙
: 啊,山水
…我也畫好了。
你看那巨石,很巨大
, 很給力吧
… 構圖有點那啥
… 容我再改改。甲:
您什麼時候畫好
? 這夏天都快過了!
乙: 嗯, 我的山水畫還是有些宋人風格的... 假以時日... 如果你急著要用扇子,
這樣吧,我把扇面全塗黑了
,
你再找人往上寫金字好了!
過了幾周… 甲
: 專案發布時間到了
, 我們的平台還沒有,工具還沒連起來,怎麼辦?乙
: 咱們可以把專案開源到網上
, 另外也許有很多開源的朋友閒的沒事,
可以給我們的**寫一些注釋等等。這是我們對開源運動作的巨大貢獻, 輸出價值觀, 這可不是每個程式設計師都能做到的啊。
甲: 那期末怎麼交差啊?
乙: 趕緊寫 ppt!
很多學生學了一些程式語言, 讀了一些技術部落格, 一般都豪情萬丈. 他們做乙個專案恨不得展現自己平生所學, 再加上前沿技術, 做乙個轟動性的創新。 這固然值得鼓勵, 但是經驗顯示, 這些往往都不能成功。
我們看看成功的例子, 他們是怎麼開始的, 例如linux 剛開始的時候:
i'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) at clones... (source
)
我們還看到管理學大師 peter drucker 的忠告 –
those entrepreneurs who start out with the idea that they'll make it big – and in a hurry – can be guaranteed failure. (source)
軟體工程之軟體工程管理
乙個好的工程需要配套的管理體系,軟體工程也不列外。軟體工程就我的理解就是對軟體工程的各個階段都一定規範,俗話說 不以規矩,不能成方圓 而這個規矩就由管理來充當。乙個軟體工程管理需要軟體專案計畫 成本估算 進度計畫 風險分析和人員的組織形式 或調動 一 在軟體專案計畫中,專案的任務是研究專案的效能 功...
軟體工程之軟體工程的概述
最近在學軟體工程,但工程分為好多種,那麼怎樣認識這些工程,什麼是軟體?什麼是工程?軟體工程和其他工程的區別又是什麼?軟體 程式設計的最終結果是軟體。軟體是使用者與硬體之間的介面介面。使用者主要是通過軟體與計算機進行交流。軟體是計算機系統設計的重要依據。為了方便使用者,為了使計算機系統具有較高的總體效...
軟體工程之怎麼理解軟體工程
軟體工程學習第二篇,什麼是軟體工程?隨著軟體規模越來越大,複雜度不斷增加,在軟體專案開發和維護的過程中逐漸暴露出來了一些問題,如 軟體產品質量低劣 維護工作量大 成本不斷上公升,進度不可控 程式人員無限度的增加 增加人員並沒有按時交付 軟體危機 這一概念被提了出來。而軟體工程是為了研究和克服軟體危機...