2011年軟件水平考試軟件設(shè)計師輔導(dǎo)資料(1)

字號:

2011年軟件水平考試軟件設(shè)計師輔導(dǎo)資料(1)

    第一章 緒論
    第一節(jié) 軟件工程的產(chǎn)生
    軟件:計算機(jī)程序及其說明程序的各種文檔。"程序"是計算任務(wù)的處理對象和處理規(guī)則的描述。
    軟件的特點:
    1 是一種邏輯產(chǎn)品,與物質(zhì)產(chǎn)品有很大的區(qū)別。
    2 軟件產(chǎn)品的生產(chǎn)主要是研制,生產(chǎn)成本主要在開發(fā)和研制,開發(fā)研制完成后,通過復(fù)制就產(chǎn)生了大量軟件產(chǎn)品。
    3 軟件產(chǎn)品不會用壞,不存在磨損,消耗。
    4 生產(chǎn)主要是腦力勞動,還末完全擺脫手工開發(fā)方式,大部分產(chǎn)品是"定做"的。
    5 開發(fā)軟件的費用不斷增加,致使生產(chǎn)成本相當(dāng)昂貴
    按軟件的功能劃分-
    系統(tǒng)軟件:能與計算機(jī)硬件緊密配合在一起,使計算機(jī)系統(tǒng)各個部件、相關(guān)的軟件和數(shù)據(jù)協(xié)調(diào)、高效率地工作的軟件。如操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、設(shè)備驅(qū)動程序以及通信處理程序等。系統(tǒng)軟件是計算機(jī)系統(tǒng)中必不可少的一個組成部分。
    應(yīng)用軟件:是在特定的領(lǐng)域內(nèi)開發(fā),為特定目的服務(wù)的一類軟件。如,CAD-CAM 計算機(jī)輔助制造-CAI 計算機(jī)輔助教學(xué), 專家系統(tǒng),模式識別,剎車系統(tǒng)
    支撐軟件:是協(xié)助用戶開發(fā)軟件的工具性軟件,其中包括幫助程序人員開發(fā)軟件產(chǎn)品的工具,也包括幫助管理人員控制開發(fā)的進(jìn)程的工具。
    按規(guī)模劃分:
    1、微型--只有一個人,甚至是半時,在幾天之內(nèi)完成的軟件。寫出的程序不到500行語句。
    2、小型--一個人半年之內(nèi)完成的2千行以內(nèi)的程序。例如,數(shù)值計算問題或是數(shù)據(jù)處理問題就是這種規(guī)模的課題。這種程序通常沒有與其他程序的接口。
    如,有求伯君開發(fā)初的 WPS,單獨完成BASIC 的比爾.蓋茨。
    3、中型--5人以內(nèi)在一年多時間里完成的5千到5萬行的程序。這種課題開始出現(xiàn)了軟件人員之間,軟件人員與用戶之間的聯(lián)系、協(xié)調(diào)和配合關(guān)系的問題。
    4、大型--5人至10人在兩年多的時間里完成5萬行到10萬行的程序。例如編譯程序、小型分時系統(tǒng)、應(yīng)用軟件包、實時控制系統(tǒng)等很可能都是這種軟件。
    5、甚大型-100人至1000人參加
    6、極大型--2000-5000人參加,如,微軟的windows 2000項目就包含了近3000名工程師,他們被分成幾百個小的團(tuán)隊。
    按開發(fā)分---軟件產(chǎn)品和軟件項目
    軟件產(chǎn)品---指的是不局限于特定領(lǐng)域的、可以被廣大用戶直接使用的軟件系統(tǒng)。如微軟的 Windows,Office等。這類系統(tǒng)的特點是技術(shù)含量高,開發(fā)時要考到各種不同的用戶需求;
    軟件項目--也稱定制軟件,是受某個特定客戶(或少數(shù)客戶)的委托,由一個或多個軟件開發(fā)機(jī)構(gòu)在合同的約如我們常說的管理信息系統(tǒng)(MIS)和電子商務(wù)系統(tǒng)。這類軟件的特點是領(lǐng)域知識所占的比重較大,相對技術(shù)而言工程性更強(qiáng)。例如,軍用防空指揮系統(tǒng)、衛(wèi)星控制系統(tǒng)等均為這類軟件。
    針對這兩種不同類型的軟件,應(yīng)該有不同的軟件開發(fā)方法去指導(dǎo)項目開發(fā)過程。
    軟件項目的開發(fā),目前比較成熟的軟件開發(fā)方法有軟件成熟度模型(CMM)。 這種軟件開發(fā)模型試圖將整個軟件開發(fā)過程規(guī)范化和量化,直到可以對軟件開發(fā)過程進(jìn)行定量的控制和優(yōu)化。
    軟件產(chǎn)品的開發(fā),像微軟公司積累了許多成功的經(jīng)驗。
    軟件生產(chǎn)的發(fā)展:
    1 程序設(shè)計時代:這個階段生產(chǎn)方式是個體勞動,生產(chǎn)工具是機(jī)器語言,匯編語言。(1946-1956年)
    2 程序系統(tǒng)時代:這個階段生產(chǎn)方式是小集團(tuán)合作生產(chǎn),生產(chǎn)工具是高級語言,開發(fā)方法仍依靠個人技巧,但開始提出結(jié)構(gòu)化方法。(1956-1968年)
    3 軟件工程時代:這個階段生產(chǎn)方式是工程化的生產(chǎn),使用數(shù)據(jù)庫,開發(fā)工具,開發(fā)環(huán)境,網(wǎng)絡(luò),分布式面向?qū)ο蠹夹g(shù)來開發(fā)軟件。(1968年至今)
    軟件危機(jī): 軟件開發(fā)技術(shù)的進(jìn)步未能滿足發(fā)展的要求。在軟件開發(fā)中遇到的問題找不到解決的辦法,問題積累起來,形態(tài)尖銳的矛盾,導(dǎo)致了軟件危機(jī)。
    軟件危機(jī)的表現(xiàn):
    1 經(jīng)費預(yù)算經(jīng)常突破,完成時間一再拖延。
    2 開發(fā)的軟件不能滿足用戶要求。
    3 開發(fā)的軟件可維護(hù)性差。
    4 開發(fā)的軟件可靠性差。
    軟件危機(jī)產(chǎn)生原因:
    1 軟件規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜。
    2 軟件開發(fā)管理困難而復(fù)雜。
    3 軟件開發(fā)費用不斷增加。
    4 軟件開發(fā)技術(shù)落后。
    5 生產(chǎn)方式落后,仍采用手工方式。
    6 開發(fā)工具落后,生產(chǎn)率提高緩慢。
    軟件工程:用科學(xué)的知識和技術(shù)原理來定義,開發(fā),維護(hù)軟件的一門學(xué)科。
    用工程科學(xué)的觀點進(jìn)行費用估算,制定進(jìn)度,制定計劃和方案。
    用管理科學(xué)的方法和原理進(jìn)行生產(chǎn)的管理。
    用數(shù)學(xué)的方法建立軟件開發(fā)中的各種模型和算法。
    那么為達(dá)到軟件優(yōu)質(zhì)高產(chǎn)這個目標(biāo),從技術(shù)到管理做了大量的努力,從而逐漸已形成了"軟件工程學(xué)"這一新學(xué)科。
    它包含以下主要內(nèi)容:
    1、軟件開發(fā)方法:軟件工程的方法提供了建造軟件在技術(shù)上需要"如何做"。 方法涵蓋了一系列的任務(wù):需求分析、設(shè)計、編程、測試和維護(hù)。
    是在60年代后期才逐步形成了一種軟件開發(fā)方法,在不同的軟件開發(fā)階段對應(yīng)有不同的方法,例如在軟件的設(shè)計階段有"結(jié)構(gòu)化分析與設(shè)計"方法,在軟件測試階段有"黑盒"與"白盒"測試技術(shù),等等。
    象目前又有一種更新的技術(shù)"面向?qū)ο蟮某绦蛟O(shè)計方法"。在這一方法中,數(shù)據(jù)和數(shù)據(jù)的操作是被封閉在一個個稱為"對象(Object) "的統(tǒng)一體中,對象之間則是通過"消息"(message")進(jìn)行相互聯(lián)系的。
    從而使由軟件所描述的系統(tǒng)與客觀世界的系統(tǒng)在結(jié)構(gòu)上十分相似,不僅提高了軟件的可修改性與可維護(hù)性,同時也提高了軟件的可重用性,那么這些都是工程多年來所追求的目標(biāo)。從結(jié)構(gòu)程序設(shè)計到面向?qū)ο蟪绦蛟O(shè)計,是程序設(shè)計方法的又飛躍。
    2、軟件工具:所謂工具,在這里泛指是開發(fā)一切幫助開發(fā)軟件的軟件。為了提高軟件設(shè)計的質(zhì)量和生產(chǎn)效率,現(xiàn)已經(jīng)發(fā)展了許多的幫助開發(fā)和維護(hù)軟件的軟件 。例如,我們要用某種語言來開發(fā)一個應(yīng)用軟件,這就要涉及到 "編輯程序、編譯程序、連接程序等,另外在軟件測試階段還要用到 "測試數(shù)據(jù)產(chǎn)生器、排錯程序、跟蹤程序、靜態(tài)分析工具和覆蓋監(jiān)視工具等。也就是說在不同的時期要用到不同的軟件開發(fā)工具。目前,軟件工具發(fā)展迅速,許多用于軟件分析和設(shè)計的工具正在建立,其目標(biāo) 就是要實現(xiàn)軟件生產(chǎn)自動化。
    3、軟件工程環(huán)境:軟件方法和工具是軟件開發(fā)的兩大支柱,她們之間密切相關(guān)。軟件方法提出了明確的工作步驟和標(biāo)準(zhǔn)的文檔格式,這是設(shè)計軟件工具的基礎(chǔ),而軟件工具的實現(xiàn)又將促進(jìn)軟件方法的推廣和發(fā)展。
    "環(huán)境"一詞,對不同用戶有著不同的含義。對終用戶(end user)而言,環(huán)境就是他們運行程序所使用的計算機(jī)系統(tǒng)。這類用戶對環(huán)境的要求,主要是運行可靠,操作方便,容易學(xué)習(xí)和使用。而對于軟件開發(fā)人員來說,則就不同了,可以說環(huán)境就是他們進(jìn)行軟件開發(fā)活動動的舞臺。(例如,Algo-60,或者 資料管理系統(tǒng)(DbaseII DbaseIII),例如界面只能采用菜單來完成各種功能)
    象現(xiàn)在生產(chǎn)數(shù)據(jù)庫管理的軟件的環(huán)境有:大型數(shù)據(jù)庫軟件 Sybase ,還有能幫助進(jìn)行程序設(shè)計的 PB 軟件)
    4、軟件工程管理學(xué):大家知道,對于一個企業(yè)來說,如果只有先進(jìn)的設(shè)備和技術(shù),而沒有完善的管理,是不可能獲得應(yīng)有的經(jīng)濟(jì)效益的(例如海爾的海爾文化就是企業(yè)管理的象征),(例如微軟企業(yè)文化宗旨的一句話)
    軟件生產(chǎn)也是一樣的,如果管理不善,是不可能高質(zhì)量、按時完成任務(wù)的。
    "軟件工程管理就是對軟件工程生存期內(nèi)的各階段的活動進(jìn)行管理。軟件工程管理的目的是為了能按預(yù)期的時間和費用,成功地完成軟件的開發(fā)和維護(hù)任務(wù)。
    軟件工程管理學(xué)的內(nèi)容包括軟件費用管理、人員組織、工程計劃管理、軟件配置管理等各項方面的內(nèi)容。
    顯然,軟件工程管理也可借助計算機(jī)來實現(xiàn)。供經(jīng)理人員估算成本、指定進(jìn)度、生成報告等管理工具都已經(jīng)在許多公司使用了。一個理想的軟件工程環(huán)境,應(yīng)該同時具備 支持開發(fā)和支持管理兩個方面的工具。
    以上簡介了軟件工程學(xué)的主要組成成分--軟件工程方法學(xué)、軟件工程環(huán)境以及軟件工程管理的基本內(nèi)容臺和作用。它們即包括計算機(jī)科學(xué)家的研究成果,也概括了廣大軟件工作者的時間經(jīng)驗。還必須指出,軟件開發(fā)技術(shù)可區(qū)分為形式化方法與非形式化方法兩大分支。前者以形式化的程序變化和嚴(yán)整為主要內(nèi)容,目的在于達(dá)到程序設(shè)計的自動化,多用于計算機(jī)應(yīng)用人員。本課程主要討論的是工程化的軟件開發(fā)技術(shù)。
    軟件工程目標(biāo):付出較低開發(fā)成本;達(dá)到要求的功能;取得較好的性能;開發(fā)的軟件易于移植;只需較低的維護(hù)費用;能按時完成開發(fā)任務(wù),及時交付使用;開發(fā)的軟件可靠性高。
    軟件工程內(nèi)容:研究內(nèi)容包括開發(fā)技術(shù)和開發(fā)管理兩個方面。
    開發(fā)技術(shù)主要研究 :軟件開發(fā)方法,開發(fā)過程,開發(fā)工具和環(huán)境。
    開發(fā)管理主要研究 :軟件管理學(xué),軟件經(jīng)濟(jì)學(xué),軟件心理學(xué)。
    軟件工程需要解決的問題:軟件的費用,可靠性,可維護(hù)性,軟件生產(chǎn)率和軟件的重用。