999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

以軟件維護為導(dǎo)向的軟件工程實踐教學(xué)

2008-12-31 00:00:00趙文耘錢樂秋
計算機教育 2008年20期

文章編號:1672-5913(2008)20-0022-03

摘 要:軟件維護在現(xiàn)實的軟件開發(fā)過程中占有十分重要的地位,本文介紹了我院的軟件維護實踐教學(xué)的教學(xué)方案以及具體實施情況。

關(guān)鍵詞:軟件工程;軟件開發(fā);實驗;實踐教學(xué);軟件維護

中圖分類號:G642

文獻標(biāo)識碼:B

1 軟件維護在軟件工程實踐教學(xué)中的意義

軟件工程是一門理論與實踐并重的基礎(chǔ)課程,教學(xué)內(nèi)容緊密圍繞軟件開發(fā)過程中的各種工程化方法、技術(shù)和思想[1]。在現(xiàn)實的軟件開發(fā)過程中,軟件維護占有很重要的地位,許多報告都指出軟件維護成本已經(jīng)占到總體成本的40%~70%以上。軟件維護關(guān)注于“變化”,包括糾錯性(corrective)、適應(yīng)性(adaptive)、完善性(perfective)、預(yù)防性(preventative)等維護類型[2]。當(dāng)前的軟件工程教學(xué)中一般都已經(jīng)包括了軟件維護相關(guān)理論和方法相關(guān)的內(nèi)容,例如軟件維護及可維護性的概念、軟件維護的類型和過程、變更管理以及軟件再工程等。但軟件工程實踐教學(xué)仍然以瀑布式的正向開發(fā)過程為主,主要體現(xiàn)需求分析、設(shè)計、實現(xiàn)和測試等基本開發(fā)活動,缺少軟件維護的實踐訓(xùn)練。

由于軟件維護在軟件開發(fā)中的重要性,許多國內(nèi)外學(xué)者都呼吁在軟件工程教學(xué)中引入軟件維護實踐(如文獻[3])。在軟件工程實踐教學(xué)中引入軟件維護內(nèi)容主要基于以下這些考慮。

首先,軟件維護在軟件開發(fā)中占有十分重要的地位,典型的軟件工程開發(fā)中花在軟件維護上的時間往往比軟件開發(fā)還要多[3]。而且,大部分畢業(yè)生進入軟件開發(fā)機構(gòu)后都是從維護性的開發(fā)任務(wù)開始的。

其次,軟件維護實踐還能使學(xué)生更直觀地體會和理解軟件工程方法和原則的重要性。軟件工程教學(xué)中系統(tǒng)地講授了許多重要的軟件工程方法和原則,包括軟件文檔規(guī)范、設(shè)計原則(如層次化、高內(nèi)聚低耦合等)以及編碼習(xí)慣(如標(biāo)識符命名、注釋和排版等)等,其中大部分都與軟件的可維護性相關(guān)。通過對文檔不全、設(shè)計混亂和編碼習(xí)慣不好的軟件系統(tǒng)進行維護,可以對這些方法和原則獲得直觀、深入的認識和理解。例如,對標(biāo)識符命名不規(guī)范、缺少注釋、排版混亂的代碼進行閱讀和理解,可以深刻認識到好的編碼習(xí)慣對于維護工作的重要性。

此外,軟件維護實踐能使學(xué)生更好地認識軟件開發(fā)的現(xiàn)實困難。缺陷報告、需求變更、軟硬件平臺的變化等導(dǎo)致軟件演化的因素在現(xiàn)實的軟件開發(fā)中總是存在的。通過在實踐教學(xué)中設(shè)置階段性的需求變更,可以讓學(xué)生對于現(xiàn)實的軟件開發(fā)有更加真實的體驗,從而提高對迭代、增量式開發(fā)等實用的軟件開發(fā)方法和技術(shù)的認知。

2 軟件維護實踐教學(xué)方案

