夏小娜,戚萬學
(1.曲阜師范大學 統計學院,山東 曲阜 273165;2.曲阜師范大學 信息科學與工程學院,山東 日照 276826;3.曲阜師范大學 中國教育大數據研究院,山東 曲阜 273165)
軟件工程是計算機科學與技術和軟件工程等工程類專業的基礎課程[1],在工程性團隊協作素養的培養和提升方面,具有重要地位[2]。在軟件工程的教學過程中,需要考慮課程實踐過程的群體協作訓練[3-4],加大學習者自主和互助解決問題的力度[5]。
首先,授課者應根據課程內容,找出課程知識點的線索走向和前后聯系,將課程教學規劃為課堂學習、應用實踐和專題研討3 個層次;其次,將課程內容分成不同的學習階段和學習子目標,在每個階段,制定不同的實踐內容和執行步驟,設定不同階段的考核指標和評定規則;再次,將學習者分成不同的參與組,針對應用實踐和專題研討兩個層次,每個組設定相應的參與Title(主題),每個Title 部署為一系列的執行任務。
為提高學習者參與軟件工程課程教學的主動性和自覺性,基于翻轉課堂的基本理念[6-7],在課程授課時間有限且任務多的前提下,本研究結合軟件工程方法學的極限編程模型思想,提出結對模式驅動的協作教學機制。跟蹤軟件工程一學期的教學過程,抽取兩個專業學習者的學習行為數據,設計參與度計算方法,并結合統計檢驗指標展開實證分析。
“結對編程(Pair programming)”[8]是軟件工程過程模型——極限編程(Extreme Programming,簡稱XP)的核心理念。它要求兩人為一個“Pair”參與合作同一段代碼,一人(思考者)分析問題另一人(編程者)編碼實現。思考者需要保持軟件頂層概念,而非僅關注當前問題,編程者只需要關注局部問題解決的可計算化和可編程化。如果編程者遇到了問題,兩個人就需要角色互換。如果兩者都處于問題解決的“瓶頸”,可以邀請本系統的其他人參與討論。這種理念可以保證整個團隊實現“自頂向下、逐步求精”的研發互助目標。將團隊成員分解成多個相對獨立又可以適時溝通的“Pair”單元,不同的“Pair”先完成各自的分配任務,再從整體上分層次、分階段地實現“Pair”工作的有效集成。
“結對”理念運用于軟件工程課程教學,需要先剖析課程知識結構,這里按照橫向和縱向兩條線索展開,橫向是結構化和面向對象兩種方法體系,縱向是軟件的生命周期線索。根據縱向的脈絡階段劃分,橫向任務交叉進行。縱向根據軟件生命周期的定義,從時間維度劃分成相互關聯的多個階段。
“結對”是采用“Pair”為基本參與單元的多層次、多階段迭代的組織模式,每一項參與任務,都是兩人結對協作。在任務推進過程中,不同的“Pair”適時溝通,及時融合,不時迭代,有效集成。圖1 是“結對”模式驅動的軟件工程協作教學機制剖面圖,圖的中間部分是軟件生命周期的相關階段,不同階段之間存在嚴格的先后次序,自頂向上有序進行,每一階段的任務都以上一階段的執行結果為依據,也是下一階段任務開始的前提條件。每一階段的執行結果,也可以反饋到相鄰的上一階段。

