軟件開發(fā)技術(shù)基礎(chǔ)_第1頁
軟件開發(fā)技術(shù)基礎(chǔ)_第2頁
軟件開發(fā)技術(shù)基礎(chǔ)_第3頁
軟件開發(fā)技術(shù)基礎(chǔ)_第4頁
軟件開發(fā)技術(shù)基礎(chǔ)_第5頁
已閱讀5頁,還剩134頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

軟件開發(fā)技術(shù)(jìshù)基礎(chǔ)計算機(jī)教學(xué)實驗中心(zhōngxīn)共一百三十九頁1.理解軟件及其軟件工程的概念(gàiniàn)2.了解軟件危機(jī)與軟件的生命周期概念3.理解典型軟件開發(fā)過程4.了解OO軟件開發(fā)技術(shù)5.了解C/S和B/S軟件系統(tǒng)的結(jié)構(gòu)教學(xué)內(nèi)容共一百三十九頁問題(wèntí)的提出什么是軟件?軟件有哪些特征?軟件工程的含義是什么?什么是軟件危機(jī)?什么是軟件生命周期?軟件開發(fā)技術(shù)(jìshù)究竟有哪些B/S和C/S結(jié)構(gòu)是什么?……共一百三十九頁軟件(ruǎnjiàn)的基本概念程序是為實現(xiàn)特定(tèdìng)目標(biāo)或解決特定(tèdìng)問題而用計算機(jī)語言編寫的命令序列的集合軟件=程序+文檔+數(shù)據(jù)IEEE的軟件定義:指計算機(jī)程序、方法和規(guī)則、相關(guān)的文檔資料以及在計算機(jī)上運行它所必需的數(shù)據(jù)計算機(jī)系統(tǒng)由計算機(jī)硬件和軟件構(gòu)成計算機(jī)能完成各種神奇的功能是因為存在各種軟件什么是軟件?什么是程序?共一百三十九頁軟件(ruǎnjiàn)的特征軟件是邏輯產(chǎn)品軟件產(chǎn)品質(zhì)量的體現(xiàn)(tǐxiàn)方式不同軟件產(chǎn)品的生命周期和失敗曲線不同軟件產(chǎn)品的成本構(gòu)成不同大多數(shù)軟件仍然是定制生產(chǎn)的軟件產(chǎn)品的不同屬性共一百三十九頁軟件(ruǎnjiàn)是邏輯產(chǎn)品軟件產(chǎn)品是:具有產(chǎn)值、價格、質(zhì)量和功能的特性(tèxìng)看不見,是邏輯的、無形的是腦力勞動的結(jié)晶共一百三十九頁軟件產(chǎn)品質(zhì)量(zhìliàng)體現(xiàn)方式不同質(zhì)量體現(xiàn)方式不同:實用、可靠、可操作性;可維護(hù)性強(qiáng)方便用戶不會折舊、損壞(sǔnhuài)、零部件老化共一百三十九頁軟件產(chǎn)品的成本構(gòu)成(gòuchéng)不同

一般產(chǎn)品的成本構(gòu)成:材料、設(shè)計、生產(chǎn)(shēngchǎn)制造、

售后服務(wù)、稅費、……軟件產(chǎn)品的成本構(gòu)成:人力、設(shè)計、售后服務(wù)、稅費、……共一百三十九頁軟件產(chǎn)品以定制(dìnɡzhì)生產(chǎn)為主硬件產(chǎn)品的生產(chǎn)技術(shù)和工藝已經(jīng)成熟,可以做到標(biāo)準(zhǔn)化、系列化成批生產(chǎn),不論哪個廠家生產(chǎn)的產(chǎn)品,用戶買來都可以集成、組裝和替換使用。盡管軟件產(chǎn)品復(fù)用是軟件界孜孜不倦追求的目標(biāo),在某些局部范圍內(nèi)幾家領(lǐng)軍軟件企業(yè)也建立了一些軟件組件復(fù)用的技術(shù)標(biāo)準(zhǔn),例如,OMG的CORBA、Microsoft的COM和DCOM、SUN的EJB和J2EE,但是(dànshì)目前還做不到大范圍使用軟件替代品。大多數(shù)軟件仍然是為特定任務(wù)或用戶定制的。共一百三十九頁軟件產(chǎn)品的不同(bùtónɡ)屬性為便于軟件產(chǎn)品的研制、生產(chǎn)、維護(hù)和使用,軟件還必須具有(jùyǒu):可維護(hù)性(Maintainability)

獨立性(Dependability)

效率性(Efficiency)

可用性(Usability)共一百三十九頁軟件(ruǎnjiàn)分類軟件按不同方式劃分為不同的類型(lèixíng):按功能劃分按規(guī)模劃分共一百三十九頁按功能(gōngnéng)劃分軟件分類

軟件系統(tǒng)軟件應(yīng)用軟件操作系統(tǒng)網(wǎng)絡(luò)系統(tǒng)語言編譯器工具軟件管理軟件實時軟件科學(xué)計算、數(shù)據(jù)處理嵌入式軟件人工智能軟件專用領(lǐng)域軟件共一百三十九頁系統(tǒng)軟件(xìtǒnɡruǎnjiàn)是支持計算機(jī)系統(tǒng)正常運行并實現(xiàn)用戶(yònghù)操作的那部分軟件。一般是在計算機(jī)系統(tǒng)購買時隨機(jī)攜帶的,也可以根據(jù)需要另行安裝。①操作系統(tǒng)(OperatingSystem)②網(wǎng)絡(luò)系統(tǒng)(NetworkSystem)③語言編譯系統(tǒng)(

LanguageCompiler)④通信軟件(CommunicationsSoftware)⑤工具軟件(ToolsSoftware)共一百三十九頁應(yīng)用軟件應(yīng)用軟件是為滿足用戶不同領(lǐng)域、不同問題的應(yīng)用需求而提供的那部分軟件。它可以(kěyǐ)拓寬計算機(jī)系統(tǒng)的應(yīng)用領(lǐng)域,放大硬件的功能。應(yīng)用軟件具有無限豐富和美好的開發(fā)前景。①事務(wù)(shìwù)處理軟件②實時軟件③科學(xué)計算和數(shù)據(jù)處理軟件④嵌入式軟件⑤人工智能軟件共一百三十九頁按規(guī)模劃分(huàfēn)軟件分類類別參加人員數(shù)研制期限產(chǎn)品規(guī)模(語句行數(shù))實例微型11~4周0.5k選擇排序程序小型11~6月1k~2k數(shù)值計算程序中型2~51~2年5k~10k匯編程序較大型5~202~3年50k~100k數(shù)據(jù)庫系統(tǒng)大型100~10004~5年1M操作系統(tǒng)極大型2000~50005~10年1M~10M空中交通管制系統(tǒng)共一百三十九頁軟件開發(fā)技術(shù)(jìshù)發(fā)展史社會應(yīng)用需求的驅(qū)動是推進(jìn)軟件發(fā)展進(jìn)程的主線:從軟件發(fā)展早期的按個人意愿編寫代碼,到按軟件工程的理論生產(chǎn)大型應(yīng)用系統(tǒng);從手工作坊式的封閉性制作到按標(biāo)準(zhǔn)制式、大工業(yè)生產(chǎn)的開放系統(tǒng);從注重個人精雕細(xì)琢地編寫代碼的技巧到注重工程項目的管理和開發(fā)團(tuán)隊的協(xié)作;從為特定應(yīng)用定制設(shè)計到以復(fù)用為目標(biāo)的組件式開發(fā);從由少數(shù)軟件天才的編程藝術(shù)到由廣大(guǎngdà)用戶直接參與的應(yīng)用開發(fā)。共一百三十九頁階段(jiēduàn)劃分半個多世紀(jì)以來,軟件及軟件開發(fā)技術(shù)在理論、觀念(guānniàn)、目標(biāo)及技術(shù)方法等方面都發(fā)生了很大變化。以10年左右為間隔,劃分為五個階段。詳見表1-1。表中概述了每個時期軟件開發(fā)技術(shù)的特點,包括軟件開發(fā)技術(shù)處理的對象、用途、目的、開發(fā)方法、開發(fā)工具、發(fā)展?fàn)顩r、技術(shù)突破、理論成就及目標(biāo)等。共一百三十九頁軟件(ruǎnjiàn)危機(jī)從20世紀(jì)60年代開始,軟件業(yè)出現(xiàn),研制軟件系統(tǒng)需要投入大量的人力、物力和資金,但是系統(tǒng)的質(zhì)量卻無法保證。開發(fā)軟件所需的高成本與軟件產(chǎn)品的低質(zhì)量之間存在尖銳的矛盾(máodùn)。軟件生產(chǎn)周期漫長,不能滿足市場需求,軟件開發(fā)陷入不可自拔的惡性循環(huán)之中。這種現(xiàn)象被稱為“軟件危機(jī)”(SoftwareCrisis)。以IBM公司的OS/360操作系統(tǒng)為例。它共有4000多個模塊、100萬行指令,共投入5000人年,耗資5億美元,但在交付使用的系統(tǒng)中仍找出2000個以上的錯誤。共一百三十九頁軟件(ruǎnjiàn)危機(jī)的具體表現(xiàn)⑴軟件開發(fā)進(jìn)度難以預(yù)測⑵軟件開發(fā)成本難以控制⑶用戶對軟件功能難以滿足⑷軟件產(chǎn)品質(zhì)量無法保證⑸軟件產(chǎn)品難以維護(hù)⑹軟件通常缺少(quēshǎo)適當(dāng)?shù)奈臋n資料⑺生產(chǎn)率提高的速度不能滿足社會需要共一百三十九頁軟件(ruǎnjiàn)危機(jī)產(chǎn)生的原因

