版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件開(kāi)發(fā)技術(shù)(jìshù)基礎(chǔ)計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心(zhōngxīn)共一百三十九頁(yè)1.理解軟件及其軟件工程的概念(gàiniàn)2.了解軟件危機(jī)與軟件的生命周期概念3.理解典型軟件開(kāi)發(fā)過(guò)程4.了解OO軟件開(kāi)發(fā)技術(shù)5.了解C/S和B/S軟件系統(tǒng)的結(jié)構(gòu)教學(xué)內(nèi)容共一百三十九頁(yè)問(wèn)題(wèntí)的提出什么是軟件?軟件有哪些特征?軟件工程的含義是什么?什么是軟件危機(jī)?什么是軟件生命周期?軟件開(kāi)發(fā)技術(shù)(jìshù)究竟有哪些B/S和C/S結(jié)構(gòu)是什么?……共一百三十九頁(yè)軟件(ruǎnjiàn)的基本概念程序是為實(shí)現(xiàn)特定(tèdìng)目標(biāo)或解決特定(tèdìng)問(wèn)題而用計(jì)算機(jī)語(yǔ)言編寫(xiě)的命令序列的集合軟件=程序+文檔+數(shù)據(jù)IEEE的軟件定義:指計(jì)算機(jī)程序、方法和規(guī)則、相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行它所必需的數(shù)據(jù)計(jì)算機(jī)系統(tǒng)由計(jì)算機(jī)硬件和軟件構(gòu)成計(jì)算機(jī)能完成各種神奇的功能是因?yàn)榇嬖诟鞣N軟件什么是軟件?什么是程序?共一百三十九頁(yè)軟件(ruǎnjiàn)的特征軟件是邏輯產(chǎn)品軟件產(chǎn)品質(zhì)量的體現(xiàn)(tǐxiàn)方式不同軟件產(chǎn)品的生命周期和失敗曲線(xiàn)不同軟件產(chǎn)品的成本構(gòu)成不同大多數(shù)軟件仍然是定制生產(chǎn)的軟件產(chǎn)品的不同屬性共一百三十九頁(yè)軟件(ruǎnjiàn)是邏輯產(chǎn)品軟件產(chǎn)品是:具有產(chǎn)值、價(jià)格、質(zhì)量和功能的特性(tèxìng)看不見(jiàn),是邏輯的、無(wú)形的是腦力勞動(dòng)的結(jié)晶共一百三十九頁(yè)軟件產(chǎn)品質(zhì)量(zhìliàng)體現(xiàn)方式不同質(zhì)量體現(xiàn)方式不同:實(shí)用、可靠、可操作性;可維護(hù)性強(qiáng)方便用戶(hù)不會(huì)折舊、損壞(sǔnhuài)、零部件老化共一百三十九頁(yè)軟件產(chǎn)品的成本構(gòu)成(gòuchéng)不同
一般產(chǎn)品的成本構(gòu)成:材料、設(shè)計(jì)、生產(chǎn)(shēngchǎn)制造、
售后服務(wù)、稅費(fèi)、……軟件產(chǎn)品的成本構(gòu)成:人力、設(shè)計(jì)、售后服務(wù)、稅費(fèi)、……共一百三十九頁(yè)軟件產(chǎn)品以定制(dìnɡzhì)生產(chǎn)為主硬件產(chǎn)品的生產(chǎn)技術(shù)和工藝已經(jīng)成熟,可以做到標(biāo)準(zhǔn)化、系列化成批生產(chǎn),不論哪個(gè)廠(chǎng)家生產(chǎn)的產(chǎn)品,用戶(hù)買(mǎi)來(lái)都可以集成、組裝和替換使用。盡管軟件產(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ù)或用戶(hù)定制的。共一百三十九頁(yè)軟件產(chǎn)品的不同(bùtónɡ)屬性為便于軟件產(chǎn)品的研制、生產(chǎn)、維護(hù)和使用,軟件還必須具有(jùyǒu):可維護(hù)性(Maintainability)
獨(dú)立性(Dependability)
效率性(Efficiency)
可用性(Usability)共一百三十九頁(yè)軟件(ruǎnjiàn)分類(lèi)軟件按不同方式劃分為不同的類(lèi)型(lèixíng):按功能劃分按規(guī)模劃分共一百三十九頁(yè)按功能(gōngnéng)劃分軟件分類(lèi)
軟件系統(tǒng)軟件應(yīng)用軟件操作系統(tǒng)網(wǎng)絡(luò)系統(tǒng)語(yǔ)言編譯器工具軟件管理軟件實(shí)時(shí)軟件科學(xué)計(jì)算、數(shù)據(jù)處理嵌入式軟件人工智能軟件專(zhuān)用領(lǐng)域軟件共一百三十九頁(yè)系統(tǒng)軟件(xìtǒnɡruǎnjiàn)是支持計(jì)算機(jī)系統(tǒng)正常運(yùn)行并實(shí)現(xiàn)用戶(hù)(yònghù)操作的那部分軟件。一般是在計(jì)算機(jī)系統(tǒng)購(gòu)買(mǎi)時(shí)隨機(jī)攜帶的,也可以根據(jù)需要另行安裝。①操作系統(tǒng)(OperatingSystem)②網(wǎng)絡(luò)系統(tǒng)(NetworkSystem)③語(yǔ)言編譯系統(tǒng)(
LanguageCompiler)④通信軟件(CommunicationsSoftware)⑤工具軟件(ToolsSoftware)共一百三十九頁(yè)應(yīng)用軟件應(yīng)用軟件是為滿(mǎn)足用戶(hù)不同領(lǐng)域、不同問(wèn)題的應(yīng)用需求而提供的那部分軟件。它可以(kěyǐ)拓寬計(jì)算機(jī)系統(tǒng)的應(yīng)用領(lǐng)域,放大硬件的功能。應(yīng)用軟件具有無(wú)限豐富和美好的開(kāi)發(fā)前景。①事務(wù)(shìwù)處理軟件②實(shí)時(shí)軟件③科學(xué)計(jì)算和數(shù)據(jù)處理軟件④嵌入式軟件⑤人工智能軟件共一百三十九頁(yè)按規(guī)模劃分(huàfēn)軟件分類(lèi)類(lèi)別參加人員數(shù)研制期限產(chǎn)品規(guī)模(語(yǔ)句行數(shù))實(shí)例微型11~4周0.5k選擇排序程序小型11~6月1k~2k數(shù)值計(jì)算程序中型2~51~2年5k~10k匯編程序較大型5~202~3年50k~100k數(shù)據(jù)庫(kù)系統(tǒng)大型100~10004~5年1M操作系統(tǒng)極大型2000~50005~10年1M~10M空中交通管制系統(tǒng)共一百三十九頁(yè)軟件開(kāi)發(fā)技術(shù)(jìshù)發(fā)展史社會(huì)應(yīng)用需求的驅(qū)動(dòng)是推進(jìn)軟件發(fā)展進(jìn)程的主線(xiàn):從軟件發(fā)展早期的按個(gè)人意愿編寫(xiě)代碼,到按軟件工程的理論生產(chǎn)大型應(yīng)用系統(tǒng);從手工作坊式的封閉性制作到按標(biāo)準(zhǔn)制式、大工業(yè)生產(chǎn)的開(kāi)放系統(tǒng);從注重個(gè)人精雕細(xì)琢地編寫(xiě)代碼的技巧到注重工程項(xiàng)目的管理和開(kāi)發(fā)團(tuán)隊(duì)的協(xié)作;從為特定應(yīng)用定制設(shè)計(jì)到以復(fù)用為目標(biāo)的組件式開(kāi)發(fā);從由少數(shù)軟件天才的編程藝術(shù)到由廣大(guǎngdà)用戶(hù)直接參與的應(yīng)用開(kāi)發(fā)。共一百三十九頁(yè)階段(jiēduàn)劃分半個(gè)多世紀(jì)以來(lái),軟件及軟件開(kāi)發(fā)技術(shù)在理論、觀(guān)念(guānniàn)、目標(biāo)及技術(shù)方法等方面都發(fā)生了很大變化。以10年左右為間隔,劃分為五個(gè)階段。詳見(jiàn)表1-1。表中概述了每個(gè)時(shí)期軟件開(kāi)發(fā)技術(shù)的特點(diǎn),包括軟件開(kāi)發(fā)技術(shù)處理的對(duì)象、用途、目的、開(kāi)發(fā)方法、開(kāi)發(fā)工具、發(fā)展?fàn)顩r、技術(shù)突破、理論成就及目標(biāo)等。共一百三十九頁(yè)軟件(ruǎnjiàn)危機(jī)從20世紀(jì)60年代開(kāi)始,軟件業(yè)出現(xiàn),研制軟件系統(tǒng)需要投入大量的人力、物力和資金,但是系統(tǒng)的質(zhì)量卻無(wú)法保證。開(kāi)發(fā)軟件所需的高成本與軟件產(chǎn)品的低質(zhì)量之間存在尖銳的矛盾(máodùn)。軟件生產(chǎn)周期漫長(zhǎng),不能滿(mǎn)足市場(chǎng)需求,軟件開(kāi)發(fā)陷入不可自拔的惡性循環(huán)之中。這種現(xiàn)象被稱(chēng)為“軟件危機(jī)”(SoftwareCrisis)。以IBM公司的OS/360操作系統(tǒng)為例。它共有4000多個(gè)模塊、100萬(wàn)行指令,共投入5000人年,耗資5億美元,但在交付使用的系統(tǒng)中仍找出2000個(gè)以上的錯(cuò)誤。共一百三十九頁(yè)軟件(ruǎnjiàn)危機(jī)的具體表現(xiàn)⑴軟件開(kāi)發(fā)進(jìn)度難以預(yù)測(cè)⑵軟件開(kāi)發(fā)成本難以控制⑶用戶(hù)對(duì)軟件功能難以滿(mǎn)足⑷軟件產(chǎn)品質(zhì)量無(wú)法保證⑸軟件產(chǎn)品難以維護(hù)⑹軟件通常缺少(quēshǎo)適當(dāng)?shù)奈臋n資料⑺生產(chǎn)率提高的速度不能滿(mǎn)足社會(huì)需要共一百三十九頁(yè)軟件(ruǎnjiàn)危機(jī)產(chǎn)生的原因
產(chǎn)生軟件危機(jī)有兩個(gè)方面的原因:與軟件本身的特點(diǎn)有關(guān);是內(nèi)在因素、客觀(guān)的存在,只能因勢(shì)利導(dǎo)加以解決。與軟件開(kāi)發(fā)和維護(hù)的技術(shù)(jìshù)方法有關(guān);是外在因素,可以完善、提高。共一百三十九頁(yè)軟件特點(diǎn)(tèdiǎn)的因素(內(nèi)因)軟件是邏輯產(chǎn)品,是代碼化了的人的思維活動(dòng)。在總體構(gòu)思時(shí),別人無(wú)法管理和干預(yù)。在寫(xiě)出程序、并在機(jī)器上運(yùn)行之前,進(jìn)展情況(qíngkuàng)難以掌握,開(kāi)發(fā)質(zhì)量也無(wú)法評(píng)估。這些都給管理和控制帶來(lái)不便。軟件是特定問(wèn)題在計(jì)算機(jī)上的運(yùn)行描述。實(shí)際問(wèn)題的復(fù)雜性決定了一個(gè)實(shí)用軟件系統(tǒng)規(guī)模往往十分龐大。大有大的難處。程序規(guī)模越大,控制、管理難度也就越大。共一百三十九頁(yè)軟件開(kāi)發(fā)維護(hù)技術(shù)方法(fāngfǎ)的因素開(kāi)發(fā)人員和用戶(hù)(yònghù)之間的矛盾軟件開(kāi)發(fā)各階段任務(wù)不明確,方法不科學(xué)軟件產(chǎn)品有其生命周期。在周期的各個(gè)階段有其具體的任務(wù),如何完成任務(wù),各個(gè)階段有不同的技術(shù)方法和操作步驟。只有科學(xué)的按生命周期各階段的任務(wù)去組織實(shí)施,才能保證質(zhì)量,降低成本;急于求成,不按科學(xué)規(guī)律、方法實(shí)施,只能“事倍功半”,事與愿違。許多軟件系統(tǒng)開(kāi)發(fā)失敗的主要原因是開(kāi)發(fā)人員在沒(méi)有準(zhǔn)確、完整地了解了用戶(hù)的需求后就急于編程;用戶(hù)對(duì)需求也往往不能準(zhǔn)確、完整地提出。重編程,輕分析;重開(kāi)發(fā),輕維護(hù);重程序,輕文檔軟件產(chǎn)品的使用壽命很長(zhǎng)。在這期間要對(duì)軟件進(jìn)行必要的修改。據(jù)統(tǒng)計(jì)數(shù)據(jù)表明,軟件維護(hù)的費(fèi)用占總費(fèi)用的55%-70%。軟件工程的一個(gè)重要目標(biāo)就是提高軟件的可維護(hù)性,減少軟件維護(hù)的代價(jià)。共一百三十九頁(yè)解決軟件危機(jī)(wēijī)的途徑開(kāi)發(fā)軟件選用最好的開(kāi)發(fā)工具是至關(guān)重要的,即選擇、設(shè)置良好的軟件工程支撐環(huán)境。工具選用的好,它可以“放大”人的智力(zhìlì),大大加快軟件開(kāi)發(fā)速度,提高軟件質(zhì)量。采用現(xiàn)代化、社會(huì)化的組織管理方式使用成功技術(shù)和方法(面向過(guò)程、面向?qū)ο?、面向組件等)使用更好的軟件開(kāi)發(fā)工具(匯編、C、VC、JAVA等)為了解決軟件危機(jī)就要從技術(shù)措施和組織管理兩個(gè)方面去研究,不斷總結(jié)經(jīng)驗(yàn)教訓(xùn),提高軟件生產(chǎn)效率,降低軟件開(kāi)發(fā)和維護(hù)的成本。共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)的誕生
70年代出現(xiàn)的軟件危機(jī)歸結(jié)為軟件開(kāi)發(fā)技術(shù)落后,人們追求高效的軟件開(kāi)發(fā)技術(shù)來(lái)解決軟件危機(jī),軟件工程應(yīng)運(yùn)而生(yìngyùnérshēng):克服、解決“軟件危機(jī)”改進(jìn)“軟件生產(chǎn)”方法、工具提高軟件的生產(chǎn)率共一百三十九頁(yè)軟件(ruǎnjiàn)生命周期軟件生存周期是指一個(gè)軟件從提出開(kāi)發(fā)要求直到該軟件報(bào)廢為止的整個(gè)時(shí)期。針對(duì)不同的開(kāi)發(fā)模型、不同的開(kāi)發(fā)對(duì)象以及不同的開(kāi)發(fā)方法,軟件生命周期可以有不同的劃分。如果(rúguǒ)不考慮上述不同的因素以及應(yīng)用領(lǐng)域、項(xiàng)目規(guī)模和復(fù)雜性,軟件生命周期可以劃分為:
軟件定義、軟件開(kāi)發(fā)、軟件維護(hù)共一百三十九頁(yè)軟件(ruǎnjiàn)定義軟件定義時(shí)期的核心任務(wù)是:
“做什么”。即要確定軟件開(kāi)發(fā)工程的總目標(biāo);確定工程的可行性;提出實(shí)現(xiàn)(shíxiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)應(yīng)實(shí)現(xiàn)(shíxiàn)的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并且制定工程進(jìn)度表。這個(gè)時(shí)期的工作通常又稱(chēng)為系統(tǒng)分析,由系統(tǒng)分析員和用戶(hù)共同負(fù)責(zé)完成。軟件定義時(shí)期通常進(jìn)一步劃分成3個(gè)階段:
問(wèn)題定義、可行性研究和需求分析
共一百三十九頁(yè)軟件開(kāi)發(fā)軟件開(kāi)發(fā)時(shí)期的核心任務(wù)是:“怎么做”。即要具體設(shè)計(jì)和實(shí)現(xiàn)在軟件定義(dìngyì)時(shí)期定義(dìngyì)的軟件系統(tǒng)。它又包括4個(gè)階段:總體設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼和測(cè)試。其中前兩個(gè)階段又稱(chēng)為系統(tǒng)設(shè)計(jì),后兩個(gè)階段又稱(chēng)為系統(tǒng)實(shí)現(xiàn)。共一百三十九頁(yè)軟件維護(hù)維護(hù)時(shí)期的核心任務(wù)是:“改變”。即要保證軟件持久地滿(mǎn)足用戶(hù)各個(gè)方面改變的需要。維護(hù)時(shí)期不再進(jìn)一步劃分階段,但是每一次維護(hù)活動(dòng)本質(zhì)上都是一次壓縮和簡(jiǎn)化了的定義和開(kāi)發(fā)過(guò)程。例如,如果提出的變更要求是更加新的功能,那就要涉及從新一輪的軟件開(kāi)發(fā)過(guò)程:需求(xūqiú)分析、系統(tǒng)設(shè)計(jì)、編碼及測(cè)試。共一百三十九頁(yè)軟件(ruǎnjiàn)生命周期的圖示問(wèn)題(wèntí)定義可行性研究需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)軟件編碼軟件測(cè)試軟件維護(hù)軟件定義軟件開(kāi)發(fā)軟件維護(hù)軟件生命周期系統(tǒng)分析系統(tǒng)設(shè)計(jì)系統(tǒng)編碼系統(tǒng)測(cè)試系統(tǒng)維護(hù)共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)的定義著名軟件工程專(zhuān)家(zhuānjiā)Boehm定義著名IEEE刊物給出的定義教科書(shū)給出的定義運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并且構(gòu)造計(jì)算機(jī)程序以及為開(kāi)發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。以?xún)?yōu)質(zhì)、高效、低成本為目標(biāo),研究開(kāi)發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。運(yùn)用系統(tǒng)的、規(guī)范的和可定量的方法來(lái)開(kāi)發(fā)、運(yùn)行和維護(hù)軟件。共一百三十九頁(yè)關(guān)于(guānyú)軟件工程學(xué)軟件工程是一門(mén)交叉學(xué)科,涉及到計(jì)算機(jī)科學(xué)、管理科學(xué)、工程學(xué)和數(shù)學(xué)。軟件工程的理論、方法、技術(shù)都是建立在計(jì)算機(jī)科學(xué)的基礎(chǔ)上;它是用管理學(xué)的原理、方法進(jìn)行(jìnxíng)軟件生產(chǎn)管理;用工程學(xué)的觀(guān)點(diǎn)進(jìn)行費(fèi)用估算、制定進(jìn)度和實(shí)施方案;用數(shù)學(xué)方法建立軟件可靠性模型以及分析各種算法。共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)的目標(biāo)開(kāi)發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品提高軟件的生產(chǎn)效率滿(mǎn)足應(yīng)用的功能需要和具有較好的軟件性能能按時(shí)(ànshí)、按質(zhì)完成軟件開(kāi)發(fā)任務(wù)降低軟件開(kāi)發(fā)成本共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜度軟件經(jīng)常變化開(kāi)發(fā)軟件的效率(xiàolǜ)非常重要和諧地合作是開(kāi)發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶(hù)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)原理自1968年提出“軟件工程”的概念以來(lái),專(zhuān)家學(xué)者又陸續(xù)(lùxù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名軟件工程專(zhuān)家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開(kāi)發(fā)效率的最小準(zhǔn)則集合。共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開(kāi)發(fā)小組人員少而精承認(rèn)不斷改進(jìn)軟件工程(ruǎnjiànɡōnɡchénɡ)實(shí)踐的必要性共一百三十九頁(yè)軟件開(kāi)發(fā)活動(dòng)(huódòng)軟件工程過(guò)程是由一系列軟件工程的階段任務(wù)和活動(dòng)組成。1995年ISO將軟件生存周期的活動(dòng)和任務(wù)劃分為3個(gè)過(guò)程:主要過(guò)程(需求、設(shè)計(jì)、構(gòu)造(gòuzào)、測(cè)試和維護(hù))支持過(guò)程(軟件配置、軟件工程管理、軟件過(guò)程和軟件質(zhì)量)組織過(guò)程(基礎(chǔ)設(shè)施建設(shè)、工具和方法、改進(jìn)、培訓(xùn))共一百三十九頁(yè)主要(zhǔyào)過(guò)程主要(zhǔyào)過(guò)程包括如下軟件開(kāi)發(fā)活動(dòng):需求分析軟件設(shè)計(jì)軟件構(gòu)造軟件測(cè)試軟件維護(hù)共一百三十九頁(yè)需求(xūqiú)分析任務(wù):收集、分析、理解、確定用戶(hù)的要求;然后把用戶(hù)的要求精確、完整地描述表達(dá)出來(lái)。目的:要回答(huídá)“要解決什么問(wèn)題?”,既系統(tǒng)”做什么?“。分兩步驟:可行性研究、制定軟件開(kāi)發(fā)計(jì)劃結(jié)果:可行性報(bào)告、軟件計(jì)劃、需求說(shuō)明書(shū)需求說(shuō)明書(shū)是讓用戶(hù)理解:
“什么是他們真正需要的”。共一百三十九頁(yè)了解用戶(hù)(yònghù)需求有關(guān)的問(wèn)題什么是需求?希望,功能,限制,必需品,任何必要的東西;什么時(shí)候?
從確定方案開(kāi)始;為什么?
用戶(hù)的需求是開(kāi)發(fā)需要的依據(jù);來(lái)自哪里?
來(lái)自用戶(hù),工業(yè)標(biāo)準(zhǔn),和實(shí)踐經(jīng)驗(yàn);如何實(shí)現(xiàn)?使所有相關(guān)的人參與需求分析活動(dòng),通過(guò)有效的交流實(shí)現(xiàn);誰(shuí)來(lái)做?
用戶(hù),工程(gōngchéng)管理人員,開(kāi)發(fā)人員,維護(hù)人員。共一百三十九頁(yè)用戶(hù)(yònghù)參與需求分析的重要性根據(jù)StandishGroup1994年發(fā)表的一份研究報(bào)告統(tǒng)計(jì),延遲的、超出預(yù)算的、未完成的工程的最普遍(pǔbiàn)的原因是:⑴缺少用戶(hù)參與;⑵不完備的需求規(guī)范;⑶改變需求規(guī)范。共一百三十九頁(yè)需求分析(fēnxī)的難點(diǎn)⑴問(wèn)題的復(fù)雜性。
涉及因素多而;如運(yùn)行環(huán)境和系統(tǒng)功能等。⑵交流(jiāoliú)障礙。
涉及不同類(lèi)型人員較多,知識(shí)背景、角度、角色的不同;用戶(hù)不懂計(jì)算機(jī),程序員不懂應(yīng)用環(huán)境業(yè)務(wù)⑶不完備性和不一致性。
用戶(hù)對(duì)問(wèn)題的陳述有矛盾、片面性等造成。⑷需求易變性。
需求是變化的。共一百三十九頁(yè)需求(xūqiú)活動(dòng)⑴識(shí)別問(wèn)題
通過(guò)調(diào)研和收集資料,了解用戶(hù)的確切需求,并將用戶(hù)提出的功能行為和特殊要求等用雙方都能理解的表達(dá)方式逐條列出。在整個(gè)分析期間要和用戶(hù)充分協(xié)商。⑵可行性研究
對(duì)于大型復(fù)雜問(wèn)題,要對(duì)用戶(hù)的要求及實(shí)現(xiàn)環(huán)境從技術(shù)(jìshù)、經(jīng)濟(jì)和社會(huì)因素三個(gè)方面進(jìn)行可行性研究,以確定問(wèn)題是否可解。⑶分析建模
建立軟件求解模型;信息、行為和表示。⑷需求規(guī)格化及編寫(xiě)文檔
需求規(guī)格說(shuō)明書(shū)、初步用戶(hù)使用手冊(cè)等。共一百三十九頁(yè)軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。目的:要回答“如何解決(jiějué)該問(wèn)題?”,既系統(tǒng)“怎樣做?”。步驟:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)概要設(shè)計(jì):解決系統(tǒng)的模塊劃分、模塊的層次結(jié)構(gòu)設(shè)計(jì)。詳細(xì)設(shè)計(jì):解決每個(gè)摸塊內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)。結(jié)果:系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)和模塊功能說(shuō)明書(shū)
共一百三十九頁(yè)軟件設(shè)計(jì)工作(gōngzuò)軟件設(shè)計(jì)要做的工作可以歸結(jié)為:
軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、界面設(shè)計(jì)和過(guò)程(guòchéng)設(shè)計(jì)設(shè)計(jì)辦法是功能分解,包括:⑴采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊⑵確定每個(gè)模塊的功能⑶確定模塊之間的接口,即模塊之間傳遞的信息⑸評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量共一百三十九頁(yè)軟件設(shè)計(jì)方法(fāngfǎ)⑴面向數(shù)據(jù)流的設(shè)計(jì)(shèjì)方法;⑵結(jié)構(gòu)化設(shè)計(jì)方法;⑶面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法;Jackson方法;⑷Warnier方法⑸面向?qū)ο蠓椒ü惨话偃彭?yè)使用(shǐyòng)的開(kāi)發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖⑵程序流程圖、N-S圖、問(wèn)題分析(fēnxī)圖PAD(ProgramAnalysisDiagram)⑶類(lèi)語(yǔ)言、過(guò)程設(shè)計(jì)語(yǔ)言PDL(ProceduralDesignLanguage)等⑷統(tǒng)一建模語(yǔ)言UML(UnifiedModelingLanguage)共一百三十九頁(yè)軟件(ruǎnjiàn)構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說(shuō)明書(shū)中每個(gè)模塊的控制流程編寫(xiě)出相應(yīng)的源程序。目的:寫(xiě)出高質(zhì)量的代碼和相應(yīng)餓文檔。構(gòu)造要注意(zhùyì)使系統(tǒng)更易于使用和系統(tǒng)的可重用性。選擇合適的開(kāi)發(fā)工具及系統(tǒng)軟件、數(shù)據(jù)庫(kù)軟件、中間件等。制定編程規(guī)范。結(jié)果:源程序和文檔共一百三十九頁(yè)編程風(fēng)格(fēnggé)(1)源程序文件:變量名的命名、源程序中的注解以及(yǐjí)源程序的書(shū)寫(xiě)格式(2)數(shù)據(jù)說(shuō)明:按各類(lèi)型數(shù)據(jù)的順序以及字典順序說(shuō)明、對(duì)數(shù)據(jù)結(jié)構(gòu)加注釋說(shuō)明(3)語(yǔ)句構(gòu)造:語(yǔ)句構(gòu)造一般規(guī)則(4)輸入輸出語(yǔ)句:輸入輸出語(yǔ)句的規(guī)則。編程風(fēng)格主要體現(xiàn)如何描述源程序文件、數(shù)據(jù)說(shuō)明、輸入輸出等共一百三十九頁(yè)語(yǔ)句構(gòu)造(gòuzào)規(guī)則不要為節(jié)省空間而把多個(gè)語(yǔ)句寫(xiě)在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免使用多層嵌套的循環(huán)和重復(fù);利用(lìyòng)括號(hào)使表達(dá)式的運(yùn)算順序清晰直觀(guān)。共一百三十九頁(yè)I/O語(yǔ)句(yǔjù)規(guī)則保持輸入格式簡(jiǎn)單;對(duì)所有輸入數(shù)據(jù)都進(jìn)行校驗(yàn);使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶(hù)指定數(shù)據(jù)的數(shù)目;當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式的一致性;檢查輸入項(xiàng)中重要組合的合法性;給所有的輸出數(shù)據(jù)加標(biāo)記,并設(shè)計(jì)良好的輸出報(bào)表;用標(biāo)記標(biāo)明交互的輸入請(qǐng)求,應(yīng)規(guī)定可以使用的選擇值或邊界值;要根據(jù)用戶(hù)的不同類(lèi)型、特點(diǎn)(tèdiǎn)和要求設(shè)計(jì)輸入方案,輸入數(shù)據(jù)的格式要簡(jiǎn)單,應(yīng)具有完備的出錯(cuò)檢查和出錯(cuò)恢復(fù)措施。共一百三十九頁(yè)程序設(shè)計(jì)(chénɡxùshèjì)語(yǔ)言(1)心理特性
對(duì)人-機(jī)通信質(zhì)量有重要影響。例如,人們習(xí)慣使用已熟悉的程序設(shè)計(jì)語(yǔ)言,由此產(chǎn)生的惰性影響人們學(xué)習(xí)(xuéxí)新語(yǔ)言。(2)工程特性
它涉及到軟件的可移植性、開(kāi)發(fā)工具的可利用性等。(3)技術(shù)特性
它對(duì)設(shè)計(jì)質(zhì)量、人和整個(gè)軟件工程有影響。例如,對(duì)數(shù)據(jù)結(jié)構(gòu)復(fù)雜性要求很高的系統(tǒng),考慮選用C及C++等語(yǔ)言;若對(duì)高性能和實(shí)時(shí)功能要求高,可考慮選用Ada語(yǔ)言。選用程序設(shè)計(jì)語(yǔ)言時(shí)要考慮它的三種特性共一百三十九頁(yè)軟件測(cè)試任務(wù):檢查、發(fā)現(xiàn)程序中存在的問(wèn)題,提高系統(tǒng)可靠性目的:保證系統(tǒng)的正確性、可靠性和可用性回答:“該系統(tǒng)是否能實(shí)現(xiàn)規(guī)定的操作?”方式:模塊測(cè)試、組裝(zǔzhuānɡ)測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試結(jié)果:測(cè)試報(bào)告和軟件修改報(bào)告等工作內(nèi)容:驗(yàn)證(verification)和確認(rèn)(validation).共一百三十九頁(yè)軟件測(cè)試分類(lèi)(fēnlèi)從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)的角度劃分:1、黑盒測(cè)試是根據(jù)軟件的規(guī)格對(duì)軟件進(jìn)行的測(cè)試,這類(lèi)測(cè)試不考慮軟件內(nèi)部的運(yùn)作原理,因此軟件對(duì)用戶(hù)來(lái)說(shuō)就像一個(gè)黑盒子。軟件測(cè)試人員以用戶(hù)的角度,通過(guò)各種輸入和觀(guān)察軟件的各種輸出(shūchū)結(jié)果來(lái)發(fā)現(xiàn)軟件存在的缺陷,而不關(guān)心程序具體如何實(shí)現(xiàn)的一種軟件測(cè)試方法。2、白盒測(cè)試是把測(cè)試對(duì)象看作一個(gè)打開(kāi)的盒子。利用白盒測(cè)試法進(jìn)行動(dòng)態(tài)測(cè)試時(shí),需要測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過(guò)程,不需測(cè)試軟件產(chǎn)品的功能。白盒測(cè)試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測(cè)試。其中邏輯覆蓋包括語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。共一百三十九頁(yè)根據(jù)有多少用戶(hù)參與的劃分為:1、阿爾法測(cè)試(α測(cè)試):由一個(gè)用戶(hù)在開(kāi)發(fā)環(huán)境下進(jìn)行的測(cè)試,也可以是公司內(nèi)部(nèibù)的用戶(hù)在模擬實(shí)際操作環(huán)境下進(jìn)行的受控測(cè)試,Alpha測(cè)試不能由該系統(tǒng)的程序員或測(cè)試員完成。2、貝塔測(cè)試(β測(cè)試):指在若干客戶(hù)場(chǎng)地由客戶(hù)組織,最終用戶(hù)參與的測(cè)試,此時(shí)所有文檔均予凍結(jié),作為本軟件版本的基線(xiàn)。對(duì)于新軟件,改版則為里程碑。軟件測(cè)試分類(lèi)(fēnlèi)共一百三十九頁(yè)軟件測(cè)試分類(lèi)(fēnlèi)從是否執(zhí)行程序的角度劃分:1、靜態(tài)測(cè)試指測(cè)試不運(yùn)行的部分,例如測(cè)試產(chǎn)品說(shuō)明書(shū),對(duì)此進(jìn)行檢查和審閱.。靜態(tài)方法是指不運(yùn)行被測(cè)程序本身,僅通過(guò)分析或檢查源程序的文法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性。2、動(dòng)態(tài)測(cè)試是指通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性。根據(jù)動(dòng)態(tài)測(cè)試在軟件開(kāi)發(fā)過(guò)程中所處的階段和作用,動(dòng)態(tài)測(cè)試可分為如下幾個(gè)(jǐɡè)步驟:共一百三十九頁(yè)動(dòng)態(tài)測(cè)試(cèshì)包括⑴單元測(cè)試
對(duì)一個(gè)模塊的測(cè)試(cèshì),一般以白盒法測(cè)試(cèshì)為主,多個(gè)模塊可以并行進(jìn)行⑵集成測(cè)試最終將本項(xiàng)目所有模塊集成在一起測(cè)試,交出完整程序產(chǎn)品⑶確認(rèn)測(cè)試以用戶(hù)為主的測(cè)試。證實(shí)系統(tǒng)能否正確地實(shí)現(xiàn)其功能⑷系統(tǒng)測(cè)試軟件只是整個(gè)應(yīng)用系統(tǒng)的一部分。最后要集成為一個(gè)整體,包括硬件、軟件以及相關(guān)的其它設(shè)備。此時(shí)的測(cè)試稱(chēng)系統(tǒng)測(cè)試。共一百三十九頁(yè)設(shè)計(jì)(shèjì)測(cè)試用例應(yīng)考慮的問(wèn)題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類(lèi)型匹配。外界面主要檢查I/O文件、數(shù)據(jù)格式、類(lèi)型匹配。②模塊的數(shù)據(jù)結(jié)構(gòu):類(lèi)型是否不正確或不一致?初始化、缺省值使用情況;變量名拼錯(cuò);上、下界溢出等數(shù)據(jù)異常,測(cè)試能否正確處理等。③邊界條件:保證在邊界值的情況下模塊依然可以正確操作,值出界時(shí)要有正確反應(yīng)。④獨(dú)立路徑:保證至少所有(suǒyǒu)語(yǔ)句都要執(zhí)行一次,每個(gè)條件或子條件都執(zhí)行一次更好。⑤錯(cuò)誤處理路徑:不管程序有無(wú)異常處理都要察看出錯(cuò)處理路徑。特別要考察是否死機(jī)。共一百三十九頁(yè)程序調(diào)試調(diào)試(diàoshì)是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過(guò)程。1、目的不同
軟件測(cè)試的目的是發(fā)現(xiàn)錯(cuò)誤,至于找出錯(cuò)誤的原因和錯(cuò)誤發(fā)生的地方不是軟件測(cè)試的任務(wù),而是調(diào)試的任務(wù).
調(diào)試的目的是為了證明程序(chéngxù)的正確,因此它必須不斷地排除錯(cuò)誤.它們的出發(fā)點(diǎn)不一樣。
前者是挑錯(cuò),是一種挑剔過(guò)程,屬于質(zhì)量保證活動(dòng)。后者是排錯(cuò),是一種排除過(guò)程,是編碼活動(dòng)的一部分.共一百三十九頁(yè)程序調(diào)試2、任務(wù)不同
軟件測(cè)試它貫穿于整個(gè)開(kāi)發(fā)過(guò)程.從需求分析開(kāi)始,就要制訂軟件測(cè)試計(jì)劃,軟件設(shè)計(jì)時(shí)要設(shè)計(jì)系統(tǒng)軟件測(cè)試、集成側(cè)試用例,編碼階段要設(shè)計(jì)單元軟件測(cè)試用例并進(jìn)行單元軟件測(cè)試,軟件測(cè)試階段要進(jìn)行集成軟件測(cè)試、系統(tǒng)軟件測(cè)試等,直到產(chǎn)品交付。只要有修改就有軟件測(cè)試,產(chǎn)品交付后同樣。它是比較有規(guī)律的活動(dòng),有系統(tǒng)的方法、原則作指導(dǎo)。
而調(diào)試是編碼活動(dòng)的一部分,因此有編碼就有調(diào)試.它的任務(wù)主要就是排錯(cuò)。調(diào)試的方法經(jīng)常與使用的開(kāi)發(fā)工具有關(guān),例如:解釋型的開(kāi)發(fā)工具可以交互式調(diào)試,編譯型開(kāi)發(fā)工具就很難較好地查錯(cuò)。當(dāng)然它有一些啟發(fā)式的方法,它是一種比較依賴(lài)(yīlài)開(kāi)發(fā)人員經(jīng)驗(yàn)的活動(dòng)。共一百三十九頁(yè)調(diào)試(diàoshì)技術(shù)①加打印語(yǔ)句:特點(diǎn)(tèdiǎn)是顯示的是程序的動(dòng)態(tài)信息,但大量的輸出,時(shí)間慢,可能引出新的問(wèn)題②輸出存儲(chǔ)器內(nèi)容:特點(diǎn)是效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容③用調(diào)試工具:特點(diǎn)是動(dòng)態(tài)調(diào)試,可自動(dòng)執(zhí)行,是目前廣泛采用的一種調(diào)試技術(shù)共一百三十九頁(yè)調(diào)試(diàoshì)策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。②回溯法。確定最先出現(xiàn)“癥狀”的地方,然后沿程序的控制流程(liúchéng)往回追蹤源程序,直到找出錯(cuò)誤源為止。③對(duì)分查找法。若已知程序中若干個(gè)關(guān)鍵點(diǎn)的正確值,然后用調(diào)試工具在關(guān)鍵點(diǎn)附近處輸入正確值;若輸出正確,則故障在前半部分;否則,再查后半部分。④歸納法。從線(xiàn)索出發(fā),通過(guò)分析線(xiàn)索之間的關(guān)系而找出故障。主要步驟為:收集有關(guān)數(shù)據(jù),組織數(shù)據(jù),導(dǎo)出假設(shè),證明假設(shè)。共一百三十九頁(yè)軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過(guò)程中發(fā)現(xiàn)的隱含(yǐnhán)錯(cuò)誤,擴(kuò)充在使用過(guò)程中新的功能要求。目的:維護(hù)軟件系統(tǒng)的正常運(yùn)行?;卮穑合到y(tǒng)是否滿(mǎn)足用戶(hù)的應(yīng)用要求。階段結(jié)果:軟件系統(tǒng)的問(wèn)題報(bào)告和軟件修改報(bào)告。共一百三十九頁(yè)軟件維護(hù)的原因(yuányīn)⑴軟件的原有功能和性能可能不再適應(yīng)用戶(hù)的要求;⑵軟件的工作(gōngzuò)環(huán)境改變了(例如,增加了新的外部設(shè)備),軟件也要做相應(yīng)的變更;⑶軟件運(yùn)行中發(fā)現(xiàn)錯(cuò)誤,需要修改。共一百三十九頁(yè)維護(hù)活動(dòng)(huódòng)分類(lèi)⑴校正性維護(hù):
指為了識(shí)別和糾正錯(cuò)誤,修改軟件性能上的缺陷,進(jìn)行確定和修改錯(cuò)誤的過(guò)程。占整個(gè)維護(hù)工作的15%。⑵適應(yīng)性維護(hù):
為了使本軟件適應(yīng)硬件和軟件的變化(biànhuà)而修改軟件的過(guò)程稱(chēng)為適應(yīng)性維護(hù)。占整個(gè)維護(hù)活動(dòng)的25%。⑶完善性維護(hù):
增加軟件功能、增強(qiáng)軟件性能、提高運(yùn)行效率而進(jìn)行的維護(hù)活動(dòng)稱(chēng)為完善性維護(hù)。占整個(gè)維護(hù)工作的55%。⑷預(yù)防性維護(hù):
為了提高軟件的可維護(hù)性和可靠性而對(duì)軟件進(jìn)行的修改稱(chēng)為預(yù)防性維護(hù)。只占整個(gè)維護(hù)活動(dòng)的5%。共一百三十九頁(yè)支持(zhīchí)過(guò)程支持(zhīchí)過(guò)程包括的軟件開(kāi)發(fā)活動(dòng)和任務(wù)是:軟件配置管理軟件工程管理軟件過(guò)程軟件質(zhì)量共一百三十九頁(yè)組織(zǔzhī)過(guò)程組織過(guò)程包括的軟件開(kāi)發(fā)活動(dòng)和任務(wù)是:基礎(chǔ)設(shè)施建設(shè)軟件工程工具和方法改進(jìn)(gǎijìn)培訓(xùn)共一百三十九頁(yè)軟件工程工具(gōngjù)和方法程序的開(kāi)發(fā)、運(yùn)行都是在支持軟件的基礎(chǔ)上作出的。支持軟件的總和稱(chēng)之為軟件開(kāi)發(fā)環(huán)境。早期的環(huán)境只有最必要的軟件工具;例如語(yǔ)言的編譯器、連接器、加載和運(yùn)行工具、排錯(cuò)、信息顯示及編輯工具。稱(chēng)為最小環(huán)境工具集。70年代中期,軟件工程師迫于軟件危機(jī)的壓力,提出了計(jì)算機(jī)輔助軟件工程(CASE)的設(shè)想,開(kāi)發(fā)出一系列工具盡量使軟件過(guò)程的各項(xiàng)活動(dòng)自動(dòng)化、半自動(dòng)化。相應(yīng)問(wèn)題:工具日益增多,給使用者帶來(lái)不便,例如,各工具的使用方法、格式(géshi)、參數(shù)等差異的問(wèn)題。這就在客觀(guān)上產(chǎn)生了對(duì)于集成的CASE工具的需求。共一百三十九頁(yè)計(jì)算機(jī)輔助軟件工程(ruǎnjiànɡōnɡchénɡ)CASE人們期望,借助CASE工具,有朝一日軟件開(kāi)發(fā)人員可以像在自動(dòng)流水線(xiàn)上生產(chǎn)計(jì)算機(jī)那樣生產(chǎn)軟件。CASE工具具有如下特征:支持專(zhuān)用的個(gè)人計(jì)算環(huán)境;使用圖形功能對(duì)軟件系統(tǒng)進(jìn)行說(shuō)明并建立文檔;將生命周期各階段的工作(gōngzuò)連接在一起;收集和連接軟件系統(tǒng)從最初的軟件需求到軟件維護(hù)各個(gè)環(huán)節(jié)的所有信息;用人工智能實(shí)現(xiàn)軟件開(kāi)發(fā)和維護(hù)工作的自動(dòng)化。共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)工具信息工程工具過(guò)程模型和管理工具項(xiàng)目計(jì)劃工具風(fēng)險(xiǎn)分析工具項(xiàng)目管理工具需求追蹤工具度量(dùliàng)和管理工具文檔工具系統(tǒng)軟件工具質(zhì)量保證工具數(shù)據(jù)庫(kù)管理工具共一百三十九頁(yè)軟件(ruǎnjiàn)活動(dòng)過(guò)程圖示小結(jié)軟件工具和方法(fāngfǎ)主要過(guò)程支持過(guò)程組織過(guò)程基礎(chǔ)設(shè)施建設(shè)軟件改進(jìn)軟件培訓(xùn)軟件工程管理軟件配置管理軟件過(guò)程軟件質(zhì)量軟件構(gòu)造軟件設(shè)計(jì)軟件測(cè)試軟件維護(hù)軟件需求軟件活動(dòng)共一百三十九頁(yè)通過(guò)實(shí)例說(shuō)明主要過(guò)程(guòchéng)的開(kāi)發(fā)工作計(jì)算(jìsuàn)兩個(gè)正整數(shù)的最大公因數(shù)共一百三十九頁(yè)軟件(ruǎnjiàn)需求的工作如下:可行性分析如下:p和q只能是正整數(shù)的子集最大公因數(shù)的定義:能整除P、Q,且是最大的除數(shù)p和q數(shù)值通過(guò)鍵盤(pán)錄入結(jié)果顯示在屏幕上普通PC機(jī)環(huán)境(huánjìng)均可這是小問(wèn)題,一個(gè)人在短時(shí)間內(nèi)即可完成
可行性研究、制定開(kāi)發(fā)計(jì)劃。回答“做什么”軟件需求分析怎么做呢?共一百三十九頁(yè)軟件設(shè)計(jì)的工作(gōngzuò)如下:需求分析確定了未來(lái)程序的輸入、處理、輸出(IPO,即Input,Process,Output)等等可行性研究的相關(guān)結(jié)果(jiēguǒ)根據(jù)需求分析的結(jié)果,將未來(lái)程序的具體執(zhí)行流程或步驟詳細(xì)設(shè)計(jì)出來(lái),這就是算法設(shè)計(jì)常用三種描述算法的方式或者說(shuō)工具:自然語(yǔ)言、流程圖、偽代碼可以采用任何一種工具進(jìn)行設(shè)計(jì)需求分析回答了“做什么”,而算法設(shè)計(jì)回答了“如何做”要注意算法是不能被計(jì)算機(jī)理解、執(zhí)行的,必須經(jīng)過(guò)下一步編寫(xiě)程序
概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)。回答“如何做”軟件設(shè)計(jì)怎么做呢?共一百三十九頁(yè)古希臘數(shù)學(xué)家歐幾里德給出了一個(gè)(yīɡè)著名的算法如下:步驟1:任意輸入兩個(gè)數(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:計(jì)算p和q的余數(shù)r
步驟7:執(zhí)行步驟4步驟8:q就是所求的結(jié)果,輸出結(jié)果q自然語(yǔ)言描述實(shí)際(shíjì)問(wèn)題的算法如下:共一百三十九頁(yè)開(kāi)始(kāishǐ)結(jié)束(jiéshù)鍵盤(pán)輸入p和qp>qr=p;p=q;q=rr=0r=p除以q的余數(shù);p=q;q=r;顯示輸出q步驟1:任意輸入兩個(gè)數(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:計(jì)算p和q的余數(shù)r步驟7:執(zhí)行步驟4步驟8:q就是所求的結(jié)果,輸出結(jié)果q
真真r=p除以q的余數(shù);共一百三十九頁(yè)偽代碼(dàimǎ)描述的算法如下:InputP,QIf(P<Q)thenR=PP=QQ=REndifR=PmodQWhile(R<>0){P=QQ=RR=PmodQ}OutputQ
共一百三十九頁(yè)軟件(ruǎnjiàn)構(gòu)造的工作如下:軟件構(gòu)造就是將上一步驟的算法描述用某一程序設(shè)計(jì)語(yǔ)言編寫(xiě)(或表示)出來(lái)不同的程序語(yǔ)言其功能和特性各不相同,選擇一個(gè)適合的程序設(shè)計(jì)語(yǔ)言,將算法轉(zhuǎn)換成程序代碼程序(chéngxù)編寫(xiě)風(fēng)格:命名應(yīng)簡(jiǎn)單易記程序中應(yīng)該有注釋語(yǔ)句書(shū)寫(xiě)應(yīng)采用縮進(jìn)格式
共一百三十九頁(yè)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;}}共一百三十九頁(yè)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;}}共一百三十九頁(yè)軟件測(cè)試的工作(gōngzuò)如下:測(cè)試程序就是將編寫(xiě)的程序在計(jì)算機(jī)上運(yùn)行,以便檢驗(yàn)程序正確與否。任何程序員所編寫(xiě)的程序都有可能出現(xiàn)兩類(lèi)錯(cuò)誤:語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤語(yǔ)法(yǔfǎ)錯(cuò)誤:一般指程序中不符合語(yǔ)言的語(yǔ)法(yǔfǎ),如缺少標(biāo)點(diǎn)符號(hào),名稱(chēng)不符等等邏輯錯(cuò)誤:一般指運(yùn)行程序所得到的結(jié)果與預(yù)期的結(jié)果不同共一百三十九頁(yè)軟件維護(hù)的工作(gōngzuò)如下:提交源程序和可執(zhí)行程序提交用戶(hù)說(shuō)明書(shū)不斷(bùduàn)收集用戶(hù)改進(jìn)意見(jiàn),改進(jìn)軟件共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)方法學(xué)通常把在軟件生命周期全過(guò)程中使用(shǐyòng)的一整套技術(shù)方法的集合稱(chēng)為方法學(xué),也稱(chēng)為范型軟件工程方法學(xué)包括3個(gè)要素:方法、工具和過(guò)程這三者之間是相互聯(lián)系的。方法是完成軟件開(kāi)發(fā)過(guò)程中各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問(wèn)題;工具是為運(yùn)用方法而提供的自動(dòng)或半自動(dòng)的軟件支撐環(huán)境;過(guò)程是為了獲得高質(zhì)量的軟件所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)的基本問(wèn)題軟件工程開(kāi)發(fā)技術(shù)思想與原則過(guò)程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度軟件工程(ruǎnjiànɡōnɡchénɡ)開(kāi)發(fā)技術(shù)的角度軟件工程開(kāi)發(fā)技術(shù)思想與原則過(guò)程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度共一百三十九頁(yè)兩種典型(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ǔ)上。因此,具有明顯的那個(gè)時(shí)代的特點(diǎn)。70年代,計(jì)算機(jī)技術(shù)水平不高,開(kāi)發(fā)工具少而且性能(xìngnéng)差。對(duì)于大型復(fù)雜問(wèn)題的求解,人們不得不采用“將大化小“、“將難化簡(jiǎn)”,最后“分而治之”的開(kāi)發(fā)策略。共一百三十九頁(yè)結(jié)構(gòu)化方法(fāngfǎ)概述結(jié)構(gòu)化方法(fāngfǎ)是由下列方法(fāngfǎ)組成:
?結(jié)構(gòu)化分析方法SA
?結(jié)構(gòu)化設(shè)計(jì)方法SD?結(jié)構(gòu)化程序設(shè)計(jì)方法SP結(jié)構(gòu)化方法的核心是基于功能分解的模塊化層次結(jié)構(gòu)方法。共一百三十九頁(yè)結(jié)構(gòu)化分析SA結(jié)構(gòu)化分析的要點(diǎn)是:將大問(wèn)題分解為小問(wèn)題,找出關(guān)鍵點(diǎn)、難點(diǎn),定量描述;核心(héxīn)是:分解;手段是:模塊化。
?自頂向下
?逐步求精?模塊化設(shè)計(jì)共一百三十九頁(yè)結(jié)構(gòu)化設(shè)計(jì)(shèjì)SD結(jié)構(gòu)化設(shè)計(jì)方法的要點(diǎn)是:將系統(tǒng)設(shè)計(jì)成由相對(duì)獨(dú)立、單一(dānyī)功能的模塊組成的軟件結(jié)構(gòu)共一百三十九頁(yè)結(jié)構(gòu)化程序設(shè)計(jì)(shèjì)SP結(jié)構(gòu)化程序設(shè)計(jì)方法SP的要點(diǎn)(yàodiǎn)是用三種基本結(jié)構(gòu)的語(yǔ)句編寫(xiě)只有一個(gè)入口和一個(gè)出口的模塊程序,盡可能地采用重用程序,開(kāi)發(fā)組織形式為主程序員組。?自頂向下逐步加細(xì)?模塊只有一個(gè)入口,一個(gè)出口?三種基本結(jié)構(gòu)?開(kāi)發(fā)支持庫(kù)?主程序員組共一百三十九頁(yè)傳統(tǒng)(chuántǒng)方法學(xué)的缺點(diǎn)過(guò)分強(qiáng)調(diào)了分階段實(shí)施,使得開(kāi)發(fā)過(guò)程各個(gè)階段之間存在嚴(yán)重的順序性和依賴(lài)性;很難將一個(gè)復(fù)雜的問(wèn)題化簡(jiǎn)、分解;設(shè)計(jì)方法存在很大的主觀(guān)隨意性;基于功能分解的系統(tǒng)結(jié)構(gòu)難于修改和擴(kuò)充;思維成果的可重用性很差;數(shù)據(jù)和對(duì)數(shù)據(jù)的處理(chǔlǐ)是分離的;忽視了人在軟件開(kāi)發(fā)過(guò)程中的地位和作用。共一百三十九頁(yè)現(xiàn)代(xiàndài)方法學(xué)現(xiàn)代方法學(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上,為了強(qiáng)調(diào)人在軟件開(kāi)發(fā)中的作用,同時(shí)為了適應(yīng)(shìyìng)軟件新技術(shù)的發(fā)展趨勢(shì)而提出的。其基本要點(diǎn)是:⑴軟件開(kāi)發(fā)過(guò)程是以人為主,充分利用軟件開(kāi)發(fā)方法及軟件開(kāi)發(fā)工具;⑵開(kāi)發(fā)人員的組織管理對(duì)軟件開(kāi)發(fā)成功與否至關(guān)重要;⑶基于軟件組件的軟件開(kāi)發(fā)技術(shù)。⑷由于軟件組件是標(biāo)準(zhǔn)化設(shè)計(jì)、成品化生產(chǎn)的,極易構(gòu)造使用,從而大大簡(jiǎn)化了設(shè)計(jì)、編程、測(cè)試各個(gè)環(huán)節(jié)的工作量,提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。共一百三十九頁(yè)現(xiàn)代(xiàndài)方法學(xué)中生命周期在現(xiàn)代方法學(xué)中軟件生命周期的階段劃分(huàfēn)?系統(tǒng)分析?系統(tǒng)構(gòu)造?系統(tǒng)測(cè)試?軟件組件共一百三十九頁(yè)面向?qū)ο蠓椒▽W(xué)由于(yóuyú)傳統(tǒng)方法學(xué)無(wú)法從根本上解決“軟件危機(jī)”,業(yè)界人士不得不研究、探索新的方法。面向?qū)ο螅∣O)方法是人類(lèi)借助計(jì)算機(jī)認(rèn)識(shí)和模擬客觀(guān)世界的一種方法。它將客觀(guān)世界看成是由許多不同種類(lèi)(zhǒnglèi)的對(duì)象構(gòu)成。通過(guò)分析、研究客觀(guān)世界中的實(shí)體的屬性及其相互關(guān)系,從中抽象出求解問(wèn)題的對(duì)象,最后求解這些對(duì)象,得到問(wèn)題的解。OO開(kāi)發(fā)過(guò)程更接近人類(lèi)認(rèn)識(shí)問(wèn)題、解決問(wèn)題的思維方式,使得計(jì)算機(jī)求解的對(duì)象與客觀(guān)事物具有一一對(duì)應(yīng)的關(guān)系。共一百三十九頁(yè)什么(shénme)是OO方法OO方法具有以下幾個(gè)要點(diǎn):⑴把對(duì)象作為一種統(tǒng)一的軟件構(gòu)件,它將數(shù)據(jù)及在數(shù)據(jù)上的操作行為融合為一體(封裝)⑵
程序(chéngxù)是由對(duì)象組成,復(fù)雜對(duì)象是由簡(jiǎn)單對(duì)象組合而成。OO方法學(xué)用對(duì)象分解代替了傳統(tǒng)方法的功能分解(封裝和多態(tài))⑶把所有對(duì)象都用類(lèi)來(lái)表示;每個(gè)類(lèi)都有自己的屬性和方法,具體的對(duì)象只是類(lèi)中的一個(gè)實(shí)例(類(lèi)和對(duì)象)⑷類(lèi)具有層次結(jié)構(gòu),子類(lèi)可以繼承父類(lèi)的特性和方法(繼承性)⑸對(duì)象之間只能通過(guò)傳遞消息構(gòu)成相互之間的聯(lián)系(消息機(jī)制)OO方法是基于“對(duì)象、類(lèi)、封裝、繼承、消息機(jī)制、多態(tài)等技術(shù)特征”的構(gòu)造軟件系統(tǒng)的開(kāi)發(fā)方法。共一百三十九頁(yè)面向?qū)ο蠓治鯫OA用對(duì)象的屬性和方法(操作)分別描述事物的靜態(tài)特征和行為問(wèn)題域中有哪些事物,就在OOA模型中創(chuàng)建哪些對(duì)象對(duì)象屬性和方法(操作)的命名盡量與客觀(guān)實(shí)體一致把具有相同屬性和相同服務(wù)的對(duì)象歸結(jié)為類(lèi)用一般-特殊結(jié)構(gòu)(分類(lèi)結(jié)構(gòu))描述一般類(lèi)與特殊類(lèi)之間的關(guān)系(繼承(jìchéng)關(guān)系)用整體-部分結(jié)構(gòu)(組裝結(jié)構(gòu))描述實(shí)體間的組成關(guān)系用實(shí)例連接和消息連接表示實(shí)體之間的靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系共一百三十九頁(yè)面向?qū)ο笤O(shè)計(jì)(shèjì)OODOOD包括兩方面的工作:①把OOA模型直接搬到OOD中來(lái),作為OOD的一個(gè)部分②針對(duì)具體實(shí)現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲(chǔ)、任務(wù)管理等因素補(bǔ)充一些與實(shí)現(xiàn)有關(guān)的內(nèi)容,這些內(nèi)容與OA采用相同的表示法和模型結(jié)構(gòu)在分析和設(shè)計(jì)階段采用一致的表示法是OO方法與傳統(tǒng)方法重要的區(qū)別之一。這使得從OOA到OOD不存在轉(zhuǎn)換,只需進(jìn)行局部的修改或調(diào)整,并增加幾個(gè)與實(shí)現(xiàn)有關(guān)的獨(dú)立部分即可??梢宰匀?zìrán)地實(shí)現(xiàn)無(wú)縫銜接,從而大大降低了從OOA過(guò)渡到OOD的難度、工作量和出錯(cuò)率。共一百三十九頁(yè)面向?qū)ο缶幊蘋(píng)OP在“OOA→OOD→OOP”的設(shè)計(jì)模式中,OOP的分工相對(duì)簡(jiǎn)單多了;認(rèn)識(shí)問(wèn)題域與設(shè)計(jì)系統(tǒng)元素的工作在OOA和OOD階段已經(jīng)完成,OOP的工作就是用一種OO程序設(shè)計(jì)語(yǔ)言把OOD模型中的每個(gè)元素描述出來(lái)(chūlái)而已。共一百三十九頁(yè)面向?qū)ο鬁y(cè)試(cèshì)OOTOOT的主要特點(diǎn)是:利用對(duì)象的封裝性。測(cè)試以類(lèi)為基本單位進(jìn)行。測(cè)試只需針對(duì)類(lèi)定義范圍內(nèi)的屬性和服務(wù)、以及有限的對(duì)外接口所涉及到的部分即可。利用對(duì)象的繼承性。若父類(lèi)已被測(cè)試或父類(lèi)是可重用構(gòu)件,則對(duì)子類(lèi)的測(cè)試重點(diǎn)只是那些新定義的屬性和服務(wù)。對(duì)于用OOA、OOD和OOP實(shí)現(xiàn)的軟件,OOT通過(guò)捕捉OOA、OOD模型信息,檢查程序與模型不匹配的錯(cuò)誤,可以極大地提高測(cè)試效率。這一點(diǎn)是傳統(tǒng)程序設(shè)計(jì)方法(fāngfǎ)是無(wú)法達(dá)到的。共一百三十九頁(yè)面向?qū)ο蟮能浖S護(hù)OO方法為改進(jìn)軟件維護(hù)提供了有效的途徑。主要表現(xiàn)在:因?yàn)?yīnwèi)OO方法在各個(gè)階段表示的一致性,使得實(shí)現(xiàn)的程序與問(wèn)題域是一致的,便于理解和閱讀,也為糾錯(cuò)和功能擴(kuò)充提供了便利。系統(tǒng)維護(hù)過(guò)程中的老大難問(wèn)題是系統(tǒng)功能的變化并由此產(chǎn)生的影響。在OO方法中,由于對(duì)象的封裝性,使一個(gè)對(duì)象的修改對(duì)其它對(duì)象的影響很小,從而可以減少錯(cuò)誤傳播所產(chǎn)生的“波動(dòng)效應(yīng)”,使得用OO方法開(kāi)發(fā)的軟件易維護(hù)。共一百三十九頁(yè)OO方法(fāngfǎ)的主要優(yōu)點(diǎn)⑴與人類(lèi)習(xí)慣的思維方式一致
OO方法順應(yīng)人認(rèn)識(shí)過(guò)程的這個(gè)規(guī)律,從尋找要求解的對(duì)象“是什么?”開(kāi)始(kāishǐ),認(rèn)識(shí)事物及其本質(zhì)規(guī)律,主觀(guān)隨意性受到限制。⑵穩(wěn)定性好傳統(tǒng)方法以“過(guò)程為中心”,以功能分解為基本方法。當(dāng)功能需求發(fā)生變化時(shí),將引起對(duì)軟件整體結(jié)構(gòu)的修改,導(dǎo)致系統(tǒng)不穩(wěn)定。OO方法以“對(duì)象為中心”,采用對(duì)象技術(shù)。不管需求如何變化,其內(nèi)在規(guī)律不變,不會(huì)引起軟件結(jié)構(gòu)的整體變化,所以系統(tǒng)的穩(wěn)定性影響不大。⑶可重用性好⑷可維護(hù)性好共一百三十九頁(yè)軟件工程(ruǎnjiànɡōnɡchénɡ)模型1瀑布模型2原型模型3增量模型4螺旋模型5基于(jīyú)知識(shí)的模型6面向?qū)ο竽P凸惨话偃彭?yè)瀑布(pùbù)模型瀑布模型是上個(gè)世紀(jì)80年代(niándài)廣泛應(yīng)用的一種模型,至今仍然是最廣泛使用的過(guò)程模型之一。在應(yīng)用程的應(yīng)用模式也稱(chēng)為軟件生存周期模式(B.W.Boehm提出的該模型)。共一百三十九頁(yè)瀑布(pùbù)模型示意圖
需求(xūqiú)分析7%系統(tǒng)設(shè)計(jì)6%軟件編程7%軟件測(cè)試13%軟件維護(hù)67%用戶(hù)要求分析報(bào)告系統(tǒng)設(shè)計(jì)報(bào)告源程序測(cè)試報(bào)告更改要求UAMATMMPUTPUAMPA系統(tǒng)分析員M項(xiàng)目管理員P程序員T高級(jí)程序員U
用戶(hù)共一百三十九頁(yè)瀑布模型(móxíng)的特點(diǎn)瀑布模型具有順序性和依賴(lài)性,即后一階段工作必須在前一階段工作完成后才能開(kāi)始。推遲實(shí)現(xiàn)的觀(guān)點(diǎn);把邏輯設(shè)計(jì)與物理(wùlǐ)設(shè)計(jì)清楚地劃分開(kāi),盡可能推遲物理(wùlǐ)模型的實(shí)現(xiàn),這是瀑布模型的重要指導(dǎo)思想。質(zhì)量保證的觀(guān)點(diǎn)。瀑布模型強(qiáng)調(diào)的是優(yōu)質(zhì),即每一步都循序漸進(jìn),及早消除隱患,從而保證軟件質(zhì)量。致命缺點(diǎn)是只有做出精確的需求分析,才能取得預(yù)期的結(jié)果。由于各種客觀(guān)、主觀(guān)的原因,需求分析往往不很精確,常常給日后的開(kāi)發(fā)帶來(lái)隱患。共一百三十九頁(yè)快速原型(yuánxíng)模型原型模型的主要思想:
先借用已有系統(tǒng)作為原型模型,通過(guò)“樣品”不斷改進(jìn),使得最后的產(chǎn)品(chǎnpǐn)就是用戶(hù)所需要的。原形模型的特點(diǎn):⑴開(kāi)發(fā)人員和用戶(hù)在“原型”上達(dá)成一致。這樣可以減少設(shè)計(jì)中的錯(cuò)誤和開(kāi)發(fā)中的風(fēng)險(xiǎn),以及對(duì)用戶(hù)培訓(xùn)的時(shí)間,而提高了系統(tǒng)的實(shí)用、正確性以及用戶(hù)的滿(mǎn)意程度。⑵縮短開(kāi)發(fā)周期,加快工程進(jìn)度。⑶降低成本。原型模型的缺點(diǎn):當(dāng)告訴用戶(hù),還必須重新生產(chǎn)該產(chǎn)品時(shí),用戶(hù)是很難接受的。這往往給工程繼續(xù)開(kāi)展帶來(lái)不利因素。共一百三十九頁(yè)共一百三十九頁(yè)快速(kuàisù)原型模型
分析(fēnxī)原型樣品模型設(shè)計(jì)編程測(cè)試使用修改與改進(jìn)在系統(tǒng)分析與設(shè)計(jì)中,采用交互式,反復(fù)修改與不斷改進(jìn)的方式進(jìn)行。還有的把原型模式嵌套在瀑布模型中運(yùn)用。共一百三十九頁(yè)增量(zēnɡliànɡ)模型也稱(chēng)漸增模型。它把軟件產(chǎn)品作為一系列的增量構(gòu)件來(lái)設(shè)計(jì)、編碼、集成和測(cè)試(cèshì)。增量模型是一種非整體開(kāi)發(fā)的模型。軟件在該模型中是“逐漸”開(kāi)發(fā)出來(lái)的,開(kāi)發(fā)出一部分,向用戶(hù)展示一部分,讓用戶(hù)及早看到部分軟件,及早發(fā)現(xiàn)問(wèn)題?;蛘呦乳_(kāi)發(fā)一個(gè)“原型”軟件,完成部分主要功能,展示給用戶(hù)征求意見(jiàn),然后逐步完善,最終后的滿(mǎn)意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。缺點(diǎn):要求軟件具有開(kāi)放的結(jié)構(gòu)是這種模型固有的困難。共一百三十九頁(yè)共一百三十九頁(yè)螺旋(luóxuán)模型將工程劃分為4個(gè)主要活動(dòng):制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)現(xiàn)工程和用戶(hù)評(píng)價(jià)。4個(gè)活動(dòng)螺旋式地重復(fù)執(zhí)行,直到最終得到用戶(hù)認(rèn)可的產(chǎn)品。制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開(kāi)發(fā)限制條件。風(fēng)險(xiǎn)分析:分析可選方案,分析識(shí)別風(fēng)險(xiǎn),研究(yánjiū)解決化解風(fēng)險(xiǎn)的辦法。實(shí)現(xiàn)工程:實(shí)施軟件產(chǎn)品的開(kāi)發(fā)。用戶(hù)評(píng)價(jià):對(duì)當(dāng)前工作結(jié)果進(jìn)行評(píng)價(jià),提出改進(jìn)產(chǎn)品的建議。螺旋模型的缺點(diǎn):很難讓用戶(hù)確信這種演化方法的結(jié)果是可以控制的。共一百三十九頁(yè)共一百三十九頁(yè)螺旋模型(móxíng)的缺陷建立在風(fēng)險(xiǎn)分析的基礎(chǔ)上需要有一個(gè)非常有經(jīng)驗(yàn)的小組來(lái)準(zhǔn)確地分析和檢測(cè)風(fēng)險(xiǎn)絕對(duì)依賴(lài)(yīlài)人的素質(zhì)(本身就是冒險(xiǎn)!)不適合新手開(kāi)發(fā)中的每一層都很有彈性,并不是很明確的界限每一層的目標(biāo)和計(jì)劃都是由小組本身來(lái)制定。要求有經(jīng)驗(yàn)的人來(lái)組成。共一百三十九頁(yè)智能(zhìnénɡ)模型也稱(chēng)基于知識(shí)(zhīshi)的軟件開(kāi)發(fā)模型,它與專(zhuān)家系統(tǒng)結(jié)合在一起。該模型在實(shí)施過(guò)程中要建立知識(shí)庫(kù),將模型本身、軟件工程知識(shí)與特定領(lǐng)域的知識(shí)分別存入數(shù)據(jù)庫(kù)。以軟件工程知識(shí)為基礎(chǔ)的生成規(guī)則構(gòu)成的專(zhuān)家系統(tǒng)與含應(yīng)用領(lǐng)域知識(shí)規(guī)則的其他專(zhuān)家系統(tǒng)相結(jié)合,構(gòu)成這一應(yīng)用領(lǐng)域的軟件開(kāi)發(fā)系統(tǒng)。共一百三十九頁(yè)面向?qū)ο蟮拈_(kāi)發(fā)(kāifā)模型其主導(dǎo)思想是:在整個(gè)軟件開(kāi)發(fā)過(guò)程中將面向?qū)ο蠹夹g(shù)貫穿于整個(gè)生存周期。當(dāng)然,還要結(jié)合傳統(tǒng)開(kāi)發(fā)模式中好的、已被無(wú)數(shù)成功開(kāi)發(fā)活動(dòng)證明是可行的經(jīng)驗(yàn)和技術(shù)。具備3個(gè)主要的階段:分析:模擬
“關(guān)鍵系統(tǒng)(xìtǒng)”來(lái)表示用戶(hù)要求,并設(shè)計(jì)獨(dú)立實(shí)現(xiàn)的“關(guān)鍵類(lèi)”。設(shè)計(jì):限制并優(yōu)化關(guān)鍵類(lèi),在特定的環(huán)境中實(shí)現(xiàn),得到另外的類(lèi)。實(shí)現(xiàn):
定義類(lèi)的接口和實(shí)現(xiàn)方法,然后編寫(xiě)并統(tǒng)一測(cè)試所有的類(lèi)。共一百三十九頁(yè)面向?qū)ο箝_(kāi)發(fā)(kāifā)的缺陷還不成熟幾個(gè)有影響的面向?qū)ο箝_(kāi)發(fā)的過(guò)程對(duì)不同的步驟意見(jiàn)不一。在大的項(xiàng)目上經(jīng)驗(yàn)不多,在小項(xiàng)目上尚可。在每個(gè)過(guò)程步上細(xì)節(jié)少,新手難于理解。晚期的測(cè)試開(kāi)發(fā)過(guò)程沒(méi)有中間的版本,幾乎(jīhū)所有的測(cè)試都留在最后的實(shí)現(xiàn)階段。結(jié)構(gòu)上的死板假設(shè)所有的結(jié)構(gòu)設(shè)計(jì)都定義好在要求階段,對(duì)于設(shè)計(jì)和實(shí)現(xiàn)階段基本上沒(méi)有結(jié)構(gòu)上變化的余地。.
共一百三十九頁(yè)軟件開(kāi)發(fā)技術(shù)(jìshù)構(gòu)件技術(shù)軟件(ruǎnjiàn)復(fù)用技術(shù)C/S技術(shù)B/S技術(shù)共一百三十九頁(yè)構(gòu)件技術(shù)構(gòu)件技術(shù)是基于OO技術(shù)上的更高級(jí)的抽象。它把底層的對(duì)象集合打成包,組成功能“插件”?;跇?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)了對(duì)事物的認(rèn)識(shí)方法。而構(gòu)件技術(shù)則在“對(duì)象+算法”的基礎(chǔ)上將認(rèn)識(shí)事物的角度從對(duì)象個(gè)體本身提升到個(gè)體在群體中的作用。這個(gè)認(rèn)識(shí)的提高具有本質(zhì)的不同。從抽象程度來(lái)看,OO技術(shù)已達(dá)到了類(lèi)級(jí)重用(代碼重用),它以類(lèi)為封裝的單位。而構(gòu)件是對(duì)一組類(lèi)的組合進(jìn)行封裝,可以將底層的多個(gè)邏輯組合成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到一個(gè)系統(tǒng),使模塊的重用從代碼級(jí)、對(duì)象級(jí)、架構(gòu)級(jí)到系統(tǒng)級(jí)都可能實(shí)現(xiàn)。共一百三十九頁(yè)構(gòu)件(gòujiàn)的屬性構(gòu)件是可獨(dú)立配置的單元,因此構(gòu)件必須自包容。構(gòu)件強(qiáng)調(diào)與環(huán)境和其他構(gòu)件的分離,因此構(gòu)件的實(shí)現(xiàn)是嚴(yán)格封裝的,外界沒(méi)機(jī)會(huì)或沒(méi)必要知道構(gòu)件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。構(gòu)件可以在適當(dāng)?shù)沫h(huán)境中被復(fù)合使用,因此構(gòu)件需要(xūyào)提供清楚的接口規(guī)范,可以與環(huán)境交互。可以看出,構(gòu)件沿襲了對(duì)象的封裝特性,但同時(shí)并不局限于一個(gè)對(duì)象,其內(nèi)部可以封裝一個(gè)或多個(gè)類(lèi)、原型對(duì)象甚至過(guò)程,結(jié)構(gòu)是靈活的。共一百三十九頁(yè)中間件構(gòu)件是依賴(lài)于平臺(tái)環(huán)境的。那么在分布式異構(gòu)環(huán)境中如何應(yīng)用構(gòu)件呢?中間件就是基于跨環(huán)境的構(gòu)件應(yīng)用而發(fā)展起來(lái)的。中間件是介于應(yīng)用層和網(wǎng)絡(luò)層之間的一個(gè)功能層次,是使應(yīng)用系統(tǒng)獨(dú)立于由異構(gòu)操作環(huán)境(操作系統(tǒng)、硬件平臺(tái)及通信協(xié)議等)組成的開(kāi)發(fā)環(huán)境。中間件擴(kuò)展了客戶(hù)/服務(wù)器結(jié)構(gòu),形成了一個(gè)包括客戶(hù)、中間件和服務(wù)器在內(nèi)的三層次結(jié)構(gòu)及多層次結(jié)構(gòu),為開(kāi)發(fā)可靠的、可擴(kuò)展的、復(fù)雜的事物(shìwù)密集型應(yīng)用提供了有力的支持。共一百三十九頁(yè)軟件(ruǎnjiàn)復(fù)用技術(shù)軟件復(fù)用是指在軟件開(kāi)發(fā)過(guò)程中重復(fù)使用相同或相似軟件元素的過(guò)程。軟件復(fù)用是在軟件開(kāi)發(fā)中避免重復(fù)勞動(dòng)的解決方案,它使得應(yīng)用系統(tǒng)的開(kāi)發(fā)不再采用一切從零開(kāi)始的模式,而是以已有的工作模式為基礎(chǔ),充分利用過(guò)去應(yīng)用系統(tǒng)開(kāi)發(fā)中積累的知識(shí)和經(jīng)驗(yàn),從而將開(kāi)發(fā)的重點(diǎn)集中于應(yīng)用的特有構(gòu)成成分。為了能夠在軟件開(kāi)發(fā)過(guò)程中重用已有的復(fù)用件,必須不斷地進(jìn)行復(fù)用件的積累,并將它們組織成復(fù)用件庫(kù)。因此,軟件復(fù)用不僅要解決如何檢索所需的復(fù)用件,還要解決如何選取復(fù)用件、如何組織復(fù)用件庫(kù)等問(wèn)題(wèntí)。這類(lèi)項(xiàng)目通常稱(chēng)為軟件復(fù)用項(xiàng)目。軟件重用過(guò)程可借助于支持軟件重用的CASE工具,其主要任務(wù)是:用某種組織結(jié)構(gòu)實(shí)現(xiàn)復(fù)用件庫(kù)的存儲(chǔ),提供友好的人機(jī)界面,幫助用戶(hù)瀏覽、檢索和修改復(fù)用件庫(kù),并且對(duì)用戶(hù)感興趣的復(fù)用件進(jìn)行解釋。共一百三十九頁(yè)軟件復(fù)用方式(fāngshì)分類(lèi)⑴依據(jù)復(fù)用的對(duì)象分類(lèi);可以分為:產(chǎn)品復(fù)用指復(fù)用已有的軟件構(gòu)件,通過(guò)構(gòu)件集成得到新系統(tǒng)。產(chǎn)品復(fù)用是目前(mùqián)現(xiàn)實(shí)的、主流的途徑。過(guò)程復(fù)用指復(fù)用已有的軟件開(kāi)發(fā)過(guò)程,過(guò)程復(fù)用依賴(lài)于軟件自動(dòng)化技術(shù)的發(fā)展。⑵依據(jù)對(duì)可復(fù)用信息進(jìn)行復(fù)用的方式分類(lèi),可分為:白盒復(fù)用指已有構(gòu)件并不能完全符合用戶(hù)要求,需要根據(jù)用戶(hù)需求進(jìn)行適應(yīng)性修改后才能使用。黑盒復(fù)用指對(duì)已有構(gòu)件不需作任何修改,通過(guò)構(gòu)件組裝的方式直接進(jìn)行復(fù)用。這是目前的研究熱點(diǎn),也是將來(lái)的發(fā)展趨勢(shì)。共一百三十九頁(yè)技術(shù)(jìshù)方面的問(wèn)題采用軟件復(fù)用可以降低開(kāi)發(fā)成本,但如果其原件存在的某些問(wèn)題(wèntí)代碼,可能會(huì)導(dǎo)致其他采用該代碼的系統(tǒng)具有相同的問(wèn)題(wèntí)代碼;這種情況稱(chēng)之為繼承性缺陷。因此當(dāng)原件的問(wèn)題代碼被修改后,往往無(wú)法自動(dòng)更新實(shí)用軟件中相應(yīng)的代碼;最終導(dǎo)致實(shí)用軟件中的問(wèn)題代碼依舊存在。這種非但沒(méi)有降低開(kāi)發(fā)成本,反而增加維護(hù)消耗的復(fù)用技術(shù)顯然是失敗的。共一百三十九頁(yè)C/S技術(shù)(jìshù)客戶(hù)機(jī)/服務(wù)器系統(tǒng)也稱(chēng)C/S(Client/Server)系統(tǒng),它是基于局域網(wǎng)/廣域網(wǎng)的系統(tǒng)。在C/S中存在著服務(wù)器和客戶(hù)端。為了充分利用客戶(hù)機(jī)的計(jì)算能力,計(jì)算和事務(wù)處理在服務(wù)器和客戶(hù)機(jī)之間分配。服務(wù)器承擔(dān)數(shù)據(jù)的集中管理、通信和客戶(hù)管理的任務(wù),因?yàn)閿?shù)據(jù)在服務(wù)器端,對(duì)數(shù)據(jù)的處理和計(jì)算都在服務(wù)器端執(zhí)行。而人機(jī)界面和一些需要實(shí)時(shí)(shíshí)響應(yīng)的事件或人機(jī)交互的處理等在客戶(hù)端進(jìn)行,這些程序都運(yùn)行在客戶(hù)端。C/S系統(tǒng)往往需要數(shù)據(jù)庫(kù)服務(wù)器。共一百三十九頁(yè)C/S系統(tǒng)(xìtǒng)體系結(jié)構(gòu)特征計(jì)算和處理分布(fēnbù)在服務(wù)器和客戶(hù)機(jī)之間。數(shù)據(jù)管理集中在服務(wù)器端。軟件駐留在服務(wù)器和客戶(hù)機(jī)。共一百三十九頁(yè)C/S應(yīng)用(yìngyòng)系統(tǒng)的特征分布數(shù)據(jù)。出于安全性和負(fù)載平衡的考慮,數(shù)據(jù)庫(kù)可以分布在多個(gè)數(shù)據(jù)庫(kù)服務(wù)器上。分布過(guò)程。不同(bùtónɡ)的過(guò)程(事務(wù)處理、數(shù)據(jù)庫(kù)連接等)可以在不同(bùtónɡ)服務(wù)器上進(jìn)行??蛻?hù)為中心。把需要在客戶(hù)端執(zhí)行的程序和定制的程序放在客戶(hù)端,以使客戶(hù)快速得到響應(yīng)。把對(duì)數(shù)據(jù)進(jìn)行處理的過(guò)程放在數(shù)據(jù)庫(kù)服務(wù)器端,以加快數(shù)據(jù)處理速度。異構(gòu)硬件和軟件。在C/S體系結(jié)構(gòu)中很容易加入多層結(jié)構(gòu),屏蔽不同的硬件和軟件。例如,加入應(yīng)用服務(wù)器可以基于不同的操作系統(tǒng)和計(jì)算機(jī)主機(jī),同樣客戶(hù)端安裝的中間件可以基于不同的客戶(hù)端系統(tǒng),例如,Linux,Windows。共一百三十九頁(yè)C/S系統(tǒng)(xìtǒng)構(gòu)成C/S結(jié)構(gòu)發(fā)展經(jīng)歷(jīnglì)了兩個(gè)階段:兩層結(jié)構(gòu)和三(多)層結(jié)構(gòu)共一百三十九頁(yè)兩層結(jié)構(gòu)(jiégòu)C/S系統(tǒng)第一層是客戶(hù)端軟件,由應(yīng)用程序和相應(yīng)的數(shù)據(jù)庫(kù)鏈接程序組成,企業(yè)的業(yè)務(wù)過(guò)程都在程序中表現(xiàn)。第二層包括數(shù)據(jù)庫(kù)服務(wù)器,根據(jù)客戶(hù)端軟件的請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)操作,然后將結(jié)果傳送(chuánsònɡ)給客戶(hù)端軟件。兩層應(yīng)用軟件的開(kāi)發(fā)工作主要集中在客戶(hù)端,客戶(hù)端軟件不但要完成用戶(hù)界面和數(shù)據(jù)顯示的工作,還要完成一部分對(duì)商業(yè)和應(yīng)用邏輯的處理工作。兩層結(jié)構(gòu)的C/S系統(tǒng)僅能在各自的客戶(hù)機(jī)和數(shù)據(jù)庫(kù)服務(wù)器之間使用,分割了界面和數(shù)據(jù),使得客戶(hù)機(jī)要管理復(fù)雜的軟件,導(dǎo)致“肥胖”客戶(hù)機(jī)的產(chǎn)生。兩層C/S系統(tǒng)不能進(jìn)行有效的擴(kuò)展,使這些系統(tǒng)不能支持大量用戶(hù)的訪(fǎng)問(wèn)和高容量事務(wù)處理的應(yīng)用。共一百三十九頁(yè)三(多)層結(jié)構(gòu)(jiégòu)C/S系統(tǒng)客戶(hù)機(jī)上只安裝具有用戶(hù)界面和簡(jiǎn)單的數(shù)據(jù)處理功能的應(yīng)用程序,負(fù)責(zé)處理與用戶(hù)的交互和與應(yīng)用服務(wù)器的交互。而將商業(yè)(shāngyè)和應(yīng)用邏輯的處理功能移到中間層——應(yīng)用服務(wù)器上。應(yīng)用服務(wù)器負(fù)責(zé)處理商業(yè)和應(yīng)用邏輯,接受客戶(hù)端應(yīng)用程序的請(qǐng)求,然后根據(jù)商業(yè)和應(yīng)用邏輯將這個(gè)請(qǐng)求轉(zhuǎn)化為數(shù)據(jù)庫(kù)請(qǐng)求后與數(shù)據(jù)庫(kù)服務(wù)器交互,并將與數(shù)據(jù)庫(kù)服務(wù)器交互的結(jié)果傳送給客戶(hù)端應(yīng)用程序。數(shù)據(jù)庫(kù)服務(wù)器軟件根據(jù)應(yīng)用服務(wù)器發(fā)送的請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)操作,并將操作的結(jié)果傳送給應(yīng)用服務(wù)器。共一百三十九頁(yè)三層C/S結(jié)構(gòu)(jiégòu)優(yōu)點(diǎn)整個(gè)系統(tǒng)被分成不同的邏輯塊,層次清晰,一層的改動(dòng)(gǎidòng)不會(huì)影響其他層次;能夠使“肥胖”的客戶(hù)機(jī)變“瘦”;開(kāi)發(fā)和管理工作向服務(wù)器端轉(zhuǎn)移,使得分布的數(shù)據(jù)處理成為可能;管理和維護(hù)變得相對(duì)簡(jiǎn)單。共一百三十九頁(yè)C/S結(jié)構(gòu)(jiégòu)的局限性第一,C/S結(jié)構(gòu)的計(jì)算能力過(guò)于分散,網(wǎng)絡(luò)中服務(wù)器和客戶(hù)機(jī)的數(shù)目正發(fā)生“細(xì)胞”分裂,使得系統(tǒng)的管理費(fèi)用以幾何級(jí)數(shù)的方式增長(zhǎng)。第二,C/S結(jié)構(gòu)中數(shù)據(jù)庫(kù)信息的使用只限于局域網(wǎng)的范圍內(nèi),無(wú)法利用(lìyòng)Internet的網(wǎng)絡(luò)資源。第三,在C/S結(jié)構(gòu)中,無(wú)論多小的企業(yè)都必須安裝自己的服務(wù)器,而服務(wù)器和服務(wù)器軟件的管理和維護(hù)都是非常復(fù)雜的工作,需要專(zhuān)門(mén)人員負(fù)責(zé),小企業(yè)往往無(wú)力購(gòu)買(mǎi)高性能的服務(wù)器和聘用專(zhuān)門(mén)人員。因此,C/S結(jié)構(gòu)不利于小企業(yè)計(jì)算機(jī)應(yīng)用的發(fā)展。共一百三十九頁(yè)B/S技術(shù)(jìshù)瀏覽器/服務(wù)器系統(tǒng)也稱(chēng)B/S(Browser/Server)系統(tǒng),它也是基于局域網(wǎng)/廣域網(wǎng)的系統(tǒng)。它的客戶(hù)端是標(biāo)準(zhǔn)的瀏覽器(如IE等),服務(wù)器端為標(biāo)準(zhǔn)的Web服務(wù)器,可協(xié)同應(yīng)用服務(wù)器響應(yīng)瀏覽器的請(qǐng)求。B/S是一種三層結(jié)構(gòu)的系統(tǒng):第一層客戶(hù)機(jī)是用戶(hù)與整個(gè)系統(tǒng)的接口??蛻?hù)應(yīng)用程序就是一個(gè)(yīɡè)通用的瀏覽器。第二層是Web服務(wù)器,它負(fù)責(zé)啟動(dòng)相應(yīng)的進(jìn)程來(lái)響應(yīng)處理請(qǐng)求,并動(dòng)態(tài)生成一串嵌入了處理結(jié)果的HTML代碼,并返回給客戶(hù)端的瀏覽器。如果客戶(hù)機(jī)提交的請(qǐng)求包括數(shù)據(jù)的存取,Web服務(wù)器還需與DB服務(wù)器協(xié)同完成這一處理工作。第三層數(shù)據(jù)庫(kù)服務(wù)器的任務(wù)類(lèi)似于C/S模式,負(fù)責(zé)協(xié)調(diào)不同的Web服務(wù)器發(fā)出的SQL請(qǐng)求,管理數(shù)據(jù)庫(kù)。共一百三十九頁(yè)B/S系統(tǒng)(xìtǒng)的特點(diǎn)⑴B/S系統(tǒng)采用B/W/D結(jié)構(gòu)。即客戶(hù)端只安裝一個(gè)瀏覽器(Brow
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024影視制作公司與影視平臺(tái)之間的版權(quán)購(gòu)買(mǎi)合同
- 2025年度特色美食街合作經(jīng)營(yíng)合同規(guī)范3篇
- 2024年高級(jí)精裝住宅家具專(zhuān)屬定制采購(gòu)合同版B版
- 2024年股權(quán)離婚分配協(xié)議
- 2024舞蹈教室場(chǎng)地租賃合同書(shū)(含舞蹈課程版權(quán)購(gòu)買(mǎi))3篇
- 鄭州財(cái)稅金融職業(yè)學(xué)院《數(shù)字影視產(chǎn)業(yè)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙大城市學(xué)院《影視節(jié)目制作技術(shù)與藝術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度區(qū)塊鏈技術(shù)暗股投資合作協(xié)議范本3篇
- 2024年運(yùn)輸合同:某物流公司運(yùn)輸貨物到某地
- 2024文化墻綠色環(huán)保材料研發(fā)與應(yīng)用合同3篇
- 2024年關(guān)愛(ài)留守兒童工作總結(jié)
- 《算術(shù)平方根》課件
- 2024版房屋買(mǎi)賣(mài)合同范例:房屋質(zhì)量保證條款3篇
- 網(wǎng)絡(luò)加速器提供商服務(wù)合同
- 轉(zhuǎn)讓押金協(xié)議合同范例
- 《工業(yè)用二氟草酸硼酸鋰》
- 學(xué)校辦公室副主任述職報(bào)告范文
- 江蘇省蘇州市2024-2025學(xué)年第一學(xué)期八年級(jí)英語(yǔ)期末模擬試卷(一)(含答案)
- 運(yùn)動(dòng)障礙護(hù)理查房
- Python數(shù)據(jù)分析與應(yīng)用 課件 第12章 Seaborn
- 初三歷史復(fù)習(xí)備考策略
評(píng)論
0/150
提交評(píng)論