圖1 “結對”模式驅動的軟件工程協作教學機制
基于圖1 的邏輯部署,需要在軟件工程的教學過程中設計不同Title 的應用實踐和專題研討案例。每個Title 指定一個負責人(Leader),Leader 根據Title 的實施目標,制定任務執行的標準和規模,擔任“監督者”和“調控者”的角色。并配置一定數量的參與成員,一般為4~5 人,兩兩結合形成“Pair”。同時要求屬于同一Title 的Pair 之間保持溝通,做到任務執行過程的透明化和公開化。不同Pair 的任務關聯過程采用漸增式的集成思路,即每一次的集成,只引入一個Pair任務關聯,這樣做利于發現問題和解決問題。
“結對模式”驅動的協作教學機制具有共同的組織原理。無論Pair 參與的是哪一個Title,都遵循軟件生命周期的8 個階段,將這8 個步驟的任務集定義為X1、X2......X8,每個步驟對應的課堂學習、應用實踐和專題研討的參與度分別定義為Li、Ci和Ri,取值區間為[0,1],其經驗權重系數通常設定為0.5、0.3 和0.2,則Xi=0.5Li+0.3Ci+0.2Ri。軟件生命周期的任務權重系數定義為a1、a2......a8,一般情況下,默認取值為1,表明每一個階段的任務都很重要,每個Pair 的參與度平均值計算模型表示為,其中φt是調節Title 難易程度的因子,取值范圍為[1,1.5],由Title 的規模、任務量和技術研發目標等共同決定,通常取自經驗值。
同一Title 的任務量計算是一個迭代過程。從兩個最基本的Pair 任務集成一個子整體開始,之后的每一次集成,只發生在子整體與一個Pair 的任務之間。這樣,就產生了子整體和每一個Pair 任務集成的額外工作量。工作量會隨著集成度的增加,難度系數將呈放大趨勢。將任務集成難度的定性系數表示為F(s),其中F(1)=1,F(2)=1,F(s)=F(s-1)+F(s-2)。任務量的難度值計算模型設計為f(s,F(s))=f(2,F(2))+φt×f(s-1,F(s-1))。由于每一次漸增集成過程都是兩兩集成,可以將f(2,F(2))作為難度函數的常量平衡值。其中s=|Pair|-1,表示集成的次數,|Pair|是一個Title 所分成的Pair 個數。
結對模式的參與度計算方法是關于Title 任務集成的定性描述,得到的結果可以衡量參與Title 的任務難度,適合用于不同Title 的參與情況比較。
分別選擇一屆軟件工程和計算機科學與技術兩個專業15 名研究生的課程學習行為數據為樣本,運用第2 部分的參與度計算方法,統計分析課堂學習、應用實踐和專題研討中取得的成績,實證檢驗結對模式在個體學習積極性、任務難易度、考核成績等方面的應用效果。

圖2 Pair模式的組建方法
為此將應用實踐設定為3 個特定的訓練Title:PT1.考勤系統、PT2.招聘系統和PT3.圖書系統,專題研討Title 包括RT1.區塊鏈、RT2.電子商務和RT3.大數據。15 人中指定3 個Leader,由Leader 分別組建5 人參與小組,每組采用隨機方式選擇實用實踐和專題研討題目。
在Pair 規劃時,Leader 自主與其他成員組成Pair,完成不同任務目標的分析與設計,5 人組的Pair 組建方式如圖2 所示。A、B、C 和D 是4 個成員,假設A 與C 的分工是類似的,B 和D的分工是類似的,L 是Leader,A 和B、C、D可以分別組成合作Pair,L 設定為任務可兼顧的角色,分別和A 和B、C、D 中的一個組成Pair,這樣每個組就可以形成4 個Pair。同樣的,A 和D、B、D 也可以分別組成合作Pair,也可以有4種組合方法。這里將圖中8 個單元右側的學習者定義為編程者,左邊的學習者為思考者。
表1 是應用實踐和專題研討兩部分的相關指標。Leader根據Title的目標要求,規劃Title任務。基于Leader 的技術和能力特點,根據圖2 的Pair組建方法,選擇合適的“4-Pair”單元。根據以往軟件研發經驗,3 個訓練Title 的研發規模近似,則Pair 的任務漸增集成工作量可以設定為同值。3 個研討Title 的主旨目標是一樣的,但是Leader規劃的任務目標和要求是不一樣的,執行要求也有所不同,從系統的開發技術、支持跨平臺和支持移動設備3 個方面考慮,所對應的應用實踐和專題研討的難易度也就不一樣,Title 的φt應具有不同的權重值。從表中可以看出,兩個專業雖然選題一樣,但不同的Pair 組建方式不同、研發目標不同、參與人不同、Leader 的編程和組織協調能力不同等,都會影響團隊合作效果和任務執行難度。
在軟件工程課程的授課過程中,由授課者不定期組織應用實踐和專題研討的進度交流會,討論不同Title 前期工作存在的問題。每組的Leader 主講,Pair 做任務的針對性陳述,所有參與人及時了解不同Title 的進展狀態,總結參與過程存在的優缺點。應用實踐和專題研討的考核一般在學期末完成,通過組建評審小組,建立評審標準和衡量指標,統一進行評分。最后由授課者和Leader共同參與計算每一個Pair 的參與度。
課程學習結束,產生了與課程相關的考試成績、系統研發文檔、系統代碼和專題報告等數據,也是學習者學習行為的描述載體。課堂學習、應用實踐和專題研討分別對應不同的考核標準,見表2。講授者主導的課堂學習側重基礎知識的考核,主要體現為期末筆試;應用實踐從系統驗收的角度設立考核標準;專題研討從學術報告質量角度進行考量。
課程3 個考核方面的成績分布見表3。課程學習的成績均分布在70~100 之間,應用實踐和專題研討的最高分均出現在兩個專業的第3 個Title,其實現難度是中等偏上。這兩個分組的共同點是Leader 的組織協調能力強,有較好的編程能力,分組成員也取得了良好的課程學習成績。可以看出,有效的團隊合作可以提高團隊成員的課程學習效果,開發出一個應用操作友好、功能相對完備的軟件強過面面俱到的高難度技術追求,符合軟件工程的基本理念。