軟件維護主要包括糾錯性、適應(yīng)性、完善性和預(yù)防性維護四種類型[2]:糾錯性維護是針對所發(fā)現(xiàn)的錯誤或缺陷而對軟件進行的修改;適應(yīng)性維護是為了適應(yīng)外部環(huán)境(如硬件、操作系統(tǒng)、外部規(guī)則等)的變化而對軟件進行的修改;完善性維護是由于功能擴展而進行的軟件修改;預(yù)防性維護是面向未來的維護需要,為了提高軟件的適應(yīng)性和可維護性等而進行的系統(tǒng)優(yōu)化和改進。軟件維護實踐教學(xué)應(yīng)以循序漸進的方式覆蓋這四個方面的軟件維護任務(wù),同時穿插并突出相關(guān)軟件工程方法和原則的體驗和熏陶。

根據(jù)這一總體目標(biāo),相應(yīng)的軟件維護實踐教學(xué)將在給定的作為維護對象的遺留系統(tǒng)基礎(chǔ)上,分三個階段進行,如圖1所示。遺留系統(tǒng)分析評估階段的主要目的是在理解遺留系統(tǒng)需求的基礎(chǔ)上對系統(tǒng)的外部和內(nèi)部質(zhì)量進行初步的了解和評價。系統(tǒng)改進維護階段的目標(biāo)是以當(dāng)前系統(tǒng)需求為基礎(chǔ),對遺留系統(tǒng)的缺陷和錯誤進行修改,對系統(tǒng)內(nèi)部的設(shè)計、實現(xiàn)以及文檔質(zhì)量進行改進。系統(tǒng)需求演化維護階段通過若干次迭代的需求和系統(tǒng)環(huán)境變更,進行系統(tǒng)的完善性和適應(yīng)性維護。針對新需求和系統(tǒng)環(huán)境設(shè)置的修改將通過系統(tǒng)測試確認,測試結(jié)果反饋給系統(tǒng)改進維護階段,從而進行相應(yīng)的糾錯性維護活動。此外,系統(tǒng)修改過程中發(fā)現(xiàn)的內(nèi)部質(zhì)量問題(例如可擴展性上的不足等)同樣也會反饋給系統(tǒng)改進維護階段,從而進行相應(yīng)的預(yù)防性維護活動。這種反饋關(guān)系以及需求和系統(tǒng)環(huán)境變更的迭代進行使得后兩個階段將反復(fù)迭代進行。

(1) 遺留系統(tǒng)分析評估階段

與傳統(tǒng)的基于分析、設(shè)計和實現(xiàn)的軟件工程實踐教學(xué)不同,軟件維護實踐教學(xué)以已經(jīng)開發(fā)完成的遺留軟件系統(tǒng)作為起點。每個小組分配到的遺留系統(tǒng)都是由其他人開發(fā)的,猶如在軟件開發(fā)中接手其他小組的維護工作。因此,首先要求他們在理解項目當(dāng)前需求的基礎(chǔ)上,對所分配的系統(tǒng)進行分析和評估,從而為后續(xù)的維護活動打下基礎(chǔ)。這階段的主要實踐任務(wù)包括:

圖1 軟件維護實踐教學(xué)過程

1) 理解遺留系統(tǒng)需求。與正向軟件開發(fā)一樣,軟件維護實踐也要從了解系統(tǒng)需求開始。需求是評價當(dāng)前系統(tǒng)質(zhì)量,進而規(guī)劃并實施各種糾錯性、適應(yīng)性、完善性和預(yù)防性維護活動的基礎(chǔ)。

2) 系統(tǒng)測試及外部質(zhì)量評價。外部質(zhì)量因素是那些用戶能輕易觀察到的軟件特性,例如功能正確性、性能、可靠性、可用性等[2]。通過系統(tǒng)測試,可以針對用戶需求得到遺留系統(tǒng)的外部質(zhì)量總體評價,以及待糾正的錯誤和缺陷列表,從而為糾錯性維護打下基礎(chǔ)。

