時間:2022-11-17 12:13:59
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇軟件開發項目總結,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
關鍵詞:軟件開發;風險分析;風險控制
中圖分類號:TP311.5 文獻標識碼:A 文章編號:1674-7712 (2014) 04-0000-02
隨著社會需求的不斷增加,國家信息化得到逐步的發展,軟件技術作為基礎載體被應用到社會活動中,軟件的開發項目也越來越受到人們的關注,但由于軟件自身特點的限制,在軟件開發的過程中容易出現各種各樣的問題,因此,應在理性分析出軟件開發項目風險要素的同時,及時針對風險采取相應措施進行規避并使其得到有效控制。
一、軟件開發過程中的風險要素
風險要素分析作為軟件能否開發成功的關鍵,需要在軟件開發前進行確認,并將其歸納進整個開發過程的計劃考量中,使其成為軟件開發項目的一部分。軟件開發的風險要素只要分為:
(一)軟件開發的內容及質量風險
軟件多是應需而生,社會的需要決定了軟件的開發內容,而軟件開發是一項長期而復雜的工程,與普通的工程項目相比具有很多潛在的風險,這些風險具有很大的危害性,需要開發人員及時對其定性并分析,使軟件項目所受影響和損失降到最低。開發內容作為軟件開發項目的基礎,是整個開發過程的導向,始終貫穿于軟件開發項目中。要想取得開發項目的成功就必須具備一個理性的開發內容及范圍,如果在開發前不能將開發項目的內容及范圍加以明確,必然會導致開發項目的風險甚至失敗。
為了滿足社會的進步和發展,軟件開發也成為人們工作、生活的重中之重。軟件開發項目的成功,不僅要具有明確的開發內容和范圍,還要避免開發項目中出現質量問題。相應組織人員應制定質量技術衡量標準,使軟件開發具有一定的規范性和可行性,否則,軟件出現質量風險就可能導致軟件開發項目達不到預定目標或者失敗。
(二)軟件開發的人員及組織風險
軟件開發的過程由諸多因素組成,例如參與人員、組織團隊、外界環境等,這就決定了開發過程的不確定性,工程中的控制與管理也就具有一定的難度。軟件開發人員作為軟件開發項目的主體,期間的人員變動或者人員的技術不達標,都可能使軟件開發過程產生風險。
而組織風險是指,在軟件開發項目組內部對于開發項目的內容或標準存在分歧,這樣就容易因為計劃的臨時變動而帶來軟件開發的風險。組織的工作目的就是在決策者的引導下,通過對風險因素的分析將軟件開發項目的風險降到最低程度,而工作的重點則是工程的進度、質量和資金,因此,組織風險的出現與否決定著軟件開發項目的成敗。
(三)軟件開發的技術及政策風險
軟件開發技術具有不確定性,在許多方面如設計、實施、驗收和維護上都存在一些未知的因素,任何技術方案的變動都會引起軟件開發的風險。技術主要表現在語言、環境及硬件層面,技術不過關會引起整個軟件開發系統的變化,從而引起風險事件的發生。
同時,國家政策具有階段性,它的制定來源于市場經濟的變動,隨著社會的不斷發展,國家的相關政策也會隨之調整,這些都可能成為軟件開發中的風險,要阻止這類風險的產生是不可能的,想要贏得與政策風險的博弈,就要對當前的經濟發展趨勢及軟件開發項目的可行性進行科學的比對,平衡在政策與風險之間的控制,這樣不僅有利于項目的順利開展,也大大提高了軟件開發項目的成功率。
二、軟件開發風險的控制途徑
在軟件開發的項目中,有些風險是可以根據已有的經驗進行防范和控制,屬于可預知類風險,有些風險則不以人的意志為轉移屬于不可預知類風險。風險根據不同的項目情況類別也不盡相同,想要有效的將風險控制住,就要在確定風險類別的基礎上進行分析,采取科學有效的方法加以防范。
(一)通過風險監控防范軟件開發的內容及質量風險
在軟件開發項目中,開發的內容及質量風險屬于可預知風險,而風險監控作為對軟件開發風險控制的基礎,對開發內容及質量風險具有一定的防范性。風險監控,是指對已潛在的風險進行監控并針對不同情況制定相應的措施進行解決,并對解決情況及進度加以實時防范,以防止風險的發生。
風險監控要從遏制風險的源頭開始做起,軟件開發的內容作為軟件開發的基礎是風險監控的首要任務,要規避內容風險,就要在軟件開發項目開始前對開發的具體內容及范圍進行明確定位并取得相關管理團隊的一致通過,防止日后因軟件開發內容的變動而產生風險,否則,根基不穩,就會導致軟件開發進度的延誤,前期所做的一切工作便會付諸流水,浪費人力物力。
質量問題,是軟件開發項目的重中之重,只有質量過關軟件才能造福于社會,反之一切都是空談,要控制質量上的風險,就要在團隊中明確質量技術標準并制定相關的技術文件,將開發過程規范化,防止質量問題的產生,盡量減少軟件開發項目中質量風險的出現。質量,是項目工程的靈魂,只有把握住質量大關,產品才具有合格性。因此,要將風險監控的理念貫穿于整個軟件開發的質量問題中,防范由于未達到相關技術標準而出現的質量風險。
(二)通過風險調控規避軟件開發中的人員及組織風險
風險調控是指在軟件開發項目的過程中,在已實施風險監控的基礎上通過對軟件開發方案進行探討得出相關可行性并在開發過程中加以控制。在這個過程中,管理者應積極制定相關的可接受風險標準,對超出合理范圍的風險及時予以調控,并不斷從實踐中總結經驗形成相關風險數據庫,為今后的軟件開發項目提供參考資料。
在軟件開發項目中,項目組相關人員的變動或者人員的技術不到位都屬于可調控類風險,要想規避這類風險,就要在相關項目進行前加強對項目組人員的挑選,在給予員工物質條件的基礎上多對員工的精神狀態進行了解,避免出現項目進行中的人員離、換職現象。而人員的技術水平則需要相關管理者在招募時要對員工技術進行相應的考核,并且在挑選到合適的人員后,對人員進行系統而全面的業務培訓,防止出現因人員對于業務不理解而產生的風險。
組織風險,一般是指在軟件開發過程中,高層領導者或者組內人員對當前實施方案意見出現分歧而導致的風險,具有可調控性。俗話說,家和萬事興,用在團隊之間也是一樣的道理,只有大家共同協作,才能取得項目的最大利益,反之,組織內部意見不一致就會導致資金的缺失和計劃的斷檔,延誤工程進度。要想規避軟件開發中的組織風險,就要在開發前對技術及方案進行討論并達成一致意見,并在項目進行中加以適當的調控,對于超出預定風險范圍的行為要及時加以制止,這樣,才能進一步促進軟件開發工程的順利實施。
(三)通過風險緩解控制軟件開發的技術及政策風險
在軟件開發的過程中,經過前期的監控及調解方式,一般的可預知性風險就會得到有效的控制,但風險因素中的技術及國家政策因素具有不可預知性,這就導致了后期問題的產生。風險緩解是通過對不可預知類風險的審核和定期跟蹤,將具體風險因素進行重點分析,從而對可能出現的風險進行緩解。尤其是在軟件開發的過程中,很多風險因素后期會出現疊加的情況,管理者要根據項目的進度對不同的因素進行比對分析,得出相應的指標,對超出范圍的部分找到原因并予以糾正,及時緩解因技術問題及國家政策帶來的風險。
技術風險主要指開發、實施、維護等各個環節所潛在的問題,這些問題的共同特點是具有不確定性,這就導致了技術方案也隨時可能出現臨時變動,技術人員需要在整個軟件的開發過程中定期對技術方案在合理范圍內進行修正,以緩解因技術變動而帶來的開發風險。
國家政策是軟件開發項目的導向,它的變動所帶來的風險不可預知性最強,需要管理者時刻保持警惕的心態。基于社會經濟的不斷發展,國家的政策也會隨之進行相應的調整以滿足社會人群的需求,這就需要管理者在熟悉相關政策法規的同時,對政策變動所引起的偏差及時作出調整,盡量予以糾正,以緩解軟件開發過程中的此類風險。
三、結束語
隨著社會的不斷發展,在經濟全球化的推動下,人們的消費欲望得到了有效的刺激,這就導致了軟件開發項目的勢在必行。想要促進軟件開發項目的順利進行,就要對開發過程中的風險因素進行分析,并根據其自身特點制定出相應的措施予以控制,只有這樣,才能合理規避風險,達到成功開發軟件的目的。
綜上所述,軟件開發項目不僅是經濟發展的需要,也是社會進步的必然產物。在軟件開發過程中,相關人員需要在不斷吸取經驗的基礎上通過實踐積累一定的經驗,切實制定出規避風險的措施,降低風險出現的幾率,為軟件開發項目的成功作出充分準備,為滿足社會需求作出貢獻。
參考文獻:
[1]萬燾.軟件開發的需求風險分析綜述[J].科技廣場,2011(01):15-16.
[2]唐顏M.IT項目風險管理及其控制措施研究[J].商情,2012(02):34-35.
[關鍵詞]投資決策;實物期權;凈現值
一、引言
在不確定條件下的項目投資決策分析中,實物期權理論正替代傳統的凈現值法(NPV)而得到廣泛的運用。許多學者也將該方法引入了IT項目的投資決策分析之中,如:Benarch和Kauffman運用Black-Scholes模型,近似地估算一電子銀行網絡項目中所包括的實物期權價值,他們將項目投資機會看成一個仿真的美國式買入期權(Pseudo-AmericaCallOption),并考慮分紅的情況,將項目現金流現值和看成是期權的基礎資產;Taudes運用Black-Scholes期權定價模型分析軟件升級項目的經濟效益;Panagi和Trigeorgis運用實物期權理論分析了某通信項目的經濟價值;Schwartz運用動態規劃法(DynamicProgram-ming)討論了兩種IT項目的期權定價。
上述文獻中存在著兩個缺陷:一是雖然在軟件開發項目經濟分析時考慮了項目內含的實物期權價值,但在項目投資決策分析中卻仍然遵循NPV方法的思路,而沒有考慮實物期權的執行問題以及何時執行問題;二是缺乏對軟件開發項目在生命周期的各個階段所包含的實物期權作全面、系統的研究,大多只是考慮到項目中的等待期權。本文則對上述問題作了詳盡的研究和分析。
二、軟件項目的生命周期
從項目管理與項目經濟分析的角度看,軟件項目的生命周期可歸納為圖1所示的一般過程:
在圖1中,橫坐標是時間,縱坐標是收益或投資成本,t0=0是項目的決策點。在決策時,I是項目可行性研究費用(成本),相對于項目的整個壽命期,一般來說項目的可行性研究階段的時間很短,所以假設項目的可行性研究是在瞬間完成。t1是項目開發的起始點,t2-t1是項目前期開發階段,在這一階段,項目有一現金流C1支出,C1可能是常量,也可能是隨時間的變量C1(t)。從t2時刻起,項目的首期開發完成,項目開始有收益,即現金流B1,B1也可能是常量,更一般的是隨時間的變量B1(t),這一收入可能是企業出售軟件或軟件相關服務效益的收入。同時,對于大多數成功的軟件項目來說,從t2時刻起,該軟件項目又開始了進一步的開發,如增加軟件的新功能,或將軟件移植擴展到其他的計算機操作系統等。從t3-t2階段是軟件項目的第二次開發階段,在這一過程中所發生的開發費用為C2,C2的特點也與C1相似。從t3到tn,其中可能包括多個與t3-t2階段相似的軟件項目的擴展(二次開發)階段。T是該軟件項目結束的時間。由于技術進步與消費者需求的變化,一般來說一個軟件不可能永遠繼續下去,它可能在某一時刻被完全淘汰。綜上分析,t0是項目的決策點,t1是項目的開發起始點,他們可能是同一時間,但大多數情況下可能是不同點。t1-tn是項目的開發階段,其中t1-t2是項目的純開發階段,在這一階段上,項目無收益。t2-T是項目的收益階段,在這個時段上項目有現金流入,他們通常大于本階段上的開發費用。值得指出的是,軟件項目在t2-T階段,企業可以中止并出售該項目,并一次性收取轉讓費。
三、軟件開發項目內含實物期權分析
從圖1的分析可以看出,一個軟件開發項目包含了多個階段。把軟件項目看作是由一系列序貫開發的小項目所組成,這一觀點在軟件開發項目管理中已被廣泛接受。在軟件項目中,前一階段的決策,決定了后續階段的開發投資。所以,在前一階段的經濟評價中,應考慮本階段的決策所帶來的后續階段投資機會的價值。從這一觀點出發,可以分析在軟件開發項目的不同階段中項目可能包含的實物期權。
在t0點,即項目投資決策時,項目內含一個等待(wait)或推遲(defer)開始的實物期權,這相當于一個美國式的買方期權(CallOption)。該期權的執行條件是:推遲項目可以使得管理人員獲得更多(額外)的有關項目的信息,在此基礎上,有利于管理人員采取管理行動,而且,一般來說計算機硬件,軟件的價格隨時間迅速下降,推遲項目會有利于降低開發成本。但同時也應看到,推遲項目也可能導致項目收入的損失和企業競爭優勢的喪失,即推遲項目具有機會成本。在項目決策時,應綜合全面考慮這兩方面因素。因而,在項目決策時,除了篩選項目外,還應考慮這一實物期權的價值,在時間許可的范圍內,決定最佳項目開始時間。
在t0時,除等待期權外,項目還包含有第二階段投資機會的實物期權。
在t1至tn時項目的開發階段。在開發階段上項目具有更大的管理柔性,項目可能包含的實物期權有:1.推遲或中止下一階段的開發。2.若不期望的情況出現,并且繼續下去,則可完全放棄該項目。3.根據新掌握的信息,擴展或縮減項目。4.發現新派生軟件(項目)的投資機會。
最后,項目的經營階段,項目還可能包括中止(出售)的期權,或由于條件的變化,進一步升級軟件的機會。
雖然軟件項目中所包含的期權不同,但一般情況下,影響他們價值的因素主要包括:1.執行項目中實物期權所產生的收益。對軟件開發項目來說,這可能是項目在某一階段的收益,一般來說,其他條件不變,收益越高,期權的價值也就越大。2.執行實物期權所需要的成本。對于軟件開發項目而言,是投資于項目下一階段的成本,一般來說,其他條件不變,成本越小,期權的價值也就越大。3.收益與成本的不確定性的程度。對于金融期權來說,其價值是建立在市場風險之上的,這個風險反映在證券資產的價格變化上。然而,其中之一變為不確定了,則項目所包含的實物期權價值會相應增加。4.實物期權的截止時間。對于軟件項目來說,這一時間就是下一階段項目管理決策的可能時間。在實踐中,它經常是企業因素所決定的。實物期權的截止時間越長,則期權的價值也就越高。5.項目包含的實物期權執行的機會成本。若這一機會成本越高,則期權的價值也就越低。6.無風險折現率。無風險折現率越低,則期權的價值也就越高。
四、軟件開發項目經濟分析的目標與內容
Trigeorgis等學者提出,在考慮內含實物期權時,投資項目的價值包括兩部分:一是傳統的、被動的、靜態的(static)項目直接現金流的凈現值(NPV)。二是管理柔性或靈活性所產生的項目內含實物期權價值。這一思想可歸納為下式:F=NPV+V(1)
(1)式中,F是擴展(Expand)的NPV,也是整個項目投資機會的價值;NPV是按凈現值法計算出的項目凈現值;V是項目內含期權的價值。
根據項目投資決策的NPV法則,內含實物期權的IT項目,其投資機會的價值大于零時,項目可行;篩選IT項目的多個獨立方案時,選擇投資機會最大的投資方案。在大多數投資項目的實物期權理論研究以及實證研究的文獻中,都遵循這一準則。然而,這類投資項目的決策思路卻值得重新審視。
傳統的投資項目經濟評價中,沒有考慮項目中可能包含的實物期權,其經濟評價是為其投資決策服務的。而投資決策的特點是在決策時只有投資或不投資兩種選擇,若項目選擇投資,其經濟評價的使命便告結束。若選擇不投資,項目就放棄了。傳統的投資項目決策的內容可歸納為下面三個基本內容:1.決定投資項目是否經濟可行;2.若可行的投資項目存在多個相互排斥的投資方案,篩選最佳的投資方案;3.在企業資源(預算)約束的條件下,篩選多個項目的投資組合。然而,若投資項目中包含實物期權,項目經濟評價中也考慮了項目內含實物期權的價值,那么投資項目不僅在經濟評價的內容與方式上與傳統項目的經濟評價不同,而且項目的決策內容和方式也與傳統項目的決策不同,具體體現在下面三個方面:第一,項目的決策不僅在項目最初的決策階段(點)進行,而且還應延伸進項目的整個過程之中。第二,在項目最初的決策階段(點),管理者不僅要決定項目是否可行,篩選最佳方案和選擇投資組合,而且還要依據項目經濟評價的結果,決定項目內含期權是否應該執行和何時執行。第三,投資項目內含期權的經濟分析,不僅在項目決策階段進行,而且還應延伸至項目開發的全過程。在項目開發的每一個階段,根據項目經濟分析的結果,決定當時項目所含實物期權是否實施、何時實施。
五、軟件開發項目決策框架與準則
從上述分析可以看出,在軟件開發項目經濟評價中引入實物期權的概念和實物期權定價方法,是軟件開發項目經濟分析與決策管理的革命,它必然給原有的軟件開發項目的管理帶來深刻變革。本文構建了軟件開發項目的經濟分析與管理決策過程的框架,其主要內容是:1.確定本階段軟件開發的范圍及下一階段開發的可能范圍,決定是否可引出相關的開發項目。2.構造確定本階段開發項目包含的實物期權,如推遲開發、進一步擴展開發等。3.預估開發項目成本、收益、時間和無風險折現率,特別應分析確定成本與收益的不確定性特征,如變化方差等。4.根據開發項目的不確定源的特征,選擇合理、恰當的市區期權定價模型,確定開發項目內含期權的價值。對于相似于美國式期權的實物期權,還應確定最佳執行時間。一般來說,實物期權定價模型主要包括:已有的期權定價模型、偏微分方程法和動態規劃方法等。5.根據項目的經濟分析結果作出管理決策。應該指出的是,在軟件開發項目的不同階段,管理決策的內容有所不同,下面詳細分析不同開發階段管理決策的內容與規則。
在軟件開發項目的最初決策階段,決策內容包括兩個部分:一是傳統項目投資決策內容相同;二是針對項目內含期權的決策。具體可歸納為圖2所示:
具體的決策準則如下:新晨
1.篩選可行項目。若軟件開發項目的投資機會價值(擴展NPV)大于或等于零,則項目可行。
F≥0(2)
2.在可行項目中,選擇最佳方案。投資機會價值最大方案:
F*=max{Fi}(3)
i=1,…,N
3.投資方案的期權決策。最佳投資方案選定后,具體的管理決策選擇可歸納為下表。
在軟件項目開發過程中的開發階段,管理決策的內容為:根據項目經濟分析的結果,決定是否執行期權,何時執行。若項目包含的期權價值大于零,對于相似于美國式期權的實物期權,則選擇最佳時間來執行;而對于相似于歐洲式期權的實物期權,則到期執行。在執行美國式期權時,涉及到最佳執行時間的確定。正如實物期權的定價沒有統一的模型一樣,這一時間的確定是沒有統一的模型,而應根據項目不確定因素的特征來靈活掌握。
參考文獻:
[1]Benaroch,M.,R.J.Kauffman.Justifyingelectronicbankingnetworkexpansionusingrealoptionsanalysis[J].MISQuart.2000,24(2)197-225.
Abstract: At present, in the domestic multimedia player software development industry, there are some following problems, for example, products can not be delivered on time, products with quality problems need rework, customer satisfaction is low, there are few iteration and customer feedback in the development, the late change cost is too high, the utilization rate of testing and documentation developers in the early is low, but later work overtime is frequent, so this kind of unfavorable factors have brought great hidden dangers and risks for the stability of product quality. Therefore, it is necessary to improve the project management of the domestic multimedia broadcast software development project. This paper firstly analyzes the current situation of multimedia player software development industry, introduces the project management method widely used in the industry at present, and then aiming at problems, puts forward the improved project management method suitable for the industry.
關鍵詞:Scrum;軟件開發;項目管理
Key words: Scrum;software development;project management
中圖分類號:TP311.5 文獻標識碼:A 文章編號:1006-4311(2017)23-0244-02
1 研究背景及意義
隨著多媒體播放軟件開發行業的興起,競爭也開始加劇。如何對多媒體軟件開發項目的過程進行更加有效的管理,成為了擺在企業管理者面前的一道難題。在國內外大部分的多媒體播放軟件開發項目中,比較多的是采用傳統的項目管理模式,如瀑布模型開發模式,來進行新產品的研發工作。軟件開發不僅僅是編寫代碼,更關系到如何有效地組織項目人員,如何高效地發揮項目人員的主觀能動性,如何真正地發揮團隊的力量,來快速地完成高質量的產品。因此,需要采用更加靈活有效的流程來克服這些問題和局限性。在多媒體播放開發行業的高速發展和客戶需求的日益增加和變化的大環境之下,應該認識到只有先進靈活的、高效的項目管理理念,才能保證多媒體播放軟件項目更加有效地開展,才能更快地質量更好的產品,才能占領市場的先機和優勢,才能在競爭中取得勝利。
2 項目管理理論
項目管理理論是在項目過程中使用專門的技能、知識、方法和工具,對既有的資源進行合理地管理、調度和分配;通過這個過程,使得項目的完成結果可以達到或者超過項目干系人的期望和需求。為了使項目獲得成功,必須對項目制定合理的計劃,對可能存在的風險、所需資源、工作范圍、要實現的任務、花費工作量(成本)、進度、經歷的里程碑等做到合理的安排。
2.1 什么是項目管理 項目管理[1]是指項目的管理人員,使用特定的方法、技能和有關的理論知識,在資源限定的條件下,對項目進行有效地管理和控制。從項目的開始,直至項目的最終結束,在此過程中,通過制定計劃、組織協調、領導、監控和干預,從而實現預先設定的項目目標。從本質來說,項目管理行為沒有秘密,經過組織的工作和活動,都可以被認為是項目管理行為。但從近代開始,項目管理行為漸漸被提煉和發展成為了一種具備廣泛科學性質的理論模式。
2.2 瀑布式開發模式理論 瀑布式開發模式是由溫斯頓?羅伊斯在1970年提出的,直至19世紀80年代早期,它一直是僅有的被普遍使用的軟件開發模型。瀑布式開發模式的中心思想是按照程序⑹慮橛煞被簡,把設計與實現分別對待。這樣做的優點是方便有序地分工合作。各個活動自上而下、有序銜接,如同瀑布流水,逐級下落。瀑布式開發模式是一個開發框架,是經歷一系列的階段按順序開展的開發過程。因此,如果在過程中有功能未被覆蓋或者出現了問題,需要“返回”到上一個階段并進行相應的修改。開發階段從一個階段“流動”到下一個階段,這也是瀑布式開發模式名字的由來。
在軟件工程中,瀑布式開發模式占據重要的地位,它是軟件開發的基礎架構。它也是軟件的一種開發路線,將項目拆分為一定數量的階段。有序執行每一個階段,而且依賴于先前的已完工的階段。使用瀑布開發方法的情形下,開發工作的各個部分需要區分評估,并且常常由不同的團隊來實施[2]。
3 基于Scrum的多媒體播放軟件項目管理方法設計
基于多媒體播放軟件開發行業的特點,與當前模式所存在的弊病與局限性,需要針對當前模式所存在的問題,結合行業特點,改進現有開發模式的思路,研究適合于行業的、更加高效的項目管理模式,從而使開發過程更加高效,提升產品質量,提高客戶滿意度。
3.1 多媒體播放軟件項目特點 國內的多媒體播放軟件項目的特點如下:
3.1.1 項目無法按時交付 當開始一個新的多媒體軟件開發項目時,由于種種原因,通常沒有人會特別清楚如何才能實現它、會碰到多少技術難題、多久才能攻克、多久才能交付。這取決于項目的范圍與復雜度。
3.1.2 項目工期緊,加班普遍 軟件行業競爭激烈,多媒體播放軟件開發行業也是如此。很多多媒體軟件開發公司加班的情況非常普遍,主要原因是項目的工期緊張。一方面,如果預估的項目的最終交付時間存在偏差,項目進展滯后,那么經常需要加班趕工來追趕進度。另外一方面,在交付產品給客戶后,也存在由于質量問題而返工的現象,并且客戶需要在他們的code freeze之前修復所有的bug,這也增加了加班的現象。
3.1.3 項目人員安排的不確定性 多媒體播放軟件開發項目中,具體的開發人員有自己負責的模塊。比如負責圖像解碼的開發人員在暫時沒有后續的開發任務的情況之下,會抽出身來兼顧其他的開發項目。而這樣的安排所導致的后果是,當有后續的圖像解碼方面的工作時,該開發人員仍然在其他的項目中,項目開發進度可能需要進行時間上的調整,或者是開發人員上的調整。而由其他的開發人員接管,由于需要一段熟悉期,通常會減慢之前的開發進度。
3.1.4 需求變化多 多媒體播放軟件開發項目中,需求的變更正在變得越來越頻繁。這包括外部環境的變更需求與客戶的需求變更。
3.1.5 所需要支持的平臺、系統眾多 多媒體播放軟件開發項目中,需要支持跨平臺,不同系統,不同設備以及不同CPU架構上的播放器開發。這確保了用戶可以在各平臺、各系統上二次開發他們自己的多媒體播放器而不用擔心平臺、設備、協議的局限性。
3.2 基于Scrum模式的項目管理方法
3.2.1 改進現有開發模式的思路 如果企I的目標是重復性的制造與生產,那么原有的傳統的流程是適用的,而對于像多媒體播放軟件開發這樣需要不斷創新、需求變更頻繁、需要不斷開發新產品的行業來說,原有的模式已顯得過于笨重和低效,需要一個不同的、改進的模式來解決原有模式所存在的問題。
3.2.2 更改項目計劃的粒度 原有模式中經常出現花了很多時間做調研和制訂計劃,然而還是無法按計劃交付產品。這是因為多媒體播放軟件開發項目中有大量的創新性工作,而這些創新性工作又沒有過往數據可供參考。隨著項目的進行,再對即將要做的工作、涌現的需求、需求的變更制訂詳細的計劃,依此類推。這么做的好處在于避免了前期做很多假設來制定一個看似完整、實際不準確的項目計劃[3]。
3.2.3 以迭代、持續交付的方式來工作 在改進的模式中,可以將功能模塊進行劃分,用一個個短周期迭代的方式來工作,在每個迭代周期結束后交付可工作的若干功能模塊給客戶,并獲取客戶反饋。項目團隊總是專注于優先開發并對于客戶高價值的功能模塊,完整的功能模塊是由一系列的增量產品組成的。這么做的好處在于,基于迭代的工作模式盡早交付給客戶有價值的部分功能,并更早的獲得客戶反饋。因此,這種改進的模式避免了開發低價值或者不需要的功能模塊,從而比原有模式更快的交付產品[4]。
3.2.4 更好地獲取客戶反饋 在改進的模式中,需要強調以人為本,鼓勵讓客戶“參與”到項目開發中。客戶是軟件的最終使用者,通過更早地交付可工作的功能模塊給客戶,讓客戶可以在實際環境中運行與測試,從而盡早地獲得反饋,有助于開發人員更好地理解客戶的真實需求,避免了閉門造車所帶來的錯誤。
3.2.5 組建自組織的團隊并提升團隊士氣 在改進的模式中,不再是項目經理分配任務給相應的團隊成員,而是建立一個相對平行的組織。由于淡化了管理和被管理的組織關系,組織更加開放,團隊氛圍也更加和諧。這種更平等的組織結構可以促進團隊成員的交流,激發開發人員的工作熱情,并且提高開發效率[5]。
3.2.6 更好地處理需求變更或涌現的需求 在多媒體軟件開發項目中,變更或者涌現的新需求是經常存在的。因此,改進的模式中,需要更好地處理用戶需求在開發過程中的變化及時與客戶溝通,必須確保在改進的模式中能夠更早地知道需求變更和涌現的新需求以更好地應對所帶來的影響。
3.2.7 優化測試與文檔開發人員的利用率 在改進的模式中,確保項目以持續、穩定的步伐進行的情況下,保證了每個階段都有可交付、可測試的功能模塊。這種可交付、可測試的功能模塊使得測試與文檔開發人員可以更早地加入項目中。
4 總結與展望
基于Scrum的管理理念目前越來越流行,它強調了以人為核心,創造一個和諧的項目環境,激發團隊成員的潛力,從而最大化團隊的生產力。通過快速迭代,集中體現了其能快速適應各種變化的優勢。這種理念要求客戶相較以往更加頻繁和更加緊密地參與到產品開發中。這可能會導致有部分客戶不習慣或者不適應,因此在開發過程中需要和客戶加強溝通,使客戶更直觀地意識到他們在產品開發中花費一定的時間參與進來可以幫助提升產品質量,產生雙贏的局面。另外,目前基于Scrum管理理念主要是運用于軟件開發項目中,相信在不久的將來會有更加廣闊的發展空間。通過對個體、應用技術、資源對象的進一步研究和具體實踐,基于Scrum的管理理論會更加完善,并應用到其他領域中。
參考文獻:
[1]MBA lib (),項目管理:項目管理簡介,http:///wiki/項目管理.
[2]周三多.管理學-原理與方法[M].五版.上海:復旦大學出版社,2011.
[3]John Hunt,《Agile Software Construction》, UK Springer Verlag, 2010.
關鍵詞:典型程序;軟件項目;程序設計
中圖分類號:G642
許多高校的計算機和一些非計算機類專業都開設了程序設計類課程,這類課程理論性、操作性、應用性都很強,并且知識繁雜,嚴謹抽象,較難掌握。比如:Visual Basic程序設計課程,首章就是抽象難懂的屬性、事件、方法等概念,然后就是更加枯燥抽象的數據類型、變量、語句、過程等語言基礎知識。這些又都是VB程序設計的基礎,必須掌握。如果過分追求知識體系的系統性,以概念、命令的講解為重點,偏重理論灌輸,學生就會感覺枯燥難學,失去興趣,也不利于應用型、創新型人才的培養。
因此,筆者采用了軟件項目與典型程序相結合的教學方法,深受學生歡迎,也收到了良好的教學效果。
軟件項目與典型程序是教師采用軟件開發項目和一些典型程序來主導學生主動學習的一種學習方法。教師精心選擇、設計軟件項目和一些典型程序,在一定程度上打破原有的課程知識體系,重新組織知識內容,將抽象的理論知識和軟件操作融入到具象的軟件項目開發與典型程序設計中。教師不再接部就班地直接向學生灌輸知識,而是以學生為主體,主導學生去直接設計程序和軟件項目。通過引導學生去設計程序來探究新知識,通過一個實際軟件項目的開發來整合課程知識,掌握軟件工程和項目管理的思想。軟件項目開發是理論與實踐的結合體,加大了課程實訓力度,增強了學生實踐能力。
軟件項目開發與典型程序設計方法,將理論與實踐相結合,在知識的運用中學習知識,符合認知規律,有利于知識體系的建構,充分培養了學生的應用能力和創新能力。下面,結合實踐,對該方法的應用進行有益的探討。
1 軟件項目的應用
把軟件項目開發應用于程序設計類課程的教學中,圍繞真實的項目來組織教學,創造與實際工作環境相似的學習環境,有效提高學生的學習積極性,培養學生的職業素養和能力。
筆者建議最好一門課程采用一個軟件開發項目,將整個課程的零散知識點進行整合,軟件項目的開發要貫穿于整個課程的學習過程之中。例如:在VB程序設計課程的學習中,教師選擇某個信息管理系統做軟件開發項目,如人事檔案管理系統。當然,根據不同的專業、學生及課程情況,也可以采用多個項目。
啟始課上,教師可以展示一些使用相應程序開發的優秀軟件,同時布置軟件開發項目,使學生了解此程序設計語言的功能,明確課程學習任務,并激發學生興趣。
按照課程的知識體系結構,教師將軟件項目分解為子程序設計任務,貫穿于日常教學中。如:在VB程序設計課程中,學習控件時,可以讓學生去設計軟件界面;學習菜單時,讓學生設計軟件的菜單;學習工具欄時,讓學生設計軟件的工具欄……這樣,課程學完了,軟件也開發出來了,邊學邊用。隨著課程學習的深入,軟件越來越完整,學生體會到了成功的喜悅,學習積極性越來越高。
項目開發完成后,教師可組織學生進行評價,先由學生展示作品,自評,再學生間互評,最后由教師總結評價。此評價過程可以鍛煉學生的表達能力,學生間也可以相互借鑒,糾正不足。
軟件項目的應用增強了課程的實踐性,縮短了課程學習與系統開發之間的距離,使實訓環節落到實處。
2 典型程序的應用
典型程序設計是為了掌握某些知識點而采用的較小的并且典型的程序,主要是在章節學習中應用。例如:VB程序設計課程中,在學習標簽、命令按鈕、文本框和IF語句時,可以采用注冊登錄程序;學習框架、單選按鈕、復選框、分支語句時,可以采用簡單考試系統程序;在學習列表框、循環語句時,可以使用選課程序等。
典型程序應用的組織實施過程是精選程序、展示程序、分析程序、設計程序、總結擴展。教師根據學習內容和目標,選擇合適的程序,選擇的程序要典型、實用。教學時,教師運行程序,展示程序功能和運行效果,激發學生積極性,同時使學生明確學習目標。然后,引導學生分析程序,設計程序,此時,要以學生為主體,教師起主導作用。學生在設計程序的過程中,主動思考、探索和操作,通過控件和語句的使用,掌握了軟件的操作和應用,理解了程序設計語言基礎知識。程序設計完成后,教師再引導學生總結程序設計應用中涉及到的知識點,反思程序設計方法,并提出問題,激發學生通過課外學習來進一步完善、擴展程序功能。
典型程序設計應用是一種主動學習過程,在教師的引導下,通過學生自身的思考和操作,來學習軟件知識,符合知識體系的建構規律。
3 采用基于學習過程的考核方式
傳統的考試方式不能科學、全面地評價學生的學習效果。在程序設計類課程的教學中,筆者采用了基于學習過程的形成性考核方式。學生的成績由設計程序與軟件項目的完成情況來綜合評價,每完成一個程序或項目,就給出一個成績,根據程序或項目的難易程度來設置分數權重。這種考核方式,評價貫穿整個學習過程,結合設計程序和軟件項目分階段考核,可以科學地評價學生的學習效果,大大激發了學生的學習主動性,達到了以考促學的目的。
4 應用中應注意的問題
4.1 選擇設計程序和軟件項目需注意的問題:(1)設計程序和軟件項目要典型,具有代表性,不要選不常用的。還要注意實用性,盡量接近生活實際。也要考慮趣味性,選擇趣味性強、有吸引力的程序和項目,以激發學生興趣。(2)選擇設計程序和軟件項目時要考慮到開課專業、課程大綱和學生情況,難度要合適。過于復雜或過于簡單,都會降低學生的學習熱情。過于復雜,學生會產生受挫感,失去信心。過于簡單,對學生沒有吸引力,學習積極性會降低。難度要相對適中,學生只有通過學習,才能完成作品,獲得了成功感,增強了自信心,有利于提高學生學習的主動性,吸引學生深入學習。隨著教學進度的推進,程序要先易后難,由簡單到復雜,從單一到綜合,再到軟件項目,循序漸進地培養學生的軟件開發能力。(3)選擇設計程序總體上不要過于復雜,涉及的知識點不要太多,不要面面俱到。選擇的開發項目綜合性要強,覆蓋面要廣,從而達到對課程知識和技術的整合。項目涉及不到的重點或較為重點的知識點,設計程序可以起到輔助和補充的作用,或者利用設計程序來強化重點知識。總之,程序和軟件項目要精心選擇和設計,應用中也要把握技巧。
4.2 教學中,要始終以軟件項目為主線,設計程序為輔助,學生為主體,教師為主導。設計程序的導入、分析、設計、總結、擴展,要以學生為主體,發揮好教師的主導作用。軟件開發項目的實施也是如此,要培養學生獨立分析、解決問題的能力,要授之以漁。教師要多設疑,要注意啟發、引導、組織學生去探求知識。學生要多動腦,多動手,主動學習,主動建構自身知識體系。
4.3 打破傳統教材內容安排,大膽調整教材內容和順序。根據程序或項目分解后的子程序任務涉及到的知識內容,合理調整教材內容。例如:各種流程控制語句的學習,傳統的教材內容是安排在一起,逐一講解,講一條語句,用一個程序去驗證。這種統一學習的方式,會使學生感覺抽象枯燥,教學效果差。其實,流程控制語句的學習,可以貫穿到整個課程的學習過程中。將不同的流程控制語句,甚至同一語句的不同結構,與基本控件、菜單、工具欄進行合理的結合,分散到各個程序和軟件項目子程序中,達到了難點的分散與克服,從而收到良好的教學效果。
參考文獻:
[1]朱文增,趙競雄,張阿嬌.程序開發在VB教學中的應用研究[J].電腦知識與技術,2009,14.
[2]尤麗卓.程序開發與實例結合教學法在VB教學中的應用[J].職業教育研究,2007,6.
關鍵詞:軟件;質量管理;優化對策
0引言
在軟件技術快速發展和應用范圍不斷擴大的同時,軟件復雜性也不斷提升。在當前的很多軟件開發企業中,軟件質量管理問題開始成了關注的焦點。
1軟件質量管理中存在的主要問題分析
1.1需求模糊問題
結合軟件工程來說的話,軟件產品的生產主要包括多個過程:第一是系統需求研究過程;第二是系統設計過程;第三是系統實現過程。但對于軟件系統需求來說,往往描述不夠完善,相應的軟件需求調研以及研究也不夠深入,沒有加強對軟件質量需求的管理,這樣不僅會使得研發以及測試設計工作落實不到位,還會明顯提升溝通成本,導致產品實現與用戶需求不一致[1]。
1.2立項管理不到位問題
大量實踐結果表明,通過加強立項管理,可以有效避免質量管理項目風險的產生,賦予軟件項目開發深刻的意義。(1)軟件項目開展。不加強深入的立項調查,以及加強項目可行性分析,落實好立項評審,則可能會導致產品需求獲取不到位,軟件開發產品規劃出現很多問題,無法保證軟件研發工作的有效開展,致使項目研發功能明顯減弱,不但會導致資源浪費,還會阻礙新產品的正常[2]。(2)軟件項目。如果沒有加強立項管理,可能會導致成員行為渙散問題的出現。工作人員只顧自己,不顧團隊利益,無法全面了解項目產品的實際開發要求與背景,也不能從根本上明確項目開發的最終目標,無法滿足用戶的實際軟件開發需求,最終使得軟件開發計劃無法按期實施以及軟件開發費用超支等問題出現。
1.3軟件質量保證體系尚待完善
針對我國很多軟件開發企業來說,往往都處于“軟件質量管理”實施的最初階段,甚至是試行階段,很多科研制作部門對應的標準化軟件質量管理體系還都不完善,甚至有一些科研部門對應的軟件質量管理制度和體系還沒有形成[3]。另外,一些企業雖然設立了軟件質量管理的專有部門,但相應的體系文件卻還不完善,需要經過大量的實踐來完善。在軟件開發項目研制部門質量管理普通較低的情況下,軟件開發工作者的綜合素質低下,也會影響軟件產品的最終質量。
2軟件質量管理的優化對策分析
2.1加強需求工程有效管理
在實際的軟件開發當中,如果相應需求模糊,會出現需求隨意變更的現象,導致時間被白白浪費。對于該問題來說,必須針對相關需求活動,加強統一化的需求管理。要在落實好軟件需求開發工作的基礎上加強需求管理,這樣不但能夠限制需求變更的實際次數,還能促進工程師對質量管理需求的深入理解。總之,軟件需求開發與軟件需求管理的重要性同等重要,必須實現兩者的有效結合,才能保證最終產品的質量。
2.2加強軟件測試流程有效管理
在軟件測試的各個環節,都可能會出現一些問題,必須不斷優化軟件測試流程,加強對軟件測試流程的有效管理。具體來說:(1)軟件測試相關部門人員,必須加強需求知識學習,開展深入的需求探討。(2)對有疑慮的需求者,研發設計工作者要做出及時而準確的解答。對于研發設計工作者也不能有效解答的問題,要讓他們聯系用戶來有效解答。在明確需求的基礎上,根據軟件系統的作用以及性能,專門的測試工程師要科學合理地設計軟件測試測用例,具體要結合兩大方面的內容來設計:第一,針對測試工程師來說,必須結合實際需求,科學合理地編寫測試用例;第二,針對測試工程師來說,要在結合實際用戶反饋情況的基礎上,做好分析匯總工作[4]。要大力引入和合理應用QC功能測試設備以及工具,加強對軟件以及實際操作系統兼容性能的合理性測試,才能充分發揮軟件測試工具使用的功能與作用,落實好軟件兼容性測試工作。此外,要加強自由軟件測試,適當補充軟件測試用例,了解軟件測試用例沒有涉及的問題以及問題產生的原因;要采取定期研究和分析的方法,明確缺陷庫里面存在的問題,并深入研究問題成因,進而利用測試用例來解決問題[5]。
2.3加強項目進度質量有效管理
要保證軟件開發項目的順利完成,首先必須保證軟件項目質量足夠好。在軟件項目開始實施之前,必須保證項目開發計劃足夠科學、合理。如果軟件開發項目計劃設計人員相關工作經驗足夠豐富、設計能力足夠強,往往可以有效保證軟件開發計劃的合理性與完善性,有效預見軟件開發計劃當中的問題,消除相關阻礙和影響因素。在軟件開發項目計劃設計的開始,相關人應及時組織軟件質量管理人員,開展軟件項目計劃討論會與評審會,并請相關技術專家、真實用戶等,針對軟件項目計劃的科學性和合理性進行探討,分享個人意見和看法,由專門的記錄人員總結相關意見,最終形成系統化的質量記錄,再以書面或者文檔的形式傳送給相關工作人員進行意見修改整合,確保軟件項目計劃的完善性。
2.4提升工作人員的綜合素質
在軟件開發和質量管理過程中,技術人員和管理人員是核心主體。因此,要想有效保證軟件質量管理有效性,必須保證管理工作人員和技術人員的綜合素質足夠高。讓員工全面地了解企業,正確理解自身的工作性質和要求,并不斷增強自身的責任感。即使工作人員已經對工作內容很熟悉,也可能沒有深入理解企業經營戰略以及相應的發展規劃。企業外部環境條件變化幅度比較大,企業工作人員必須及時掌握內部戰略和規劃變化情況,及時調整自己的工作計劃和方法。對于軟件質量管理人員來說,不但要主動參與到企業發展規劃設計工作中,還必須及時將相關信息傳達給各個部門。通常來說,企業應當定期或者不定期地開展例會,介紹企業近期情況和之后的發展規劃。在掌握全體例會內容的基礎上,各個部門負責人員應當再次開展部門會議,根據部門工作開展情況,做好后期工作規劃調整工作,使得每位員工都掌握企業發展動態,進行自身科學合理的工作調整與規劃。軟件質量管理者還必須基于企業內部軟件質量問題,增強創新意識,提出可以有效解決軟件質量問題的措施。
3結語
綜上所述,軟件開發成本管理不到位、軟件質量管理不到位等問題仍然存在,導致這些問題產生的主要原因是管理者管理不到位,如:軟件質量管理制度不完善、隨意性較強。要有效解決這些問題,必須以完善的軟件質量管理體系為依據,加強軟件開發的全過程監控[6]。
參考文獻
[1]翁婕,丁鐵,喬揚,等.軟件質量管理的優化對策[J].電子制作,2015(6):98-99.
[2]周波,鐘小咪.鐵路運輸行業的供應商軟件質量管理[J].科學與財富,2016(5):750.
[3]張沐辰.基于軟件全面質量管理的團隊建設[J].科教導刊,2014(16):45,55.
[4]方俊釵.數字超聲檢測儀軟件的質量管理和軟件測試[J].科技風,2014(13):238.
[5]李婷,朱接文.計算機信息化的影響及其軟件質量管理分析[J].無線互聯科技,2016(12):110-111.
關鍵詞:企業實踐 Java軟件項目開發崗位 職業能力 教學改革
筆者積極響應學校號召,暑期期間到濟南維庫軟件科技有限公司進行了一個月的企業實踐,順利完成企業的工作任務,現將一個月的實踐收獲總結如下。
一、轉化角色,虛心、耐心、專心做一線有責任心的企業員工
1.遵守企業制度,認真承擔并履行責任
在一個月的企業實訓中,筆者謹記學校領導的囑托,嚴格要求自己,認真遵守企業制度,從未發生遲到、請假、早退現象,進入公司后將自己由受人尊重的老師轉變為一名初到公司的企業員工,做到慎獨、慎微、慎初,強化工作責任心,主動處理好分內與分外的相關工作,勤奮扎實地工作,不敷衍應付,認真對待工作中的每一個問題,完成企業交給的每一個工作任務。
2.不畏工作困難,耐心解決項目開發中的各種問題
企業實訓為真實軟件開發項目:山東高速集團采購系統。由于項目龐大復雜,涉及知識點瑣碎,項目開發工作困難重重,筆者認真細致學習企業教師講解的知識點,分析需求說明書,鉆研軟件算法和代碼的實現,面對項目中遇到的各種錯誤代碼和異常,耐心查錯排錯,認真解決軟件開發過程中出現的各種錯誤,并及時記錄解決方案和問題,為下一步軟件開發工作和教學實訓積累了豐富的經驗。
3.放下教師架子,虛心向企業有經驗老師請教
學校主要工作是教書育人,企業工作是開發高質量軟件產品。工作任務的不同,使筆者慢慢放下了教師的架子,主動地向實踐操作能力較強的“小兄弟”請教。雖然他們年齡較小,學歷不高,卻有豐富的項目開發經驗。筆者向他們虛心請教,反復討教工作中不明白的問題,從他們那里學到了課本上沒有的工作技巧和技術,更領略了他們一絲不茍、沉著耐心和認真細致的工作作風。
二、企業實踐鍛煉內容
企業實訓內容主要基于目前軟件公司的熱點需求――Java軟件開發崗位進行設計和選取,包括相關知識內容的培訓和山東高速集團采購系統項目的實訓兩部分內容,具體知識包括:Java知識(JDK的安裝配置、Myeclipse開發工具使用、數據類型和運算符、流程控制、面向對象開發)、HTML知識、MYSQL知識和SSM知識(JSP應用、Sevlet應用、Spring-MVC應用、Spring依賴注入、Mybats框架應用及整合)。
三、企業實踐鍛煉收獲與心得
1.課程設置應與崗位需求相匹配
高等職業院校人才培養模式定位于技術技能型人才的培養,為地方區域經濟服務,為地方社會經濟發展提供人才保障和智力支持,因此專業課程的設置應該以崗位工作任務和崗位能力需求為出發點。以Java軟件開發崗位為例,目前學校開設的都是傳統的數據庫知識和web前端知識課程,但是IT技術發展迅速,真正的軟件開發大多通過相關框架實踐,如SSM框架、SSH框架等,因此,學校要適應目前社會的需求,與時俱進,及時更新課程標準和授課內容。
2.教師實踐操作水平是培養高素質技術技能性人才的重要因素之一
目前企業對參加職業技能大賽獲獎學生畢業生比較青睞,所以企業高職院校的評價主要通過高職院校技能大賽進行,而學生技能大賽成績的結果反映了教師的實踐操作水平。俗話說“老師要給學生一杯水,自己首先要有一桶水”,因此教師應首先提高個人實踐操作水平,而提高教師實踐操作水平的主要方式之一就是通過企業實踐鍛煉。據悉,山東省在不久的將來將啟動高職院校教師職業技能大賽,因此教師要將提高實踐操作水平作為自己以后工作的努力方向。
四、未來的努力方向
1.基于企業崗位需求進行教學改革
(1)教學模式和教學方法遵循職業發展規律。高職院校推行“工學結合、知行合一”的人才培養模式,因此要基于企業工作崗位和工作任務進行教學改革。
第一,推行教、學、做一體化教學模式。在教學中,應該以培養學生的職業能力為主,師生雙方邊教邊學邊做,理論和實踐交替進行,直觀和抽象交錯出現,理中有實,實中有理,突出學生動手能力和專業技能的培B,充分調動和激發學生學習的興趣,使學生真正變成學習的主人。要培養學生的終生學習和持續發展能力,推行教、學、做一體化教學模式對加強學生的動手操作能力和解決實際問題的能力有很大好處。
第二,推行翻轉課堂教學方法。為提高學生的主動性和創新能力,在教學過程中,推行翻轉課堂的教學方法,將學習任務布置給學生課下完成。學生利用信息化技術查閱需要的材料,還可以在網絡上與別的同學討論,完成老師分配的任務,并在課上分享任務完成過程和心得體會。由老師進行評論,師生間還可以進行充分的交流,這樣可以滿足學生的個性需要,有利于學生創新能力的培養。
(2)教學過程基于軟件開發工作過程。將教學過程與企業軟件開發過程相結合,教學過程圍繞企業真實的軟件開發項目展開,將要學習和掌握的知識技能,轉化為一項項工作任務,學生分組按照行動導向的六個步驟(資訊-計劃-決策-實施-檢查-評估)進行,使學習任務既是一個完整的學習過程,又是一個工作過程,教師成為學生學習的引導者和促進者。
2.技能操作的提升與社會崗位前沿技術的了解
(1)技能操作的提升。以后,筆者將會繼續積極參加企業實踐鍛煉,參加省級培訓,完成每5年必須累計不少于6個月到企業或生產服務一線實踐的目標,通過企業真實工作過程提高自己的實踐操作水平和職業能力,并將其應用到教學過程、實驗實訓過程和學生技能大賽中。
(2)社會崗位前沿技術的了解。為推導社會技術的變化和教學知識的更新,在以后的工作中要經常深入企業,了解企業的生產組織方式、工藝流程、產業發展趨勢等基本情況,熟悉企業崗位職責、操作規范、技能要求、用人標準、管理制度、企業文化等,學習所教專業在生產實踐應用中的新知識、新技術、新工藝、新材料、新設備、新標準等,及時更新人才培養方案、課程標準,適應社會崗位對教學知識的需求。
關鍵詞: 敏捷開發; Scrum; 軟件開發; 項目
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2015)11-81-03
Abstract: Aiming at the problems in the teaching of comprehensive practice training course of software development for the waterfall model, the characteristics and advantages of agile development are analyzed. This paper explores the application of the Scrum agile development process in comprehensive practice training of software development. Through the project decomposition, sprint incremental iteration and frequent delivery of the working software, cultivate students' team spirit and initiative learning ability, so as to improve the quality of teaching.
Key words: agile development; Scrum; software development; project
0 引言
在軟件技術專業和計算機應用技術專業中都會開設軟件開發綜合實訓課程,讓學生通過完成1-3個簡化的企業項目掌握主流的開發方法和軟件開發過程,為將來步入社會打下知識與技能的基礎。為了更好更快的開發出符合客戶要求的軟件,開發過程中一般會采用某個開發模型,教學中為了實現學校與企業的無縫對接,在開發項目時也會采用某個開發模型。本文簡要分析了目前軟件開發綜合實訓課程采取的開發模型及其存在的問題,在簡單了解敏捷開發模型的基礎上,探索軟件開發綜合實訓課程中采用Scrum敏捷開發的具體實施過程,研究利用Scrum敏捷開發的優勢。
1 目前開發模型和存在的問題
在高校軟件開發綜合實訓課程的教學中,大都仍采用傳統的“瀑布模型”開發模式。該模型將項目分成需求分析、概要設計、詳細設計、編碼實現、軟件測試和運行維護六個階段。各個階段嚴格按自上而下的線性順序實施。每個階段都需撰寫大量詳細文檔,這占用了大量的實訓時間,前一個階段完成后才能開始下一階段。雖然學生急于看到的軟件運行效果帶著盡早編程的急切心情,也必須等到需求分析、概要設計、詳細設計三個階段驗收完成后才能開始,這極大挫傷了學生學習的積極性。
這種瀑布模型是解決上世紀六十年代軟件危機的很好方案,也是開發模型中的經典。但是瀑布模型強調文檔的作用,以文檔為核心,用戶只有等到整個過程結束才能見到全部成果,嚴重延遲的反饋信息無疑增加了項目延期或失敗的風險。在當今的軟件開發中,很難看到完全實施“瀑布模型”的企業,越來越多的公司采用了敏捷開發。
據VersionOne[1]公司2013年的調查顯示,在全球收集的3501份調查報告顯示有88%的公司采用敏捷開發方法,Google、華為等大型軟件公司也采用了敏捷開發。越來越多的國內中小軟件企業也通過敏捷開發提升自身競爭力,包括筆者頂崗實習的北京盛安德科技有限公司。與傳統軟件過程、開發方法、傳統項目管理方法相比,敏捷開發方法具有以人為本、成本低、開銷小、效率高、靈活和響應快等優勢。為了與企業接軌,使學生學以致用,我們應該密切與行業企業合作,改革目前過時的實訓開發模式。
2 敏捷開發模型
2001年Kent Beck等17名專家共同簽署了“敏捷軟件開發宣言”,敏捷軟件運動隨之產生和發展。“敏捷”代表了互聯網時代軟件開發過程模式的一種先進理念和價值觀。與傳統開發模式相比,“敏捷”更強調溝通性、快速靈活地響應,關鍵在于持續交付可工作的軟件[2]。敏捷開發積極主動地迎接和適應客戶變化,允許和支持需求的不斷變化,主張軟件開發人員應緊密與客戶合作、溝通和交流,把客戶作為開發組成員,它集合了一整套價值觀、原則和實踐方法。敏捷開發的價值觀[3]:個人和交互勝過過程和工具;工作的軟件勝過面面俱到的文檔;與客戶合作勝過合同談判;響應變化勝過遵循計劃。目前有許多敏捷開發過程可供選擇:XP(eXtreme Programming,極限編程)、Scrum、水晶方法等。Scrum軟件開發模型是敏捷開發中的一種,應用最為廣泛。
3 Scrum敏捷開發簡介
Scrum敏捷開發過程是以人為核心、迭代、增量、循序漸進的開發,整個開發過程由若干個短的迭代周期組成,每個迭代周期稱為一個Sprint,每個迭代實現不同的任務,迭代中重大的、優先級高或風險高的任務優先實現,每個迭代周期都有明確的目標,每次迭代都經過測試,具備集成和可運行的特征[4]。每個Sprint周期結束后可以交付一個可運行的軟件。
采用Scrum敏捷開發的項目參與人員主要分三種角色,即產品負責人(Product Owner)、Scrum Master、開發團隊。其中Scrum Master對項目全過程負責,是項目的推動者和組織者,確保Scrum流程正常運轉。開發團隊成員一般不多于7人,主要有設計、開發和測試人員組成,團隊成員不能只負責自己擅長的領域,需要有配合全局的合作意識,如開發人員不能只負責編寫代碼,還需要進行測試。
Scrum敏捷開發項目執行的流程[5]。首先在產品負責人的帶領下篩選出產品的總需求條目(Product Backlog),通過全體人員共同討論對總需求條目進行優先級別排序,供團隊進行開發工作。然后以1-4個星期為一個開發周期Sprint,團隊根據Product Backlog確定Sprint周期內的任務,生成Sprint Backlog(周期內任務列表,Sprint Backlog為Product Backlog的一部分),確定Sprint目標。每個Sprint周期(一次迭代)分為設計、實現、測試等工作,團隊成員主動認領工作任務,每天在不超過20分鐘的站立會議上講述自己的昨天工作內容、今天工作計劃和當前工作難點。在一個Sprint周期結束時,整個團隊對照Sprint Backlog列表演示新功能,完成演示和Sprint回顧總結,一個可執行交付的有價值軟件,才可開始下一個Sprint周期的循環。這樣原本幾個月甚至幾年的開發周期縮短至一個星期到一個月,讓用戶可以盡早體驗軟件的應用并及時提出問題或調整需求。
4 Scrum敏捷開發具體設計過程
學校的實訓環境和公司的工作環境,以及學生和員工的工作能力有很大的差別,因此高校軟件開發綜合實訓教學中不能拘泥于Scrum過程的全部形式,教師應對Scrum開發進行修改和優化。
4.1 分組和角色分配
Scrum主要有三類角色,一是Product Owner(產品負責人),該角色可安排熟悉產品需求的教師承擔,負責產品需求的提煉、優化和優先級排序。二是Scrum Master(團隊負責人),有開發能力強的學生擔任,主要負責本項目成員的溝通和協調,老師協助Scrum Master的工作,監控項目執行。三是開發團隊成員,一般由3-4名學生組成。團隊成員注意開發能力強弱分配、男女搭配等元素,另外項目是在課余進行開發,所以要考慮宿舍因素。
4.2 項目選題和項目啟動會議
軟件開發綜合實訓課程分成兩個階段,第一個階段(2-3個月)是教師給出固定題目,如:公司網站;第二個階段(2-3個月)由學生自主選擇項目,征求教師認可,如:畢業生管理系統、大學生報到系統等。
在項目的啟動會議上,介紹敏捷開發的思想和執行流程,約定統一的開發規范和流程,以便學生掌握團隊開發方法,并養成良好的編碼習慣。
4.3 Scrum敏捷開發的執行流程
如圖1所示,教師和項目組成員將整個軟件項目分解成多個子項目(Product Backlog),開發過程中選擇優先級高和重大的子項目進行開發,一個子項目為一個Sprint迭代周期,子項目又可以分成若干個工作任務(Sprint Backlog)。在每個Sprint周期內,學生主動認領任務,進行計劃、編碼和測試。每日項目組有一個不超過20分鐘的會議,主要匯報三個問題:上堂課到目前為止做了什么?有什么難點和問題?今天打算做什么?并更改自己的Sprint燃盡圖(Sprint burn down)。通過該會議讓項目組成員了解目前項目進度。每個Sprint 周期結束后,開一次Sprint評審和回顧會,對照Sprint Backlog演示軟件的功能,看是否完成了本次Sprint目標,會上每位學生回顧自己所做工作以及需要改進的地方,教師給予點評和總結。會議的成果可以交付一個可運行的軟件。下一個Sprint周期是現有軟件的增量迭代,因此可以持續交付包含新功能的軟件版本。總之,敏捷開發就是把一個大項目分為多個相互聯系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態。
4.4 結對編程
一個任務交給兩個開發人員。兩個開發人員同時坐在一臺電腦前面,一個編程,另一個實時檢查,然后互換角色。與傳統一個人一個任務相比,兩個人一起協作可以互相促進、相互學習,實現提高。
5 Scrum敏捷開發在軟件開發綜合實訓教學中的優勢
在軟件開發綜合實訓教學中使用Scrum敏捷開發主要有以下優勢。
Scrum提高了學生學習積極性和主動性。Scrum敏捷開發模型要求盡早編碼這恰好迎合了學生軟件開發實訓時急切渴望進行編程的心理,激發學生學習的積極性。同時能夠頻繁交付可運行的軟件,使學生有極大的成就感。同時在項目的開發中,開發成員主動認領開發任務,每日的站立會議會使落后的學生意識到自己的差距,這在團隊中能夠形成良好的競爭機制,主動學習和提高。
Scrum提高了學生的軟件開發技能。瀑布開發模型在整個開發過程中都需要撰寫大量的開發文檔,比如在需求文檔寫出來后,開發人員根據需求文檔來編寫代碼,一切以文檔為依據。敏捷開發只寫必要文檔,這節省了大量的實訓時間,使學生有時間專注于編碼和測試工作,從而提高學生的開發技能。
6 結束語
作為一種新興的開發模型,Scrum敏捷開發方法的理論和實踐還在不斷的完善創新之中。教師在教學中使用Scrum敏捷開發模型組織教學時,更應該根據實際情況進行修剪和完善。實踐證明,在軟件開發綜合實訓課程中,我們嘗試采用修剪的Scrum敏捷開發模型能夠激發學生學習興趣,提高學生開發能力和團隊協作精神。
參考文獻(References):
[1] 資料來源:http:///.
[2] Robert C. Martin.敏捷軟件開發-原則、模式與實踐[M].清
華大學出版社,2003.
[3] 王敏.基于Scrum敏捷開發的軟件過程管理研究 [D].昆明理
工大學,2010.
[4] 林曉宇.基于Scrum敏捷方法的軟件工程實踐教學探索[J].
電腦知識與技術,2011.19:4762-4765
關鍵詞:軟件工程;課程教學;教學內容;實踐開發
1教學理念
隨著互聯網絡和IT技術的快速發展,IT技術的服務無處不在,軟件開發已經成為計算機專業的大學生掌握的必須技能,能夠更好地運用當今流行的軟件開發技術手段開發程序,已經成為計算機專業的學生在激烈的社會競爭中能夠獲勝的關鍵。所以,在當今的IT技術時代,特別是大數據和云計算快速發展的時代,對于計算機專業的本科生來說,系統地掌握軟件開發技術的各個環節并使其有機結合,同時運用軟件工程開發過程的技術來組織軟件開發過程的所有資源并綜合地處理軟件開發過程已經成為計算機行業的基礎需求技能。所謂軟件工程,是指系統地運用工程管理的知識來組織、運行、開發和維護有用的、高效的和高質量的軟件學科。軟件工程主要包括人員管理、項目管理、可行性與需求分析、系統設計、程序設計、測試和維護等過程。因此,對于計算機專業的學生來說,掌握必要的軟件開發過程,了解和掌握軟件開發過程的建模和管理技術不僅能夠使自己在未來可以更輕松地應付多種復合信息的工作需求,給自己帶來更合理的處理方法,而且也可以提高自己的軟件開發效率。所以,對一些計算機專業的學生來說,通過系統地學習掌握軟件過程開發技術,特別是一些新的軟件開發動向,如面向服務的軟件開發和集中式計算架構開發等,是十分必要的一項教學內容。目前,軟件工程課程是計算機專業教學中的一門必修課程。以作者所在的教學單位為例,軟件工程是計算機專業高年級本科生的一門必修課。該課程主要從軟件工程基本理論出發,將軟件開發技術的各個環節有機結合,全面覆蓋軟件開發過程,注重培養學生軟件開發中的綜合職業技能。主要講授的內容包括軟件開發規律概述、軟件開發方法、軟件開發平臺與工具、系統分析與建模、IT規劃與咨詢、軟件開發項目管理、軟件開發案例分析等。同時該課程引入云計算和大數據對軟件開發的需求,重點分析實際軟件開發案例,使學生掌握軟件開發的基本規律與實際管理方法。因此,軟件工程作為一門專業必修課程,計算機專業的學生不僅能夠通過這門課程掌握軟件過程的必要技能,如RUP模型和UML等,而且通過實踐的項目分析與設計,學生能夠系統地掌握需求分析和軟件設計的必要技術,如數據流圖DFD如何使用等,使得學生掌握的知識不再停留在理論學習和應付考試上,為學生未來就業后進入企業快速融入開發團隊提供了必需的知識基礎。同時,該課程通過對一些熱門開發技術的學習,不僅可以提高學生的興趣,激發學生的潛能,加深學生對軟件開發技術本質的理解,而且可以提高其相關知識的洞察力與研究能力。[1]
2教學方法和手段
軟件工程課程的特點是知識內容多、內容實踐性強,沒有實踐難以掌握,例如軟件過程中的用例模型是通過角色、行為和場景來描述和分析軟件開發過程的模型,因此不僅要求學生在課堂上需要了解什么是用例,掌握用例設計的基本規則,而且也需要安排時間給學生對于復雜的場景使用用例模型進行設計分析,然后進行課堂討論,講解自己的設計思路如何滿足用戶的需求等。所以,根據軟件工程課程的特點,作者認為在課堂上宜采用“知識細化”、“精講討論”、“詳細分析”等多種多樣的教學形式。以作者所講授的軟件工程課程為例,本課程以計算機投影開展教學,配以適量的理論教學和知識點討論,并以上機課來培養學生的動手能力,如要求學生使用Powerdesinger軟件進行需求建模。本課程其中投影、理論和討論教學為24學時,上機實驗課為8學時(不含課外上機)。在講授過程中,考慮到該課程注重應用的特點,遵循深入淺出的原則,對概念、原理的解釋和描述盡可能地以日常生活所接觸到的案例和圖示加以對比說明,引導學生掌握軟件工程的開發過程,建立概念之間和應用之間的聯系。在討論和上機過程中,以任務驅動方式要求學生完成討論題目和上機實驗,然后及時找出學生上機時遇到的問題,并歸納總結,提高學生相應的能力(教學學時分配見表1)。另外,作者為了讓學生更好熟練地掌握軟件工程的相關知識,通過網絡收集了一些教學視頻和PPT課件,在完成每個學時教學任務的課后都拷貝給學生,讓學生課后回去自學這些知識。
3教學培養目標
軟件工程課程是一門要求實踐性較高的課程,對從實際的工程開發中掌握知識有較強的要求。因此,本課程主要介紹當前最流行的軟件開發技術與環境,目的是使學生了解軟件開發過程與組織等技術,掌握當前流行的軟件開發方法與環境。本課程的教學目的是讓學生初步地掌握從宏觀和微觀兩個方面如何去開發軟件系統。使學生學會軟件開發的原理、技術和方法,提高學生的軟件開發和軟件工程管理能力:[2,3](1)培養學生的思考和動手能力。軟件工程課程包含大量的建模知識,同時提供了一些軟件去實踐這些知識,因此這要求學生不僅掌握建模的基本原則,同時對于實際的項目需求,能夠運用建模知識去分析建模,然后運用相關軟件進行建模概念的設計。(2)培養學生系統的組織和管理能力。軟件工程課程是一門工程性的課程,它來源于實踐,并用于實踐。軟件工程的復雜性在于它是涉及軟件開發的各種環節和資源相互協調工作的知識。因此,培養學生掌握好軟件工程的知識,對于學生今后職業規劃有重要的幫助,能夠為學生往高層次的IT人才發展提供必要的知識儲備。
4總結
本文結合作者的實際教學工作和在教學改革方面的分析與探索,從教學理念、教學方法與手段、教學培養目標等方面,對計算機專業的軟件工程課程的教學改革進行了分析與探討,提出了以實際項目驅動和課堂知識點討論作為課堂教學手段,把軟件工程相關理論知識學習作為實踐的教學內容,注重實踐為主、理論為輔的理念。目前,對于計算機專業的學生來說,軟件工程課程的本科生教學改革有著十分重要的意義與作用,其教學內容與教學手段也應該要適應社會需求的變化。
參考文獻
[1]許波,陳曉龍.UML結合軟件工程教學改革探討[J].計算機教育,2011(2):34-37.
[2]崔寅生.談談軟件工程教學改革的實踐[J].成人教育,2009(12):85-86.
[關鍵詞] 需求分析 需求變更 需求控制
一、問題的提出
什么是需求分析?
要知道需求變更是什么,首先要知道什么是需求分析。
需求分析是指理解客戶需求,就軟件功能與客戶達成一致,估計軟件風險和評估項目成本代價,最終形成開發計劃的一個復雜過程。需求分析的成果形成需求說明書。
什么是需求變更?
根據軟件工程思想定義,需求說明書一般要經過論證,如果在需求說明書經過論證以后,需要在原有需求基礎上追加和補充新的需求,或對原有需求進行修改和削減,均屬于需求變更。
二、需求變更的原因及影響
1.需求變更原因
一方面是用戶:他們是項目需求的提出者。一個十分常見的現象是用戶提出需求以后,在軟件開發過程中用戶改變了需求,這只能迫使開發工作返工,丟棄一些無法修正的部分。無疑這會造成一定的損失,但又無法完全避免。要求用戶一次性把需求講清楚,并且不允許此后需求有任何變更,這是不現實的。只能盡量減少需求變更,降低它所造成的影響。
二是系統因素:在系統內部,如計算機硬件、系統軟件或數據的變更要求與其相適應。
三是外部環境因素:與軟件運行相關的工作制度或法規、政策的變更,或是業務要求變更導致的需求變更。
四是需求分析階段工作缺陷:需求調研、分析、定義和評審工作不夠充分,致使需求規格說明中隱含著問題,在開發過程中才有所發現。或者需求開發中開發人員與用戶溝通不夠充分,如未能如實獲得用戶的潛在需求等。
軟件需求一旦出現變更,它可能要涉及到一些相關的代碼和文檔的修改,為此要把這一變更通知到所有相關人員。提出需求變更有可能在開發的任何階段,并且隨著項目的進展,越晚的需求變更引起的損失越大。
2.需求變更給軟件的開發工作帶來的影響
需求變更對軟件開發的影響是多方面的,概括的看,包括以下三個方面:
(1)增加項目的人員、費用開支,影響開發進度。需求變意味著原先的需求調研、分析的結果與預期的軟件實現存在偏差,需要進行需求變更。這無疑要增加項目的人員、費用的開支,并對開發進度造成影響。更有甚者,如果變更頻繁,可能對項目造成較大影響,嚴重時可能直接導致項目的失敗。
(2)影響軟件質量。在一個復雜的軟件系統中,需求之間具有一定的聯系,相關需求可構成需求鏈。如果由于需求變更導致需求鏈的某些環節脫節,就可能引起一些難以察覺的錯誤。當需求變更沒能及時修改項目的設計、開發文檔時,這些錯誤一般難以被測試人員發現,將直接影響系統質量,嚴重時可導致系統崩潰。
(3)影響開發者與用戶之間的合作關系。需求變更的實施是用戶和開發者相互協作的過程。開發者和用戶在是否采用變更問題上常常產生分歧,如果沒有恰當處理,影響雙方的互信,從而影響項目開發進程。同時需求變更也會在項目開發人員之間產生分歧,影響合作關系。
三、采取的對策
1.首先是預防
盡量做好需求分析工作,以期減少需求變更的頻次,為此在需求分析階段著重處理好以下問題,力圖使需求分析的結果更接近目標。
(1)培養正確的需求意識。優秀軟件產品建立在優秀的需求基礎之上,而高質量的需求又來源于客戶與開發人員之間有效的交流與合作。因此,雙方的參與者都需要認識到:要想獲得成功,自己需要什么,合作方又需要什么。只有這樣,才能建立融洽的合作關系。因此,培養正確的需求意識是雙方都需要努力的,而開發人員在這個階段應該發揮更加積極主動的作用。
首先,需求分析人員應該接受一定的正規培訓,以提高與人溝通的能力、緩解矛盾的能力、善于傾聽和詢問的技巧,以及收集整理資料的能力等。在參與具體項目時,分析人員也應主動學習一些項目所涉及的具體應用領域的基本知識,以更好地理解用戶的需求。
其次,開發單位應該對那些不想花時間在需求分析上的用戶明確指出:如果用戶不能充分地支持并參與,項目很可能會失敗;開發單位還可以通過學習一些前車之鑒的真實案例警告用戶:低質量的需求分析可能導致嚴重的后果。通過對用戶代表和管理人員的培訓,使他們真正理解需求分析的重要性和忽略需求帶來的風險,并對計算機系統有一個大體的了解,這樣用戶才能夠主動地參與需求分析。
同時,正因為不可能一次就完全了解用戶的需求,而且在系統開發過程中還需要不斷地請用戶參與,因此與用戶的溝通是需要貫穿始終的。需求分析中所采取的一些策略可能會讓用戶覺得意外和難以接受。因此,需求分析人員需要對用戶解釋一些做法的必要性和合理性,以得到用戶最大的支持與合作。
(2)從業務需求入手。用戶認識到了需求分析的重要性,但可能仍然不知道從何處入手表達自己的需求。這時可以從業務需求入手,任何企業對自己的經營運作目標應該是比較清楚的,這樣的經營背景讓用戶不僅有話說,也讓開發者有章可循。需求分析不可以完全與它所處的背景相脫離,只有當系統真正置身于它的社會和組織環境中,它的需求才能清晰地反映出來。
(3)充分利用需求來源。有了以上需求背景,就比較容易做到有的放矢了。需求分析人員可以直接與系統未來的操作者探討他們希望有什么樣的軟件;觀察系統的潛在用戶當前的日常工作以獲取有價值的信息;系統的使用者可能有很多,可以將他們分類以簡化需求;最后一定要與真正的決定者達成協議:對于有沖突的需求如何權衡,對于直接用戶的眾多需求如何取舍等。
同時,用戶往往對計算機期望過高,認為計算機可以解決當前存在的所有問題,因此會提出很多的功能需求,并且希望在很短的時間內看到成效。但是,由于技術、人力等資源的限制,并不一定能夠在設定的時間期限內滿足用戶所有的期望,這時就應該盡早確定出交付的產品應具備的最重要功能,即設定需求的優先級。
在這個階段,可以采用UML中的用例圖幫助用戶和需求分析人員之間的交流。一個用例圖描述用戶可以用軟件產品執行的一個任務。它不是從軟件的性能和系統的行為方面出發,而是從用戶到底能夠用這個軟件產品干什么入手。這樣的方式用戶比較熟悉,容易溝通;而且不會在需求分析的一開始就陷入過于細節化的設計,也有助于避免分析人員添加一些與所需任務無關的自認為很好的功能。
(4)提供選擇方案。由于用戶對軟件系統缺乏經驗,或者由于用戶的運作機制還未完善,或者由于其他種種原因,用戶可能仍然不能對一些需求做出明確的說明,收集整理的需求中可能仍然存在一些不確定因素。這時可提出幾份比較詳細的方案。附帶不同做法的優點,供用戶選擇或者啟發用戶確定需求。
如果需求分析做得好,文檔清晰且又有客戶簽字,那么后期客戶提出的變更就超出了合同范圍,需要另外收費。這個時候,開發方一定要據理力爭,此時這并非要刻意賺取客戶的錢財,而是不能讓客戶養成經常變更的習慣,否則后患無窮。
2.分級管理客戶需求
軟件開發項目中,“客戶永遠是對的”和“客戶是上帝”并不完全的正確,因為在已經簽定的項目合同中,任何新需求的變更和增加除了影響項目的正常進行以外,還影響到了客戶的投入收益,所以有的時候項目經理反倒應該為客戶著想。
對于項目中的需求變更,可以實行分級管理,以達到對需求變更的控制。
一級需求變更是關鍵性的需求,這種需求如果不滿足,意味著整個項目不能正常交付使用,前期工作也會被全部否定。這個級別的需求是必須滿足的,否則就意味著否定自已的項目成員和成員的所有努力,所以定為“Urgent”。
二級需求變更是后續關鍵性需求,它不影響前面工作內容的交付,但不加以滿足,新的項目內容無法提交或繼續,所以是“Necessary”。一般新模塊關鍵性的基礎組件,屬于這個級別。
三級需求是后續重要的需求,如果不被滿足會令整體項目工作的價值下降,為了體現項目價值,也是開發人員自已的技術價值的證明,所以定為“Needed”。一般性的重大的有價值的全新模塊開發,屬于這個級別。
以上三個等級是應該實施的,但時間性上可以作優先級的排列。
四級需求是改良性需求,沒有滿足這類需求并不影響已有功能的使用,但如果實現了則會更好,定級為“Better”。界面和使用方式的需求,一般在這個檔次。
五級需求是可選性需求,更多的是一種設想,以及一種可能,通常只是客戶的的一種個人喜好而已,定級為“Maybe”。
對于四級需求,如果時間和資源條件都允許的話,不妨做下去。對于五級需求,正如對它的描述一樣做與不做是“Maybe”。
3.加強需求變更的控制
在需求分析階段工作完成后,需求變更仍可以會發生,因此就要加強對需求變更的控制,主要有以下原則:
(1)建立需求基線。需求基線是需求變更的依據。在開發過程中,需求確定并經過評審后(用戶參與評審),可以建立第一個需求基線。此后每次變更并經過評審后,都要重新確定新的需求基線。
(2)制訂簡單、有效的變更控制流程,并形成文檔。在建立了需求基線后提出的所有變更都必須遵循這個控制流程進行控制。同時,這個流程具有一定的普遍性,對以后的項目開發和其他項目都有借鑒作用。
(3)成立項目變更控制委員會(CCB)或相關職能的類似組織,負責裁定接受哪些變更。CCB由項目所涉及的多方人員共同組成,應該包括用戶方和開發方的決策人員在內。
(4)需求變更一定要先申請然后再評估,最后經過與變更大小相當級別的評審確認。
(5)需求變更后,受影響的軟件計劃、產品、活動都要進行相應的變更,以保持和更新的需求一致。
(6)妥善保存變更產生的相關文檔。
這六大原則看起來簡單,但真正實施起來有難度,還需要依據理論知識配合開發項目組的實際工作情況,在實踐中不斷摸索總結。
四、總結
軟件項目的需求變更是對軟件產品的質量、成本、工期帶來巨大的影響。通過預防性措施和加強需求變更的控制與管理,將需求變更的頻次大幅度降低,從而為軟件項目的順利實施打下堅實基礎。
參考文獻:
[1]王 莉 吳潔明:軟件項目中的需求變更管理的研究[J].計算機技術與發展,2007,17(1):120~121
[2]王 強:軟件開發項目中的需求變更管理[J].電腦知識與技術(學術交流),2007,(11)
1.實踐教學缺乏系統性和針對性目前許多高校“軟件工程”課程除了理論講解外,也加入了實踐教學部分。往往受學時所限,實踐分為軟件項目若干設計文檔的編寫和軟件工程工具的實驗練習。前者受缺乏相應的開發環境、教師虛擬客戶不能很好地反應現實需求、理工科學生的文字表達能力不足等因素的影響,設計文檔的編寫不能很好提高學生能力;后者在一定程度起到了一定的作用,但對于培養學生分析問題、解決問題、管理和團體協作能力方面仍顯不足。
2.評分模式單一軟件工程采用了傳統的閉卷考試方式,平時成績占總成績的30%,期末考試占70%。平時成績=上課出勤情況(10%)+實驗完成情況(10%)+作業完成情況(10%)。任課教師通過對不同的考核內容賦予不同權重來評價學生對軟件工程課程的掌握情況,主要考核學生對課程基本知識的理解。此方法不足以提高學生實際動手的能力,更不利于激發學生實際軟件設計開發的興趣。
二、現有的教學方法的分析
針對上述問題,從事軟件工程的相關教師從不同角度,對軟件工程課程進行了改革。歸納起來主要有如下幾種教學方法改革:
1.自底向上教學法在“軟件工程”課程中應用授課方式主要是用倒敘的方式貫穿完整案例(包含警戒案例),以啟發、討論、辯論的形式講授軟件工程的原理、方法及過程,使學生不覺生疏,易接受,又符合IT從業人員的工作進程。[2]
2.模塊化教學法在“軟件工程”課程中的應用在尊重教學規律和學生個性發展的原則上,根據課程體系和內容之間的關系,將教學部分劃分為若干獨立的模塊,確定模塊之間的關聯,針對不同的教學計劃要求,采用不同的模塊組合有選擇地進行講授和學習。[3]
3.案例教學法在“軟件工程”課程中的應用軟件工程案例教學是根據“軟件工程”課程的教學目的和學生培養目標要求,教師選用相應的案例作為基本素材,引導學生對案例進行調查、思考、分析、討論、設計、開發和交流等相關活動,在活動中教授學生軟件工程的原理、方法及過程,進而提高學生分析和解決問題的能力,加深學生對基本理論知識的理解和掌握。[4]
4.項目驅動教學法在“軟件工程”課程中的應用項目驅動教學法是案例教學法的基礎上采用“案例導向、項目驅動”的教學方法。首先,教師根據要講授的理論知識預先準備一個或者多個小的軟件開發項目;然后,將學生作為主體,以軟件開發項目的研發過程為引導,采用學生小組團隊合作和學生個人獨立完成相結合的教學形式,組織學生開展集體討論并完成相應的實踐性活動,在研發過程中同學和老師要對每位學生所完成的每個階段任務加以點評、督促改進、分享經驗等;最后,學生將成功的軟件給予演示。
5.三位一體式教學法在“軟件工程”課程中的應用根據學生的認識特點和該課程自身的特點以及對“軟件工程”課程在計算機科學專業的定位、教材的選取、課程培養目標的分析下,采取以綜合能力培養為中心、項目實踐為標準,模板、案例、指導說明為輔助的三位一體式的教學思路。[6]對目前在“軟件工程”課程改革中應用的五種方法針對改革側重點進行匯總發現(見表1),單一的教學方法只是在理論教學、實踐教學和考核方式某一方面發揮了很好的作用,而不能從全面發揮效果,而對于“軟件工程”課程來說三者同樣重要。
三、基于多元教學法的課程改革新模式
某一種教學模式改革已經不能滿足現代“軟件工程”課程教學的要求,只有將多元教學模式組合在一起,充分考慮各自對課程教學的優勢,避其缺點,找到一種既能使學生具有良好的理論基礎,又能充分培養學生實踐能力,還能準確地考核學生的教學模式。本次課程改革就是本著這樣一種思想,從理論教學、實踐教學和考核方式三個方面進行多樣化改革。
1.理論教學內容多樣化
理論知識的學習在學生以后軟件項目開發過程中具有必要性和重要性,軟件工程學習過程中要重視基礎和基本技能的培養。學生要具有開發軟件項目的能力,首先要熟悉掌握軟件工程相關的理論知識,特別是對如何按照工程化的方法系統地設計、實現、測試和維護大型軟件,內容包括:軟件開發的基本理論、方法和技術;其次是了解目前已有系統、工具和技術。(1)授課內容引入案例。教師在教學過程中引入與理論知識相匹配的實際案例,將比較抽象的軟件工程原理、方法和技術轉為具體生動的案例進行詮釋,增強理論教學的藝術性、科學性、趣味性、形象性,使學生能夠在課堂上深刻領會和理解軟件工程的思想和方法,教學效果收到了事半功倍。(2)適時更新教學內容。近幾年,軟件原理、方法和技術發展較快,許多適應時展的軟件不斷涌出,而目前的教材雖不斷改版更新,但其更新的速度遠遠跟不上軟件工程的發展。因此,教師在進行理論講解時,除了要教授學生基本原理、技術和方法外,還要時刻關注新內容的出現。(3)制作豐富多彩的課件。采用多媒體教學手段,在課件中插入圖片、動畫、聲音、視頻等多媒體元素,使教學內容更加充實和生動。(4)課堂小組討論。從小問題到大問題,讓學生參與教學過程,有機會發表自己的看法。課堂討論和分析試驗,使理論有實踐作支撐,抽象的知識變得看得見,用得著,大大激發學生學習的興趣和自信。
2.實踐教學內容多樣化
軟件工程理論的講解是課程學習和技能培養的基礎,而軟件工程中許多理論內容如果只是教師講解不加以實踐,內容本身就會變得空洞和不可理解,例如:軟件復雜性計算、軟件可靠性與安全性的測量標準、結構化的實現方法等都需要學生動手實踐才能更好地理解知識本身的內涵。掌握概念、原理、方法和技術,熟練應用軟件開發實踐中的方法和技術是“軟件工程”課程對學生的培養目標。(1)課程角色扮演。教師預先選擇若干小項目,班內學生根據自己對項目熟悉情況選擇項目名稱,劃分項目小組,每組人數不超過6人,每個項目小組成員根據自身特長選擇不同軟件工程角色,例如項目負責人、需求分析負責人、設計負責人、編碼負責人、測試負責人和用戶代表,進行項目分工。項目組成員按時完成自己負責任務,撰寫相應文檔。教師幫助學生分析和解決所遇到問題。在整個開發過程可以體現“學以致用”的思想,實現理論與實踐相結合。(2)課程設計。課程設計主要是針對高年級學生在學習軟件工程課程時開展的專項訓練。課程設計采取在學校內模擬IT企業環境下完成來自企業案例或開發一些具有應用價值項目或學校教師承擔的開發項目的部分開發工作,也可以是學生自選項目,整個課程設計階段嚴格按照工程實施的基本思想來實施。(3)加強校企合作。一方面經常邀請軟件公司長期從事軟件設計、開發和項目管理的工程師和項目經理,給學生講解自己在軟件設計、開發和管理中的經驗,高質量軟件產品需要經過怎樣的開發過程,軟件生命周期中標準文檔如何撰寫等相關內容;另一方面,利用寒暑假時間,讓學生走出去,到軟件產品的研發單位實地實習。
3.考試方式多樣化
傳統的考核方式已經不能反映學生實際軟件開發的水平,也與多樣化的教學模式不相匹配,為此多樣化的考核方式才符合現實需求,主要包括:筆試、課后角色扮演、課程設計和項目總結。(1)筆試占總成績的35%,主要考查學生理論知識的掌握情況和學習效果。(2)課后角色扮演占總成績的15%。由教師根據每位學生在課后角色扮演中的具體表現進行打分,主要由3部分取平均值組成:1/3*(整個項目的成績+自己負責完成的文檔成績+組內其他成員負責完成的文檔的平均成績)。(3)項目總結或心得體會占總成績的15%。根據學生在軟件開發過程中所撰寫的經驗和教訓總結報告、每個小組成員建立的個人開發記錄或日志的實際情況,相互打分。
四、基于多元教學模式課程改革方案
基于上述改革理念,按照軟件工程開發原理、方法和技術,選用典型項目案例,將學生按照項目分成若干個小組,每組人數不超過6人。每個小組對應著一個具體的項目,每個人對應著一個具體工作過程,按照如下步驟進行多元教學。第一步,教師選用合適的教學內容,制作豐富多彩的課件,對學生進行基本理論和基本技能的講解。在每一個軟件生命周期結束后,教師進行案例場景描述。教師按照理論知識的內容,選擇相應的案例進行描述,學生將所學內容運用到相關案例中。教師通過案例讓學生明白理論知識如何應用,學生通過案例體會到小項目中所學的原理、方法和技術是如何實現的。第二步,課后角色扮演。學生通過分組討論的方式,完成項目分工,明確自己在項目中所扮演的角色。所有的任務通過集體討論的方式,決出所要完成的任務,并由相應的角色人實際操作完成。例如,需求分析一章內容,學生課后進行項目小組討論,決定需求分析的內容,進行相應的需求分析,并由扮演需求分析人員的學生完成需求報告。軟件開發過程需要整個團隊的通力合作,根據學生的性格、表達能力、開發能力、理論基礎掌握情況等方面進行人員分組,將具有不同特點的學生組成一個團隊完成項目開發。這種團隊合作的方式,既能發揮學生各自的特長,又能培養學生的團隊合作精神。第三步,課程設計。當全部內容講解完成,就可以開始長達2周的課程設計內容了。這段時間要求項目小組,徹底完成一個由教師虛擬的項目。此步驟中,主要培養學生良好的科研習慣,在開發過程中及時總結經驗和教訓,建立個人開發記錄或日志,理論聯系實際學著開發軟件。第四步,學生總結,教師點評。學生經過多個教學環節后,每個團隊在一定程度上完成了各自的項目任務,對各自團隊的成果進行總結。教師聽取每個團隊的匯報后,從橫向和縱向兩個方面對項目成果之間進行比較,從而讓每一位學生明白自己在團隊中發揮了什么作用,自己哪些方面不足。第五步,請進來,走出去。通過學校和企業合作的方式,一方面經常邀請軟件公司長期從事軟件設計、開發和項目管理的工程師和項目經理,給學生講解自己在軟件設計、開發和管理中的經驗,高質量軟件產品需要經過怎樣的開發過程,軟件生命周期中標準文檔如何撰寫等相關內容;另一方面,利用寒暑假時間,讓學生走出去,到軟件產品的研發單位,實地實習。
五、結束語
關鍵詞:計算機;軟件開發;編程語言
一、引言
對于計算機應用軟件的研究與開發來說,選擇一項合適的編程語言對其影響十分深遠,編程語言的適配度將決定計算機應用軟件的優質度。其中編程語言是一項十分復雜的工作程序,它既影響著計算機應用軟件的開發難度與開發效率,也影響著計算機應用軟件后期的維護難度與維護效率。現階段隨著計算機技術的不斷發展,編程語言也得到了大力研發,編程語言的種類也越來越多,每一種不同的編程語言都具有著其獨特的性質與作用。
二、結合相關計算機應用軟件的具體開發結構進行選擇
一般情況下,在進行計算機應用軟件的相關開發編程語言的選擇過程中,往往都是一個具體的計算機應用軟件對應一個固定的編程語言,但是在特殊情況之下,也會存在研究開發一個計算機應用軟件時同時選擇多個不同的編程語言的情況。出現這種現象的主要原因還是在于在一個具體的計算機應用軟件的開發過程中,該應用軟件的結構以及功能都會隨著區域和時間的變化而不斷發生變化,換言之,在一個應用軟件中的不同區域所需要的編譯效果也是不同的。因此,在進行計算機應用軟件開發中的編程語言的選擇過程中,一定要結合相關應用軟件的具體需求與實際結構變化選擇最合適的編程語言。除此之外,當一款計算機應用軟件在開發過程中選擇了一項或幾項最合適的編程語言之后,并不意味之該應用軟件在后期更新與維護過程中不會再選擇或者替換其他的編程語言,也許在該應用軟件開發的時候這幾項編程語言十分適合該軟件,但在兩年或者更久的時間之后這項編程語言就不一定會適合該應用軟件的更新與二次開發。因此,一個計算機應用軟件的編程語言并不是一成不變的,在為計算機應用軟件的開發選擇編程語言的時候一定要結合應用軟件的具體性質與結構變化進行實時選擇與實時更新。比如,為了最大限度地提高所選的編程語言對相關計算機應用軟件開發的適配度,相關軟件開發人員可以遵循以下方式進行具體的編程語言的選擇。首先技術人員需要對將要開發的應用軟件的整體結構進行總體的把握與設計,其中不僅包括該應用軟件所開發的主要功能以及屬性,還包括該應用軟件的延伸功能與后期維護等問題。其次軟件開發人員還要在進行應用軟件首次語言編寫的過程中就將應用軟件的所有功能以及延伸功能都充分挖掘出來,并結合應用軟件的功能需求選擇最佳的編程語言。比如相對于C語言與C++語言來說,JAVA語言更適合具有簡單功能需求的應用軟件開發,而C語言和C++語言則相對適合用于開發具有相對繁瑣功能的計算機應用軟件的開發。最后還要考慮所開發應用軟件的數據規模,并根據不同的數據規模來選擇合適的編程語言,比如如果是開發相對功能比較簡易的計算機應用軟件的話,則更加適合選擇ACCESS語言。通過整體結構把握與具體功能把握相結合的方式來選擇計算機應用軟件開發的編程語言,一方面既有利于提高相關計算機應用軟件的開發效率,另一方面也可以在一定程度上降低該應用軟件的后期維護難度。
三、根據對相關計算機軟件開發編程語言的熟悉程度進行選擇
對于很多計算機軟件開發人員來說,都希望能夠在每一次的計算機應用軟件的開發過程中進行勇敢的嘗試與創新,從而實現自己的職業理想與自我完善。但是在實際的計算機應用軟件開發項目中,尤其是對于非專業研究類的應用軟件開發項目來說,開發人員在選擇對應的編程語言的時候還是要盡量從自己知識范圍內的熟悉掌握的編程語言入手。這主要是因為在計算機應用軟件的開發過程總選擇熟悉的編程語言能夠在軟件開發初期就幫助開發人員計算與估量出大概的項目進度表。一方面可以有效避免在計算機應用軟件開發過程中出現其他的不必要的變數,使得整個項目完成得更加具有計劃性與體系性;另一方面也可以有效提高計算機應用軟件開發的效率與質量,最大限度地避免各種意外的發生概率。因此,軟件開發人員的技術儲備將決定一個計算機軟件開發中所選用的編程語言的適配范圍與選擇廣度,對于計算機應用軟件的開發與后期維護來說,當然是所選擇的編程語言范圍越廣,開發與后期維護的難度也就越低,效率也就越高。因此相應地軟件開發人員的自身知識與技能儲備在計算機應用軟件開發的編程語言選擇上就發揮出了至關重要的作用。只有不斷提高軟件開發人員的技能儲備,才可以確保在相關應用軟件開發編程語言的選擇過程中擁有更多的選擇,從而最大限度地避免在開發過程中可能會遇到的各種問題。比如,為了提高軟件開發人員對相關編程語言的熟悉程度與掌握程度,從而在計算機應用軟件開發時能夠擁有更多的編程語言可以選擇,相關計算機軟件開發公司要提高對相關軟件開發人員的技術儲備與知識儲備的考察強度與審核力度。首先針對于具有不同特長的軟件開發人員,即可以十分熟練地掌握幾項編程語言,但對于其他的編程語言都不太了解,這類技術人員其實已經十分優秀,但為了進一步提高與完善其綜合水平,公司相關部門可以就這部分技術人員開展互助小組活動。換言之,掌握不同編程語言的兩個或者三個技術人員可以結成學習對子或者學習小組,互相學習對方所熟練掌握的編程語言,從而切實達到互相進步的目的。其次還可以通過科普講座的方式,讓不同的軟件開發人員對于不同的編程語言都能夠有一個更加深入的了解,不斷豐富軟件開發人員的專業技能與綜合水平。通過這種方式,軟件開發人員所熟悉的編程語言將會得到一個質的提升,那么在進行計算機應用軟件開發編程語言的選擇時,也將會大大提高選擇的廣度與深度,有利于提升應用軟件的開發效率與開發質量。
四、綜合考慮不同編程語言的特性進行選擇
每一種不同的編程語言都有其存在的理由與價值,這而在相關計算機應用軟件開發中編程語言選擇的過程中,具體應用軟件編程語言的選擇則要充分考慮到不同的編程語言的特點與性質。當前階段比較常見的計算機應用軟件開發所用的編程語言主要有以下幾種,其中分別是C語言、C++語言、JAVA語言、ACCESS語言以及PESCAL語言等幾種。以上這幾種不同的編程語言都有著其獨特的使用優勢與適用范圍。其中應用最廣泛的是C語言,該編程語言是所有的計算機語言里最常用的一種,從開始出現截止到目前為止已經擁有四十幾年的應用歷史。而C語言最大的優勢就是擁有十分豐富的運算符、數據結構,但是語法卻十分簡潔且語法要求也相對較低,功能十分強大。除此之外,C語言還是一種兼容能力很強的編程語言,通過C語言編程開發的計算機應用軟件可以十分方便地移植到其他類型的計算機上。因此相關計算機軟件開發人員在進行應用軟件的編程過程中應該以提升工作完成質量為前提,以提升工作完成效率為目標,在結合實際應用軟件開發需求的基礎上,充分考慮不同編程語言的優勢與特色,從中選擇最合適的編程語言,選擇最規范的軟件開發程序,從而達到順利完成工作任務,提高工作效率的目的。比如,以C++語言為例,作為C語言的拓展與延伸,C++語言在匯聚了C語言的眾多優勢與特點的基礎上,又在應用軟件的編程過程中注入了新的編程思想與編程模式,可以更加貼近與滿足計算機應用軟件的開發需求。作為一種全新的編程語言與編程形式,C++編程語言也在計算機編程領域得到了廣泛的應用。結合C++語言的特色與優勢,軟件開發人員在計算機應用軟件開發的過程中就可以做出更加合適與科學的選擇。尤其是在大部分的計算機應用軟件的開發過程中,針對于具體的硬件資源的使用是十分有限的,而且在很多時候收到運行環境與開發平臺的限制,很多編程語言都無法實現很好的兼容,這時就完全可以選擇C++語言作為應用軟件的主要編程語言。C++語言可以在有限的外部環境與硬件資源條件下實現對環境與資源的最大化利用。
五、總結
綜上所述,計算機應用軟件的研究與開發是一項極其艱巨與復雜的工程,很多因素都會對其最終的研發效果與研發質量產生直接或間接的影響,其中編程語言的選擇對于這項工程的完成則發揮著至關重要的作用。因此,計算機軟件開發人員要不斷提高自身素養與技能水平,充分掌握各種編程語言的應有優勢與適用范圍,在結合具體的計算機應用軟件開發需求的基礎上,選擇最合適的編程語言,從而實現計算機應用軟件的高效率與高質量開發。
參考文獻
[1]王樹琴.計算機應用軟件開發中編程語言的選擇研究[J].軟件設計開發,2017(19):219.
關鍵詞:軟件項目;工作量;評估方法;單元庫;功能點
1概述
在日常工作中,經常要對一系列開發項目(包括維護類合同、框架合同、基于工單驅動的臨時需求開發等)進行工作量評估與核算。軟件開發項目的工作量核實,工作量大、指標數量多,各類核減因子關系錯綜復雜,讓核算專家或軟件項目造價者戰戰兢兢、如履薄冰。軟件項目工作量的估算,對項目的預算、成本控制、企業經費決策、項目審計等,具有重要影響。在進行軟件項目工作量估算時,要掌握好5個要點:(1)工作量估算方法的選擇:根據不同的應用場景進行估算方法的選擇。(2)正確看待估算結果:估算結果應是一個范圍值,而不是一個固定值。(3)交叉驗證:同一個項目,可以選擇多種方法進行估算,選擇最有利于甲方的估算方法,但也應獲得乙方的認可。(4)估算修正:對假設條件進行檢查與修改,避免蝴蝶效應。(5)估算結果的溝通:工作量的估算,不是一項一蹴而就、一勞永逸的工作,需要不斷溝通和多次迭代。結合日常生產中的工作經驗,本文對軟件項目工作量估算方法進行了初步分析與探討,一是對前期的工作進行總結,二是為后期工作的開展做鋪墊。本文研究的目的在于,讓工作量的評估或估算,擁有更科學的方法,而不是繼續拍腦袋。
2軟件開發項目的工作量核算
2.1基于單元庫的工作量核算
很多軟件項目的費用,采用最簡單最原始的計算方式:費用(單位:元)=工作量(單位:人天)*單價(單位:元/人天)。其中,總的費用預算由財務部制定;工作量由計劃部規劃,由應用部門或生產部門進行最終確認;單價由采購部談判確定。各個部門各司其職,共同目的是將總費用控制在財務部所規定的預算內。所謂單元庫,就是根據軟件的目的,細化到不同的功能模塊,為每個模塊設置一個比例,從而實現對整個項目工作量的評估。如某小型軟件項目,按照其規范,軟件具有3個功能模塊:通用界面(視圖展示)、數據管理(后臺數據分析)、告警監控(事件管理與推送),其單元庫模型如表1所示。
2.2基于功能點識別的工作量核算
在軟件總費用的邏輯模型中,軟件的成本由4個部分組成:直接人力成本、間接人力成本、間接非人力成本、直接非人力成本,其中,直接人力成本指項目組成員的工資、獎金、福利等人力資源費用;間接人力成本指服務于研發管理整體需求的非項目組人員的人力資源費用分攤,如項目經理、管理人員的費用;間接非人力成本指服務整體人員而產生的非人力費用分攤,如房租、水電、物業等;直接非人力成本指服務于組員的相關費用,包括辦公費、差旅費、培訓費等。在該邏輯模型下,軟件項目成本的計算公式為:SDC=(S*PDR)*SWR*RDF/176*F+DNC其中,SDC指軟件的總成本;S指軟件的規模,單位是功能點數;PDR指生產率,單位為人時/功能點;SWF指軟件因素調整因子;RDF指開發因素調整因子;176指全月的小時數,每月工作22天,每天8小時,22*8=176;F指人類成本費率;DNC指直接非人力成本。在該公式里,規模S需要通過功能點的統計進行計算。常用的是預估功能點和估算功能點。所謂預估功能點,是指在計算功能點時,僅計算ILF和EIF,一般地,設置ILF=35FP、EIF=15FP。所謂估算功能點,是指在計算功能點時,全面計算ILF、EIF、EI、EO、EQ,一般地,設置ILF=10FP、EIF=7FP、EI=4FP、EO=5FP、EQ=4FP。這里,ILF和EIF屬于數據功能類別,其中,ILF指內部邏輯文件(本系統內維護的業務數據),EIF指外部接口文件(本系統引用由外系統維護的業務數據);EI、EO、EQ歸屬于事務功能數據,其中,EI指外部輸入(會帶來本系統狀態的改變,如增、刪、改等操作),EO指外部輸出(對數據加工后進行輸出或呈現),EQ指外部查詢(不進行任何加工)。
2.3其他估算方法的工作量核算
工作量的估算,不是一層不變的,可以根據實際情況采用不同的估算方法。除了常用的單元庫、功能點工作量估算方法,還可以使用其他方法,說明如下:(1)方程法:將工作量描述成y=f(x1,x2,…xn)的形式,通過確定變量X,最終達到確定整個項目的工作量Y。方程法基于基準數據進行建模,常用于行業數據與企業數據相結合的項目開發場景。(2)類比法:尋找與當前項目高度相似的項目,如項目的功能、應用場所、應用范圍、使用人員、使用人員的情況、廠商背景等均具有很大的相似性。該方法基于基準數據,對差異部分進行調整,通常以50百分位數(而非均值)為參考。(3)類推法:通過不同項目的某些相似性類推出其他項目的相似性,從而預測出項目之間在其他方面存在類似可能性的方法。說到底,類推法是基于量化的經驗法,理論上,這是最可靠的估算方法。而現實中,估算的結果常常產生極大的偏差。(4)基于WBS的軟件工作量估算方法:一種目標細化管理方法,也是一種經驗法。WBS是WorkBreakdownStructure的簡稱,中文意思是工作分解結構,創建WBS是把項目按階段可交付成果將項目工作分解成較小的,更易于管理的組成部分的過程。(5)DELPHI法:一種背靠背成本估算方法,即函詢調查法,將提出的問題和必要的背景材料,用通信的方式向有經驗的專家提出,然后把他們答復的意見進行綜合,再反饋給他們,如此反復多次,直到認為合適的意見為止。
3結語
軟件項目的工作量評審,一直是日常項目管理的重點。該項工作在我省項目管理工作中,獲得了一致的支持和廣泛的應用,取得了良好的效果。下一步將從兩個方面開展工作。一方面,繼續對現有的工作量評估方法進行優化,對不同的評估方法進行組合使用,檢查評估效果;另一方面,在大數據和人工智能時代,引用新型技術,試圖開發新的評估方法,讓工作量評估手段更加智能化。
參考文獻:
[1]顧逸宸,朱禎,史成霞,司小平.綜合運用護理時數評估和工作量考核系統進行績效改革的嘗試與體會[J].中國繼續醫學教育,2018(04).
[2]朱明英,姚文勝,邢豫,陳春華.基于功能點法的軟件工作量評估方法研究與應用探討[J].現代計算機(專業版),2017(11).