表1 課程應用實踐和專題研討相關指標

表2 考核標準 %

表3 課程考核成績分布
每個Title 分化為4 個Pair 的結對參與過程,其中ThreePair 和FourPair 的成員之一是Leader,即Leader 在一個組內參與2 個Pair。訓練Title 和專題Title 得分最高的分組,負責人所在的ThreePair 和FourPair 參與度都比較高,說明Leader 的參與度會影響團隊的凝聚力和執行力。4 個Pair 都服務于Title 的整體目標,任務合作的相關性也將影響整體目標。對“Pair—Pair”的任務相關性進行統計分析得到表4,ThreePair與FourPair 的合作相關性在0.05 級別(雙尾)相關性顯著。這與Leader 的Pair 參與有直接關系。
對Pair 為基本單元的Title 實施進行樣本的統計指標描述,以驗證不同分工的配對顯著性,檢驗結果見表5,訓練Title 和專題Title 的難度指標檢驗結果存在顯著性差異,這是兩個不同類別的主題,具有明顯的執行差異,滿足樣本檢驗的前提條件。
對同一Title 的Pair 配對顯著性進行檢驗。配對有OnePair-TwoPair 和ThreePair-FourPair,OnePair和TwoPair 再 分 別 與Leader 參 與 的ThreePair、FourPair 分別配對,以此檢驗非Leader 參與的Pair 與Leader 參與的Pair 之間是否存在配對差異。通過t 檢驗得到Pair 的參與度配對不存在顯著性差異,說明同一Title 的Pair 配對是易于融合的,也利于課堂學習、應用實踐和專業研討3 個方面的成績考核。

表4 Pair模式的合作相關性

表5 Pair模式的配對樣本檢驗
結對模式是軟件工程過程模型的一種重要實施范式,它在提高現代軟件研發團隊協作和研發質量方面具有推動意義。本研究針對軟件工程課程多角度的學習手段和考核方式需求,在課程的應用實踐和專題研討訓練中,采用了“結對”合作模式。為此,抽取兩個專業的15 名學習者為研究樣本,形成同等規模的組單元,指定具有一定的編程或組織管理能力的學習者為分組Title 的Leader,由Leader 根 據Title 實 施目標制定不同階段不同層次的各級參與任務。組成員兩兩組合,形成任務執行的“Pair”單元。通過統計、分析和對比一個學期軟件工程課程的學習行為數據,可以得出這樣的結論:結對模式可以增強分組的任務協作力和課程學習積極性,具有較好編程能力和組織協調能力的分組Leader,利于提高團隊的應用研發質量和專題報告水平,提升任務執行的規范性和全局性。因此,結對模式可以改進具有團作協作特性的課程教學效果,具有理論和實踐的借鑒意義和參考價值。