3) 系統(tǒng)理解及內(nèi)部質(zhì)量評價。內(nèi)部質(zhì)量是指與系統(tǒng)內(nèi)部設(shè)計和實現(xiàn)相關(guān)的質(zhì)量特性,例如可理解性、可維護性、可擴展性等,它們對于軟件工程師而言是十分重要的[2]。通過閱讀遺留系統(tǒng)文檔(可能殘缺不全或質(zhì)量不高)以及系統(tǒng)代碼,同時借助于相關(guān)輔助理解工具的支持,獲得對系統(tǒng)設(shè)計(如體系結(jié)構(gòu)和模塊結(jié)構(gòu)等)和代碼的初步理解,在此基礎(chǔ)上對系統(tǒng)的設(shè)計和實現(xiàn)質(zhì)量進行評價,從而為預(yù)防性維護打下基礎(chǔ)。

這一階段首先強化了對于軟件測試的實踐。在以往的教學(xué)實踐中,我們發(fā)現(xiàn)學(xué)生在正向開發(fā)階段往往不太重視測試(對于自己開發(fā)的系統(tǒng)進行測試往往會覺得沒有必要或比較敷衍了事),且常與調(diào)試混淆。而在軟件維護實踐中,測試對象是他人開發(fā)的系統(tǒng)(實踐中常常發(fā)現(xiàn)學(xué)生對于測試、評價其他人開發(fā)的系統(tǒng)比較有興趣),而且測試結(jié)果直接決定了對遺留系統(tǒng)的外部質(zhì)量評價和糾錯性改進方案,因此學(xué)生往往會認真對待。系統(tǒng)理解能力也非常重要。在教學(xué)實踐中,可以鼓勵學(xué)生充分運用相關(guān)輔助理解工具進行系統(tǒng)理解,例如Eclipse相關(guān)插件所提供的代碼UML視圖、類語法樹、調(diào)用關(guān)系圖、度量信息等輔助理解功能。

除此之外,系統(tǒng)理解及內(nèi)部質(zhì)量評價還強化了對于軟件工程設(shè)計和實現(xiàn)原則的認識。通過閱讀遺留系統(tǒng)文檔和代碼,學(xué)生們可以深切體會到好的系統(tǒng)設(shè)計、編碼風(fēng)格以及文檔規(guī)范對于軟件開發(fā)的重要性。實踐中,他們經(jīng)常會抱怨遺留系統(tǒng)文檔不全或不一致、設(shè)計混亂、編碼風(fēng)格不好,而這些其實也正是他們自己在正向開發(fā)階段很容易出現(xiàn)的問題。

(2) 系統(tǒng)改進維護階段

系統(tǒng)改進維護階段將在遺留系統(tǒng)分析和評估基礎(chǔ)上,進行糾錯性和預(yù)防性維護。針對用戶需求以及一般的軟件設(shè)計和實現(xiàn)質(zhì)量準(zhǔn)則,從外部質(zhì)量和內(nèi)部質(zhì)量兩個方面對遺留系統(tǒng)進行改進。這階段的主要實踐任務(wù)包括:

1) 糾錯性維護實施。針對系統(tǒng)測試過程中發(fā)現(xiàn)的問題,進行糾錯性維護,包括消除系統(tǒng)意外出錯、糾正與功能需求不一致的地方、改進系統(tǒng)性能、可靠性等非功能質(zhì)量方面的不足。

2) 回歸測試及總結(jié)。糾錯性維護結(jié)束后,通過回歸測試驗證糾錯性維護的效果,并進行總結(jié)。

3) 預(yù)防性維護方案制定及實施。針對系統(tǒng)內(nèi)部質(zhì)量評價中發(fā)現(xiàn)的問題以及糾錯性維護中遇到的困難(例如難以擴展的系統(tǒng)結(jié)構(gòu)等),制定并實施對系統(tǒng)的預(yù)防性維護方案,包括對系統(tǒng)設(shè)計和編碼質(zhì)量的改進,以及對開發(fā)文檔的補充和完善等。

4) 系統(tǒng)評審及總結(jié)。預(yù)防性維護結(jié)束后,對系統(tǒng)的設(shè)計、代碼及文檔進行評審,總結(jié)改進情況以及所獲得的體會和經(jīng)驗。

