北(běi)京軟件(jiàn)開(kāi)發公司軟件(jiàn)系統開(kāi)發流程,軟件(jiàn)π÷§•開(kāi)發詳細流程軟件(jiàn)開(kāi)發是(shìδ©€)指一(yī)個(gè)軟件(jiàn)項目的(de)開φ✘(kāi)發,如(rú)市(shì)場(chǎng☆∞±♠)調查,需求分(fēn)析,可(kě)行(xíng)性分(fēn)析,初>£✘Ω步設計(jì),詳細設計(jì),形成文(wén)檔,建立初步模型,γ↔×編寫詳細代碼,測試修改,發布等。
軟件(jiàn)是(shì)怎麽樣開(kāi)→→×γ發出來(lái)的(de)?
1.市(shì)場(chǎng)調研;
2.需求分(fēn)析;
3.概要(yào)設;
4.詳細設計(jì);
5.編碼;
6.測試。
第一(yī)個(gè)步驟是(shì)市(shì)場(chǎng)Ω↔調研,技(jì)術(shù)和(hé)市(sh☆λ×∏ì)場(chǎng)要(yào)結合才能(néng)體(tǐ)現(xià® $φn)較大(dà)價值!
第二個(gè)步驟是(shì)需求分✘±σ(fēn)析,這(zhè)個(gè)階段需要(yào)出三樣東(dōng)西(↔₩xī),用(yòng)戶視(shì)圖,數(s☆®™hù)據詞典和(hé)用(yòng)戶操作(zuò)手®π✔冊。
用(yòng)戶視(shì)圖——≤•π是(shì)該軟件(jiàn)用(yòng)戶(包括終端用(yòng)戶¥≈₽↔和(hé)管理(lǐ)用(yòng)戶)₽π≥所能(néng)看(kàn)到(dào)的(de)頁面樣式,這(zhè)裡(l∑♦ǐ)面包含了(le) 很(hěn)多(duō)操作(zuò)方面的(d®Ω€e)流程和(hé)條件(jiàn)。
數(shù)據詞典——是(shì)指明β§≤(míng)數(shù)據邏輯關系并加以整理(lǐ)的(de)東(dōng)東÷∞£ (dōng),完成了(le)數(shù)≠σ"↕據詞典,數(shù)據庫的(de)設計(jì)就(ji©βù)完成了(le)一(yī)半多(duō)。 用(yòng)戶操作(Ω§βzuò)手冊是(shì)指明(míng)了(le)操ε₩€作(zuò)流程的(de)說(shuō)明(míng)書(®±→£shū)。
請(qǐng)注意!用(yòng)戶操作(zuò)流程和(hé)©✔用(yòng)戶視(shì)圖是(shì)由需求決定的(♠₽de),因此應該在軟件(jiàn)設計(jγ☆ì)之前完成,完成這(zhè)些(xiē),就(jiù)為(wèi) ←♥程序研發提供了(le)約束和(hé)準繩,如(rú)果因果颠倒,順序不(b♦π↓★ù)分(fēn),開(kāi)發工(gōng)作(zuò)和(hé♥☆)實際需求往往因此産生(shēng)隔閡脫節的(de)現(xi£₩±$àn)象。
需求分(fēn)析,除了(le)以上(shàng)工(gō→φ™∑ng)作(zuò),筆(bǐ)者以為(wèi) λ作(zuò)為(wèi)項目設計(jì)↕β 者應當完整的(de)做(zuò)出項目的(de)性能(∑εnéng)需求說(shuō)明(míng)書(shū)> (因為(wèi)往往性能(néng)需求隻有(yǒu)÷₹₹懂(dǒng)技(jì)術(shù)的(de)人(rén)才可(kěλ← )能(néng)理(lǐ)解,這(zhè♦™)就(jiù)需要(yào)技(jì)術(shù)專家(jiā)和(π≈hé)需求方(客戶或公司市(shì)場(chǎng)部門↓✘(mén))能(néng)夠有(yǒu)真正的(d€¥e)溝通(tōng)和(hé)了(le)解)。
第三個(gè)步驟是(shì)概要(yào)設計(jì),将系統功能♣₩≤(néng)模塊初步劃分(fēn),并給出合理(lǐ)的(de)研發 ↔流程和(hé)資源要(yào)求。
作(zuò)為(wèi)快(kuài)速原型設計(jì)方法,完成概≠♦γ要(yào)設計(jì)就(jiù)可(kě)以進入編碼階段了(le)↕♣₹,通(tōng)常采用(yòng)這(z÷∑∏←hè)種方法是(shì)因為(wèi)涉及的α••"(de)研發任務屬于新領域,技(jì)術(shù)主管♣↑↑人(rén)員(yuán)一(yī)上(shàng)來(lái)無法給出∑ε✘明(míng)确的(de)詳細設計(jì)♦☆說(shuō)明(míng)書(shū),但(dàn)是(shì)并不(bù)☆™是(shì)說(shuō)詳細設計(jì)說(shuō)明(míng)書₹♥ (shū)不(bù)重要(yào),事(₹σshì)實上(shàng)快(kuài)速原型法在完成原型代碼後,根據評測結≠≤≈果和(hé) 經驗教訓的(de)總結,還 ♥>®(hái)要(yào)重新進行(xíng)詳•₹←細設計(jì)的(de)步驟!
第四個(gè)步驟是(shì)詳細設計(jì),這(zhè)是(s∏↔↑hì)考驗技(jì)術(shù)專家(j∏£↕↕iā)設計(jì)思維的(de)重要(yào)關卡,詳♠×細設計(jì)說(shuō)明(míng)書(sh←♥£ū)應當把具體(tǐ)的(de)模塊以較’幹淨&r αsquo;的(de)方式(黑(hēi)箱結構)提供給編碼者,使得(de)系統整σ&體(tǐ)模塊化(huà)達到(dào)較大♦£(dà);一(yī)份好(hǎo)的(deσπ)詳細設計(jì)說(shuō)明(míng∏↔)書(shū),可(kě)以使編碼的(de)複雜(zá)性減低(dī)到(d$"ào)較低(dī),實際上(shàng),嚴格地(dì)講詳細 設計(j®↓✔ì)說(shuō)明(míng)書(shū)應當把每個(gè)函數₩€δ(shù)中的(de)每個(gè)參數(shù¥♣)的(de)定義都(dōu)詳細的(de)提供出來(lái),從♦∏ £(cóng)需求分(fēn)析到(dào)概要(yào) 設計(j ↕ì)到(dào)完成詳細設計(jì)說(shuō)明(míng)Ω$₩書(shū),一(yī)個(gè)軟件(jiàn)項目就(jiù×λ•)應當說(shuō)完成了(le)一(yī)半了(le)。換言之,一(yī♣¶™)個(gè)大(dà)型軟件(jiàn)系統在完成了(le∏<€')一(yī)半的(de)時(shí)候,其實還(hái)沒有( ↑↑yǒu)開(kāi)始一(yī)行(xíng)代碼工(gōng)作★♣£(zuò)。
那(nà)些(xiē)把作(zuò)軟件(jiàn)>±σ的(de)程序員(yuán)簡單理(lǐ)解為(wβ$èi)寫代碼的(de),就(jiù)從(cóng)根子(zǐ)上(s¶"hàng)犯了(le)錯(cuò)誤了(le)。
第五個(gè)步驟是(shì)編碼,在規範化(huà)的(de)研發γ→®流程中,編碼工(gōng)作(zuò)在←'♥↓整個(gè)項目流程裡(lǐ)較多(duō)不(bù)會(huì)♠"∞σ超過1/ 2,通(tōng)常在1/3的(de)時(shí)間(jiān✘∞),所謂磨刀(dāo)不(bù)誤砍柴功,設↔≠∏$計(jì)過程完成的(de)好(hǎo)"™,編碼效率就(jiù)會(huì)極大(dà)提 高φ☆¶(gāo),編碼時(shí)不(bù)同模塊之間(jε∞iān)的(de)進度協調和(hé)協作(zuò)是(shì)較需要(y×¶∏ ào)小(xiǎo)心的(de),也(yě)許一(yī)個(gè)小(•↓xiǎo)模塊的(de)問(wèn)題就(jiù)可₽±αδ(kě)能(néng)影(yǐng)響了(≤αle)整體(tǐ)進度,讓很(hěn)多(duō)程序員(yuán)因此被&↕迫停下(xià)工(gōng)作(zuò)等待,這(zhè)©©§種問(wèn)題在很(hěn)多(duō)研發過程中都∑¥¥(dōu)出現(xiàn)過。 編碼時(shí)的(de)相(xià ≤ng)互溝通(tōng)和(hé)應急的(de)解決手段都(dōu)是(s≤δ•hì)相(xiàng)當重要(yào)的(de),對(d•☆ §uì)于程序員(yuán)而言,bug永遠(y βuǎn)存在,你(nǐ)必須永遠(yuǎn∞♣δ→)面對(duì)這(zhè)個(gè)問(wènα®)題,大(dà)名鼎鼎的(de)微(wēi)軟,可(kě)曾有(yǒu)ε←連續三個(gè)月(yuè)不(bù)發補≥≈∞ 丁的(de)時(shí)候嗎(ma)?從(có®'ng)來(lái)沒有(yǒu)!
第六個(gè)步驟是(shì)測試
測試有(yǒu)很(hěn)多(duō)種:
按照(zhào)測試執行(xíng)方,可(kě)以♣♥$分(fēn)為(wèi)內(nèi)部測試和(hé)外(wài)部測試
按照(zhào)測試範圍,可(kě)以分(fē• ≈n)為(wèi)模塊測試和(hé)整體(tǐ)聯調
按照(zhào)測試條件(jiàn),可(kě)以分(fēnσ↓)為(wèi)正常操作(zuò)情況測試和(hé)異常¶∑情況測試
按照(zhào)測試的(de)輸入範圍,可(kě)以分(↔∞♠fēn)為(wèi)全覆蓋測試和(hé)抽樣測試
以上(shàng)都(dōu)很(hěn)好(hǎo)理(lǐ)解,不≠¥<(bù)再解釋。
總之,測試同樣是(shì)項目研發中一(yī)個(gè)相(xiànδ§g)當重要(yào)的(de)步驟,對(duì)于一(yī)☆€₽≤個(gè)大(dà)型軟件(jiàn),3個(gè)↔←月(yuè)到(dào)1年(nián)的(de)外(wài)部測試都(dōu÷α¥)是(shì)正常的(de),因為(wèi)永遠(yuǎn)都∞$£(dōu)會(huì)又(yòu)不(bù)可(kě)預料的(de)₹'問(wèn)題存在。
完成測試後,完成驗收并完成較後的(de)一(yī)些(xiē)幫助文(→π♠wén)檔,整體(tǐ)項目才算(suànΩ₩ )告一(yī)段落,當然日(rì)後少(shǎo<↔)不(bù)了(le)升級,修補等等工(gōng)作(zuò),隻要(yà∏≤™o)不(bù)是(shì)想通(tōng)過一(yī)錘子(zǐ)買賣×≠♣騙錢(qián),就(jiù)要(yào)不(bù)停λ≈↑♠的(de)跟蹤軟件(jiàn)的(de)運營狀況并持≠≥>λ續修補升級,直到(dào)這(zhè)個♠Ω(gè)軟件(jiàn)被徹底淘汰為(wèi)止。
什(shén)麽是(shì)軟件(jiàn)開(©©kāi)發的(de)核心問(wèn)題
按照(zhào)軟件(jiàn)工(gōng)程鼻祖,《人(rén)月β✔(yuè)神話(huà)》作(zuò)者 Brooks 在“沒有(Ω<§≤yǒu)銀(yín)彈——軟件(jiàn)工(gōng↔"✘←)程中的(de)根本和(hé)次要(yào)問(w λèn)題”一(yī)章(zhān∑∞ •g)中闡述的(de)思想,軟件(jiàn)開(kāi)發的(de)核心問(w™♠èn)題就(jiù)是(shì)如(rú)何從 ♠(cóng)概念上(shàng)對(duì)一(yī)個('₹✘→gè)複雜(zá)的(de)業(yè)務系統進行(xíng)"→建模。這(zhè)個(gè)建模是(shì)含義廣泛的(de),不(bβù)僅僅包括對(duì)象建模,還(hái)包括數(shù)據建模、算(suà$≠n)法建模等等一(yī)系列的(de)內•↔ε(nèi)容。總而言之是(shì)要(y✘ €€ào)先找到(dào)解決複雜(zá)問(wèn)題的™₩α(de)突破口(先要(yào)搞明(míng)白¶↑☆(bái)需要(yào)做(zuò)什(shén)麽∏★®,然後再考慮如(rú)何做(zuò))。至于采用(yòng)什(shén)麽表↔ ∞示方法(簡單文(wén)本、UML 圖、E-R 圖)、采用(yòng)什(sh☆"γ₩én)麽高(gāo)級語言、是(shì)否一(yī)定要(yàoπ→α♠)用(yòng)面向對(duì)象、使用(yòng)什(shén)麽π↔開(kāi)發工(gōng)具都(dōu)是(shì)次要(yào> )的(de)問(wèn)題。
軟件(jiàn)開(kāi)發方法
軟件(jiàn)開(kāi)發方法(Software Developm™↕ent Method)是(shì)指軟件(✘φ≈≥jiàn)開(kāi)發過程所遵循的(de)±γ ¥辦法和(hé)步驟。 軟件(jiàn)開(kāi)發活動的(de)目的(de)®₽£&是(shì)有(yǒu)效地(dì)得(de)到ε£®(dào)一(yī)些(xiē)工(gōng)作(zuò£↑)産物(wù),也(yě)就(jiù)是(shì)一(yī)個(gè)運行(xσ✔σ☆íng)的(de)系統及其支持文(wénγ♦)檔,并且滿足有(yǒu)關的(de)質量要(yào)求。軟件(jiàn)開(•σkāi)發是(shì)一(yī)種非常複雜(zá)的(de)腦(nǎo)力勞動"÷$",所以經常更多(duō)討(tǎo)論的(de)₹λ是(shì)軟件(jiàn)開(kāi)發方法學,指的(de)是(shìδ☆βε)規則、方法和(hé)工(gōng)具的(de)集成,既§✘§支持開(kāi)發,也(yě)支持以後的Ω₹±(de)演變過程(交付運行(xíng)後,系統還(hái)會(huì)變化(₹₽₽huà),或是(shì)為(wèi)了(le)改錯(cuò),或是(shì)∞π為(wèi)了(le)功能(néng)的(de)增減)。
關于組成軟件(jiàn)開(kāi)&₩φ發和(hé)系統演化(huà)的(de)活動有(yǒu>♣)著(zhe)各種模型(參見(jiàn)軟件(∏♥jiàn)生(shēng)存周期,軟件(jiàn)開(kāi♣↕)發模型,軟件(jiàn)過程),但(dàn)是(shì)典型地(dì)都(d ©ōu)包含了(le)以下(xià)的(de)過程或活動:分(fēn)析、設βδ計(jì)、實現(xiàn)、确認(測試驗收)、演化(huà)(維護)。
有(yǒu)些(xiē)軟件(jiàn)開(kāiφ ®¶)發方法是(shì)專門(mén)針對(duì)某一(yī)開(kā≥φ≈i)發階段的(de),屬于局部性的(de)軟件(ji∑σ±àn)開(kāi)發方法。
特别是(shì)軟件(jiàn)開(kāi)發的(de)實踐表明(₩✔♥♠míng),在開(kāi)發的(de)早期階段多(duō)做(zuò)Ω₹φ✔努力,在後來(lái)的(de)測試和(hé↕')維護階段就(jiù)會(huì)使費(fèi)用(yò®®♣ng)較大(dà)地(dì)得(de)以 '✘縮減。因此,針對(duì)分(fēn)析和(₹$←₹hé)設計(jì)階段的(de)軟件(jiàn)開(kāi)發方法¥π¥特别受到(dào)重視(shì)。其它階段的♦'¥(de)方法,從(cóng)程序設計(jì)發展的✘←₽↕(de)初期起就(jiù)是(shì)研究的(de)重點,已經發展得(d ☆e)比較成熟(參見(jiàn)程序設計(jì),維護過程)。除了(lεe)分(fēn)階段的(de)局部性軟件(jiàn)開(kλ'āi)發方法之外(wài),還(hái)有(yǒu)覆蓋開(kāi)發全÷≥ε×過程的(de)全局性方法,尤為(wèi)軟件(jπ✔βiàn)開(kāi)發方法學注意的(de)重點。
對(duì)軟件(jiàn)開(kāi)發方法>←的(de)一(yī)般要(yào)求:
當提出一(yī)種軟件(jiàn)開(kāi)發方法時(shí÷≠±),應該考慮許多(duō)因素,包括:
①覆蓋開(kāi)發全過程,并且便于在各階↕↔段間(jiān)的(de)過渡;
②便于在開(kāi)發各階段中有(yǒu)關人($ $rén)員(yuán)之間(jiān)的(de)通(®✘tōng)信;
③支持有(yǒu)效的(de)解決問(wèn)題的(de)
④支持系統設計(jì)和(hé)開(kāi)發的(d☆✔♠e)各種不(bù)同途徑;
⑤在開(kāi)發過程中支持軟件(jiàn)正确性的(de)校(xiào∏↕)驗和(hé)驗證;
⑥便于在系統需求中列入設計(jì)、實際和(hé)性能(néng)的€←₩♦(de)約束;
⑦支持設計(jì)師(shī)和(hé)其他(tā)λΩ技(jì)術(shù)人(rén)員(yuán∞≥)的(de)智力勞動;
⑧在系統的(de)整個(gè)生(shēng)存周期都(dōu)支持它的☆β<↔(de)演化(huà);
⑨受自(zì)動化(huà)工(gōn∞<↓g)具的(de)支持。
此外(wài),在開(kāi)發的('↑de)所有(yǒu)階段,有(yǒu)關的(de)軟件(ji₹♥βàn)産物(wù)都(dōu)應該是(shì)可(kě)見(jiàn)∑和(hé)可(kě)控的(de);軟件(jiàn)開(kāi)發方法應該可(≥ε↑kě)教學、可(kě)轉移,還(hái)應該是(shì☆α→¥)開(kāi)放(fàng)的(de),即可(kě)以容納新的(de)技(jì¶★<)術(shù)、管理(lǐ)方法和(hé)新工(gōng)具,并且與已有↓"α(yǒu)的(de)标準相(xiàng)适應。