產(chǎn)生軟件危機(jī)有兩個方面的原因:與軟件本身的特點有關(guān);是內(nèi)在因素、客觀的存在,只能因勢利導(dǎo)加以解決。與軟件開發(fā)和維護(hù)的技術(shù)(jìshù)方法有關(guān);是外在因素,可以完善、提高。共一百三十九頁軟件特點(tèdiǎn)的因素(內(nèi)因)軟件是邏輯產(chǎn)品,是代碼化了的人的思維活動。在總體構(gòu)思時,別人無法管理和干預(yù)。在寫出程序、并在機(jī)器上運行之前,進(jìn)展情況(qíngkuàng)難以掌握,開發(fā)質(zhì)量也無法評估。這些都給管理和控制帶來不便。軟件是特定問題在計算機(jī)上的運行描述。實際問題的復(fù)雜性決定了一個實用軟件系統(tǒng)規(guī)模往往十分龐大。大有大的難處。程序規(guī)模越大,控制、管理難度也就越大。共一百三十九頁軟件開發(fā)維護(hù)技術(shù)方法(fāngfǎ)的因素開發(fā)人員和用戶(yònghù)之間的矛盾軟件開發(fā)各階段任務(wù)不明確,方法不科學(xué)軟件產(chǎn)品有其生命周期。在周期的各個階段有其具體的任務(wù),如何完成任務(wù),各個階段有不同的技術(shù)方法和操作步驟。只有科學(xué)的按生命周期各階段的任務(wù)去組織實施,才能保證質(zhì)量,降低成本;急于求成,不按科學(xué)規(guī)律、方法實施,只能“事倍功半”,事與愿違。許多軟件系統(tǒng)開發(fā)失敗的主要原因是開發(fā)人員在沒有準(zhǔn)確、完整地了解了用戶的需求后就急于編程;用戶對需求也往往不能準(zhǔn)確、完整地提出。重編程,輕分析;重開發(fā),輕維護(hù);重程序,輕文檔軟件產(chǎn)品的使用壽命很長。在這期間要對軟件進(jìn)行必要的修改。據(jù)統(tǒng)計數(shù)據(jù)表明,軟件維護(hù)的費用占總費用的55%-70%。軟件工程的一個重要目標(biāo)就是提高軟件的可維護(hù)性,減少軟件維護(hù)的代價。共一百三十九頁解決軟件危機(jī)(wēijī)的途徑開發(fā)軟件選用最好的開發(fā)工具是至關(guān)重要的,即選擇、設(shè)置良好的軟件工程支撐環(huán)境。工具選用的好,它可以“放大”人的智力(zhìlì),大大加快軟件開發(fā)速度,提高軟件質(zhì)量。采用現(xiàn)代化、社會化的組織管理方式使用成功技術(shù)和方法(面向過程、面向?qū)ο?、面向組件等)使用更好的軟件開發(fā)工具(匯編、C、VC、JAVA等)為了解決軟件危機(jī)就要從技術(shù)措施和組織管理兩個方面去研究,不斷總結(jié)經(jīng)驗教訓(xùn),提高軟件生產(chǎn)效率,降低軟件開發(fā)和維護(hù)的成本。共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)的誕生

70年代出現(xiàn)的軟件危機(jī)歸結(jié)為軟件開發(fā)技術(shù)落后,人們追求高效的軟件開發(fā)技術(shù)來解決軟件危機(jī),軟件工程應(yīng)運而生(yìngyùnérshēng):克服、解決“軟件危機(jī)”改進(jìn)“軟件生產(chǎn)”方法、工具提高軟件的生產(chǎn)率共一百三十九頁軟件(ruǎnjiàn)生命周期軟件生存周期是指一個軟件從提出開發(fā)要求直到該軟件報廢為止的整個時期。針對不同的開發(fā)模型、不同的開發(fā)對象以及不同的開發(fā)方法,軟件生命周期可以有不同的劃分。如果(rúguǒ)不考慮上述不同的因素以及應(yīng)用領(lǐng)域、項目規(guī)模和復(fù)雜性,軟件生命周期可以劃分為:

軟件定義、軟件開發(fā)、軟件維護(hù)共一百三十九頁軟件(ruǎnjiàn)定義軟件定義時期的核心任務(wù)是:

“做什么”。即要確定軟件開發(fā)工程的總目標(biāo);確定工程的可行性;提出實現(xiàn)(shíxiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)應(yīng)實現(xiàn)(shíxiàn)的功能;估計完成該項工程需要的資源和成本,并且制定工程進(jìn)度表。這個時期的工作通常又稱為系統(tǒng)分析,由系統(tǒng)分析員和用戶共同負(fù)責(zé)完成。軟件定義時期通常進(jìn)一步劃分成3個階段:

問題定義、可行性研究和需求分析

共一百三十九頁軟件開發(fā)軟件開發(fā)時期的核心任務(wù)是:“怎么做”。即要具體設(shè)計和實現(xiàn)在軟件定義(dìngyì)時期定義(dìngyì)的軟件系統(tǒng)。它又包括4個階段:總體設(shè)計,詳細(xì)設(shè)計,編碼和測試。其中前兩個階段又稱為系統(tǒng)設(shè)計,后兩個階段又稱為系統(tǒng)實現(xiàn)。共一百三十九頁軟件維護(hù)維護(hù)時期的核心任務(wù)是:“改變”。即要保證軟件持久地滿足用戶各個方面改變的需要。維護(hù)時期不再進(jìn)一步劃分階段,但是每一次維護(hù)活動本質(zhì)上都是一次壓縮和簡化了的定義和開發(fā)過程。例如,如果提出的變更要求是更加新的功能,那就要涉及從新一輪的軟件開發(fā)過程:需求(xūqiú)分析、系統(tǒng)設(shè)計、編碼及測試。共一百三十九頁軟件(ruǎnjiàn)生命周期的圖示問題(wèntí)定義可行性研究需求分析總體設(shè)計詳細(xì)設(shè)計軟件編碼軟件測試軟件維護(hù)軟件定義軟件開發(fā)軟件維護(hù)軟件生命周期系統(tǒng)分析系統(tǒng)設(shè)計系統(tǒng)編碼系統(tǒng)測試系統(tǒng)維護(hù)共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)的定義著名軟件工程專家(zhuānjiā)Boehm定義著名IEEE刊物給出的定義教科書給出的定義運用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并且構(gòu)造計算機(jī)程序以及為開發(fā)、運行和維護(hù)這些程序所必需的相關(guān)文件資料。以優(yōu)質(zhì)、高效、低成本為目標(biāo),研究開發(fā)、運行和維護(hù)軟件以及使之退役的系統(tǒng)方法。運用系統(tǒng)的、規(guī)范的和可定量的方法來開發(fā)、運行和維護(hù)軟件。共一百三十九頁關(guān)于(guānyú)軟件工程學(xué)軟件工程是一門交叉學(xué)科,涉及到計算機(jī)科學(xué)、管理科學(xué)、工程學(xué)和數(shù)學(xué)。軟件工程的理論、方法、技術(shù)都是建立在計算機(jī)科學(xué)的基礎(chǔ)上;它是用管理學(xué)的原理、方法進(jìn)行(jìnxíng)軟件生產(chǎn)管理;用工程學(xué)的觀點進(jìn)行費用估算、制定進(jìn)度和實施方案;用數(shù)學(xué)方法建立軟件可靠性模型以及分析各種算法。共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)的目標(biāo)開發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品提高軟件的生產(chǎn)效率滿足應(yīng)用的功能需要和具有較好的軟件性能能按時(ànshí)、按質(zhì)完成軟件開發(fā)任務(wù)降低軟件開發(fā)成本共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜度軟件經(jīng)常變化開發(fā)軟件的效率(xiàolǜ)非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)原理自1968年提出“軟件工程”的概念以來,專家學(xué)者又陸續(xù)(lùxù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名軟件工程專家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小準(zhǔn)則集合。共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)七條基本原理用分階段的生命周期計劃嚴(yán)格管理堅持進(jìn)行階段評審實行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組人員少而精承認(rèn)不斷改進(jìn)軟件工程(ruǎnjiànɡōnɡchénɡ)實踐的必要性共一百三十九頁軟件開發(fā)活動(huódòng)軟件工程過程是由一系列軟件工程的階段任務(wù)和活動組成。1995年ISO將軟件生存周期的活動和任務(wù)劃分為3個過程:主要過程(需求、設(shè)計、構(gòu)造(gòuzào)、測試和維護(hù))支持過程(軟件配置、軟件工程管理、軟件過程和軟件質(zhì)量)組織過程(基礎(chǔ)設(shè)施建設(shè)、工具和方法、改進(jìn)、培訓(xùn))共一百三十九頁主要(zhǔyào)過程主要(zhǔyào)過程包括如下軟件開發(fā)活動:需求分析軟件設(shè)計軟件構(gòu)造軟件測試軟件維護(hù)共一百三十九頁需求(xūqiú)分析任務(wù):收集、分析、理解、確定用戶的要求;然后把用戶的要求精確、完整地描述表達(dá)出來。目的:要回答(huídá)“要解決什么問題?”,既系統(tǒng)”做什么?“。分兩步驟:可行性研究、制定軟件開發(fā)計劃結(jié)果:可行性報告、軟件計劃、需求說明書需求說明書是讓用戶理解:

