您好,登錄后才能下訂單哦!
Advanced Software Engineering 現(xiàn)代軟件工程 講義
介紹: 個(gè)人軟件流程, 職業(yè)發(fā)展, 個(gè)人績(jī)效的衡量和提高, 軟件開(kāi)發(fā)是科學(xué), 工程, 手藝, 或是藝術(shù)?
我們剛講了軟件工程, 它包括了什么呢?
軟件工程包括了開(kāi)發(fā),運(yùn)營(yíng), 維護(hù)軟件的過(guò)程中有很多技術(shù), 做法, 習(xí)慣, 和思想。軟件工程把這些相關(guān)的技術(shù)和過(guò)程統(tǒng)一到一個(gè)體系中, 叫 “軟件開(kāi)發(fā)流程”,軟件開(kāi)發(fā)流程的目的是為了提高軟件開(kāi)發(fā), 運(yùn)營(yíng), 維護(hù)的效率,以及用戶滿意度, 可靠性,和軟件的可維護(hù)性。 |
軟件開(kāi)發(fā)流程不光指團(tuán)隊(duì)的流程, 軟件團(tuán)隊(duì)是由個(gè)人組成的。在團(tuán)隊(duì)的大流程中, 是每一個(gè)具體的個(gè)人在做開(kāi)發(fā),測(cè)試,用戶界面設(shè)計(jì),管理,交流等工作。因此, 個(gè)人在軟件團(tuán)隊(duì)中也有個(gè)人的流程。
個(gè)人的勞動(dòng)成果有序地組織起來(lái), 就是團(tuán)隊(duì)的流程。這里說(shuō)的“有序”, 并不是“無(wú)爭(zhēng)論”, 在大部分成功的軟件團(tuán)隊(duì)模型中, 各個(gè)角色(開(kāi)發(fā), 測(cè)試, 項(xiàng)目管理等)考慮問(wèn)題的出發(fā)點(diǎn)是有區(qū)別的, 不同意見(jiàn)的沖突在所難免, 一個(gè)好的團(tuán)隊(duì)流程能把沖突的積極方面 (各自盡力把自己的工作做好,說(shuō)服別人) 釋放出來(lái),而避免消極方面 (因?yàn)闆_突而產(chǎn)生的消極,抵觸情緒等)。
我們用足球作一個(gè)比喻: 足球中有沒(méi)有個(gè)人流程? 當(dāng)然有, 職業(yè)球隊(duì)對(duì)于運(yùn)動(dòng)員有很嚴(yán)格的要求: 例如:
體能, 技術(shù), 意識(shí), 斗志
具體技術(shù)有傳接,盤(pán)帶,射門(mén), 定位球, 跑位, 等。一些特定的角色(守門(mén)員)還有獨(dú)特的技術(shù)要求。
足球的團(tuán)隊(duì)有沒(méi)有流程? 當(dāng)然有:
陣型, 配合, 臨場(chǎng)應(yīng)變
足球隊(duì)有不少 “陣型” (442, 433, 451和它們的各種變體, 等等) 和打法 (南美,歐洲,技術(shù),力量, 小快靈, 搶逼圍, 兩翼齊飛, 全攻全守, 等等).
盡管有這么多理論, 足球的每一次盤(pán)帶, 傳球, 跑動(dòng), 射門(mén),撲救,都是單個(gè)運(yùn)動(dòng)員完成的。 如果單個(gè)運(yùn)動(dòng)員的技術(shù), 體能不行, 無(wú)論是什么陣型用處都不大,有些陣型反而會(huì)起反作用, 例如, 讓體力弱的球隊(duì)去打全攻全守。
軟件也是這樣。
軟件系統(tǒng)的絕大部分模塊都是由個(gè)人開(kāi)發(fā)或維護(hù)的。在軟件工程的術(shù)語(yǔ)中, 我們把這些單個(gè)的成員叫做 Individual Contributor (IC).
IC 在團(tuán)隊(duì)中的流程是怎么樣的呢? 我們以開(kāi)發(fā)人員為例:
理解問(wèn)題或任務(wù)
提出多種解決辦法并估計(jì)工作量
其中包括尋找以前的解決方案,因?yàn)楹芏喙ぷ魇侵貜?fù)性的 – 例如實(shí)現(xiàn)某些類似的web頁(yè)面。
與相關(guān)角色交流解決問(wèn)題的提案, 決定最終方案
執(zhí)行, 把想法變成實(shí)際中能工作的代碼
修復(fù)缺陷, 對(duì)結(jié)果負(fù)責(zé)
每個(gè)人的工作質(zhì)量直接影響最終軟件的質(zhì)量。
作為一個(gè)軟件工程師, 你覺(jué)得自己表現(xiàn)如何? 有沒(méi)有這樣的體會(huì):
看書(shū)的時(shí)候覺(jué)得“技止此耳”,開(kāi)發(fā)項(xiàng)目的時(shí)候才覺(jué)得實(shí)際情況和書(shū)上講的都有一些出入,一些重要的細(xì)節(jié)書(shū)上沒(méi)有提。我們很多人是邊看asp.net的書(shū), 邊開(kāi)發(fā)asp.net 的項(xiàng)目,這相當(dāng)于一邊看醫(yī)學(xué)書(shū)一邊動(dòng)手術(shù)。。。
如果你是病人, 你希望你的醫(yī)生是下面的那一種呢?
a) 剛剛在書(shū)上看到你的病例, 開(kāi)刀的過(guò)程中非常認(rèn)真嚴(yán)謹(jǐn), 時(shí)不時(shí)還要停下來(lái)翻書(shū)看看…
b) 富有創(chuàng)新意識(shí), 開(kāi)刀時(shí)突然想到一個(gè)新技術(shù), 新的刀法, 然后馬上在你身上試驗(yàn)…
c) 已經(jīng)處理過(guò)很多類似的病例, 可以一邊給你開(kāi)刀, 一邊和護(hù)士聊天說(shuō)昨天晚上放的 《非誠(chéng)勿擾》的花絮…
d) 此醫(yī)生無(wú)正式文憑或醫(yī)院, 但是號(hào)稱有秘方, 可治百病。
e) 還有這一類, 給你開(kāi)刀到一半的時(shí)候, 出去玩去了, 快下班的時(shí)候, 他們匆匆趕回來(lái), 胡搞一氣, 給你再縫好, 打了很多麻藥,就把你送出了院, 說(shuō)“治好了”!
事實(shí)上, 很多軟件項(xiàng)目就是用 a) b) 這樣的方法搞出來(lái)的。當(dāng)然也有一些人走 d) 這條路。 e) 這一種可以在很多大學(xué)生軟件大作業(yè)上看到例子。
如果我可以選擇, 我要選 c) 那樣的醫(yī)生。
職業(yè)成長(zhǎng)– Steve McConnell 版本:
Steve McConnell 創(chuàng)立的公司 (Construx Software) 為員工提供了下面的成長(zhǎng)路徑。
知識(shí):把相關(guān)的軟件知識(shí)分為十大知識(shí)領(lǐng)域。
能力:一個(gè)工程師對(duì)這些知識(shí)的掌握分為如下四個(gè)階段:
入門(mén) (Introductory); 熟練 (Competency); 帶頭人 (Leadership); 大師 (Mastery)
職業(yè)成長(zhǎng)級(jí)別 (Professional Development Ladder):
把工程師分為6個(gè)級(jí)別 ( 9 – 15) 每一個(gè)工程師屬于一個(gè)技術(shù)等級(jí)。一個(gè)工程師要從一個(gè)級(jí)別升到另一個(gè)級(jí)別, 需要在各方面達(dá)到一定的要求。例如, 要達(dá)到 level12 ,工程師必須在三個(gè)知識(shí)領(lǐng)域達(dá)到“帶頭人”水平。 例如要到達(dá)“工程管理 (知識(shí)領(lǐng)域) 的熟練 (能力)”水平,工程師必須要做到以下幾點(diǎn):
· 閱讀: 4-6 個(gè)經(jīng)典文獻(xiàn)的深入分析和閱讀
· 工作經(jīng)驗(yàn): 要參與并完成6 個(gè)具體的工作
· 課程:要參加3 個(gè)專門(mén)的課程
有些水平還要求工程師獲得某種專業(yè)證書(shū),在工業(yè)界,教育界教課, 發(fā)表論文等等。
微軟公司針對(duì)軟件工程師的職業(yè)發(fā)展也有很完備的規(guī)劃和支持。這方面的資料比較多, 這里簡(jiǎn)單地以軟件開(kāi)發(fā)工程師為例說(shuō)明一下。 下面的解釋部分來(lái)自于 Eric Brechner 的書(shū)– Hard Code (link)
SDE (初級(jí)軟件開(kāi)發(fā)工程師)
入門(mén)。在學(xué)校里學(xué)到了一些技能, 但是還沒(méi)有在實(shí)踐中得到充分鍛煉。
SDE II (中級(jí)軟件開(kāi)發(fā)工程師)
獨(dú)立。可以寫(xiě)別人交給你的任何東西。如果你不懂, 你知道去問(wèn)誰(shuí)。
Senior SDE (高級(jí)軟件開(kāi)發(fā)工程師)
小組領(lǐng)導(dǎo)。影響著3 – 12 個(gè)工程師, 或者是他們的行政領(lǐng)導(dǎo); 或者是他們的技術(shù)帶頭人。怎么顯示領(lǐng)導(dǎo)力呢? 這有幾個(gè)例子:
· 你當(dāng)過(guò)新員工的導(dǎo)師么? 他們后來(lái)都尊重你的種種教誨么?
· 你是否成為別人的榜樣? (寫(xiě)的代碼, 做的設(shè)計(jì), 別人可以拿來(lái)重用)
· 你在招人方面是否有心得, 并言傳身教, 讓大家都認(rèn)識(shí)到面試的重要性和各種技巧。
· 你是否創(chuàng)立/改進(jìn)/推動(dòng)一些流程, 而且這些流程不需要你親自參與,也能流傳下去?
· 在和別的角色 (例如, UX/PM/QA) 打交道的時(shí)候, 你往往都能贏得別人的支持, 而不是和別人爭(zhēng)執(zhí), 抱怨不休?
Principal SDE (首席軟件開(kāi)發(fā)工程師)
團(tuán)隊(duì)領(lǐng)導(dǎo)。影響著12 人以上的一個(gè)大團(tuán)隊(duì), 成為影響團(tuán)隊(duì)成敗的關(guān)鍵人物。
Partner SDE, Distinguished Engineer, Technical Fellow
影響力擴(kuò)大到整個(gè)機(jī)構(gòu),甚至工業(yè)界。
IT業(yè)界的不少專家也對(duì)于程序員的成長(zhǎng)提出了不少好的建議. 例如:
這本書(shū)的副標(biāo)題是“from journeyman to master”,從打下手的小工到大師。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。