這一階段首先涵蓋了糾錯性維護和預(yù)防性維護實踐。其次,預(yù)防性維護實踐通過系統(tǒng)設(shè)計、開發(fā)文檔、編碼風(fēng)格等方面的改進,強化了相關(guān)軟件工程方法和原則的訓(xùn)練。

(3) 系統(tǒng)需求演化維護階段

前兩個階段的軟件維護實踐都還停留在原有系統(tǒng)基礎(chǔ)上,系統(tǒng)需求演化階段將通過用戶需求和系統(tǒng)環(huán)境的變化,引導(dǎo)學(xué)生進行完善性和適應(yīng)性維護實踐。由于現(xiàn)實中的軟件開發(fā)一般都包含多次迭代和增量,因此這階段的維護實踐也將迭代進行多次。這階段的主要實踐任務(wù)包括:

1) 需求和系統(tǒng)環(huán)境變更分析。在原有系統(tǒng)需求基礎(chǔ)上,提出若干新的擴展功能要求和系統(tǒng)環(huán)境變更(例如改變原有的數(shù)據(jù)庫管理系統(tǒng)),要求學(xué)生通過與助教的溝通和交流明確需求和系統(tǒng)環(huán)境變更要求。

2) 系統(tǒng)修改方案制定及實施。根據(jù)變更要求和對系統(tǒng)設(shè)計、實現(xiàn)的理解確定系統(tǒng)修改方案并加以實施。

3) 系統(tǒng)測試。針對需求或系統(tǒng)環(huán)境變更進行系統(tǒng)測試,對系統(tǒng)修改進行確認,所發(fā)現(xiàn)的錯誤和缺陷將反饋給糾錯性維護活動。

4) 系統(tǒng)內(nèi)部質(zhì)量反饋。針對需求或系統(tǒng)環(huán)境變更的修改活動可以對系統(tǒng)的內(nèi)部設(shè)計和實現(xiàn)質(zhì)量進行檢驗,暴露設(shè)計、實現(xiàn)及文檔等方面的問題,這些問題將反饋給預(yù)防性維護活動。

系統(tǒng)需求演化維護階段除了涵蓋完善性和適應(yīng)性維護實踐外,還具有以下幾個方面的作用:使學(xué)生體驗到真實軟件開發(fā)中多次迭代的增量式開發(fā)過程;通過需求變更直觀體會到可維護性、可擴展性等內(nèi)部設(shè)計和實現(xiàn)質(zhì)量的重要性;驗證改進維護階段對于改進系統(tǒng)內(nèi)部質(zhì)量的效果,加深對于良好的軟件設(shè)計、編碼和文檔習(xí)慣的認識。

3 教學(xué)方案實施

軟件工程課程實驗可以按照由淺入深的順序分為認知性導(dǎo)入實驗、方法性實驗和綜合實踐三個部分,其中前兩部分穿插在一個學(xué)期的軟件工程課程中進行,而綜合實踐則可以在后續(xù)的軟件實踐類課程中安排[1]。在教學(xué)實踐中,軟件維護實踐應(yīng)該作為綜合實踐安排,此時學(xué)生已經(jīng)有了軟件工程課程教學(xué)和一些正向開發(fā)實踐(主要包括需求分析、設(shè)計和實現(xiàn))基礎(chǔ)。軟件維護實踐以3~5人的小組為單位,每個人可以分別擔(dān)任需求分析、設(shè)計、實現(xiàn)和測試等不同實踐任務(wù)。

在實踐項目選擇上,我們從此前的軟件工程課程實踐、數(shù)據(jù)庫課程實踐(數(shù)據(jù)庫應(yīng)用系統(tǒng))等實踐項目中選取一些具有典型性的系統(tǒng)實現(xiàn)(包括文檔和代碼等)作為軟件維護實踐候選對象。這些項目一般已經(jīng)基本實現(xiàn)了原有的用戶需求,但在外部質(zhì)量和內(nèi)部設(shè)計和實現(xiàn)上還存在許多不足。選取這類項目的好處是由類似背景的學(xué)生完成,能夠反映許多典型的軟件實踐問題,同時相關(guān)項目學(xué)生已經(jīng)有所接觸,也較為熟悉。