“什么是他們真正需要的”。共一百三十九頁了解用戶(yònghù)需求有關(guān)的問題什么是需求?希望,功能,限制,必需品,任何必要的東西;什么時候?

從確定方案開始;為什么?

用戶的需求是開發(fā)需要的依據(jù);來自哪里?

來自用戶,工業(yè)標(biāo)準(zhǔn),和實踐經(jīng)驗;如何實現(xiàn)?使所有相關(guān)的人參與需求分析活動,通過有效的交流實現(xiàn);誰來做?

用戶,工程(gōngchéng)管理人員,開發(fā)人員,維護(hù)人員。共一百三十九頁用戶(yònghù)參與需求分析的重要性根據(jù)StandishGroup1994年發(fā)表的一份研究報告統(tǒng)計,延遲的、超出預(yù)算的、未完成的工程的最普遍(pǔbiàn)的原因是:⑴缺少用戶參與;⑵不完備的需求規(guī)范;⑶改變需求規(guī)范。共一百三十九頁需求分析(fēnxī)的難點⑴問題的復(fù)雜性。

涉及因素多而;如運行環(huán)境和系統(tǒng)功能等。⑵交流(jiāoliú)障礙。

涉及不同類型人員較多,知識背景、角度、角色的不同;用戶不懂計算機(jī),程序員不懂應(yīng)用環(huán)境業(yè)務(wù)⑶不完備性和不一致性。

用戶對問題的陳述有矛盾、片面性等造成。⑷需求易變性。

需求是變化的。共一百三十九頁需求(xūqiú)活動⑴識別問題

通過調(diào)研和收集資料,了解用戶的確切需求,并將用戶提出的功能行為和特殊要求等用雙方都能理解的表達(dá)方式逐條列出。在整個分析期間要和用戶充分協(xié)商。⑵可行性研究

對于大型復(fù)雜問題,要對用戶的要求及實現(xiàn)環(huán)境從技術(shù)(jìshù)、經(jīng)濟(jì)和社會因素三個方面進(jìn)行可行性研究,以確定問題是否可解。⑶分析建模

建立軟件求解模型;信息、行為和表示。⑷需求規(guī)格化及編寫文檔

需求規(guī)格說明書、初步用戶使用手冊等。共一百三十九頁軟件設(shè)計任務(wù):給出實現(xiàn)系統(tǒng)的實施藍(lán)圖。目的:要回答“如何解決(jiějué)該問題?”,既系統(tǒng)“怎樣做?”。步驟:概要設(shè)計和詳細(xì)設(shè)計概要設(shè)計:解決系統(tǒng)的模塊劃分、模塊的層次結(jié)構(gòu)設(shè)計。詳細(xì)設(shè)計:解決每個摸塊內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)。結(jié)果:系統(tǒng)設(shè)計說明書和模塊功能說明書

共一百三十九頁軟件設(shè)計工作(gōngzuò)軟件設(shè)計要做的工作可以歸結(jié)為:

軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))設(shè)計、數(shù)據(jù)設(shè)計、界面設(shè)計和過程(guòchéng)設(shè)計設(shè)計辦法是功能分解,包括:⑴采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成模塊⑵確定每個模塊的功能⑶確定模塊之間的接口,即模塊之間傳遞的信息⑸評價模塊結(jié)構(gòu)的質(zhì)量共一百三十九頁軟件設(shè)計方法(fāngfǎ)⑴面向數(shù)據(jù)流的設(shè)計(shèjì)方法;⑵結(jié)構(gòu)化設(shè)計方法;⑶面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法;Jackson方法;⑷Warnier方法⑸面向?qū)ο蠓椒ü惨话偃彭撌褂?shǐyòng)的開發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖⑵程序流程圖、N-S圖、問題分析(fēnxī)圖PAD(ProgramAnalysisDiagram)⑶類語言、過程設(shè)計語言PDL(ProceduralDesignLanguage)等⑷統(tǒng)一建模語言UML(UnifiedModelingLanguage)共一百三十九頁軟件(ruǎnjiàn)構(gòu)造任務(wù):根據(jù)設(shè)計說明書中每個模塊的控制流程編寫出相應(yīng)的源程序。目的:寫出高質(zhì)量的代碼和相應(yīng)餓文檔。構(gòu)造要注意(zhùyì)使系統(tǒng)更易于使用和系統(tǒng)的可重用性。選擇合適的開發(fā)工具及系統(tǒng)軟件、數(shù)據(jù)庫軟件、中間件等。制定編程規(guī)范。結(jié)果:源程序和文檔共一百三十九頁編程風(fēng)格(fēnggé)(1)源程序文件:變量名的命名、源程序中的注解以及(yǐjí)源程序的書寫格式(2)數(shù)據(jù)說明:按各類型數(shù)據(jù)的順序以及字典順序說明、對數(shù)據(jù)結(jié)構(gòu)加注釋說明(3)語句構(gòu)造:語句構(gòu)造一般規(guī)則(4)輸入輸出語句:輸入輸出語句的規(guī)則。編程風(fēng)格主要體現(xiàn)如何描述源程序文件、數(shù)據(jù)說明、輸入輸出等共一百三十九頁語句構(gòu)造(gòuzào)規(guī)則不要為節(jié)省空間而把多個語句寫在同一行;盡量避免復(fù)雜的條件測試;盡量減少對“非”條件的測試;避免使用多層嵌套的循環(huán)和重復(fù);利用(lìyòng)括號使表達(dá)式的運算順序清晰直觀。共一百三十九頁I/O語句(yǔjù)規(guī)則保持輸入格式簡單;對所有輸入數(shù)據(jù)都進(jìn)行校驗;使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;當(dāng)程序設(shè)計語言對格式有嚴(yán)格要求時,應(yīng)保持輸入格式的一致性;檢查輸入項中重要組合的合法性;給所有的輸出數(shù)據(jù)加標(biāo)記,并設(shè)計良好的輸出報表;用標(biāo)記標(biāo)明交互的輸入請求,應(yīng)規(guī)定可以使用的選擇值或邊界值;要根據(jù)用戶的不同類型、特點(tèdiǎn)和要求設(shè)計輸入方案,輸入數(shù)據(jù)的格式要簡單,應(yīng)具有完備的出錯檢查和出錯恢復(fù)措施。共一百三十九頁程序設(shè)計(chénɡxùshèjì)語言(1)心理特性

對人-機(jī)通信質(zhì)量有重要影響。例如,人們習(xí)慣使用已熟悉的程序設(shè)計語言,由此產(chǎn)生的惰性影響人們學(xué)習(xí)(xuéxí)新語言。(2)工程特性

它涉及到軟件的可移植性、開發(fā)工具的可利用性等。(3)技術(shù)特性

它對設(shè)計質(zhì)量、人和整個軟件工程有影響。例如,對數(shù)據(jù)結(jié)構(gòu)復(fù)雜性要求很高的系統(tǒng),考慮選用C及C++等語言;若對高性能和實時功能要求高,可考慮選用Ada語言。選用程序設(shè)計語言時要考慮它的三種特性共一百三十九頁軟件測試任務(wù):檢查、發(fā)現(xiàn)程序中存在的問題,提高系統(tǒng)可靠性目的:保證系統(tǒng)的正確性、可靠性和可用性回答:“該系統(tǒng)是否能實現(xiàn)規(guī)定的操作?”方式:模塊測試、組裝(zǔzhuānɡ)測試、確認(rèn)測試和系統(tǒng)測試結(jié)果:測試報告和軟件修改報告等工作內(nèi)容:驗證(verification)和確認(rèn)(validation).共一百三十九頁軟件測試分類(fēnlèi)從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實現(xiàn)的角度劃分:1、黑盒測試是根據(jù)軟件的規(guī)格對軟件進(jìn)行的測試,這類測試不考慮軟件內(nèi)部的運作原理,因此軟件對用戶來說就像一個黑盒子。軟件測試人員以用戶的角度,通過各種輸入和觀察軟件的各種輸出(shūchū)結(jié)果來發(fā)現(xiàn)軟件存在的缺陷,而不關(guān)心程序具體如何實現(xiàn)的一種軟件測試方法。2、白盒測試是把測試對象看作一個打開的盒子。利用白盒測試法進(jìn)行動態(tài)測試時,需要測試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過程,不需測試軟件產(chǎn)品的功能。白盒測試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。共一百三十九頁根據(jù)有多少用戶參與的劃分為:1、阿爾法測試(α測試):由一個用戶在開發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部(nèibù)的用戶在模擬實際操作環(huán)境下進(jìn)行的受控測試,Alpha測試不能由該系統(tǒng)的程序員或測試員完成。2、貝塔測試(β測試):指在若干客戶場地由客戶組織,最終用戶參與的測試,此時所有文檔均予凍結(jié),作為本軟件版本的基線。對于新軟件,改版則為里程碑。軟件測試分類(fēnlèi)共一百三十九頁軟件測試分類(fēnlèi)從是否執(zhí)行程序的角度劃分:1、靜態(tài)測試指測試不運行的部分,例如測試產(chǎn)品說明書,對此進(jìn)行檢查和審閱.。靜態(tài)方法是指不運行被測程序本身,僅通過分析或檢查源程序的文法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性。2、動態(tài)測試是指通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。根據(jù)動態(tài)測試在軟件開發(fā)過程中所處的階段和作用,動態(tài)測試可分為如下幾個(jǐɡè)步驟:共一百三十九頁動態(tài)測試(cèshì)包括⑴單元測試

