版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(建筑工程管理)軟件工程第壹章軟件工程基本觀念本章講述軟件工程的基本觀念,是關(guān)于軟件工程宏觀上的探討。如果你是軟件公司的老板,用不著于第壹線工作,那么見這壹章就夠了。但你壹定要讓員工們相信不停地工作是人生最大的快樂,且且讓他們把本書見完。壹些不正確的觀念,取材于早期軟件人員比較幼稚的想法,初學(xué)者能夠引以為戒。1.4節(jié)探討壹些有爭(zhēng)議的觀念。見完本章,要樹立這樣的信念:軟件開發(fā)過程中的坎坎坷坷,仿佛只是人臉的凹凸不平,用熱水毛巾壹把就可抹平。讓我們高舉程序主義、軟件工程思想的偉大旗幟,緊密團(tuán)結(jié)程,把建設(shè)有中國(guó)特色的軟件產(chǎn)業(yè)的偉大事業(yè)全面推向21世紀(jì)。軟件工程的目標(biāo)是提高軟件的質(zhì)量和生產(chǎn)率,最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。質(zhì)量是軟件需求方最關(guān)心的問題,用戶即使不圖物美價(jià)廉,也要求個(gè)貨真價(jià)實(shí)。生產(chǎn)率是軟件供應(yīng)方最關(guān)心的問題,老板和員工均想用更少的時(shí)間掙更多的錢。質(zhì)量和生產(chǎn)率之間有著內(nèi)于的聯(lián)系,高生產(chǎn)率必須以質(zhì)量合格為前提。如果質(zhì)量不合格,對(duì)供需雙方均是壞事情。從短期效益見,追求高質(zhì)量會(huì)延長(zhǎng)軟件開發(fā)時(shí)間且且增大費(fèi)用,似乎降低了生產(chǎn)率。從長(zhǎng)期效益見,高質(zhì)量將保證軟件開發(fā)的全過程更加規(guī)范流暢,大大降低了軟件的維護(hù)代價(jià),實(shí)質(zhì)上是提高了生產(chǎn)率,同時(shí)可獲得很好的信譽(yù)。質(zhì)量和生產(chǎn)率之間不存于根本的對(duì)立,好的軟件工程方法能夠同時(shí)提高質(zhì)量和生產(chǎn)率。軟件供需雙方的代表能于餐桌上談笑風(fēng)生,歸功于第壹線開發(fā)人員的辛勤工作。質(zhì)量和生產(chǎn)率的提高就指望程序員和程序經(jīng)理。對(duì)開發(fā)人員而言,如果非得于質(zhì)量和生產(chǎn)率之間分個(gè)主次不可,那么應(yīng)該是質(zhì)量第壹,生產(chǎn)率第二。這是因?yàn)椋?1)質(zhì)量直接體當(dāng)下軟件的每段程序中,高質(zhì)量自然是開發(fā)人員的技術(shù)追求,也是職業(yè)道德的要求。(2)高質(zhì)量對(duì)所有的用戶均有價(jià)值,而高生產(chǎn)率只對(duì)開發(fā)方有意義。(3)如果壹開始就追求高生產(chǎn)率,容易使人急功近利,留下隱患。寧可進(jìn)度慢些,也要保證每個(gè)環(huán)節(jié)的質(zhì)量,以圖長(zhǎng)遠(yuǎn)利益。軟件的質(zhì)量因素很多,如正確性,性能、可靠性、容錯(cuò)性、易用性、靈活性、可擴(kuò)充性、可理解性、可維護(hù)性等等。有些因素相互重疊,有些則相抵觸,真要提高質(zhì)量可不容易??!軟件工程的主要環(huán)節(jié)有:人員管理、項(xiàng)目管理、可行性和需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)。人員管理 軟件工程模型建議用壹定的流程將各個(gè)環(huán)節(jié)連接起來(lái),且可用規(guī)范的方式操作全過程,如同工廠的生產(chǎn)線。常見的軟件工程模型有:線性模型(圖1.2),漸增式模型(圖1.3),螺旋模型,快速原型模型,形式化描述模型等等[Pressmam1999,Sommerville1992]。設(shè)計(jì)系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)進(jìn)度最早出現(xiàn)的軟件工程模型是線性模型(又稱瀑布模型)。線性模型太理想化,太單純,已不再適合現(xiàn)代的軟件開發(fā)模式,幾乎被業(yè)界拋棄。偶而被人提起,均屬于被貶對(duì)象,未題時(shí),總是千方百計(jì)地將其分解或轉(zhuǎn)化為壹系列簡(jiǎn)單的線性問題,然后逐個(gè)解決。壹個(gè)軟件系統(tǒng)的整體可能是復(fù)雜的,而單個(gè)子程序總是簡(jiǎn)單的,能夠用線性的方式來(lái)實(shí)現(xiàn),否則干活就太累了。線性是壹種簡(jiǎn)潔,簡(jiǎn)潔就是美。當(dāng)我們領(lǐng)會(huì)了線性的精神,就不要再呆板地套用線性模型的外表,而應(yīng)該用活它。例如漸增式模型實(shí)質(zhì)就是分段的線性模型,如圖1.3所示。螺旋模型則是接連的彎曲了的線性模型。于其它模型中均能夠找到線性模型的影子。以為程序設(shè)計(jì)于先,測(cè)試于后,如圖1.4(a)所示。而對(duì)于壹些復(fù)雜的程序,將測(cè)試分為同步測(cè)試和總測(cè)試更有效,如圖1.4(b)所示。同步測(cè)試 (a)(b)圖1.4(a)程序設(shè)計(jì)于先測(cè)試于后(b)測(cè)試分為同步測(cè)試和總測(cè)試不論是什么軟件工程模型,總是少不了圖1.1中的各個(gè)環(huán)節(jié)。本書擗開具體的軟件工程模型,順序講述人員管理、項(xiàng)目管理、可行性和需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè)試,以及維護(hù)和再生工程。其中程序設(shè)計(jì)部分以C++/C語(yǔ)言為例。人們均有自己的世界觀和方法論,能自然而然地運(yùn)用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會(huì)無(wú)形地支配其怎么去做事情。軟件工程三十年的發(fā)展,已經(jīng)積累了相當(dāng)多的方法,但這些方法不是嚴(yán)密的理論。實(shí)踐人員不應(yīng)該教條地套用方法,更重的祖先就于打鬧之際寫下了很多心得體會(huì),被現(xiàn)代人很好地運(yùn)用于工業(yè)和商業(yè)。本節(jié)講存于構(gòu)件不存于程序2存于構(gòu)件不存于程序2也能夠是無(wú)形的成果。復(fù)用不是人類懶惰的表現(xiàn)而是智慧的表現(xiàn)。因?yàn)槿祟惪偸怯诶^承了前人的成果,不斷加以利用、改進(jìn)或創(chuàng)新后才會(huì)進(jìn)步。所以當(dāng)我們歡度國(guó)慶時(shí),要搞清楚祖國(guó)遠(yuǎn)不止50歲,我們今天享用到的財(cái)富仍有上下五千年人民的貢獻(xiàn)。進(jìn)步只是應(yīng)該的,不進(jìn)步則就可恥了。復(fù)用的內(nèi)涵包括了提高質(zhì)量和生產(chǎn)率倆者。由經(jīng)驗(yàn)可知,于壹個(gè)新系統(tǒng)中,大部分的內(nèi)容是成熟的,只有小部分內(nèi)容是創(chuàng)新的。壹般地能夠相信成熟的東西總是比較可靠的(即具有高質(zhì)量),而大量成熟的工作能夠通過復(fù)用來(lái)快速實(shí)現(xiàn)(即具有高生產(chǎn)率)。勤勞且且聰明的人們應(yīng)該把大部分的時(shí)間用于小比例的創(chuàng)新工作上,而把小部分的時(shí)間用于大比例的成熟工作中,這樣才能把工作做得又快又好。把復(fù)用的思想用于軟件開發(fā),稱為軟件復(fù)用。據(jù)統(tǒng)計(jì),世上已有1000億多行程序,無(wú)數(shù)功能被重寫了成千上萬(wàn)次,真是浪費(fèi)哪。面向?qū)ο?ObjectOriented)學(xué)者的口頭禪將具有壹定集成度且能夠重復(fù)使用的軟件組成單元稱為軟構(gòu)件(SoftwareComponent)。軟件復(fù)用能夠表述為:構(gòu)造新的軟件系統(tǒng)能夠不必每次從零做起,直接使用已有的軟構(gòu)件,即可組裝(或加以合理修改)成新的系統(tǒng)。復(fù)用方法合理化且簡(jiǎn)化了軟件開發(fā)過程,減少了總的開發(fā)工作量和維護(hù)代價(jià),既降低了軟件的成本又提高了生產(chǎn)率。另壹方面,由于軟構(gòu)件是經(jīng)過反復(fù)使用驗(yàn)證的,自身具有較高的質(zhì)量。因此由軟構(gòu)件組成的新系統(tǒng)也具有較高的質(zhì)量。利用軟構(gòu)件生產(chǎn)應(yīng)用軟件的過程如圖1.5所示。人拿去方便,是“拿來(lái)拿去主義”。面向?qū)ο蠓綇?fù)用。定義所需構(gòu)件集合軟件的過程分而治之是指把壹個(gè)復(fù)雜的問題分解成若干個(gè)簡(jiǎn)單的問題,然后逐個(gè)解決。這種樸素的思想來(lái)源于人們生活和工作的經(jīng)驗(yàn),完全適合于技術(shù)領(lǐng)域。軟件人員于執(zhí)行分而治之的時(shí)候,應(yīng)該著重考慮:復(fù)雜問題分解后,每個(gè)問題能否用程序?qū)崿F(xiàn)?所有程序最終能否集成為壹個(gè)軟件系統(tǒng)且有效解決原始的復(fù)雜問題?解決原始問題子問題1分解集成圖1.6表示了軟件領(lǐng)域的分而治之策略。諸如軟件的體系結(jié)構(gòu)設(shè)計(jì)、模塊化設(shè)計(jì)均是分揮刀斬成n塊,再把每塊塞進(jìn)嘴里粉碎攪拌,然后交由胃腸來(lái)消化吸收,象征復(fù)雜問題的西瓜或是雞也就此消失了。軟件的優(yōu)化是指優(yōu)化軟件的各個(gè)質(zhì)量因素,如提高運(yùn)行速度,提高對(duì)內(nèi)存資源的利用率,使用戶界面更加友好,使三維圖形的真實(shí)感更強(qiáng)等等。想做好優(yōu)化工作,首先要讓開發(fā)人員均有正確的認(rèn)識(shí):優(yōu)化工作不是可有可無(wú)的事情,而是必須要做的事情。當(dāng)優(yōu)化工作成為壹種責(zé)任時(shí),程序員才會(huì)不斷改進(jìn)軟件中的算法,數(shù)據(jù)結(jié)構(gòu)和程序組織,從而提高軟件質(zhì)量。Quake的開發(fā)者能把很多成熟的圖形技術(shù)發(fā)揮到極致,例如把Bresenham畫線、多邊形裁剪、樹遍歷等算法的速度提高近壹個(gè)數(shù)量級(jí)。我第壹次見到Quake時(shí)不僅感到震動(dòng),而且深受打擊。這個(gè)PC游戲軟件的技術(shù)水平已經(jīng)遠(yuǎn)勝于我所見識(shí)到的國(guó)內(nèi)領(lǐng)先的圖形學(xué)關(guān)聯(lián)科研成果。這對(duì)我們?nèi)找媸⑿械狞c(diǎn)到完止的研發(fā)工作真是莫大的諷刺。所以當(dāng)我們開發(fā)的軟件表現(xiàn)出很多不可救藥的病癥時(shí),不要怨機(jī)器差。真的是我們自己沒有把工作做好,寫不好字卻嫌筆鈍。就假設(shè)我們經(jīng)過思想教育后,精神抖擻,隨時(shí)準(zhǔn)備為優(yōu)化工作干上六天七夜。但愿意做且不意味著就能把事情做好。優(yōu)化工作的復(fù)雜之處是很多目標(biāo)存于千絲萬(wàn)縷的關(guān)系,可謂數(shù)不清理仍亂。當(dāng)不能夠使所有的目標(biāo)均得到優(yōu)化時(shí),就需要“折衷”策略。軟件中的折衷策略是指通過協(xié)調(diào)各個(gè)質(zhì)量因素,實(shí)現(xiàn)整體質(zhì)量的最優(yōu)。就象黨支部副書記扮演和事佬的角色:“…為了使整個(gè)組織具有最好的戰(zhàn)斗力,我們要重用幾個(gè)人,照顧壹些人,于萬(wàn)不得已的情況下委屈壹批人”。鍵的職能,更不能夠象“舍魚而取熊掌”那樣拋棄壹方。例如3D動(dòng)畫軟件的瓶頸通常是速度,但如果為了提高速度而于程序中取消光照明計(jì)算,那么場(chǎng)景就會(huì)喪失真實(shí)感,3D動(dòng)畫也就不再有意義了(如果人類全是色盲,計(jì)算機(jī)圖形學(xué)將變得異常簡(jiǎn)單)。人均有惰性,如果允許濫用折衷的話,那么壹當(dāng)碰到困難,人們就會(huì)用拆東墻補(bǔ)西墻的方式去折衷,不再下苦功去做有意義的優(yōu)化。所以我們有必要為折衷制定嚴(yán)正的立場(chǎng):于保證其它因素不差的前提下,使某些因素變得更好。問題提出:假設(shè)魚每千克10元,熊掌每千克壹萬(wàn)元。有個(gè)倔脾氣的人只有20元錢,非掌戲魚”菜。剩下的那壹分錢仍可建立獎(jiǎng)勵(lì)基金。本節(jié)例舉且分析壹些不正確的軟件工程觀念,可幫助初學(xué)者少犯相似的錯(cuò)誤。觀念之壹:我們擁有壹套講述如何開發(fā)軟件的書籍,書中充滿了標(biāo)準(zhǔn)和示例,能夠幫助我們解決軟件開發(fā)中遇到的任何問題。客觀情況:好的參考書無(wú)疑能指導(dǎo)我們的工作。充分利用書籍中的方法、技術(shù)和技巧,能夠有效地解決軟件開發(fā)中大量常見的問題。但實(shí)踐者且不能因此依賴于書籍,這是因?yàn)椋?1)現(xiàn)實(shí)的工作中,由于條件千差萬(wàn)別,即使是相當(dāng)成熟的軟件工程規(guī)范,常常也無(wú)法套用。(2)軟件技術(shù)日新月異,沒有哪壹種軟件標(biāo)準(zhǔn)能長(zhǎng)盛不衰。祖?zhèn)髅胤接谀承╊I(lǐng)域很吃香,而于軟件領(lǐng)域則意味著落后。觀念之二:我們擁有最好的開發(fā)工具、最好的計(jì)算機(jī),壹定能做出優(yōu)秀的軟件??陀^情況:良好的開發(fā)環(huán)境只是產(chǎn)出成果的必要條件,而不是充分條件。如果擁有好環(huán)境的是壹群庸人,難保他們不干出南轅北轍的事情。觀念之三:如果我們落后于計(jì)劃,能夠增加更多的程序員來(lái)解決??陀^情況:軟件開發(fā)不同于傳統(tǒng)的農(nóng)業(yè)生產(chǎn),人多不見得力量大。如果給落后于計(jì)劃的項(xiàng)目增添新手,可能會(huì)更加延誤項(xiàng)目。因?yàn)椋?1)新手會(huì)產(chǎn)生很多新的錯(cuò)誤,使項(xiàng)目混亂。(2)老手向新手解釋工作以及交流思想均要花費(fèi)時(shí)間,使實(shí)際開發(fā)時(shí)間更少。所以前多少,重于恰如其分。如果用“大躍進(jìn)”的方式奔向共產(chǎn)主義,只會(huì)產(chǎn)生倒退的后果。觀念之四:既然需求分析很困難,不管三七二十壹先把軟件做了再說,反正軟件是靈活的,隨時(shí)能夠修改。客觀情況:對(duì)需求把握得越準(zhǔn)確,軟件的修修補(bǔ)補(bǔ)就越少。有些需求于壹開始時(shí)很難確定,于開發(fā)過程中要不斷地加以改正。軟件修改越早代價(jià)越少,修改越晚代價(jià)越大,就跟治病壹樣道理。更多理性的思考。爭(zhēng)議之壹:如果軟件運(yùn)行較慢,是換壹臺(tái)更快的計(jì)算機(jī),仍是設(shè)計(jì)壹種更快的算法?作者觀點(diǎn):如果開發(fā)軟件的目的是為了學(xué)習(xí)或是研究,那么應(yīng)該設(shè)計(jì)壹種更快的算法。如果該軟件已經(jīng)用于商業(yè),則需謹(jǐn)慎考慮:若換壹臺(tái)更快的計(jì)算機(jī)能解決問題,則是最快的解決方案。改進(jìn)算法雖然能夠從根本上提高軟件的運(yùn)行速度,但可能引入錯(cuò)誤以及延誤進(jìn)程。技術(shù)狂毫無(wú)疑問會(huì)選擇后者,因?yàn)樗麄冇X得放棄任何能夠優(yōu)化的機(jī)會(huì)就等于犯罪。類似的爭(zhēng)議仍有:是買現(xiàn)成的程序,仍是徹底自己開發(fā)?技術(shù)人員和商業(yè)人士常常會(huì)有不同的選擇。爭(zhēng)議之二:有最好的軟件工程方法,最好的編程語(yǔ)言嗎?作者觀點(diǎn):于軟件領(lǐng)域永遠(yuǎn)沒有最好的,只有更好的。能解決問題的均是好方法或是好言各有所長(zhǎng),真的難分優(yōu)劣。開發(fā)人員應(yīng)該根據(jù)客觀條件,選擇自己熟悉的方法和語(yǔ)言,才能保證合格的質(zhì)量和生產(chǎn)率。程序設(shè)計(jì)是自由和快樂的事情,不要發(fā)誓忠于某某主義而自尋煩惱。爭(zhēng)議之三:編程時(shí)是否應(yīng)該多使用技巧?作者觀點(diǎn):就軟件開發(fā)而言,技巧的優(yōu)點(diǎn)于于能另辟蹊徑地解決壹些問題,缺點(diǎn)是技巧且不為人熟知。若于程序中用太多的技巧,可能會(huì)留下隱患,別人也難以理解程序。鑒于壹個(gè)局部的優(yōu)點(diǎn)對(duì)整個(gè)系統(tǒng)而言是微不足道的,而壹個(gè)錯(cuò)誤則可能是致命的。作者建議用自然的方式編程,少用技巧。時(shí)無(wú)法判斷是用了技故事又告訴我們“熟能生巧”,表明技巧是自然而然產(chǎn)生的,而不是賣弄出來(lái)的。賣油翁的絕技是可到中央電視臺(tái)表演的,而他老人家爭(zhēng)議之四:軟件中的錯(cuò)誤是否可按嚴(yán)重程度分等級(jí)?作者觀點(diǎn):于定量分析時(shí),能夠?qū)㈠e(cuò)誤分等級(jí),以便于管理。微軟的壹些開發(fā)小組將錯(cuò)壹級(jí)嚴(yán)重:錯(cuò)誤導(dǎo)致軟件崩潰。二級(jí)嚴(yán)重:錯(cuò)誤導(dǎo)致壹個(gè)特性不能運(yùn)行且且沒有替代方案。三級(jí)嚴(yán)重:錯(cuò)誤導(dǎo)致壹個(gè)特性不能運(yùn)行但有替代方案。四級(jí)嚴(yán)重:錯(cuò)誤是表面化的或是微小的。上述分類是非常技術(shù)性的,且不是普適的。假設(shè)某個(gè)財(cái)務(wù)軟件有倆個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 40831-2021資產(chǎn)管理 財(cái)務(wù)與非財(cái)務(wù)職能在資產(chǎn)管理活動(dòng)中的一致性指南》專題研究報(bào)告
- 《GBT 15307-2008可轉(zhuǎn)位鉆頭用削平直柄》專題研究報(bào)告
- 《GBT 15543-2008電能質(zhì)量 三相電壓不平衡》專題研究報(bào)告
- 道路安全交通法培訓(xùn)小結(jié)課件
- 2025年病理科工作總結(jié)及下一年工作計(jì)劃
- 道路交通培訓(xùn)課件教學(xué)
- 道岔知識(shí)大全課件
- 逼單技巧和方法培訓(xùn)課件
- 達(dá)運(yùn)安全培訓(xùn)課件
- 邊境網(wǎng)絡(luò)通信安全培訓(xùn)課件
- 2026年初二物理寒假作業(yè)(1.31-3.1)
- 2025秋人教版七年級(jí)上冊(cè)音樂期末測(cè)試卷(三套含答案)
- 2025福建德化閩投抽水蓄能有限公司招聘4人(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案
- “十五五規(guī)劃綱要”解讀:和美鄉(xiāng)村宜居宜業(yè)
- 廣東省廣州市2026屆高三年級(jí)上學(xué)期12月調(diào)研測(cè)試數(shù)學(xué)(廣州零模)(含答案)
- 2025-2030中國(guó)工業(yè)硅行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- GJB3243A-2021電子元器件表面安裝要求
- 中橋施工組織設(shè)計(jì)方案
- 一類,二類,三類醫(yī)療器械分類目錄
- 國(guó)開大學(xué)2022年01月2136《管理會(huì)計(jì)》期末考試參考答案
- 健康相關(guān)生存質(zhì)量及其測(cè)量和評(píng)價(jià)課件
評(píng)論
0/150
提交評(píng)論