時間:2022-08-17 19:41:37
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇軟件工程,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
如今我國已經邁入了信息化時期升了國家對完成工業化和現代化的能力。軟件工程作為電腦技術里的關鍵構成部分,其,互聯網技術與電腦技術很大程度上參加到人們的工作、學習和娛樂中。電腦數據技術極大的促進了國內的科技社會的進步,推動了國內的各種行業的進步,同時提為全部數據系統中的工作提供了保障。該文為軟件工程標準化的現狀給出了有關分析,同時提出了強化國內軟件工程標準化系統的合理措施。
關鍵詞:
軟件工程;標準化;現狀;分析
伴著國內的智能化速度的增加,計算機軟件工程也更為完善,在社會中的使用相當多,給人們的生活提供了極大的便捷,并也推動了科技、文化的改革。推動軟件工程的進程,不但是社會進步的需求,也是人們平日娛樂、學習的實際需要。軟件工程作為電腦技術里的關鍵部分,是開展智能化的源頭。其是一個相當繁復的工程,波及到的專業很多,而且因為它自己的繁復性,致使在創新軟件的過程里碰到了許多的障礙,因此必定要嚴格的進行軟件工程策劃、建設和制造養護等每一個步驟,進而來提升軟件的品質,推動企業的經濟效益。
一、軟件工程標準化的含義
軟件工程的標準化指的是規范軟件標準和軟件工程進程規范。軟件工程的標準化作為軟件制造業進步的關鍵保證,其對軟件工程來講,軟件工程的構建是很多工程的綜合建立,同時構建的進程相當的繁復并且有相當的難實現性,在軟件工程構建的各個步驟都有著很多的關系,必定需要招募各個專業的優秀技術人員共同協作,才可以達到一致的目的,因此軟件過程的規范化代表著軟件工程的完善。此外,在軟件工程的構建里,必定要須有關的原則準則來給予科學的引導,進而改善軟件成品的性能。軟件項目的規范化為制造軟件工程提供了巨大的益處,在相當的程度中提升了軟件的可信度與軟件的品質。而且,軟件工程的規范化,也將給軟件制造的工作者提供合理的引導,令有關工作者的設計更一步的完善,免除了許多技術中的錯誤操作,進而提升了產品的制造效率。軟件工程的規范化同時在相當程度中降低了軟件設計的資金耗費與縮短軟件的生產周期,這為軟件的養護提供了巨大的優勢。
二、軟件工程標準化的現狀
(一)對軟件工程標準化的理解偏頗
在國內需多軟件相關領域里,潛在著忽視軟件制造規范的狀況。大部分的企業常常會忽略有關法律里對軟件產品規范化的要求,有關技術工作者在軟件的制造進程里,常常依據自身的經歷,按照自身常用的措施與思維實行軟件的設計。同時,行業中某些設計者對自己的監督與自檢過程缺失或是不嚴密,難以保障有關規范的實行,不能給工作者的研制開發進程構成合理的監督管理,類似的都會對軟件工程的制造品質及功能造成極大的不良作用。
(二)有關法律法規不健全
國內對軟件工程規范化的關注程度每年都在提升,不過有關法律法規的條目中未能夠有效的推動,導致國內軟件項目規范化雜亂無序的狀況。在第八個五年計劃時期,極多的軟件研制開發與管理工作是通過企業施行自主研發的,國內未有達成一致的籌劃,降低了軟件研制開發的效果。另外,國內軟件的研制開發起點低,研制水準對于國際水準來說普遍較差,這是國內軟件設計的弊端。所以,要時時刻刻銘記需要和國外的前沿軟件研制開發組織的溝通學習。如今國內在軟件工程的建設里,和國際間的溝通行動不是很多,跟不上國外的智能化進度,使得國內產生軟件工程體系紊亂、軟件工程資源虛耗大的狀況經常出現。
(三)軟件質量的管理不合理
軟件的設計應當要構建起軟件工程化標準的有關規范系統,并需專門的管理工作者來進行管制和督促。由于軟件研發工程須要嚴格的進行管制與標準研發的,唯有如此才可以保證軟件品質。假如缺少一系列規范準則,軟件研發進程里的軟件產品性能就不能得到保證,增加了軟件品質的管制實現程度。
三、完善軟件工程標準化的措施
(一)深入理解有關概念
設計者在研制軟件的進程里,設計要依據客戶要求來嚴格挑選準則進行研發制造,認真完成客戶要求的設計,關注軟件和客戶間的各個微妙聯系,進而保障軟件設計工作的科學進行。與此同時,企業應當主動引入軟件項目的各樣規范,加深與把握各樣的理念,推動了軟件工程體系和規范間的有效性、關聯性,進而獲得用戶的信賴與行業的贊賞。
(二)大力培養有關技術人才
近些年來,我國漸漸開始關注軟件技術專門人員的培訓,不過其中大部分是培訓學術性質和研究性質的軟件技術人員。大多高等職業學校建立的軟件技術專業潛在著諸多的弊端。專業界定模糊,諸多院系將軟件專業的教育關注點定在軟件研制用具的應用上,培訓出來的學員缺少基礎軟件系統的探究、策劃、評測、布置實行的根本能力,缺少對軟件研制進程里所須要的體系認知能力與規范化貫徹能力,對行業的認識較少。
(三)保障軟件產品質量
國內的軟件工程規范化如今處在一個比較差的層次中,對國內的軟件工程規范化展開十分不利。因此有關設計人員須要考慮國內的環境現狀來引入前沿技術,同時要依據市場的全面需要來制造軟件有關成品。加強對軟件研發方面的付出,奮力溝通軟件和客戶間的聯系,并在技術支撐下來展開技術分析任務,提升本身軟件的全面的水準,顯出本身的特征與優勢,才能夠在復雜的國際競爭里奪得一隅之地,進而完成了軟件工程規范化的構建任務。對企業來講,不但提高了本身品質的作用效果,同時也獲得了外界的市場經濟效益,推動企業長久的運行目的。
四、結束語
軟件工程規范化的展開是須要依賴各個方面的支撐才能夠正常實行,其是一個繁雜,整體性強的項目,這考驗了一個國家的科技能力,有關工作人員的才能。國內的軟件工程規范化如今處在一個相當差層次的時期,并且在實際工作里接觸到了各樣困境,所以,構建一個管理能力高的系統是很有效果的。
參考文獻:
[1]馬關蕊.如何實現計算機軟件工程標準化發展方向[J].軟件,2014,03:184-185.
一、研究背景
軟件工程是高校計算機專業教學計劃中的一門重要課程。軟件工程的課程體系涉及了從客戶溝通,軟件設計,軟件開發,軟件測試到最終軟件維護等軟件生命周期各個階段。既是一門理論性極強的專業課程,更是一門實踐性很強的課程。近年來,全國各大高校均將軟件工程作為計算機及其相關專業的一門重要專業課程。計算機專業的學生通過軟件工程課程,學習作為軟件從業人員需要掌握的基本專業能力,為未來從事計算機軟件相關的各類工作,提供理論及方法的指導。可以說,學好軟件工程,對計算機及其相關專業的從業人員來說都是一門必修課。
二、教學現狀
在當前的軟件工程課堂教學當中,部分院校采用純理論課堂講授的授課形式,另一部分院校則采用理論講授與實踐實訓課程相結合的授課形式。然而,從教學內容來看,當前軟件工程的教學內容,主要集中在傳統方法學,即傳統的軟件工程學。對于面向對象方法學來說,很多新的知識方法還涉及不足,特別是軟件模型化,構建技術,UML統一建模語言等等一些當下社會流行的軟件工具和方法。同時,實踐環節較少,實踐效果不夠理想也是軟件工程教學中普遍存在的問題。目前可供該課程選用的合適的實驗項目甚少,所以學生通過實驗課程所達到的效果與教學要求存在較大的差距。另一方面,學生對理論知識的理解不足。軟件工程是一門計算機領域的綜合性、工程性學科。涉及軟件生命從萌芽、成型、成熟、生命結束的各個周期階段的工作和任務。學習者似乎能聽懂,可聽完后大部分學生還處在似懂非懂的階段,真正需要動手時,不知道該從何下手。在近年來的教學實踐過程中發現,一些理論知識,過于抽象晦澀。與實際的應用需要相脫節,學生對很多知識理論,只停留在概念階段,難以消化,更無法理解理論知識在實際的軟件設計、開發、測試、維護中究竟何時何地可以運用,具體又該如何操作。理論與實際的結合仍存在很多不足。這一方面與課程理論研究性較強有關,另一面也與教師本身長期在院校從事較單一的教學工作,缺少工程項目經驗,脫離實際的生產及軟件開發場景,難以將理論與現實情境很好的結合傳授給學生。在計算機專業畢業生的畢業設計中,也集中體現出了學生不能把理論知識有效地運用到實踐活動中的問題。學生并沒有真正掌握基礎理論及運用理論的技能和方法,所以在進行畢業論文設計時,不能將軟件工程的理論充分運用到他們的設計實踐中去,從而導致設計開發的軟件和撰寫的文檔在結構、內容等方面錯誤百出。
三、改革思路
(1)研究并解決軟件工程教學中存在的新興軟件方法不足等問題。結合現有的專業培養方案,教學大綱,制定教學計劃,改善軟件工程教學現狀,研究傳統軟件工程技術在教學改革中占的課時比例及應當講授的內容,增加研究面向對象軟件工程技術在教學改革中的地位及講授的方式、內容和課時量。(2)研究并解決軟件工程課程實踐性不足,學生學習停留于理論階段的問題。結合理論課程的內容,增強軟件工程的實踐性,與一些軟件開發的實訓課程相結合,增加學生的實踐機會,將軟件工程理論應用于實踐當中,提高學生對課程的理解和現實認識。(3)研究并解決學生對理論知識理解不足,課程停留于課堂教學,脫離實際運用,學生難以滿足應用型人才培養目標等問題。根據教學計劃,教師請教并邀請相關企業的軟件資深從業人員,與學生開展專業知識交流活動。以企業中實際可行的軟件項目為案例,為學生講解軟件知識,讓學生理解軟件工程的理論知識如何有效的融入實踐當中。并加深學生對課程、對當今計算機領域流行的專業知識及未來從業方向,對計算機專業從業現狀的認識,真正做到應用型人才的培養??梢园才艑W生到企業進行調研,參與實際的企業項目。(4)研究并解決學生在畢業設計及畢業論文的完成過程中,缺少理論支撐,不能合理規范化完成設計的問題。將軟件工程專業知識與計算機專業畢業設計相結合,在畢業論文指導的過程中,重視軟件工程理論的應用。以軟件工程方法學,軟件過程,項目管理等相關知識軟件工程相關理論指導學生的畢業設計,力求整個畢業設計過程達到模塊化、規范化,正規化。
參考文獻
[1]張海藩.軟件工程導論(第5版)[M].北京:清華大學出版社,2018.2
[2]崔含鼎,梁仕云.現代教學系統工程模式論[M].廣西教育出版社,2001.
軟件工程學的主要內容是軟件開發技術和軟件工程管理。軟件開發技術包含軟件工程方法學、軟件工具和軟件開發環境。軟件工程管理學包含軟件工程經濟學和軟件管理學。
專業簡介:是計算機領域發展最快的學科分支之一,國家非常重視軟件行業的發展,對軟件人才的培養給予了非常優惠的政策。軟件專業培養掌握計算機軟件基本理論知識,熟悉軟件開發和管理技術、能夠在計算機軟件領域中從事軟件設計、開發和管理的高級人才。主修課程:除了學習公共基礎課外,還將系統學習離散數學、數據結構、算法分析、面向對象程序設計、現代操
(來源:文章屋網 )
【關鍵詞】 項目教學法 軟件工程
軟件工程課程的特點是理論與實踐結合緊密,其教學目標是學生能夠掌握軟件工程的基本方法和技術,并能夠靈活運用到今后的軟件生產和項目管理工作中。為了更好地達到此目標,彌補傳統教學模式中的不足,有必要對軟件工程課程教學模式進行研究和探討,通過課程改革放棄分散的項目開發,采用項目教學法,使學生能更好的將所學的知識進行串聯和匯總,培養學生軟件項目管理的思想,樹立工程觀念。
1 項目教學法的內涵
項目教學法也叫項目學習法(Project based learning,簡稱PBL)。上海師范大學教授黎加厚認為:“基于項目的學習是以學習研究學科的概念和原理為中心,通過學生參與一個活動項目的調查和研究來解決問題,以建構起屬于他們自己的知識體系,并能運用到現實社會中去?!?/p>
2 項目教學設計與實施
(1)選定項目,創設情境:在《軟件工程》課程教學中,教師設計一個典型的、完整的、實際的軟件項目案例,將案例按照軟件生存周期模型展開,作為貫穿軟件工程各階段的主線;學生根據實際的開發流程構建開發場景,結合具體的項目進行項目分析和任務分解,再分析每個任務需要的知識、技能、素質要求,以完成任務的形式來組織學習內容。教師利用“虛擬實戰項目”引導學生進入項目研境。
(2)分析項目,制定計劃:根據確定的項目制定詳細的活動安排計劃和學習時間計劃。按照所選項目,教師制定各階段的任務表,對學生進行一個從軟件計劃、需求分析、設計、編碼、測試和軟件開發全過程的訓練。項目組成員對學習完成這個項目進行總體規劃,做出詳細的時間安排及對項目學習中進行的活動提前計劃。
(3)獨立探究,完成項目:成立項目組是項目教學法的一個比較重要的環節,學生按照“小組軟件過程”的管理辦法參與項目實施過程。每個項目小組選出項目經理,并對小組成員分配相應的角色。項目組成員按照確定的項目和制定的計劃,進行深入調查研究,從項目開發的準備工作、系統分析過程、系統設計過程、軟件測試到系統實施,完成項目開發,使學生通過實驗室工作來實際應用在課程中所學的概念;按照軟件工程課程的要求,文檔的書寫也是要掌握的一個重要環節。教師可以讓學生在撰寫文檔之前,利用網絡資源,閱讀別人的格式和內容,鼓勵創新,能夠撰寫符合國家標準或ISO標準的工程文檔;通過開發項目,學生自己分析問題、查閱資料、設計系統、調試編程直到解決問題,以小組為單位撰寫相關文檔并提交,實現一個軟件項目從分析、設計到實現的全過程,培養軟件開發能力,積累開發經驗。
(4)成果交流,活動評價:成果交流分為平時評審和期末答辯兩種模式。平時評審按項目階段進行,各小組匯報進度并提交各自的實證材料,教師給出成績,密切追蹤學生的學習情況;期末評審是在小組完成全部工作的基礎上,以答辯的形式實行;項目教學法中的活動評價可以多個方面進行,如:項目的選擇、項目組成員的表現、計劃實施、交流討論、成果展示等?;顒釉u價是過程評價和期末評價,個人評價與小組評價,自我評價和教師評價的良好結合。教師不僅是評價的客體,而且也是評價的主體,評價的結論為教師反思教學提供診斷性意見。
3 研究結果分析與結論
選取一個班級作為實驗班,通過一個學期的實驗教學,及對學生學習習慣、合作能力、學習方式等個方面做問卷調查,評價調查結果統計如表1表2所示?!?”表示完符合,“2”表示比較符合,“3”表示不太符合,“4”表示不符合。
以上數據表明,項目教學法體現了“學生主體”的教學思想,采用這種教學法易于激發學生學習的積極性、主動性,鍛煉學生的合作精神和溝通能力,合作完成一個中等規模的軟件系統的分析和設計,實現一個規范化的軟件項目從分析、設計到實現的全過程。
參考文獻:
[1]劉延申.美國高等師范教育改革簡述[J].教育研究,2001,(10).
(1)對軟件開發成本和進度的估計經常很不準確。實際成本比估計成本有可能高出一個數量級,實際進度比預期進度拖延幾個月甚至幾年的現象并不罕見。這種現象降低了軟件開發組織的信譽。而為了趕進度和節約成本所采取的一些權宜之計又往往損害了軟件產品的質量,從而不可避免地會引起用戶的不滿。
(2)用戶對“已完成的”軟件系統不滿足的現象經常發生。軟件開發人員經常在對用戶要求只有模糊的了解,甚至對所要解決的新問題還沒有確切熟悉的情況下,就倉促上陣匆忙著手編寫程序。軟件開發人員和用戶之間的信息交流往往很不充分,“閉門造車”必然導致最終的產品不符合用戶的實際需要。
(3)軟件產品的質量往往靠不住。軟件可靠性和質量保證的確切的定量概念剛剛出現不久,軟件質量保證技術(審查、復審和測試)還沒有堅持不懈地應用到軟件開發的全過程中,這些都導致軟件產品發生質量新問題。
(4)軟件經常是不可維護的。很多程序中的錯誤是非常難改正垢,實際上不可能使這些程序適應新的硬件環境,也不能根據用戶的需要在原有程序中增加一些新的功能?!翱芍赜玫能浖边€是一個沒有完全做到的、正在努力追求的目標,人們仍然在重復開發類似的或基本類似的軟件。
(5)軟件通常沒有適當的文檔資料。計算機軟件不僅僅是程序,還應該有一整套文檔資料。這些文檔資料應該是在軟件開發過程中產生出來的,而且應該是“最新式的”(即和程序代碼完全一致的)。軟件開發組織的管理人員可以使用這些文檔資料作為“里程碑”,來管理和評價軟件開發工程的進展狀況;軟件開發人員可以利用它們作為通信工具,在軟件開發過程中準確地交流信息;對于軟件維護人員而言,這些文檔資料更是至關重要必不可少的。缺乏必要的文檔資料或者文檔資料不合格,必然給軟件開發和維護帶來許多嚴重的困難和新問題。
(6)軟件成本在計算機系統總成本中所占的比例逐年上升。由于微電子學技術的進步和生產自動化程度不斷提高,硬件成本逐年下降,然而軟件開發需要大量人力,軟件成本隨著通貨膨脹以及軟件規模和數量的不斷擴大而持續上升。美國在1985年軟件成本大約已占計算機系統總成本的90。
(7)軟件開發生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨向。軟件產品“供不應求”的現象使人類不能充分利用現代計算機硬件提供的巨大潛力。
軟件工程的七條基本原理:1、用分階段的生命周期計劃嚴格管理有人經統計發現,在不成功的軟件項目中有一半左右是由于計劃不周造成的,可見把建立完善的計劃作為第一條基本原理是吸取了前人的教訓而提出來的。在軟件開發和維護的漫長的生命周期中,需要完成許多性質各異的工作。這條基本原理意味著,應該把軟件生命周期劃分成若干個階段,并相應地制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發和維護工作進行管理。Boehm認為,在軟件的整個生命周期中應該制定并嚴格執行六類計劃,它們是項目概要計劃,里程碑計劃,項目控制計劃,產品控制計劃,驗證計劃,運行維護計劃。不同層次的管理人員都必須嚴格按照計劃各盡其職地管理軟件開發和維護工作,絕不能受客戶或上級人員的影響而擅自背離預定計劃。2、堅持進行階段評審當時已經熟悉到,軟件的質量保證工作不能等到編碼階段結束之后再進行。這樣說至少有兩個理由:第一,大部分錯誤是在編碼之前造成的,例如,根據Boehm等人的統計,設計錯誤占軟件錯誤的63,編碼僅占37;第二,錯誤發現和改正得越晚,所需付出的代價也越高。
因此,在每個階段都進行嚴格的評審,以便盡早發現在軟件開發過程中所犯的錯誤,是一條必須遵循的重要原則。3、實行嚴格的產品控制在軟件開發過程中不應隨意改變需求,因為改變一項需求往往需要付出較高的代價,但是,在軟件開發過程中改變需求又是難免的,由于外部環境的變化,相應地改變用戶需求是一種客觀需要,顯然不能硬性禁止客戶提出改變需求的要求,而只能依靠科學的產品控制技術來順應這種要求。也就是說,當改變需求時,為了保持軟件各個配置成分的一致性,必須實行嚴格的產品控制,其中主要是實行基準配置管理。所謂基準配置又稱基線配置,它們是經過階段評審后的軟件配置成分(各個階段產生的文檔或程序代碼)。
基準配置管理也稱為變動控制:一切有關修改軟件的建議,非凡是涉及到對基準配置的修改建議,都必須按照嚴格的規程進行評審,獲得批準以后才能實施修改。絕對不能誰想修改軟件(包括尚在開發過程中的軟件),就隨意進行修改。4、采用現代程序設計技術從提出軟件工程的概念開始,人們一直把主要精力用于探究各種新的程序設計技術。60年代末提出的結構程序設計技術,已經成為絕大多數人公認的先進的程序設計技術。以后又進一步發展出各種結構分析(SA)和結構設計(SD)技術。實踐表明,采用先進的技術既可提高軟件開發的效率,又可提高軟件維護的效率。5、結果應能清楚地審查軟件產品不同于一般的物理產品,它是看不崢摸不著的邏輯產品。
軟件開發人員(或開發小組)的工作進展情況可見性差,難以準確度量,從而使得軟件產品的開發過程比一般產品的開發過程更難于評價和管理。為了提高軟件開發過程的可見性,更好地進行管理,應該根據軟件開發項目的總目標及完成期限,規定開發組織的責任和產品標準,從而使得所得到的結果能夠清楚地審查。6、開發小組的人員應該少而精這條基本原理的含義是,軟件開發小組的組成人員的素質應該好,而人數則不宜過多。
開發小組人員的素質和數量是影響軟件產品質量和開發效率的重要因素。素質高的人員的開發效率比素質低的人員的開發效率可能高幾倍至幾十倍,而且素質高的人員所開發的軟件中的錯誤明顯少于素質低的人員所開發的軟件中的錯誤。此外,隨著開發小組人員數目的增加,因為交流情況討論新問題而造成的通信開銷也急劇增加。
SC圖是軟件工程中面向數據流設計方法中的一種描述工具,專門用來描述軟件的總體結構。SC圖具體是是面向數據流設計方法使用的主要描述工具,用來表達軟件的組成模塊及其調用關系。
SC圖在SD方法中約定:用矩形框來表示模塊,用帶箭頭的連線表示模塊間的調用關系。在調用線的兩旁,應標出傳入和傳出模塊的數據流。
SC圖允許使用的6種模塊:傳入、傳出、變換、源、漏和控制。
SC圖模塊調用有3大類:簡單調用、選擇調用和循環調用。
(來源:文章屋網 )
1.1軟件測試的含義
軟件測試根據用戶的使用目的,將成功開發的軟件進行相應的糾錯動作,從而披露該軟件的各種問題及缺失因素,促進研發人員進行相應的改進,從而達到完善軟件的目的。
1.2軟件測試的關鍵性階段
主要有以下兩個關鍵性的檢測階段。第一階段是軟件開發過程中各主要單元模塊完成后進行測試。這一階段測試可以將缺陷控制在最小單元模塊內,給研發人員最快的測試反饋,促使其完善單元模塊的功能,達到用戶的使用要求;第二階段測試是軟件系統全部完成后,進行全方位的綜合測試,查找系統在使用過程中可能存在的問題。此時,需要根據系統要實現的功能進行多種測試工具的應用,以其找到系統不符合要求的功能或性能瑕疵。
1.3軟件工程中軟件測試的方法
對軟件工程進行軟件測試時,不同軟件可以運用不同的測試方法。現階段,主要以軟件測試在測試過程中是否需要將程序進行完全運行來判斷測試方法,不需要系統程序運行就能完成測試的方法稱為靜態方法;需要系統時時傳送相應數據,并通過相應程序檢測系統是否達到用戶的期望值,是否存在運行邏輯上的問題和算法上的缺陷等的測試方法稱為動態方法。目前,靜態測試方法應用較廣的有靜態排演法、軟件檢查法和軟件審查法。隨著軟件測試方法的不斷創新和完善,新興的測試方法如靜態自動分析、分析模型等方法不斷得到應用;動態測試方法隨著精細化測試進程的深入逐漸細分為單元測試方法、集成測試方法、系統測試方法。這些測試方法相較于靜態測試方法,具有范圍廣、測試成功率高、內容覆蓋面大、應用程度高等特點。如白盒測試、代碼覆蓋測試等。
2軟件測試在軟件工程中的作用分析
2.1軟件工程項目需要軟件測試進行全方位的輔助管理
所謂軟件工程項目就是將用戶的要求進行立項管理,通過建立項目組、研究用戶的使用目標來確立項目目標,對目標現狀進行系統研究與分析、總體目標細分階段性目標以及規劃項目總體方案等,將軟件開發過程建立在項目管理過程中。在這一過程中,各階段性成果都需要軟件測試來校驗其可行性,從而輔助軟件工程項目步入更完善的項目管理中。首先,軟件工程項目需要精細化項目管理和集中項目管理兩者協調統一。因此,需要設立軟件測試機構,能夠對項目細分的各階段、各模塊進行軟件測試。其次,項目組人員組成和責任落實要依照規章制度實施。要體現軟件測試的重要性和實際意義,測試機構負責人為項目組組長的最佳人選。其組員為各項目負責人和其他測試人員組成。軟件測試結果必須立即反饋到軟件研發人員、程序員及系統分析人員等相關人員手中,以期促進其團結協作,將軟件各部分呈現出的問題解決。最終滿足用戶的使用要求,實現軟件設計的目標。可見,軟件測試的輔助作用,對于軟件工程項目的精細化管理、軟件相關技術的綜合管理等至關重要。
2.2軟件工程項目實施反促軟件測試發展
研發一個新的軟件系統時,其核心內容包括目標確定、框架設計、分支設計和編碼應用等,這些核心內容均需要軟件測試來實現其統一性和兼容性。系統目標是軟件測試的最終目的,軟件測試需要圍繞系統目標進行缺陷的發現和反饋,從而實現各階段測試的統一性和完整性,從而促進系統的協調和完善。經過軟件測試的系統,必須保證達到項目目標,且在長時間運行下無重大bug。從這一過程來看,軟件測試是在軟件工程項目實施中得以發展的。軟件測試機構并不是真正意義上的獨立,其“獨立”僅是功能上的獨立。實際上,在進行軟件工程項目實施的整個過程中,無論是整體設計還是精細化管理,都需要軟件測試參與其中,以測試角度對軟件工程項目的設計和實施進行指導和輔助,從而糾正一些設計上的錯誤和細節上的缺陷。這種參與的直接性促進軟件測試必須緊跟項目研發現狀,才能提出及時有效的參考意見,促進項目順利開發。軟件編碼規范是軟件研發團隊必須規范執行的,而這種規范的編碼剛是軟件測試機構的首要任務,制定規范要嚴肅,執行規范要嚴格,才能給用戶呈現出高質量的軟件產品。
2.3軟件測試原則
軟件測試的原則是在其測試的基本目的和要求下產生的,因此,在進行軟件測試時,必須注意其原則性。(1)堅持用戶使用目的,堅持項目總體目標和階段性目標的實現原則;(2)測試“精細化”即細分分支、單元模塊、階段性成果、系統全面測試等隨時進行;(3)測試時間要越早越好,頻率越高越好;(4)測試中邏輯性檢測和算法檢測要注重;(5)測試要結合數據檢測進行;(6)保證測試的嚴肅性;(7)測試堅持第三方進行原則;(8)不合理條件值都要進行測試;(9)測試過程、方法、用便、結果、完善等都要記錄在案,便于故障定位和日常維護。
3自動化軟件測試技術分析
隨著智能化技術和自動化技術的不斷深入應用,在軟件測試中,自動化軟件測試技術得到創新和發展,并在軟件開發中應用得越來越廣泛。所以,人們將各種自動測試的效果進行評估,將成功案例進行相似引用,來判斷檢測的可行性。最初的自動化測試具有較嚴格的針對性,運用特定的測試原則和測試方法,將統計指標運用其中,從而得到測試結果,并對其進行全面評估,從而得出自動化測試的嚴密性。隨著自動化測試的不斷深入推進和創新,其測試準則和自動測試技術越來越成熟,逐漸過渡到自動測試模型化階段。逐漸形成自動測試的等級制度,使得自動軟件測試技術成為測試控制能力高低優劣的一個重要判斷依據。
4結語
軟件工程實驗軟件裝置結構設計支持開放式實驗教學與設計型實驗的開發,特別適合當今教育教學改革對創新能力培養的要求,可作為相關專業的課程設計、專業設計以及畢業設計的實踐性綜合平臺;還可作為面向自動化應用技術,開放的技術培訓與產品開發平臺。軟件工程技術綜合實驗裝置基本覆蓋了當今自動化控制技術的各種技術手段[1]。
1軟件工程實驗裝置的設計
程序必須與終端用戶搭配:
一般說來,它需要接受一個或幾個用戶的輸入,然后以電子和/或書面的形式產生輸出。一般情況下,用戶也必須從程序本身或隨程序的書面文件學會使用程序。
程序將有可能和其他程序相互作用,因此需要“內部接口”或兼容組件將它和其他程序聯接
近幾年來,隨著對集成應用程序的需求增多和面向目標的編程已成為一項準則,這個程序單元越來越重要。最后,程序人員必須編寫執行程序的實際源代碼,并且這個源碼必須被翻譯成在計算機上運行的目標碼。不可能界定程序編寫的“順序”。雖然人們可以自然地推定程序員可能從“頂部”開始并一路向下工作——對程序提出想法,然后設計它的結構和界面,并且最后以代碼完成這些設計決定—本文由收集整理—然而事情并不總是按這個路線進行的[2]。
2軟件工程實驗裝置應用的項目
關于編寫計算機程序步驟的一個最重要的事實是:它是迭代的。大部分程序不是以直線型構造編寫的。程序設計表現為一系列的“反饋循環”,其中程序的每一階段影響到所有其他階段。因此編寫代碼可能揭示出一些需要重新考慮程序的基本結構問題。用“a測試版軟件”讓一些試用用戶可以指出已完成程序的一些缺陷,而且也可以鑒定所期望的性能以便要求程序全部或部分重寫;即使在程序已經編寫“完成”并出售以后,改寫的過程仍在繼續。大部分公司對它們的程序制定出一系列的修訂版或最新版;當然消費者對購買第一版本的新產品往往非常謹慎。無論計算機程序是如何編寫的,它們都是功能性的。程序的設計是為一個或多個目的服務的,并在很大程度上通過它們完成任務的好壞得以評定。由于計算機指令的功能僅是完成確定的任務,制定程序結構時,最令人關心的是以最有效的方式滿足用戶的需要。在這個框架下,效率的概念是廣泛的。效率可以是以下一項或幾項:1)代碼效率——信息處理速度最快;2)存儲效率——使用求解技巧和尋址方法使完成期望任務所需的存儲量最??;3)輸入/輸出效率——計算機與外部硬件沒備(如鍵盤和打印機)的用戶之間的信息傳送質量和速度最優;4)穩定性——程序必須便于維護、升級、適應新的硬件平臺。軟件工程界力爭以較低的成本開發出更“有效”和更可靠的程序編寫方法。當然,這并不是說,用于完成相同目標的程序設計包含相同的代碼。無數的因素可能導致不同的程序之間,在“低”級源碼方面以及在較高級的程序設計和用戶界面方面,形成顯著的變化。如同對效率的考慮在很大程度上支配編程一樣,我們將看到,這種變化對知識產權的影響也是很大的[3]。
由于用戶的基數大,更多的程序人員編寫在dos和windows上運行的程序;更多的用戶部分地采用微軟系統,因為所有的程序是為此編寫的。1994年,dos和windows占有個人計算機操作系統市場的80%,盡管該系統具有封閉性,并且還存在一些具有競爭優勢的系統。在具有顯著網絡外部性的市場中,應考慮的重要事項是:計算機廠商是否有正確的動機去開發或采納兼容性的產品,并借此擴大既有網絡。經濟學家證實,計算機廠商可能寧愿采用不兼容的產品標準,雖然他們采納兼容的產品將增加凈社會財富[4]。
3 實驗軟件裝置的實例分析
實驗裝置的軟件有三部分,第一部分是控制軟件,主要是控制系統的掃描、功能、數據的采集等;第二部分是數據處理部分,用來對曲線做處理,如曲線的平滑、四則運算等;第三部分專門用于黑體實驗,前兩部分很好理解,重點介紹第三部分[5]。
3.1建立傳遞函數曲線
任何型號的光譜儀在記錄輻射光源的能量時都受光譜儀的各種光學元件以及接收器件在不同波長處的響應系數影響,習慣稱之為傳遞函數。為扣除其影響,系統提供一個標準的溴鎢燈光源,其能量曲線是經過標定的。另外在軟件內存儲了一條該標準光源在2940k時的能量線。當需要建立傳遞函數時,請按下列順序操作:
1)將標準光源電流調整為“溴鎢燈的色溫”表中色溫為2940k時電流所在位置;
2)預熱20min后,在系統上記錄該條件下全波段圖譜。該光譜曲線包含了傳遞函數的影響;
3)點擊“驗證黑體輻射定律”菜單,選“計算傳遞函數”命令,將該光譜曲線與已知的光源能量曲線相除,即得到傳遞函數曲線,并自動保存。
3.2軟件的設計與編寫
根據實驗軟件裝置的要求,對所需要的功能進行實現與設計,從而達到預期的應用果醬。
1 新時代背景下的ORACLE問題
在軟件工程中,軟件測試地目的是為了能夠發現和找出軟件錯誤運行的情況,專門判斷測試過程是否通過的可驗證即被稱為ORACLE,在如今新時代的背景下,不管是趨勢分析還是相應的圖論計算等,都開始變得越來越困難。新時代的處理模式,主要包括了物理作用下的數據處理和化學作用下的數據處理兩種類型模式。其中,物理作用下的數據處理,主要是在保證其價值的情況下,不斷的縮小其數據的規模,然后由此清洗不變的數據基本屬性。這其中就包含了針對數據處理的多種方式,能夠有效的實現將新時代花銷,的物理式變化。因此,物理作用下的數據處理測試ORACLE本身并沒有問題。
而基于化學作用下的數據處理,則具備最主要的預測和快速算法的問題,這兩個問題都非常經典,直接促使ORACLE的確定變得異常的困難。比如在計算個性化推薦統計學信息當中,經過個性化推薦的商品,更容易獲得用戶們的喜愛,當然也存在一半不喜歡的概率。而經過計算的結果也只是表明此類商品被喜歡的概率相對較高。概率性問題直接導致結果的正確性和確定性產生本質的區別,直接致使ORACLE確定的難度。
2 傳統測試平臺難以符合新時代處理的要求
以往所采用的軟件性能測試,主要是借助控制器協調本地直接向服務器端發出服務的請求,由此實現對服務器壓力的測試,其測試負載產生器都屬于局部的物理主機。相對少量的服務器構成應用系統來說,用戶數在數百上千量級的應用服務,才能有效滿足應用的需求。
如今,隨著云計算的發展,用戶的需求也在不斷的增長,其多個系統所需支持的并發用戶也在不斷的增加,相應的訪問量也在由此攀升。這就需要針對服務端系統是否能夠真正承受如此巨大的用戶訪問量進行有效的測試,可直接在系統上線之前就展開較為充分的測試內容。以往局域網主機測試方法所產生壓力,很難真正滿足服務器對其所產生的壓力測試需求。由此軟件測試工作中開始出現一系列的問題。一是負載產生器的物理機數量很難獲得動態的擴展;二是新時代所驅動的云計算系統,直接采用了廣泛的分布客戶端。三是在網絡海量數據的推動下,控制器所監控的負載產生器狀態直接成為性能測試的瓶頸,很容易由此引發測試失敗。四是控制器對負載產生器的同步問題變得越來越復雜,直接影響到負載測試的效果。
3 軟件服務化所引發的測試挑戰
具體從開發的模式而言,軟件開發的過程,主要包含了完全編碼、構件化、服務以及云計算等多個階段。
3.1 完全編碼階段
主要是相應開發人員直接從零基礎開始對每行代碼的編寫過程,除了系統本身所提供的類庫之外,通常所有的代碼都是直接由相應開發人員所掌握。在此階段當中,用戶們普遍具有良好的可測性,幾乎所有的測試和調試方式都可以實現。
3.2 構件化階段
該階段直接是為了提升軟件開發的效率,要求相應開發組織必須在系統類庫的基礎上,結合業務自身的特點來構建出可復用的業務組件。而通常該組件都是在本地運行,因此其業務系統的耦合度明顯偏高,用戶們對于組件的掌控也明顯較大。
3.3 服務階段
在此階段當中,多數本地組件所提供的調用可轉變成為遠程服務形式。用戶們可對外部的服務控制處于逐漸減少的狀態,只能透過服務的輸入和輸出來實現對服務情況的良好把握。
3.4 云計算階段
這一階段主要是特別架構和PASS之上的應用程序,在處理輸入和輸出的同時,多數用戶并不具備了解PASS服務運行情況的能力,因而導致用戶測試的難度再次增加。
4 殺蟲劑效應
在軟件工程測試領域當中,殺蟲劑效應是指相應的測試軟件越來越多,其免疫能力變得越來越強的現象。這種現象就如同采用農藥殺蟲是一樣的效果,如果持續采用一種單純的農藥,則害蟲將最終在體內產生一定的抗體,在此情形下,農藥將無法發揮出應有的殺蟲效力。而在多種構件化開發當中也是如此,通常在中前期發現多種缺陷的模式,其都可直接通過校驗和驗證的方式集成在構件當中,乃至直接成為構件的必然屬性。此類構件并不需要開發人員進行單獨的代碼編寫,其直接對測試的方式產生了天然性的免疫能力。
在軟件工程中,殺蟲劑效應將有效的促使軟件的測試技術獲得飛躍式的更新升級,可迅速的找出存在軟件當中的缺陷問題。一般在進行測試的初期階段,只需通過較少的測試即可直接發現其中所存在的更多缺陷,而在后期的測試當中,則很容易發現其所存在的缺陷數量,將漸漸趨于平緩,甚至最終在某個周期停止增長。
一、開發組件軟件工程的對策
第一,用進式和并發式開發流程取代傳統的瀑布式開發。由系統設計和建模、開發與掛歷組件、系統分析和項目的組織一同構成了整個過程。開發時,利用裝配和組合組件,來實現耦合松散的結構模塊。第二,在開發組件軟件工程的時候,組件為整個開發過程的核心,收集組件時在需求分析階段完成的,實現后,對于設計、裝配、測試軟件要按照一定的順序去做。在應用的組件和系統的需求之間完成了權衡之后,開發者的重要工作則轉向了開發工具、裝配模型和組件,只有這樣,能夠將開發的效率有效提升上來。第三,面向接口、面向連接和面向重用為組件軟件工程的主要開發方法。應用程序和組件的開發為整個開發的兩個重要組成部分。在開發組件的時候,待定領域要對口針對,建立模型、深入分析,進而將組件的實際功能確定出來,然后,對對外接口進行規劃與設計,對內部的細節進行落實與實現,完成管理和部署軟件工作。在設計組件時,不同組件間的粒度不能太大,只要能滿足一個邏輯功能對單個的需求即可,不必追求功能的全和。此外,對于提升整個應用系統復用能力,要滿足組件的接口。此外,簡易性和實用性也是不能缺少的。在設計完某一組件后,用二進制代碼形式將某一組件編輯出來,而且在重要的組件庫中進行存放,便于今后使用,組件的數據庫應用系統即為組件庫,組件的分類和描述,加入和刪除組件為其兩個重要的功能。在開發應用程序時,利用設計組件生成組件清單,將查詢數據庫時需要的組件提供出來,然后有效的利用現有的組件,自行開發和重構沒有的組件,并且向組件庫中存入。
二、對軟件工程的管理分析
開發管理為現階段組件工程開發中的一項重要工作內容。在開發了組件化軟件工程之后,使工業化的軟件工程成為了現實,專業化的流水線分工用很少的組件開發崗位就能夠予以實現,對專業編程崗位不用過多的選擇應用。但是,系統分析員在當中是絕對不能缺少的,設計組件系統的工作人員和維護管理組件庫的工作人員為軟件工程管理中的基礎崗位,因此,對于軟件工程中所涉及到相關知識,他們必須要認真扎實的進行掌握,然而,隨著組件工程的發展,就不再過多的需要那些大量的編程人員。為了能夠協調的開展起各個崗位的工作,將工作效率提升上來,為軟件工程進行開發時的一個重要環節。在開發組件軟件工程的過程中,對于接口標準一定要予以符合,并且還要通過嚴格的測試,在對通用性、互操作性和重用性進行了綜合的考慮之后,進而將可信任和可靠的商業化軟件構建起來。
三、結語
綜上所述,隨著時代的發展與進步,計算機網絡系統已經成為我們身邊不能缺少的一個重要工具,計算機系統能夠發揮作用,主要得益于軟件工程的大力支撐,但是,對于軟件工程的開發并不是一件簡單的工作,需要具備先進的技術和管理手段,尤其是對組件軟件工程的開發更需要強勁的技術給予支持,所以,對于這方面的工作需要我們在平時的工作中高度地重視起來。
作者:顏偉勝 單位:福建省泉州師范學院
引 言
隨著軟件在各種領域迅速發展,軟件的類型、規模、復雜度都急劇增長,在有限的時間和成本約束下開發出高質量的軟件被人們高度關注,岡此提高各類信息化系統開發人員的軟件工程能力越來越受到普通和軍隊高等院校的普遍重視。然而,由于軟件從業人員所需知識更新快以及大量軟件開發人員接受軟件工程教育的經歷不足,僅靠傳統的高校課堂內授課方式,難以滿足社會和軍隊信息化快速發展對軟件工程人員的需求。研究如何通過建設軟件工程專業在線課程加快軟件工程人才的培養、優化軟件工程課程資源的配置,對于我們國家和軍隊未來的發展具有重要價值與深遠意義。
1 軟件工程教育的發展與主要問題
軟件工程指將系統的、規范的、可量化的方法應用于軟件的開發、運行和維護的過程。ACM和IEEE/CS成立聯合工作組,在2004年制定了計算教程軟件工程卷CCSE(computingcurriculum-software engineering),并把軟件工程作為計算學科下與計算機科學、信息技術、信息系統、計算機工程等并列的學科。2014年,ACM和IEEE/CS推出軟件工程知識體SWEBOK3.0版,知識領域與2004年版SWEBOK相比從10個增加到15個。此外,由ACM和IEEE主導,國際一些著名高校和企業的專家針塒軟件工程碩士教育制定《軟件工程研究生學位教程指南》(GSwE2009),描述軟件工程碩上需掌握的核心知識體系和相應教程。我國從2001年開始建立示范性軟件學院,并于2006年推出《計算機科學與技術本科專業規范(軟件[r徉)》l512011年,軟件工程專業經國務院批準增列為一級學科。
軟件工程師目前在國內外都是最具吸引力的職業之一,如美國著名的就業網站CareerCast在2012年進行調查,從收入、工作環境、發展前景等因素評選出的十大最佳職業中,軟件工程師名列第一;在我國近來對本科畢業生的職、業調查中,軟件工程師的收入也一直名列前茅。盡管近年來軟件工程教育有了很大發展,但國內外的軟件工程教育還存在諸多挑戰性問題,主要包括以下幾方面。
(1)現有的軟件工程課程從學時數、教學安排等方面都難以達到實際職業對軟件工程深度、廣度和實踐能力的要求,相關培養方案的制訂較少考慮企業的實際需要,針對性不強。
(2)盡管聘請企業中有豐富經驗的軟件工程師授課是一條有效措施,但整體來看,軟件工程授課老師普遍缺乏軟件開發實際經驗,甚至很多都未從事軟件工程領域的研究工作。
(3)軟件工程目前存在眾多不同的開發方法學,它們各有特點和優勢,并且軟件工程相關技術發展迅速,新的方法不斷出現,這使得教學內容的選擇和準備變得非常困難。
(4)當前國內外軟件工程教材多是對眾多方法和技術的描述,對具體技術的深入程度不足且無法適應軟件技術、工具的快速變化,對學生進行實際項目開發幫助有限。
(5)企業的軟件開發中使用了眾多的軟件工具,并且對于重要領域的軟件開發,很多企業采用商業化工具。在教學過程中,這些昂貴的、專用的商業工具較為缺乏,并且在有限課程時間內學生難以接觸到眾多不同類型的軟件開發工具。
(6)軟件工程教育資源非常不平衡,在教育和經濟發達地區,聘請優秀軟件工程師進行授課、使學生參與到企業的實際開發中是可行的,但對于大量其他地區高校就難以實施。
(7)軟件工程技術和工具發展迅速,很多軟件從業人員從程序員開始起步,未接受過系統的軟件工程教育或所受教育很快過時,因此需要持續性的、具有一定靈活性的優質教育資源適應這種情況。
由軟件工程教育面臨的以上挑戰,我們可以看出傳統的高校課堂內軟件工程教育雖然還是必不可少的,但是必須找到新的軟件工程專業課程教學方式,以滿足其知識變化快、人員基數大、持續時間長、資源不平衡等特征。通過互聯網在線課程的形式實施軟件工程專業課程的教學,無疑是應對上述問題一種有效、可行的方式。
2 軟件工程知識體對在線課程模式的影響
軟件工程可以作為一門單獨的課程進行講授,而軟件工程專業一般包含一系列的課程,如需求工程、軟件設計與體系結構、軟件構造、軟件測試與驗證等。軟件工程專業課程如果作為在線課程進行建設會遇到眾多問題,其中主要包括對實踐環節的要求非常高、追求在真實平臺中解決有一定規模的問題、需要團隊合作以及項目管理等,而目前在線課程的教學方式和平臺在這些方面有一定欠缺,需要我們進行深入的研究以提供解決方案。
軟件工程課程應該覆蓋一定的知識領域,表1對SWEBOK 3.0版中包含的15個知識領域和子域進行初步分析,判斷其是否適合于目前一般性的MOOC在線課程教育模式和平臺。表1中第2列的知識子域適合目前在線課程教學方式,第3列中的知識子域需要對當前在線課程模式進行適當改進才能適用,第4列中的知識子域則需要對當前在線課程模式和平臺進行較大改進。對于不適合(需對模式和平臺進行改進)的知識子域,筆者在第3節中將研究討論應對方式和措施。
表l中最后兩個知識領域計算基礎和數學基礎作為軟件工程理論基礎的一部分,由于一般放入與軟件工程課程相獨立的課程中講授,如離散數學、編譯原理、操作系統、數據庫原理等,其相關課程也都有較為系統、完善的體系,因此這里我們不進行特別考慮。
3 軟件工程專業在線課程的建設
目前已經出現一些軟件工程的在線課程,如UC Berkeley的軟件工程MOOC課程于2012年在Coursera、后來在EdX上線,并在此基礎上發展、延伸出多個小規模私有在線課程(smallprivate online courses,SPOC)。國防科技大學也已有軟件工程相關課程在內部網絡上線,供部隊和軍隊院校一定范圍內的人員在線學習。
3.1 軟件工程專業MOOC課程建設
從對相關知識領域的分析可以看到,目前一般性MOOC授課方式與平臺難以適應的軟件工程知識子域主要包含以下特點。
1)難以完全通過講授使學生接受,如需要動手進行實踐才能深入體會的技術以及與經驗密切相關的過程、管理、度量等內容。
2)內容變化頻繁的知識如一些軟件開發技術、工具等總在持續發生變化或出現新的版本,課程每次新開時都可能需要調整。
3)需要團隊式的協作與交流完成內容,如版本控制、需求獲取、協同開發、團隊交流等,僅靠講授或個人作業難以達到效果。
4)軟件工程教育強調具有一定規模和復雜性的項目實踐,這對于教學輔導人員的數量和指導能力要求較高,不僅僅是普通答疑能完成的。
5)對于很多技術和實踐來說,其結果是開放式的,軟件設計、實現、測試、維護等任務一般不存在唯一結果,這給作業評價和成績評定帶來困難。
面向上述特點,根據目前國內外已有的相關實踐、效果以及已經實施的建設情況,我們總結出一些供參考的解決方案。
(1)制訂MOOC教學計劃時應遵循持續改進的原則。傳統課堂教學講究制訂教學計劃時一次到位,但由于軟件工程內容變化快,因此分解教學內容、視頻、作業時應該使其能夠適應快速變化,不要期望一次建設就大功告成。此外,在線課程需要了解大量學生的反饋意見和教學效果,這也需要不斷的改進。如果可行,可采用自行編著的電子教材和參考文獻,使得每次開課時學生教材也可以盡快進行相應修訂。
(2)在線課程平臺與軟件協同開發環境的有機融合。對于需要協同、交流才能完成的內容,實際由于許多國際化企業的軟件研發人員遍布全球,因此已有相應的平臺(包括開源軟件工具開源社區等)支持地域分布的人員進行協同開發。教師可選擇所需的協同開發環境,與軟件工程在線課程平臺集成在一起,提高對團隊和協同任務的支持。
(3)對課程進行分而治之的劃分。教師可以把課程按照其內容是否適合在線授課劃分為一些小的子課程,每個子課程更偏重于適合或不適合(如理論內容和實踐教學內容分到不同子課程),以減少整個課程設計的復雜性。在線課程偏重適合講授的子課程,不適合已有在線授課模式的內容,可以通過其他方式實施(如其他高校單獨開設實踐課程、采用適合的平臺或投入更多教輔人員等)。
(4)采用新的教輔人員委托模式。由于軟件工程課程的實踐性強,對教輔人員數量和質量要求高,因此僅靠開課學校的課程組難以完成。教師在實踐中可以考慮招募在高校內或通過在線課程已經完成課程學習、成績優秀的志愿者,通過一定的激勵或者提高影響力等方式激發他們的熱情。事實上,從開源軟件的蓬勃發展以及Berkeley軟件工程MOOC課程的實際效果看,該方式完全可行、有效。
(5)加強自動化結果評估和成績評定系統的開發與應用。教師可一方面采用各種自動化軟件工具,如通過測試驅動的開發工具、軟件編碼規范檢查工具、基于服務的方式等對課程作業進行自動評估;另一方面可以讓學生參與到開源軟件社區的開發活動中,通過開源項目對其完成工作和貢獻采納情況等進行評價。
軟件工程專業MOOC課程建設面臨的問題眾多,需要教師通過具體實踐逐步研究和完善其在線課程的建設過程。
3.2 軟件工程專業SPOC課程建設
軟件工程在實際實施中所面向的領域背景非常重要,而不同領域的軟件系統各有特點,一個軟件企業一般有其針對性的領域,采用的軟件工程過程、方法、工具、管理等都有各自的特點。因此,非在校學生的軟件工程在線課程學習者可能在一般性的理論之外,希望學習更多對其背景有促進作用的知識。再者,MOOC課程學習者中有相當一部分本身就是高校教師,他們會借用MOOC課程的內容,然后在自己的課程中進行一定改造并增加項目實習等內容,形成適合其學生學習的課程。此外,國防領域未來基于信息系統的體系中,軟件工程人才將會包括科研人員、技術開發人員、管理人員、保障人員、作戰和指揮人員等不同類型,還會針對戰機控制、艦船控制、車輛控制、指揮自動化等不同應用背景,對軟件工程知識的要求都有不同。上述情況都要求能夠在MOOC課程的基礎上進一步建設小規模私有在線課程(SPOC)。UC Berkeley就在其軟件工程MOOC課程基礎上發展了多個SPOC課程,包括在本校以及在其他高校中開設的課程。
對于建設軟件工程SPOC課程,教師可以遵循以下一些原則和策略。
(1)對于公共的知識講授,盡可能利用MOOC課程完成,以減少SPOC課程的建設工作量,充分利用優質資源,提高課程的復用程度。
(2)加強每門SPOC課程的針對性,如針對具體學校學生的培養目標或針對具體領域背景選擇相應的軟件工程技術、工具、標準規范進行講授。
(3)加強課程實踐和項目開發環節的建設,這是MOOC課程本身具有的不足之一,但在SPOC課程中可以進行有效的彌補。
(4)課程成績的評定可以把MOOC和SPOC課程的學習情況結合起來考慮,對學習者對軟件工程共性理論和特定目標知識的掌握情況進行綜合評價。
在未來在線課程發展中,軟件工程專業MOOC課程可能并不一定很多,由能提供優質師資資源的機構開設,但針對具體背景領域的SPOC課程可以更多,因為畢竟軟件作為現代社會無所不在的組成,軟件工程面向的領域眾多,都需要有針對性地培養軟件工程人才。
4 結語
軟件工程專業課程具有變化快、對實踐要求高、需要團隊協作等特征,這些使建設軟件工程專業在線課程具有更高的難度。MOOC課程和SPOC課程都是未來軟件工程專業在線課程所需的模式,盡管已經有一些相關實踐,但是如何建立較為系統、各門課程完善、質量高的軟件工程專業在線課程,還需要更多的研究與實踐。目前對SWEBOK中知識子域對在線課程建設影響的分析還較為初步,下一步還需要更具體地針對所包含的知識點研究如何通過在線課程進行講授。此外,軟件工程專業在線課程應該與軟件協同開發環境有機結合,這還需要我們進一步進行研究,針對知識點要求形成科學的集成平臺體系框架并進行建設。
【關鍵詞】軟件工程 模型 測試
隨著軟件技術的不斷發展,研發具有不同系統性能的軟件系統是當前軟件技術發展所面臨的主要問題,為此基于軟件工程化的管理理念被應用與軟件開發的中,進而產生了軟件工程過程模型的概念。軟件工程模型相對于軟件開發其是一種手段,是能夠根據軟件設計的總體要求等幫助設計者設計開發軟件的一種工具。軟件的設計還需要進行相應的測試,以便檢驗軟件的實用性,因此本文重點是通過闡述目前軟件工程過程模型的種類,分析其存在的問題,并且提出相應完善軟件工程過程模型的測試策略。
1 軟件工程過程模型的種類
隨著軟件技術的不斷發展,基于軟件開發的工程過程模型種類在不斷地增多,其主要由:一是瀑布模型。瀑布模型是目前最為基本的一種模型,其測試程序主要是對軟件開發系統進行需求分析,然后根據需求分析進行相應的設計,并且進行編碼,最后在測試軟件性能。其中每個環節的測試都有著嚴格的規定,其目的是就是要保證設計出來的產物要符合生產設計標準,及時發現軟件系統所存在的問題,但是瀑布模型在實踐中存在一些問題,比如對于小型項目則會因為前期的設計需要將設計人員與開發人員共同投入到該項目中,結果導致出現人力資源閑置的問題,因此在選擇該模型時要根據實際情況而定;二是螺旋模型。螺旋模型是依托瀑布模型而產生的,選擇螺旋模型能夠降低項目的風險,因為螺旋模型的測試具有階段性,也就是在結束某一階段后,要進行測試,如果測試的結果不合格那么該系統就會終止項目;三是RUP模型。該模型主要包括增量過程和迭代過程。該模型的優勢是每一次迭代過程都是對前一次階段的優化,其最大的優勢就是保證了軟件產品開發過程的質量;四是原型法。原型法一般采取生命周期形式,它是集合了上述幾種模型的所有特點的基礎上而形成的,其主要優點是能夠快速的獲悉用戶的需求,進而使得開發的軟件能夠滿足用戶的要求。
2 目前軟件工程模型測試存在的問題
2.1 測試活動比較晚
傳統的軟件測試過程模型主要是對軟件產品設計完成以后而進行的測試方案,這樣的測試模型會給軟件工程測試帶來一定的難度,尤其是不能及時的對軟件工程過程中所存在的缺陷進行及時的更改,結果造成測試結果的問題更改難度比較大。
2.2 測試計劃對軟件開發的全過程覆蓋不全
軟件工程過程的測試主要分為靜態測試和動態測試,其中很多模型的測試是人為的將軟件工程過程開發劃分為不同階段,并且不能夠迭代,這樣即使在對軟件的某個階段進行測試并發現問題時,因為其不能及時的進行處理,結果導致其修復的成本比較大,進而這些缺點也不能根據軟件開發的進度進行調整,結果給軟件的質量造成巨大的影響。
2.3 可操作性差
軟件工程過程的測試模型要具備加強的可操作性,只有這樣才能保證及時的對軟件進行測試,但是分析當前測試模型發現,這些模型基本上都存在可操作性差的問題,使得在實踐中不能有效的對軟件進行測試。
基于目前軟件工程過程測試模型所存在的問題,需要我們設計一些新的軟件工程測試模型,新的軟件工程過程測試模型要集合所有模型的有點,并且消除現有模型所存在的問題,使得新設計的模型更加具有實用性。
3 新軟件工程過程測試模型的實踐研究
為了切實克服原有軟件工程過程測試模型多存在的缺陷,本文提出了構建新型的軟件工程過程測試模型,新的模型構建原則是:采取測試與開發并重的測試模式、使軟件設計中的錯誤盡早的暴漏出來以及簡單實用原則。新的軟件工程測試模型的結構如圖1所示。
3.1 新模型各組件之間的關系以及執行過程的描述
針對上述模型在測試過程中所存在的問題,我們要對軟件在需求設計分析階段就要根據軟件所形成的的軟件需求文檔進行軟件系統的測試方案進行評審,通過評審及時地發現問題,進而及時的進行更改,當然在更改的過程中,軟件的過程開發仍然不間斷。然后在軟件開發進入到概要設計階段后,測試人員要停止設計系統測試用例及方案,并且經過對測試方案進行評審,評審通過后,進入代碼編寫階段后要對每個模塊進行單元測試,并且進行測試,對測試過程中發現存在問題的要進行修改,隨著單元模塊測試的完成,集成好的模塊就可以進行測試階段,然后在完成系統的整體測試。
3.2 各種測試的實施
根據新模型測試的結構,對軟件工程過程測試模型的實施主要分為:一是單元測試的實施。單元測試的主要對象就是軟件中的最小單元,其主要是對模塊的獨立執行路徑、接口以及局部數據結構等進行測試。新的軟件工程過程測試模型突破了傳統的在軟件開發所有階段后才進行單元測試的模式,將單元測試的設計和執行置前,也就是在設計階段的后期就開始進行單元測試,在軟件編碼的進行中就已經完成了模塊的單元測試,進而使得軟件工程測試中存在的問題提前得以解決,有效的保證了軟件工程開發的進度;二是集成測試的實施。集成測試就是講已經測試好的各個模塊進行組裝后在進行的一個系統測試。集成測試的主要任務就是測試有不同模塊之間的接口是否存在問題。集成測試的開始時間要比傳統的測試時間要早,也就是在概要設計階段就開始進行集成測試,具體的測試過程見圖2;三是系統測試的實施。系統的測試主要是對軟件在特殊環境中的運行效果的測試分析,也是檢驗軟件設計質量的最為重要的環節,因為任何軟件的設計與開發都需要應用到實踐中去。系統測試是對于軟件應用所有有關的因素進行整體的測試,其功能主要是評估系統環境下軟件的性能,并且發現和捕捉軟件中潛在的錯誤。測試的主要內容包括安全測試、恢復測試、強度測試以及性能測試。同樣本文所構建的新模型對系統測試的時間也大大提前了,即在編碼階段完成后,就開始進行測試,同時新模型還采取了開發與測試同步進行的方式,使得開發的周期也大大縮短了。
4 改進后軟件工程過程測試模型的應用實踐
為了驗證改進后的軟件工程過程測試模型的性能,里喲沒喝過該模型對移動通信系統中的賬務管理系統項目進行了對比測試,移動通信財務管理系統主要分為記賬、結算、營業以及賬務管理等系統,它們之間通過接口實現數據的流通,因此加強對軟件系統的測試具有重要的作用。根據應用系統的功能本軟件模型主要分為財務管理和資源管理兩個模塊,本著軟件模塊之間的高聚合、低耦合的原則,本系統的結構盡量減少冗余的模塊間的依賴關系。
4.1 單元測試
首先對各個單元進行結構測試。被測單元基本上含有一個或者多個相同的數據類型參數,具體的數據參數編碼是:取各個數據的上屆和下屆,采取二進制對參數進行編碼,然后在把各個參數編碼進行整體構建;然后在對集成系統進行測試。對財務優惠政策的測試方法是通過集成測試函數對定義的對數據庫進行的插入、刪除、增加、減少等操作方法。中間階段測試則是將數據中的各條數據記錄與數據中現存方案標識的閾值對比,實現對頁面輸入方案的定義是否在系統進行重點測試。
4.2 系統測試
系統測試的主要功能是測試軟件系統與計算機系統之間的協調工作,系統測試的主要目的就是要保證其安全性,并且能夠在整個運行過程中,分析相應的文檔和測試文檔,以此實現錯誤糾正的目的。本文在系統測試中,編寫了JAVA語言代碼,以此實現在整個測試過程的正常結束。
通過一些系列的測試檢驗,新的軟件工程測試模型相比其它模型能夠及時測試出更多的軟件錯誤,進而大大提高了軟件運行的質量,提高了軟件的工作效率。
5 結束語
總之,本文在對當前軟件工程過程測試模型的種類分析的基礎上,對當前軟件工程測試模型所存在的問題進行全面分析后提出了新的軟件測試模型,該模型能夠更早的、更多的發現軟件的錯誤,從而使得軟件開發的時間大大縮短,并且節省了軟件開發的費用、提高了軟件開發的質量。
參考文獻
[1]胡雪婧.軟件工程過程模型及其選擇[J]. 計算機光盤軟件與應用,2014(10).
[2]烏萌,李娜,王成賓,管斌.測繪軟件工程過程模型研究[J].測繪通報,2013(10).
[3] 樊學東.軟件工程過程模型及其選擇[J]. 西安外事學院學報 ,2008(12).
[4]董劍利,陳艷艷.基于產品線N-生命周期模型的集成化軟件工程環境研究 [J]. 計算機工程與科學,2008(10).