對一個模塊的測試(cèshì),一般以白盒法測試(cèshì)為主,多個模塊可以并行進(jìn)行⑵集成測試最終將本項目所有模塊集成在一起測試,交出完整程序產(chǎn)品⑶確認(rèn)測試以用戶為主的測試。證實系統(tǒng)能否正確地實現(xiàn)其功能⑷系統(tǒng)測試軟件只是整個應(yīng)用系統(tǒng)的一部分。最后要集成為一個整體,包括硬件、軟件以及相關(guān)的其它設(shè)備。此時的測試稱系統(tǒng)測試。共一百三十九頁設(shè)計(shèjì)測試用例應(yīng)考慮的問題①界面:內(nèi)界面主要檢查參數(shù)個數(shù)及類型匹配。外界面主要檢查I/O文件、數(shù)據(jù)格式、類型匹配。②模塊的數(shù)據(jù)結(jié)構(gòu):類型是否不正確或不一致?初始化、缺省值使用情況;變量名拼錯;上、下界溢出等數(shù)據(jù)異常,測試能否正確處理等。③邊界條件:保證在邊界值的情況下模塊依然可以正確操作,值出界時要有正確反應(yīng)。④獨立路徑:保證至少所有(suǒyǒu)語句都要執(zhí)行一次,每個條件或子條件都執(zhí)行一次更好。⑤錯誤處理路徑:不管程序有無異常處理都要察看出錯處理路徑。特別要考察是否死機(jī)。共一百三十九頁程序調(diào)試調(diào)試(diàoshì)是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程。1、目的不同

軟件測試的目的是發(fā)現(xiàn)錯誤,至于找出錯誤的原因和錯誤發(fā)生的地方不是軟件測試的任務(wù),而是調(diào)試的任務(wù).

調(diào)試的目的是為了證明程序(chéngxù)的正確,因此它必須不斷地排除錯誤.它們的出發(fā)點不一樣。

前者是挑錯,是一種挑剔過程,屬于質(zhì)量保證活動。后者是排錯,是一種排除過程,是編碼活動的一部分.共一百三十九頁程序調(diào)試2、任務(wù)不同

軟件測試它貫穿于整個開發(fā)過程.從需求分析開始,就要制訂軟件測試計劃,軟件設(shè)計時要設(shè)計系統(tǒng)軟件測試、集成側(cè)試用例,編碼階段要設(shè)計單元軟件測試用例并進(jìn)行單元軟件測試,軟件測試階段要進(jìn)行集成軟件測試、系統(tǒng)軟件測試等,直到產(chǎn)品交付。只要有修改就有軟件測試,產(chǎn)品交付后同樣。它是比較有規(guī)律的活動,有系統(tǒng)的方法、原則作指導(dǎo)。

而調(diào)試是編碼活動的一部分,因此有編碼就有調(diào)試.它的任務(wù)主要就是排錯。調(diào)試的方法經(jīng)常與使用的開發(fā)工具有關(guān),例如:解釋型的開發(fā)工具可以交互式調(diào)試,編譯型開發(fā)工具就很難較好地查錯。當(dāng)然它有一些啟發(fā)式的方法,它是一種比較依賴(yīlài)開發(fā)人員經(jīng)驗的活動。共一百三十九頁調(diào)試(diàoshì)技術(shù)①加打印語句:特點(tèdiǎn)是顯示的是程序的動態(tài)信息,但大量的輸出,時間慢,可能引出新的問題②輸出存儲器內(nèi)容:特點是效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容③用調(diào)試工具:特點是動態(tài)調(diào)試,可自動執(zhí)行,是目前廣泛采用的一種調(diào)試技術(shù)共一百三十九頁調(diào)試(diàoshì)策略①試探法。大概分析、估計錯誤的位置。②回溯法。確定最先出現(xiàn)“癥狀”的地方,然后沿程序的控制流程(liúchéng)往回追蹤源程序,直到找出錯誤源為止。③對分查找法。若已知程序中若干個關(guān)鍵點的正確值,然后用調(diào)試工具在關(guān)鍵點附近處輸入正確值;若輸出正確,則故障在前半部分;否則,再查后半部分。④歸納法。從線索出發(fā),通過分析線索之間的關(guān)系而找出故障。主要步驟為:收集有關(guān)數(shù)據(jù),組織數(shù)據(jù),導(dǎo)出假設(shè),證明假設(shè)。共一百三十九頁軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過程中發(fā)現(xiàn)的隱含(yǐnhán)錯誤,擴(kuò)充在使用過程中新的功能要求。目的:維護(hù)軟件系統(tǒng)的正常運行。回答:系統(tǒng)是否滿足用戶的應(yīng)用要求。階段結(jié)果:軟件系統(tǒng)的問題報告和軟件修改報告。共一百三十九頁軟件維護(hù)的原因(yuányīn)⑴軟件的原有功能和性能可能不再適應(yīng)用戶的要求;⑵軟件的工作(gōngzuò)環(huán)境改變了(例如,增加了新的外部設(shè)備),軟件也要做相應(yīng)的變更;⑶軟件運行中發(fā)現(xiàn)錯誤,需要修改。共一百三十九頁維護(hù)活動(huódòng)分類⑴校正性維護(hù):

指為了識別和糾正錯誤,修改軟件性能上的缺陷,進(jìn)行確定和修改錯誤的過程。占整個維護(hù)工作的15%。⑵適應(yīng)性維護(hù):

為了使本軟件適應(yīng)硬件和軟件的變化(biànhuà)而修改軟件的過程稱為適應(yīng)性維護(hù)。占整個維護(hù)活動的25%。⑶完善性維護(hù):

增加軟件功能、增強(qiáng)軟件性能、提高運行效率而進(jìn)行的維護(hù)活動稱為完善性維護(hù)。占整個維護(hù)工作的55%。⑷預(yù)防性維護(hù):

為了提高軟件的可維護(hù)性和可靠性而對軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。只占整個維護(hù)活動的5%。共一百三十九頁支持(zhīchí)過程支持(zhīchí)過程包括的軟件開發(fā)活動和任務(wù)是:軟件配置管理軟件工程管理軟件過程軟件質(zhì)量共一百三十九頁組織(zǔzhī)過程組織過程包括的軟件開發(fā)活動和任務(wù)是:基礎(chǔ)設(shè)施建設(shè)軟件工程工具和方法改進(jìn)(gǎijìn)培訓(xùn)共一百三十九頁軟件工程工具(gōngjù)和方法程序的開發(fā)、運行都是在支持軟件的基礎(chǔ)上作出的。支持軟件的總和稱之為軟件開發(fā)環(huán)境。早期的環(huán)境只有最必要的軟件工具;例如語言的編譯器、連接器、加載和運行工具、排錯、信息顯示及編輯工具。稱為最小環(huán)境工具集。70年代中期,軟件工程師迫于軟件危機(jī)的壓力,提出了計算機(jī)輔助軟件工程(CASE)的設(shè)想,開發(fā)出一系列工具盡量使軟件過程的各項活動自動化、半自動化。相應(yīng)問題:工具日益增多,給使用者帶來不便,例如,各工具的使用方法、格式(géshi)、參數(shù)等差異的問題。這就在客觀上產(chǎn)生了對于集成的CASE工具的需求。共一百三十九頁計算機(jī)輔助軟件工程(ruǎnjiànɡōnɡchénɡ)CASE人們期望,借助CASE工具,有朝一日軟件開發(fā)人員可以像在自動流水線上生產(chǎn)計算機(jī)那樣生產(chǎn)軟件。CASE工具具有如下特征:支持專用的個人計算環(huán)境;使用圖形功能對軟件系統(tǒng)進(jìn)行說明并建立文檔;將生命周期各階段的工作(gōngzuò)連接在一起;收集和連接軟件系統(tǒng)從最初的軟件需求到軟件維護(hù)各個環(huán)節(jié)的所有信息;用人工智能實現(xiàn)軟件開發(fā)和維護(hù)工作的自動化。共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)工具信息工程工具過程模型和管理工具項目計劃工具風(fēng)險分析工具項目管理工具需求追蹤工具度量(dùliàng)和管理工具文檔工具系統(tǒng)軟件工具質(zhì)量保證工具數(shù)據(jù)庫管理工具共一百三十九頁軟件(ruǎnjiàn)活動過程圖示小結(jié)軟件工具和方法(fāngfǎ)主要過程支持過程組織過程基礎(chǔ)設(shè)施建設(shè)軟件改進(jìn)軟件培訓(xùn)軟件工程管理軟件配置管理軟件過程軟件質(zhì)量軟件構(gòu)造軟件設(shè)計軟件測試軟件維護(hù)軟件需求軟件活動共一百三十九頁通過實例說明主要過程(guòchéng)的開發(fā)工作計算(jìsuàn)兩個正整數(shù)的最大公因數(shù)共一百三十九頁軟件(ruǎnjiàn)需求的工作如下:可行性分析如下:p和q只能是正整數(shù)的子集最大公因數(shù)的定義:能整除P、Q,且是最大的除數(shù)p和q數(shù)值通過鍵盤錄入結(jié)果顯示在屏幕上普通PC機(jī)環(huán)境(huánjìng)均可這是小問題,一個人在短時間內(nèi)即可完成