在軟件實踐教學(xué)中,我們選取書店管理系統(tǒng)等多個在以往軟件工程和數(shù)據(jù)庫等相關(guān)課程的課程實踐項目作為軟件維護實踐的對象。這些項目都是以數(shù)據(jù)庫為核心的信息管理系統(tǒng),這類系統(tǒng)較為典型且本身的需求較容易發(fā)生變化。

(1) 遺留系統(tǒng)分析評估階段

此階段學(xué)生將首先借助于原始需求說明以及與客戶(由助教扮演)的交互明確系統(tǒng)需求。在此基礎(chǔ)上通過測試和文檔、代碼分析進行外部質(zhì)量和內(nèi)部質(zhì)量評價。遺留系統(tǒng)外部質(zhì)量上存在的主要問題包括某些功能與需求不符、運行不穩(wěn)定、用戶使用不方便等。而內(nèi)部質(zhì)量方面的普遍問題包括類結(jié)構(gòu)設(shè)計混亂、文檔缺乏或不規(guī)范、編碼質(zhì)量差(命名不規(guī)范、缺少注釋)等。

本階段安排約4周時間,其中第1周用于了解遺留系統(tǒng)原始需求,第2周用于系統(tǒng)測試,后2周用于系統(tǒng)理解和分析。本階段要求提交系統(tǒng)測試報告、系統(tǒng)總體評價報告(包括外部質(zhì)量和內(nèi)部質(zhì)量)。

(2) 系統(tǒng)改進維護階段

此階段的系統(tǒng)改進針對系統(tǒng)測試報告中所發(fā)現(xiàn)的錯誤和缺陷進行糾錯性維護,針對系統(tǒng)總體評價報告中指出的設(shè)計、編碼和文檔上的不足進行改進。初次的系統(tǒng)改進后,本階段的維護活動還可能在系統(tǒng)需求演化維護階段的反饋作用下反復(fù)多次進行(見圖1)。

本階段在每次迭代中安排約2周時間,要求提交回歸測試報告、糾錯性維護總結(jié)以及預(yù)防性維護總結(jié)。

(3) 系統(tǒng)需求演化維護階段

此階段的維護活動由需求或系統(tǒng)環(huán)境變更發(fā)起。以書店管理系統(tǒng)為例,遺留系統(tǒng)實現(xiàn)的基本功能包括圖書查詢、選購、訂單生成、付款(現(xiàn)金方式)及簡單的庫存管理等。需求變更可以包括增加信用卡支付功能(通過虛擬的銀行支付接口)、增加郵購和網(wǎng)上訂購功能、增加會員制折扣功能等。系統(tǒng)環(huán)境變更可以包括改變所用數(shù)據(jù)庫管理系統(tǒng)(如由Access改為MySQL)、改變國內(nèi)地區(qū)標(biāo)準(zhǔn)編碼(用于標(biāo)識供應(yīng)商及顧客的地區(qū))等。相應(yīng)的維護活動除了滿足這些新需求及系統(tǒng)環(huán)境外,還可以引導(dǎo)學(xué)生進一步改進系統(tǒng)的設(shè)計和實現(xiàn)等。例如,為了更好的容納信用卡支付這一新的付款方式,可以從現(xiàn)金支付和信用卡支付中抽取出公共的支付方式類,從而改進系統(tǒng)的設(shè)計結(jié)構(gòu)。

本階段在每次迭代中安排約2周時間,要求提交系統(tǒng)修改方案、測試報告和系統(tǒng)內(nèi)部質(zhì)量改進反饋報告。

這樣,在一學(xué)期的軟件實踐課程中,系統(tǒng)改進維護階段和系統(tǒng)需求演化維護階段一起可以安排3次左右的迭代,每次完成1~2項需求或系統(tǒng)環(huán)境變更。

我們在復(fù)旦大學(xué)計算機科學(xué)與技術(shù)學(xué)院的軟件工程本科教學(xué)實踐中利用軟件實踐課程開展軟件維護實踐教學(xué)。軟件實踐課程安排在軟件工程課程(第六學(xué)期)之后的第七學(xué)期,此時學(xué)生已經(jīng)系統(tǒng)的學(xué)習(xí)過軟件工程、數(shù)據(jù)庫、操作系統(tǒng)等課程,初步具備了開展綜合性軟件開發(fā)實踐的基礎(chǔ)。

