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