可行性研究、制定開發(fā)計劃?;卮稹白鍪裁础避浖枨蠓治鲈趺醋瞿??共一百三十九頁軟件設(shè)計的工作(gōngzuò)如下:需求分析確定了未來程序的輸入、處理、輸出(IPO,即Input,Process,Output)等等可行性研究的相關(guān)結(jié)果(jiēguǒ)根據(jù)需求分析的結(jié)果,將未來程序的具體執(zhí)行流程或步驟詳細(xì)設(shè)計出來,這就是算法設(shè)計常用三種描述算法的方式或者說工具:自然語言、流程圖、偽代碼可以采用任何一種工具進(jìn)行設(shè)計需求分析回答了“做什么”,而算法設(shè)計回答了“如何做”要注意算法是不能被計算機(jī)理解、執(zhí)行的,必須經(jīng)過下一步編寫程序

概要設(shè)計、詳細(xì)設(shè)計?;卮稹叭绾巫觥避浖O(shè)計怎么做呢?共一百三十九頁古希臘數(shù)學(xué)家歐幾里德給出了一個(yīɡè)著名的算法如下:步驟1:任意輸入兩個數(shù)放入p和q中步驟2:如果p<q,交換p和q

步驟3:求出p/q的余數(shù)放入r中步驟4:如果r=0,則執(zhí)行步驟8,否則執(zhí)行下一步步驟5:令p=q,q=r

步驟6:計算p和q的余數(shù)r

步驟7:執(zhí)行步驟4步驟8:q就是所求的結(jié)果,輸出結(jié)果q自然語言描述實際(shíjì)問題的算法如下:共一百三十九頁開始(kāishǐ)結(jié)束(jiéshù)鍵盤輸入p和qp>qr=p;p=q;q=rr=0r=p除以q的余數(shù);p=q;q=r;顯示輸出q步驟1:任意輸入兩個數(shù)放入p和q中步驟2:如果p<q,交換p和q步驟3:求出p/q的余數(shù)放入r中步驟4:如果r=0,則執(zhí)行步驟8,否則執(zhí)行下一步步驟5:令p=q,q=r步驟6:計算p和q的余數(shù)r步驟7:執(zhí)行步驟4步驟8:q就是所求的結(jié)果,輸出結(jié)果q

真真r=p除以q的余數(shù);共一百三十九頁偽代碼(dàimǎ)描述的算法如下:InputP,QIf(P<Q)thenR=PP=QQ=REndifR=PmodQWhile(R<>0){P=QQ=RR=PmodQ}OutputQ

共一百三十九頁軟件(ruǎnjiàn)構(gòu)造的工作如下:軟件構(gòu)造就是將上一步驟的算法描述用某一程序設(shè)計語言編寫(或表示)出來不同的程序語言其功能和特性各不相同,選擇一個適合的程序設(shè)計語言,將算法轉(zhuǎn)換成程序代碼程序(chéngxù)編寫風(fēng)格:命名應(yīng)簡單易記程序中應(yīng)該有注釋語句書寫應(yīng)采用縮進(jìn)格式

共一百三十九頁C++程序代碼#include<iostream.h>Voidmain(){intp,q,r;cin>>p>>q;if(p<q){r=p;p=q;q=r;}r=p%q;while(r!=0){p=q;q=r;r=p%q;}}共一百三十九頁Java版程序代碼publicstaticvoidmain(Stringargs[]){intp,q,r=0;Scannerreader=newScanner(System.in);p=reader.nextInt();q=reader.nextInt();if(p<q){r=p;p=q;q=r;}r=p%q;while(r!=0){p=q;q=r;r=p%q;}}共一百三十九頁軟件測試的工作(gōngzuò)如下:測試程序就是將編寫的程序在計算機(jī)上運行,以便檢驗程序正確與否。任何程序員所編寫的程序都有可能出現(xiàn)兩類錯誤:語法錯誤和邏輯錯誤語法(yǔfǎ)錯誤:一般指程序中不符合語言的語法(yǔfǎ),如缺少標(biāo)點符號,名稱不符等等邏輯錯誤:一般指運行程序所得到的結(jié)果與預(yù)期的結(jié)果不同共一百三十九頁軟件維護(hù)的工作(gōngzuò)如下:提交源程序和可執(zhí)行程序提交用戶說明書不斷(bùduàn)收集用戶改進(jìn)意見,改進(jìn)軟件共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)方法學(xué)通常把在軟件生命周期全過程中使用(shǐyòng)的一整套技術(shù)方法的集合稱為方法學(xué),也稱為范型軟件工程方法學(xué)包括3個要素:方法、工具和過程這三者之間是相互聯(lián)系的。方法是完成軟件開發(fā)過程中各項任務(wù)的技術(shù)方法,回答“怎樣做”的問題;工具是為運用方法而提供的自動或半自動的軟件支撐環(huán)境;過程是為了獲得高質(zhì)量的軟件所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)的基本問題軟件工程開發(fā)技術(shù)思想與原則過程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度軟件工程(ruǎnjiànɡōnɡchénɡ)開發(fā)技術(shù)的角度軟件工程開發(fā)技術(shù)思想與原則過程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度共一百三十九頁兩種典型(diǎnxíng)方法傳統(tǒng)(chuántǒng)軟件工程方法(結(jié)構(gòu)化方法)現(xiàn)代軟件工程方法(面向?qū)ο蠓椒ǎ┕惨话偃彭搨鹘y(tǒng)(chuántǒng)方法學(xué)傳統(tǒng)方法學(xué)是建立在軟件生存周期方法學(xué)和結(jié)構(gòu)化方法學(xué)的基礎(chǔ)上。因此,具有明顯的那個時代的特點。70年代,計算機(jī)技術(shù)水平不高,開發(fā)工具少而且性能(xìngnéng)差。對于大型復(fù)雜問題的求解,人們不得不采用“將大化小“、“將難化簡”,最后“分而治之”的開發(fā)策略。共一百三十九頁結(jié)構(gòu)化方法(fāngfǎ)概述結(jié)構(gòu)化方法(fāngfǎ)是由下列方法(fāngfǎ)組成:

?結(jié)構(gòu)化分析方法SA

?結(jié)構(gòu)化設(shè)計方法SD?結(jié)構(gòu)化程序設(shè)計方法SP結(jié)構(gòu)化方法的核心是基于功能分解的模塊化層次結(jié)構(gòu)方法。共一百三十九頁結(jié)構(gòu)化分析SA結(jié)構(gòu)化分析的要點是:將大問題分解為小問題,找出關(guān)鍵點、難點,定量描述;核心(héxīn)是:分解;手段是:模塊化。

?自頂向下

?逐步求精?模塊化設(shè)計共一百三十九頁結(jié)構(gòu)化設(shè)計(shèjì)SD結(jié)構(gòu)化設(shè)計方法的要點是:將系統(tǒng)設(shè)計成由相對獨立、單一(dānyī)功能的模塊組成的軟件結(jié)構(gòu)共一百三十九頁結(jié)構(gòu)化程序設(shè)計(shèjì)SP結(jié)構(gòu)化程序設(shè)計方法SP的要點(yàodiǎn)是用三種基本結(jié)構(gòu)的語句編寫只有一個入口和一個出口的模塊程序,盡可能地采用重用程序,開發(fā)組織形式為主程序員組。?自頂向下逐步加細(xì)?模塊只有一個入口,一個出口?三種基本結(jié)構(gòu)?開發(fā)支持庫?主程序員組共一百三十九頁傳統(tǒng)(chuántǒng)方法學(xué)的缺點過分強(qiáng)調(diào)了分階段實施,使得開發(fā)過程各個階段之間存在嚴(yán)重的順序性和依賴性;很難將一個復(fù)雜的問題化簡、分解;設(shè)計方法存在很大的主觀隨意性;基于功能分解的系統(tǒng)結(jié)構(gòu)難于修改和擴(kuò)充;思維成果的可重用性很差;數(shù)據(jù)和對數(shù)據(jù)的處理(chǔlǐ)是分離的;忽視了人在軟件開發(fā)過程中的地位和作用。共一百三十九頁現(xiàn)代(xiàndài)方法學(xué)現(xiàn)代方法學(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上,為了強(qiáng)調(diào)人在軟件開發(fā)中的作用,同時為了適應(yīng)(shìyìng)軟件新技術(shù)的發(fā)展趨勢而提出的。其基本要點是:⑴軟件開發(fā)過程是以人為主,充分利用軟件開發(fā)方法及軟件開發(fā)工具;⑵開發(fā)人員的組織管理對軟件開發(fā)成功與否至關(guān)重要;⑶基于軟件組件的軟件開發(fā)技術(shù)。⑷由于軟件組件是標(biāo)準(zhǔn)化設(shè)計、成品化生產(chǎn)的,極易構(gòu)造使用,從而大大簡化了設(shè)計、編程、測試各個環(huán)節(jié)的工作量,提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。共一百三十九頁現(xiàn)代(xiàndài)方法學(xué)中生命周期在現(xiàn)代方法學(xué)中軟件生命周期的階段劃分(huàfēn)?系統(tǒng)分析?系統(tǒng)構(gòu)造?系統(tǒng)測試?軟件組件共一百三十九頁面向?qū)ο蠓椒▽W(xué)由于(yóuyú)傳統(tǒng)方法學(xué)無法從根本上解決“軟件危機(jī)”,業(yè)界人士不得不研究、探索新的方法。面向?qū)ο螅∣O)方法是人類借助計算機(jī)認(rèn)識和模擬客觀世界的一種方法。它將客觀世界看成是由許多不同種類(zhǒnglèi)的對象構(gòu)成。通過分析、研究客觀世界中的實體的屬性及其相互關(guān)系,從中抽象出求解問題的對象,最后求解這些對象,得到問題的解。OO開發(fā)過程更接近人類認(rèn)識問題、解決問題的思維方式,使得計算機(jī)求解的對象與客觀事物具有一一對應(yīng)的關(guān)系。共一百三十九頁什么(shénme)是OO方法OO方法具有以下幾個要點:⑴把對象作為一種統(tǒng)一的軟件構(gòu)件,它將數(shù)據(jù)及在數(shù)據(jù)上的操作行為融合為一體(封裝)⑵

