亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于高質(zhì)量開源軟件的閱讀維護培養(yǎng)軟件工程能力

        2018-07-21 06:11:08尹良澤毛新軍
        計算機教育 2018年7期
        關鍵詞:開源代碼高質(zhì)量

        尹良澤,毛新軍,尹 剛,王 濤,余 躍,盧 遙

        (國防科技大學 計算機學院,湖南 長沙 410073)

        0 引 言

        軟件工程系列課程的主要目標是提高學生對復雜軟件系統(tǒng)和較大規(guī)模軟件的開發(fā)素養(yǎng)和能力。傳統(tǒng)的軟件工程課程實踐教學主要是軟件項目實踐,學生在已經(jīng)學習大規(guī)模軟件開發(fā)方法和技術的基礎上,運用所學知識設計開發(fā)一個具有一定規(guī)模的真實軟件。但由于學生沒有接觸過真實的優(yōu)秀軟件項目,個人認識還停留在幾十上百行的小規(guī)模代碼中,因此在實際項目開發(fā)中還是不知道該如何開發(fā),軟件工程方法的應用趨于形式。同時,軟件工程方法的很多經(jīng)驗和技巧只有讓學生見識優(yōu)秀軟件工程師所開發(fā)的優(yōu)秀軟件項目,才能讓學生在理論學習階段與軟件工程理論和方法產(chǎn)生共鳴,并在項目實踐階段模仿優(yōu)秀軟件工程師的設計開發(fā)方法,提高學生開發(fā)較大規(guī)模高質(zhì)量軟件的能力。針對這種情況,亟須探討軟件工程課程新的教學模式,提高學生對軟件工程方法的理解層次和深度,為提高學生大規(guī)模高質(zhì)量軟件開發(fā)能力打下基礎。

        1 通過開源軟件閱讀維護加強軟件工程人才培養(yǎng)

        1.1 開源軟件概述

        經(jīng)過幾十年的發(fā)展,開源軟件對軟件產(chǎn)業(yè)產(chǎn)生了巨大影響,開源軟件也代表了軟件工程領域一種先進的開發(fā)技術和模式。在該模式中,開發(fā)人員通過復用已有的開源軟件和大眾協(xié)同參與,可有效提高軟件項目的開發(fā)效率和開發(fā)質(zhì)量,并大幅降低開發(fā)成本。同時,基于開源軟件開展軟件工程教育也是軟件工程能力培養(yǎng)的一種有效途徑[1-4]。具體來所,開源軟件具有三大優(yōu)勢:一是覆蓋范圍廣,開源軟件已經(jīng)覆蓋了幾乎所有領域的基礎軟件和共性應用軟件;二是代碼質(zhì)量高,2013年的Coverity掃描報告首次發(fā)現(xiàn)開源軟件質(zhì)量超過專有軟件,開源軟件缺陷密度0.59,專用軟件0.72[3];三是擁有開源社區(qū),開源社區(qū)是開源軟件開發(fā)者溝通和交流的媒介,也是初學者學習優(yōu)秀工程師開發(fā)經(jīng)驗并獲取幫助的一個重要平臺。

        1.2 在軟件工程課程實踐教學中應用開源軟件閱讀

        針對軟件工程課程實踐教學中學生缺乏大規(guī)模高質(zhì)量軟件開發(fā)經(jīng)驗的問題,一種解決思路是讓學生閱讀和維護具有一定規(guī)模的高質(zhì)量開源軟件,通過盡早接觸優(yōu)秀的高質(zhì)量軟件來增強學生工程意識?;谶@種思想,設計提出了在軟件工程課程實踐教學中應用開源軟件閱讀的基本方案。如圖1所示,整個課程分為3個階段:開源軟件閱讀維護、軟件工程理論教學和創(chuàng)意軟件項目實踐。

        (1)開源軟件閱讀維護階段。學生通過閱讀維護具有一定規(guī)模的高質(zhì)量開源軟件,首先從感性上接觸和認識較大規(guī)模高質(zhì)量軟件,并從中學習高質(zhì)量軟件的開發(fā)方法和原則。具體來說,該階段要求學生通過開源軟件的閱讀提取出其需求和設計。由于還沒有系統(tǒng)學習軟件工程的理論和方法,學生可能會出現(xiàn)無從下手,或者描述不清晰、不規(guī)范等情況。這些也正是學生課程理論學習階段需要解決的問題。有了這些體驗,學生就會帶著問題去深入學習軟件工程方法和技術,從而使得課程理論教學不再是簡單的概念背誦。

        (2)軟件工程理論教學階段。將以被閱讀的開源軟件為案例,系統(tǒng)講授需求、設計和測試的相關理論和方法。系統(tǒng)學習相關方法和技術后,要求學生重新修正自己提取出來的軟件需求和設計,進一步理解軟件工程方法和技術的精髓。

        (3)創(chuàng)意軟件項目實踐階段則要求學生采用前面兩個階段學到的需求描述、項目設計、軟件開發(fā)等方法,正向設計開發(fā)一個具有一定規(guī)模的高質(zhì)量的軟件,進一步培養(yǎng)學生解決復雜問題和開發(fā)較大規(guī)模高質(zhì)量軟件的能力。

        這3個階段,第一個階段通過閱讀開源軟件讓學生認識大規(guī)模高質(zhì)量代碼,并初步開展軟件需求描述和軟件設計;第二個階段通過知識講授讓學生系統(tǒng)掌握軟件工程的相關方法和技術,并修正完善第一階段的需求和設計;第三階段則運用第一階段的經(jīng)驗和第二階段的方法技術正向設計開發(fā)一個軟件項目。3個階段由淺入深、相輔相成。通過這3個階段,系統(tǒng)培養(yǎng)學生大規(guī)模高質(zhì)量軟件的開發(fā)能力和素養(yǎng),從而實現(xiàn)課程實踐教學目標。

        圖1 開源軟件閱讀維護在軟件工程課程教學中的定位

        2 開源軟件閱讀設計方案

        2.1 開源軟件閱讀實踐需要解決的若干問題

        2.1.1 開源軟件選擇

        作為軟件工程課程實踐教學閱讀用的開源軟件,需要具備如下幾個特征。

        特征一:面向?qū)嶋H應用。當前比較熱門的開源軟件往往都采用了最先進的方法和技術。由于學生在后期軟件項目實踐時通常都會參照和模仿被閱讀的開源軟件進行開發(fā),面向?qū)嶋H應用的軟件能讓學生學習到最新軟件開發(fā)方法和技術。

        特征二:代碼質(zhì)量高。首先,該軟件必須具有高質(zhì)量的軟件設計,包括軟件體系結(jié)構、類設計等。其次,該軟件必須具有非常規(guī)范的編碼風格,讓學生通過閱讀高質(zhì)量代碼,意識到自己代碼的缺陷,并養(yǎng)成良好的編碼習慣。

        特征三:代碼規(guī)模適中。代碼規(guī)模太小不足以讓學生體會到軟件工程的思想,但規(guī)模太大又會給學生造成一定的壓力和負擔。在閱讀完該開源軟件之后,學生應該能較好地駕馭該軟件。通常來說被閱讀開源軟件的規(guī)模在10 000行代碼左右比較合適。

        特征四:開源社區(qū)活躍。當前軟件開發(fā)的一種趨勢是借助于互聯(lián)網(wǎng)的優(yōu)勢和群體智慧的力量來進行軟件開發(fā)。通過開源社區(qū),學生可以學習到很多實際項目開發(fā)中非常重要的寶貴經(jīng)驗,以及基于開源社區(qū)和大眾協(xié)同的群體化軟件開發(fā)方法。

        2.1.2 閱讀引導與考核

        選擇合適的開源軟件之后,接下來就需要引導學生有效地完成閱讀,從而培養(yǎng)其開發(fā)較大規(guī)模高質(zhì)量軟件的能力。放羊式地將開源軟件交給學生,將造成學生閱讀比較盲目,缺乏目標和動力。因此,需要有效地引導學生一步一步地去深入閱讀,并在整個過程中對學生的閱讀效果進行監(jiān)督和考評。具體來說,整個閱讀過程需要做到如下幾點。

        有規(guī)劃:將整個開源軟件一股腦地扔給學生會讓學生覺得無所適從,也無從下手。因此,整個閱讀過程必須有規(guī)劃、分步驟進行,循序漸進,并給每個階段設定一個任務。學生只要按照老師的要求一步步來,高標準完成每個階段的任務就可以對較大規(guī)模高質(zhì)量軟件有一定認識,并初步掌握一些設計開發(fā)高質(zhì)量軟件代碼的方法和工具。

        有監(jiān)督:監(jiān)督是督促和激勵學生積極完成每個階段任務的重要保證,缺乏監(jiān)督將可能導致學生將代碼閱讀過程當成完成任務。在整個代碼閱讀過程中,可以每周公布各組代碼閱讀的統(tǒng)計數(shù)據(jù)和相關信息。讓學生能夠給自己的工作一個比較良好的定位,并督促自己按照高標準要求完成每個階段的任務。

        有考核:考核是每門課程的一項重要內(nèi)容。同樣,開源軟件閱讀也需要有考核,但不同于一般的知識學習,開源軟件閱讀更加注重閱讀過程。因此,考什么、如何考,將是開源軟件閱讀中需要考慮的一項重要內(nèi)容。該考核方式要求既能反映學生開源軟件的閱讀效果,又具有一定的量化考核方式。

        有點評:及時對學生的工作進行點評,指出其工作中存在的問題和可能的解決方案,是提高學生能力的關鍵步驟。對開源軟件閱讀,需要在點評過程中引導學生細心去體會一定規(guī)模高質(zhì)量軟件的開發(fā)方法,并將代碼閱讀實踐與課程理論知識相結(jié)合,充分利用好開源軟件這個案例培養(yǎng)學生的各方面能力。

        2.2 開源軟件閱讀維護框架

        為引導學生一步步閱讀開源軟件,將開源軟件閱讀分為3個階段:代碼泛讀、代碼精讀和代碼維護,如圖2所示。代碼泛讀的主要目標是讓學生在較短的時間內(nèi)快速掌握該軟件的功能和概要設計,包括軟件的體系架構、模塊劃分等。代碼精讀則是在學生已經(jīng)基本掌握軟件整體架構的基礎上,進一步體會軟件的詳細設計、代碼規(guī)范、實現(xiàn)方法和技巧等。代碼維護是在學生已經(jīng)掌握整個軟件的整體架構,也對某一部分代碼非常熟悉的前提下,要求學生在該開源軟件的基礎上新增新的功能,對代碼進行測試,并且修改維護相應的功能。要求新添加代碼的質(zhì)量與原來的代碼質(zhì)量保持一致。代碼維護階段是對前兩個階段所學知識和方法的一次初步運用,也為后面軟件項目實踐中開發(fā)高質(zhì)量軟件打下基礎。

        代碼泛讀階段的主要產(chǎn)出是軟件功能描述和概要設計,以及概要設計時有何考慮,概要設計如何實現(xiàn)軟件功能等。代碼精讀階段的主要產(chǎn)出是軟件詳細設計和代碼注釋。詳細設計中,要求學生給出該模塊的類圖和關鍵用例的順序圖;代碼注釋則包括類注釋、成員函數(shù)注釋、關鍵語句注釋等。代碼維護階段的產(chǎn)出是新增功能代碼和測試代碼,要求學生將相應的功能描述和設計添加到前面形成的文檔中,并對新增部分進行驗證審查。為督促學生積極開展代碼閱讀工作,也為了總結(jié)自己學習到的知識,還要求學生每周都要撰寫一篇技術博客,主要描述自己一周學習到的內(nèi)容,例如關于協(xié)作開發(fā)、開源軟件復用、需求描述和項目設計,以及自己遇到的問題和解決方案等。

        整個代碼閱讀維護過程以2人為一個小組結(jié)對進行,同時要求學生參與開源社區(qū)。每個階段結(jié)束之后都會對該階段的成果進行考核點評,給出各小組各階段的成績,對存在的問題進行點評,并要求學生在點評之后進一步完善相關工作。整個過程中都會持續(xù)對學生的任務完成情況進行監(jiān)督,包括跟蹤大家的平臺活躍情況、技術博客撰寫情況、成果完成質(zhì)量、新增代碼質(zhì)量和規(guī)模等。

        圖2 開源軟件閱讀維護框架

        3 開源軟件閱讀的具體實踐

        3.1 開源軟件選擇

        經(jīng)過反復比較,最終選擇Android APP “小米便簽”作為學生閱讀的開源軟件。小米便簽是小米公司開發(fā)的一款手機APP。Android編程是最近比較熱門的一個話題,便簽也是大家比較熟悉的一款軟件,大部分學生對該軟件都比較感興趣。該軟件包含大概10 000行代碼,代碼規(guī)模適中。由于是由小米專業(yè)開發(fā)團隊精心為Android初學者所打造的一款軟件,該軟件不管從設計還是從代碼的角度來說都具有較高質(zhì)量。該軟件托管在Github上,學生可以進入該軟件的開發(fā)社區(qū),與該軟件的開發(fā)人員以及相應的學習人員進行交流。

        3.2 實踐效果

        表1給出了學生經(jīng)過小米便簽的泛讀、精讀和維護3個階段之后對開發(fā)較大規(guī)模軟件的各項能力提升滿意程度的評價。90分表示該項能力提升明顯,非常滿意;80分表示有較大提升,但還有不少提升空間;60分則表示該項能力提升不大。從表1中數(shù)據(jù)可以看出:

        (1)經(jīng)過小米便簽的閱讀,學生的大規(guī)模軟件代碼分析能力得到較大提升,代碼編程風格發(fā)生質(zhì)的變化,團隊協(xié)同開發(fā)能力也取得很大的進步。經(jīng)過泛讀、精讀和維護3個階段,學生能以較快的速度掌握一定規(guī)模代碼的功能和基本架構,然后對自己所關心的代碼進行深入分析。學生另一個最大收獲是代碼編程風格,小米便簽的代碼風格規(guī)范統(tǒng)一,讓學生意識到了自己代碼的缺陷。同時,代碼閱讀維護過程中,學生第一次基于trustie和git進行項目管理和協(xié)同開發(fā)維護,掌握了基于團隊的協(xié)同開發(fā)方法。

        (2)軟件設計能力、修改維護能力和開源軟件復用能力都有較大提升。閱讀過程中,學生花了較多時間去體會優(yōu)秀的軟件設計,學生開始對軟件設計、修改維護和軟件復用有了初步的認識。對于軟件設計能力,由于缺乏系統(tǒng)的理論方法學習,還存在較大的提升空間;對于修改維護能力,由于學生以前沒有接觸過Android開發(fā),修改維護起來比較費勁;對于開源軟件復用,存在部分同學在集成開源軟件時比較費勁。

        (3)對于軟件測試能力,整體來說學生提升不是很大。測試過程中,要求學生采用自動測試的方法對精讀的代碼以及自己新添加的代碼進行測試。小米便簽是Android代碼,大部分代碼都在與底層數(shù)據(jù)和上層界面進行交互。由于時間有限,學生對如何模擬Android的界面操作以及底層的數(shù)據(jù)還不是很熟悉。

        表2給出了學生開源軟件閱讀的一些相關數(shù)據(jù)。學生每周花在小米便簽閱讀上的時間平均達到了10小時,最多的達到了20小時,表明大部分學生對小米便簽的閱讀都比較感興趣。學生在代碼維護階段添加的代碼量平均500行左右,復用開源軟件代碼量1 200行左右,達到了課程要求。學生在代碼精讀階段添加注釋量平均800行,代碼注釋比較規(guī)范標準,準確率也比較高。在整個小米便簽閱讀過程中,各小組的Git提交次數(shù)平均為142次,表明學生提交很活躍,也掌握了團隊協(xié)同開發(fā)的基本方法。

        整體來說,經(jīng)過小米便簽的閱讀,學生對較大規(guī)模高質(zhì)量軟件有了一定的感性認識,代碼分析能力、協(xié)同開發(fā)能力、代碼編程風格都有了很大提升,同時對如何開展軟件需求和設計也有了一定的認識和嘗試,軟件工程能力得到增強,為后期系統(tǒng)學習軟件工程的方法和技術以及開展創(chuàng)意軟件項目實踐打下了良好的基礎。

        表1 學生對開源軟件閱讀效果的評價

        表2 學生開源軟件閱讀相關數(shù)據(jù)

        4 結(jié) 語

        在軟件工程課程實踐教學中引入開源軟件閱讀,通過在理論方法學習之前先讓學生接觸具有一定規(guī)模的高質(zhì)量開源軟件,使得學生對大規(guī)模高質(zhì)量軟件及其開發(fā)先有一定的感性認識,從而提高軟件工程方法技術學習和創(chuàng)意軟件項目實踐的質(zhì)量。為有效引導學生開展開源軟件代碼閱讀,將其分為代碼泛讀、代碼精讀、代碼維護3個階段,每個階段都要求有不同的產(chǎn)出,并將過程監(jiān)督、協(xié)作開發(fā)、參與開源社區(qū)、考核點評等貫穿代碼閱讀和維護全過程,以保證代碼閱讀的有效性。實踐效果表明該方法可增強學生的工程意識,對系統(tǒng)培養(yǎng)學生解決復雜工程問題和開發(fā)較大規(guī)模的高質(zhì)量軟件系統(tǒng)的能力具有重要意義。

        猜你喜歡
        開源代碼高質(zhì)量
        堅持以高質(zhì)量發(fā)展統(tǒng)攬全局
        當代陜西(2022年5期)2022-04-19 12:10:12
        高質(zhì)量項目 高質(zhì)量發(fā)展
        當代陜西(2021年1期)2021-02-01 07:18:02
        牢牢把握高質(zhì)量發(fā)展這個根本要求
        當代陜西(2020年20期)2020-11-27 01:43:10
        五毛錢能買多少頭牛
        “三部曲”促數(shù)學復習課高質(zhì)量互動
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        大家說:開源、人工智能及創(chuàng)新
        日日噜噜夜夜狠狠久久无码区| 成av人片一区二区久久| 中文字幕精品亚洲字幕| 亚洲小说区图片区色综合网| 岳好紧好湿夹太紧了好爽矜持| 少妇内射高潮福利炮| 韩日无码不卡| 麻豆激情视频在线观看| 国产精品综合一区久久| 无码国产精品一区二区av| 亚洲成人色区| 一本一道波多野结衣av中文 | 又大又粗又爽的少妇免费视频| 国产精品久久久久国产a级| 亚洲欧美变态另类综合| 亚洲国产综合精品一区最新| 久久中文字幕人妻淑女| 无码字幕av一区二区三区| 少妇人妻偷人精品视蜜桃| 亚洲午夜无码视频在线播放 | 乌克兰少妇xxxx做受野外| 337p日本欧洲亚洲大胆色噜噜| 加勒比亚洲视频在线播放| 亚洲精品中文字幕导航| 隔壁老王国产在线精品| av潮喷大喷水系列无码| 亚洲欧美日韩中文v在线| 国产精品午夜福利天堂| 91精品国产综合久久熟女| 日射精情感性色视频| 精品无码AⅤ片| 天堂a版一区二区av| 免费在线观看播放黄片视频| 亚洲av无码专区在线播放| 亚洲国产成人精品女人久久久| 久久伊人中文字幕有码久久国产| 91偷拍与自偷拍亚洲精品86 | 无码人妻av免费一区二区三区| 少妇的丰满3中文字幕| 日本熟女人妻一区二区三区| 青青河边草免费在线看的视频|