4 總結(jié)

軟件開發(fā)實踐是軟件工程教學(xué)的重要組成部分。傳統(tǒng)的軟件開發(fā)實踐教學(xué)主要以瀑布式的正向開發(fā)實踐為主,忽略了軟件維護實踐的訓(xùn)練。軟件維護實踐的意義不僅在于軟件維護在現(xiàn)實軟件開發(fā)中的重要地位,而且可以使學(xué)生更加直觀、深刻地體會和理解相關(guān)的軟件工程方法和原則。通過遺留系統(tǒng)分析評估以及多次迭代的系統(tǒng)改進維護和需求演化維護,不僅培養(yǎng)了系統(tǒng)理解、修改等軟件維護實踐能力,還強化了軟件設(shè)計準(zhǔn)則、編碼和文檔習(xí)慣以及軟件測試能力的培養(yǎng)。

參考文獻

[1] 彭鑫,趙文耘,錢樂秋.軟件工程實驗教學(xué)研究與實踐[J].計算機教育,2007,(20).

[2] Roger S. Pressman著.鄭人杰,馬素霞,白曉穎等譯.軟件工程—實踐者的研究方法(第6版)[M].機械工業(yè)出版社.

[3] Margot Postema, Jan Miller and Martin Dick. Including Practical Software Evolution in Software Engineering Education[C]. In Proceedings of 14th Conference on Software Engineering Education and Training, CSEET 2001.

主站蜘蛛池模板: 婷婷午夜天| 国产亚洲精品无码专| 97综合久久| 露脸国产精品自产在线播| 国产91av在线| 中国精品久久| 成人福利视频网| 国产成人永久免费视频| 亚洲国产成人精品无码区性色| 这里只有精品在线| 欧洲欧美人成免费全部视频 | 丁香六月综合网| 国产拍在线| 白丝美女办公室高潮喷水视频| 婷婷亚洲天堂| 无套av在线| 精品福利国产| 久久久无码人妻精品无码| 在线观看的黄网| 国产乱人视频免费观看| 中文字幕乱妇无码AV在线| 手机在线国产精品| 日韩欧美中文| 精品午夜国产福利观看| 毛片免费在线视频| 亚洲无码视频图片| 欧美一区国产| 精品视频免费在线| 国产午夜在线观看视频| 久操中文在线| 亚洲综合精品第一页| 日韩av在线直播| 午夜影院a级片| 日本免费福利视频| 国产va欧美va在线观看| 欧美日韩精品一区二区在线线 | 久久综合色天堂av| 青青青国产视频| 麻豆国产精品视频| 污网站在线观看视频| 欧美日韩精品一区二区视频| 国产欧美性爱网| 中文字幕在线一区二区在线| 亚洲黄色片免费看| 一级毛片在线播放免费观看| 久久精品国产在热久久2019 | 日韩不卡免费视频| 免费人成视网站在线不卡| 色成人亚洲| 91免费观看视频| 国产国产人免费视频成18| 亚洲a免费| 蜜桃臀无码内射一区二区三区| 国产麻豆91网在线看| 日本人又色又爽的视频| 亚洲无线一二三四区男男| 99视频精品全国免费品| 欧美中文一区| 国产成人久久777777| 国产白浆视频| 亚洲第一福利视频导航| 91九色最新地址| 色综合成人| 老司机久久99久久精品播放| 免费a在线观看播放| 国产欧美高清| 9啪在线视频| 国产精品亚洲αv天堂无码| 久久成人18免费| 亚洲中文无码av永久伊人| 好吊妞欧美视频免费| 久久久国产精品无码专区| 九九精品在线观看| 97综合久久| 色老二精品视频在线观看| 亚洲看片网| 中文纯内无码H| 麻豆国产精品视频| 成人国产精品2021| 国产精品乱偷免费视频| 国产精品3p视频| 99在线免费播放|