程序(chéngxù)是由對象組成,復(fù)雜對象是由簡單對象組合而成。OO方法學(xué)用對象分解代替了傳統(tǒng)方法的功能分解(封裝和多態(tài))⑶把所有對象都用類來表示;每個類都有自己的屬性和方法,具體的對象只是類中的一個實例(類和對象)⑷類具有層次結(jié)構(gòu),子類可以繼承父類的特性和方法(繼承性)⑸對象之間只能通過傳遞消息構(gòu)成相互之間的聯(lián)系(消息機(jī)制)OO方法是基于“對象、類、封裝、繼承、消息機(jī)制、多態(tài)等技術(shù)特征”的構(gòu)造軟件系統(tǒng)的開發(fā)方法。共一百三十九頁面向?qū)ο蠓治鯫OA用對象的屬性和方法(操作)分別描述事物的靜態(tài)特征和行為問題域中有哪些事物,就在OOA模型中創(chuàng)建哪些對象對象屬性和方法(操作)的命名盡量與客觀實體一致把具有相同屬性和相同服務(wù)的對象歸結(jié)為類用一般-特殊結(jié)構(gòu)(分類結(jié)構(gòu))描述一般類與特殊類之間的關(guān)系(繼承(jìchéng)關(guān)系)用整體-部分結(jié)構(gòu)(組裝結(jié)構(gòu))描述實體間的組成關(guān)系用實例連接和消息連接表示實體之間的靜態(tài)聯(lián)系和動態(tài)聯(lián)系共一百三十九頁面向?qū)ο笤O(shè)計(shèjì)OODOOD包括兩方面的工作:①把OOA模型直接搬到OOD中來,作為OOD的一個部分②針對具體實現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲、任務(wù)管理等因素補(bǔ)充一些與實現(xiàn)有關(guān)的內(nèi)容,這些內(nèi)容與OA采用相同的表示法和模型結(jié)構(gòu)在分析和設(shè)計階段采用一致的表示法是OO方法與傳統(tǒng)方法重要的區(qū)別之一。這使得從OOA到OOD不存在轉(zhuǎn)換,只需進(jìn)行局部的修改或調(diào)整,并增加幾個與實現(xiàn)有關(guān)的獨立部分即可??梢宰匀?zìrán)地實現(xiàn)無縫銜接,從而大大降低了從OOA過渡到OOD的難度、工作量和出錯率。共一百三十九頁面向?qū)ο缶幊蘋OP在“OOA→OOD→OOP”的設(shè)計模式中,OOP的分工相對簡單多了;認(rèn)識問題域與設(shè)計系統(tǒng)元素的工作在OOA和OOD階段已經(jīng)完成,OOP的工作就是用一種OO程序設(shè)計語言把OOD模型中的每個元素描述出來(chūlái)而已。共一百三十九頁面向?qū)ο鬁y試(cèshì)OOTOOT的主要特點是:利用對象的封裝性。測試以類為基本單位進(jìn)行。測試只需針對類定義范圍內(nèi)的屬性和服務(wù)、以及有限的對外接口所涉及到的部分即可。利用對象的繼承性。若父類已被測試或父類是可重用構(gòu)件,則對子類的測試重點只是那些新定義的屬性和服務(wù)。對于用OOA、OOD和OOP實現(xiàn)的軟件,OOT通過捕捉OOA、OOD模型信息,檢查程序與模型不匹配的錯誤,可以極大地提高測試效率。這一點是傳統(tǒng)程序設(shè)計方法(fāngfǎ)是無法達(dá)到的。共一百三十九頁面向?qū)ο蟮能浖S護(hù)OO方法為改進(jìn)軟件維護(hù)提供了有效的途徑。主要表現(xiàn)在:因為(yīnwèi)OO方法在各個階段表示的一致性,使得實現(xiàn)的程序與問題域是一致的,便于理解和閱讀,也為糾錯和功能擴(kuò)充提供了便利。系統(tǒng)維護(hù)過程中的老大難問題是系統(tǒng)功能的變化并由此產(chǎn)生的影響。在OO方法中,由于對象的封裝性,使一個對象的修改對其它對象的影響很小,從而可以減少錯誤傳播所產(chǎn)生的“波動效應(yīng)”,使得用OO方法開發(fā)的軟件易維護(hù)。共一百三十九頁OO方法(fāngfǎ)的主要優(yōu)點⑴與人類習(xí)慣的思維方式一致

OO方法順應(yīng)人認(rèn)識過程的這個規(guī)律,從尋找要求解的對象“是什么?”開始(kāishǐ),認(rèn)識事物及其本質(zhì)規(guī)律,主觀隨意性受到限制。⑵穩(wěn)定性好傳統(tǒng)方法以“過程為中心”,以功能分解為基本方法。當(dāng)功能需求發(fā)生變化時,將引起對軟件整體結(jié)構(gòu)的修改,導(dǎo)致系統(tǒng)不穩(wěn)定。OO方法以“對象為中心”,采用對象技術(shù)。不管需求如何變化,其內(nèi)在規(guī)律不變,不會引起軟件結(jié)構(gòu)的整體變化,所以系統(tǒng)的穩(wěn)定性影響不大。⑶可重用性好⑷可維護(hù)性好共一百三十九頁軟件工程(ruǎnjiànɡōnɡchénɡ)模型1瀑布模型2原型模型3增量模型4螺旋模型5基于(jīyú)知識的模型6面向?qū)ο竽P凸惨话偃彭撈俨?pùbù)模型瀑布模型是上個世紀(jì)80年代(niándài)廣泛應(yīng)用的一種模型,至今仍然是最廣泛使用的過程模型之一。在應(yīng)用程的應(yīng)用模式也稱為軟件生存周期模式(B.W.Boehm提出的該模型)。共一百三十九頁瀑布(pùbù)模型示意圖

需求(xūqiú)分析7%系統(tǒng)設(shè)計6%軟件編程7%軟件測試13%軟件維護(hù)67%用戶要求分析報告系統(tǒng)設(shè)計報告源程序測試報告更改要求UAMATMMPUTPUAMPA系統(tǒng)分析員M項目管理員P程序員T高級程序員U

用戶共一百三十九頁瀑布模型(móxíng)的特點瀑布模型具有順序性和依賴性,即后一階段工作必須在前一階段工作完成后才能開始。推遲實現(xiàn)的觀點;把邏輯設(shè)計與物理(wùlǐ)設(shè)計清楚地劃分開,盡可能推遲物理(wùlǐ)模型的實現(xiàn),這是瀑布模型的重要指導(dǎo)思想。質(zhì)量保證的觀點。瀑布模型強(qiáng)調(diào)的是優(yōu)質(zhì),即每一步都循序漸進(jìn),及早消除隱患,從而保證軟件質(zhì)量。致命缺點是只有做出精確的需求分析,才能取得預(yù)期的結(jié)果。由于各種客觀、主觀的原因,需求分析往往不很精確,常常給日后的開發(fā)帶來隱患。共一百三十九頁快速原型(yuánxíng)模型原型模型的主要思想:

先借用已有系統(tǒng)作為原型模型,通過“樣品”不斷改進(jìn),使得最后的產(chǎn)品(chǎnpǐn)就是用戶所需要的。原形模型的特點:⑴開發(fā)人員和用戶在“原型”上達(dá)成一致。這樣可以減少設(shè)計中的錯誤和開發(fā)中的風(fēng)險,以及對用戶培訓(xùn)的時間,而提高了系統(tǒng)的實用、正確性以及用戶的滿意程度。⑵縮短開發(fā)周期,加快工程進(jìn)度。⑶降低成本。原型模型的缺點:當(dāng)告訴用戶,還必須重新生產(chǎn)該產(chǎn)品時,用戶是很難接受的。這往往給工程繼續(xù)開展帶來不利因素。共一百三十九頁共一百三十九頁快速(kuàisù)原型模型

分析(fēnxī)原型樣品模型設(shè)計編程測試使用修改與改進(jìn)在系統(tǒng)分析與設(shè)計中,采用交互式,反復(fù)修改與不斷改進(jìn)的方式進(jìn)行。還有的把原型模式嵌套在瀑布模型中運用。共一百三十九頁增量(zēnɡliànɡ)模型也稱漸增模型。它把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試(cèshì)。增量模型是一種非整體開發(fā)的模型。軟件在該模型中是“逐漸”開發(fā)出來的,開發(fā)出一部分,向用戶展示一部分,讓用戶及早看到部分軟件,及早發(fā)現(xiàn)問題。或者先開發(fā)一個“原型”軟件,完成部分主要功能,展示給用戶征求意見,然后逐步完善,最終后的滿意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計方案有一定風(fēng)險的軟件項目。缺點:要求軟件具有開放的結(jié)構(gòu)是這種模型固有的困難。共一百三十九頁共一百三十九頁螺旋(luóxuán)模型將工程劃分為4個主要活動:制定計劃、風(fēng)險分析、實現(xiàn)工程和用戶評價。4個活動螺旋式地重復(fù)執(zhí)行,直到最終得到用戶認(rèn)可的產(chǎn)品。制定計劃:確定軟件目標(biāo),選定實施方案,弄清項目開發(fā)限制條件。風(fēng)險分析:分析可選方案,分析識別風(fēng)險,研究(yánjiū)解決化解風(fēng)險的辦法。實現(xiàn)工程:實施軟件產(chǎn)品的開發(fā)。用戶評價:對當(dāng)前工作結(jié)果進(jìn)行評價,提出改進(jìn)產(chǎn)品的建議。螺旋模型的缺點:很難讓用戶確信這種演化方法的結(jié)果是可以控制的。共一百三十九頁共一百三十九頁螺旋模型(móxíng)的缺陷建立在風(fēng)險分析的基礎(chǔ)上需要有一個非常有經(jīng)驗的小組來準(zhǔn)確地分析和檢測風(fēng)險絕對依賴(yīlài)人的素質(zhì)(本身就是冒險!)不適合新手開發(fā)中的每一層都很有彈性,并不是很明確的界限每一層的目標(biāo)和計劃都是由小組本身來制定。要求有經(jīng)驗的人來組成。共一百三十九頁智能(zhìnénɡ)模型也稱基于知識(zhīshi)的軟件開發(fā)模型,它與專家系統(tǒng)結(jié)合在一起。該模型在實施過程中要建立知識庫,將模型本身、軟件工程知識與特定領(lǐng)域的知識分別存入數(shù)據(jù)庫。以軟件工程知識為基礎(chǔ)的生成規(guī)則構(gòu)成的專家系統(tǒng)與含應(yīng)用領(lǐng)域知識規(guī)則的其他專家系統(tǒng)相結(jié)合,構(gòu)成這一應(yīng)用領(lǐng)域的軟件開發(fā)系統(tǒng)。共一百三十九頁面向?qū)ο蟮拈_發(fā)(kāifā)模型其主導(dǎo)思想是:在整個軟件開發(fā)過程中將面向?qū)ο蠹夹g(shù)貫穿于整個生存周期。當(dāng)然,還要結(jié)合傳統(tǒng)開發(fā)模式中好的、已被無數(shù)成功開發(fā)活動證明是可行的經(jīng)驗和技術(shù)。具備3個主要的階段:分析:模擬

“關(guān)鍵系統(tǒng)(xìtǒng)”來表示用戶要求,并設(shè)計獨立實現(xiàn)的“關(guān)鍵類”。設(shè)計:限制并優(yōu)化關(guān)鍵類,在特定的環(huán)境中實現(xiàn),得到另外的類。實現(xiàn):

定義類的接口和實現(xiàn)方法,然后編寫并統(tǒng)一測試所有的類。共一百三十九頁面向?qū)ο箝_發(fā)(kāifā)的缺陷還不成熟幾個有影響的面向?qū)ο箝_發(fā)的過程對不同的步驟意見不一。在大的項目上經(jīng)驗不多,在小項目上尚可。在每個過程步上細(xì)節(jié)少,新手難于理解。晚期的測試開發(fā)過程沒有中間的版本,幾乎(jīhū)所有的測試都留在最后的實現(xiàn)階段。結(jié)構(gòu)上的死板假設(shè)所有的結(jié)構(gòu)設(shè)計都定義好在要求階段,對于設(shè)計和實現(xiàn)階段基本上沒有結(jié)構(gòu)上變化的余地。.

共一百三十九頁軟件開發(fā)技術(shù)(jìshù)構(gòu)件技術(shù)軟件(ruǎnjiàn)復(fù)用技術(shù)C/S技術(shù)B/S技術(shù)共一百三十九頁構(gòu)件技術(shù)構(gòu)件技術(shù)是基于OO技術(shù)上的更高級的抽象。它把底層的對象集合打成包,組成功能“插件”?;跇?gòu)件技術(shù)的軟件生產(chǎn)就是把已存在的構(gòu)件組裝(集成)到當(dāng)前軟件系統(tǒng)的框架結(jié)構(gòu)中,從而生產(chǎn)出新的軟件產(chǎn)品。OO技術(shù)是在“數(shù)據(jù)十算法”的基礎(chǔ)上提升(tíshēng)了對事物的認(rèn)識方法。而構(gòu)件技術(shù)則在“對象+算法”的基礎(chǔ)上將認(rèn)識事物的角度從對象個體本身提升到個體在群體中的作用。這個認(rèn)識的提高具有本質(zhì)的不同。從抽象程度來看,OO技術(shù)已達(dá)到了類級重用(代碼重用),它以類為封裝的單位。而構(gòu)件是對一組類的組合進(jìn)行封裝,可以將底層的多個邏輯組合成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到一個系統(tǒng),使模塊的重用從代碼級、對象級、架構(gòu)級到系統(tǒng)級都可能實現(xiàn)。共一百三十九頁構(gòu)件(gòujiàn)的屬性構(gòu)件是可獨立配置的單元,因此構(gòu)件必須自包容。構(gòu)件強(qiáng)調(diào)與環(huán)境和其他構(gòu)件的分離,因此構(gòu)件的實現(xiàn)是嚴(yán)格封裝的,外界沒機(jī)會或沒必要知道構(gòu)件內(nèi)部的實現(xiàn)細(xì)節(jié)。構(gòu)件可以在適當(dāng)?shù)沫h(huán)境中被復(fù)合使用,因此構(gòu)件需要(xūyào)提供清楚的接口規(guī)范,可以與環(huán)境交互??梢钥闯?,構(gòu)件沿襲了對象的封裝特性,但同時并不局限于一個對象,其內(nèi)部可以封裝一個或多個類、原型對象甚至過程,結(jié)構(gòu)是靈活的。共一百三十九頁中間件構(gòu)件是依賴于平臺環(huán)境的。那么在分布式異構(gòu)環(huán)境中如何應(yīng)用構(gòu)件呢?中間件就是基于跨環(huán)境的構(gòu)件應(yīng)用而發(fā)展起來的。中間件是介于應(yīng)用層和網(wǎng)絡(luò)層之間的一個功能層次,是使應(yīng)用系統(tǒng)獨立于由異構(gòu)操作環(huán)境(操作系統(tǒng)、硬件平臺及通信協(xié)議等)組成的開發(fā)環(huán)境。中間件擴(kuò)展了客戶/服務(wù)器結(jié)構(gòu),形成了一個包括客戶、中間件和服務(wù)器在內(nèi)的三層次結(jié)構(gòu)及多層次結(jié)構(gòu),為開發(fā)可靠的、可擴(kuò)展的、復(fù)雜的事物(shìwù)密集型應(yīng)用提供了有力的支持。共一百三十九頁軟件(ruǎnjiàn)復(fù)用技術(shù)軟件復(fù)用是指在軟件開發(fā)過程中重復(fù)使用相同或相似軟件元素的過程。軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案,它使得應(yīng)用系統(tǒng)的開發(fā)不再采用一切從零開始的模式,而是以已有的工作模式為基礎(chǔ),充分利用過去應(yīng)用系統(tǒng)開發(fā)中積累的知識和經(jīng)驗,從而將開發(fā)的重點集中于應(yīng)用的特有構(gòu)成成分。為了能夠在軟件開發(fā)過程中重用已有的復(fù)用件,必須不斷地進(jìn)行復(fù)用件的積累,并將它們組織成復(fù)用件庫。因此,軟件復(fù)用不僅要解決如何檢索所需的復(fù)用件,還要解決如何選取復(fù)用件、如何組織復(fù)用件庫等問題(wèntí)。這類項目通常稱為軟件復(fù)用項目。軟件重用過程可借助于支持軟件重用的CASE工具,其主要任務(wù)是:用某種組織結(jié)構(gòu)實現(xiàn)復(fù)用件庫的存儲,提供友好的人機(jī)界面,幫助用戶瀏覽、檢索和修改復(fù)用件庫,并且對用戶感興趣的復(fù)用件進(jìn)行解釋。共一百三十九頁軟件復(fù)用方式(fāngshì)分類⑴依據(jù)復(fù)用的對象分類;可以分為:產(chǎn)品復(fù)用指復(fù)用已有的軟件構(gòu)件,通過構(gòu)件集成得到新系統(tǒng)。產(chǎn)品復(fù)用是目前(mùqián)現(xiàn)實的、主流的途徑。過程復(fù)用指復(fù)用已有的軟件開發(fā)過程,過程復(fù)用依賴于軟件自動化技術(shù)的發(fā)展。⑵依據(jù)對可復(fù)用信息進(jìn)行復(fù)用的方式分類,可分為:白盒復(fù)用指已有構(gòu)件并不能完全符合用戶要求,需要根據(jù)用戶需求進(jìn)行適應(yīng)性修改后才能使用。黑盒復(fù)用指對已有構(gòu)件不需作任何修改,通過構(gòu)件組裝的方式直接進(jìn)行復(fù)用。這是目前的研究熱點,也是將來的發(fā)展趨勢。共一百三十九頁技術(shù)(jìshù)方面的問題采用軟件復(fù)用可以降低開發(fā)成本,但如果其原件存在的某些問題(wèntí)代碼,可能會導(dǎo)致其他采用該代碼的系統(tǒng)具有相同的問題(wèntí)代碼;這種情況稱之為繼承性缺陷。因此當(dāng)原件的問題代碼被修改后,往往無法自動更新實用軟件中相應(yīng)的代碼;最終導(dǎo)致實用軟件中的問題代碼依舊存在。這種非但沒有降低開發(fā)成本,反而增加維護(hù)消耗的復(fù)用技術(shù)顯然是失敗的。共一百三十九頁C/S技術(shù)(jìshù)客戶機(jī)/服務(wù)器系統(tǒng)也稱C/S(Client/Server)系統(tǒng),它是基于局域網(wǎng)/廣域網(wǎng)的系統(tǒng)。在C/S中存在著服務(wù)器和客戶端。為了充分利用客戶機(jī)的計算能力,計算和事務(wù)處理在服務(wù)器和客戶機(jī)之間分配。服務(wù)器承擔(dān)數(shù)據(jù)的集中管理、通信和客戶管理的任務(wù),因為數(shù)據(jù)在服務(wù)器端,對數(shù)據(jù)的處理和計算都在服務(wù)器端執(zhí)行。而人機(jī)界面和一些需要實時(shíshí)響應(yīng)的事件或人機(jī)交互的處理等在客戶端進(jìn)行,這些程序都運行在客戶端。C/S系統(tǒng)往往需要數(shù)據(jù)庫服務(wù)器。共一百三十九頁C/S系統(tǒng)(xìtǒng)體系結(jié)構(gòu)特征計算和處理分布(fēnbù)在服務(wù)器和客戶機(jī)之間。數(shù)據(jù)管理集中在服務(wù)器端。軟件駐留在服務(wù)器和客戶機(jī)。共一百三十九頁C/S應(yīng)用(yìngyòng)系統(tǒng)的特征分布數(shù)據(jù)。出于安全性和負(fù)載平衡的考慮,數(shù)據(jù)庫可以分布在多個數(shù)據(jù)庫服務(wù)器上。分布過程。不同(bùtónɡ)的過程(事務(wù)處理、數(shù)據(jù)庫連接等)可以在不同(bùtónɡ)服務(wù)器上進(jìn)行。客戶為中心。把需要在客戶端執(zhí)行的程序和定制的程序放在客戶端,以使客戶快速得到響應(yīng)。把對數(shù)據(jù)進(jìn)行處理的過程放在數(shù)據(jù)庫服務(wù)器端,以加快數(shù)據(jù)處理速度。異構(gòu)硬件和軟件。在C/S體系結(jié)構(gòu)中很容易加入多層結(jié)構(gòu),屏蔽不同的硬件和軟件。例如,加入應(yīng)用服務(wù)器可以基于不同的操作系統(tǒng)和計算機(jī)主機(jī),同樣客戶端安裝的中間件可以基于不同的客戶端系統(tǒng),例如,Linux,Windows。共一百三十九頁C/S系統(tǒng)(xìtǒng)構(gòu)成C/S結(jié)構(gòu)發(fā)展經(jīng)歷(jīnglì)了兩個階段:兩層結(jié)構(gòu)和三(多)層結(jié)構(gòu)共一百三十九頁兩層結(jié)構(gòu)(jiégòu)C/S系統(tǒng)第一層是客戶端軟件,由應(yīng)用程序和相應(yīng)的數(shù)據(jù)庫鏈接程序組成,企業(yè)的業(yè)務(wù)過程都在程序中表現(xiàn)。第二層包括數(shù)據(jù)庫服務(wù)器,根據(jù)客戶端軟件的請求進(jìn)行數(shù)據(jù)庫操作,然后將結(jié)果傳送(chuánsònɡ)給客戶端軟件。兩層應(yīng)用軟件的開發(fā)工作主要集中在客戶端,客戶端軟件不但要完成用戶界面和數(shù)據(jù)顯示的工作,還要完成一部分對商業(yè)和應(yīng)用邏輯的處理工作。兩層結(jié)構(gòu)的C/S系統(tǒng)僅能在各自的客戶機(jī)和數(shù)據(jù)庫服務(wù)器之間使用,分割了界面和數(shù)據(jù),使得客戶機(jī)要管理復(fù)雜的軟件,導(dǎo)致“肥胖”客戶機(jī)的產(chǎn)生。兩層C/S系統(tǒng)不能進(jìn)行有效的擴(kuò)展,使這些系統(tǒng)不能支持大量用戶的訪問和高容量事務(wù)處理的應(yīng)用。共一百三十九頁三(多)層結(jié)構(gòu)(jiégòu)C/S系統(tǒng)客戶機(jī)上只安裝具有用戶界面和簡單的數(shù)據(jù)處理功能的應(yīng)用程序,負(fù)責(zé)處理與用戶的交互和與應(yīng)用服務(wù)器的交互。而將商業(yè)(shāngyè)和應(yīng)用邏輯的處理功能移到中間層——應(yīng)用服務(wù)器上。應(yīng)用服務(wù)器負(fù)責(zé)處理商業(yè)和應(yīng)用邏輯,接受客戶端應(yīng)用程序的請求,然后根據(jù)商業(yè)和應(yīng)用邏輯將這個請求轉(zhuǎn)化為數(shù)據(jù)庫請求后與數(shù)據(jù)庫服務(wù)器交互,并將與數(shù)據(jù)庫服務(wù)器交互的結(jié)果傳送給客戶端應(yīng)用程序。數(shù)據(jù)庫服務(wù)器軟件根據(jù)應(yīng)用服務(wù)器發(fā)送的請求進(jìn)行數(shù)據(jù)庫操作,并將操作的結(jié)果傳送給應(yīng)用服務(wù)器。共一百三十九頁三層C/S結(jié)構(gòu)(jiégòu)優(yōu)點整個系統(tǒng)被分成不同的邏輯塊,層次清晰,一層的改動(gǎidòng)不會影響其他層次;能夠使“肥胖”的客戶機(jī)變“瘦”;開發(fā)和管理工作向服務(wù)器端轉(zhuǎn)移,使得分布的數(shù)據(jù)處理成為可能;管理和維護(hù)變得相對簡單。共一百三十九頁C/S結(jié)構(gòu)(jiégòu)的局限性第一,C/S結(jié)構(gòu)的計算能力過于分散,網(wǎng)絡(luò)中服務(wù)器和客戶機(jī)的數(shù)目正發(fā)生“細(xì)胞”分裂,使得系統(tǒng)的管理費用以幾何級數(shù)的方式增長。第二,C/S結(jié)構(gòu)中數(shù)據(jù)庫信息的使用只限于局域網(wǎng)的范圍內(nèi),無法利用(lìyòng)Internet的網(wǎng)絡(luò)資源。第三,在C/S結(jié)構(gòu)中,無論多小的企業(yè)都必須安裝自己的服務(wù)器,而服務(wù)器和服務(wù)器軟件的管理和維護(hù)都是非常復(fù)雜的工作,需要專門人員負(fù)責(zé),小企業(yè)往往無力購買高性能的服務(wù)器和聘用專門人員。因此,C/S結(jié)構(gòu)不利于小企業(yè)計算機(jī)應(yīng)用的發(fā)展。共一百三十九頁B/S技術(shù)(jìshù)瀏覽器/服務(wù)器系統(tǒng)也稱B/S(Browser/Server)系統(tǒng),它也是基于局域網(wǎng)/廣域網(wǎng)的系統(tǒng)。它的客戶端是標(biāo)準(zhǔn)的瀏覽器(如IE等),服務(wù)器端為標(biāo)準(zhǔn)的Web服務(wù)器,可協(xié)同應(yīng)用服務(wù)器響應(yīng)瀏覽器的請求。B/S是一種三層結(jié)構(gòu)的系統(tǒng):第一層客戶機(jī)是用戶與整個系統(tǒng)的接口??蛻魬?yīng)用程序就是一個(yīɡè)通用的瀏覽器。第二層是Web服務(wù)器,它負(fù)責(zé)啟動相應(yīng)的進(jìn)程來響應(yīng)處理請求,并動態(tài)生成一串嵌入了處理結(jié)果的HTML代碼,并返回給客戶端的瀏覽器。如果客戶機(jī)提交的請求包括數(shù)據(jù)的存取,Web服務(wù)器還需與DB服務(wù)器協(xié)同完成這一處理工作。第三層數(shù)據(jù)庫服務(wù)器的任務(wù)類似于C/S模式,負(fù)責(zé)協(xié)調(diào)不同的Web服務(wù)器發(fā)出的SQL請求,管理數(shù)據(jù)庫。共一百三十九頁B/S系統(tǒng)(xìtǒng)的特點⑴B/S系統(tǒng)采用B/W/D結(jié)構(gòu)。即客戶端只安裝一個瀏覽器(Brow

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論