實驗四 軟件工程結對項目
2019-3-21/22
Deadline:2019-4-3 10:00,以博客發表日期為准
評分標准:
- 按時交 - 有分(滿分100分),檢查項目包括:
- 任務1部分(40分,代碼和博客各20分)
- 任務2部分(60分,代碼和博客各30分)
- 未提交項目源碼到Github,代碼部分不得分;未提交博客到班級博客上,博客部分不得分;
- 任務2根據項目完成質量累計加分,完成基本功能原則上不超過滿分60分,完成附加功能,給予加分;
- 代碼提交(代碼規范,否則倒扣分);
- 博文規范(行文清晰流暢,如果行文中涉及代碼,請使用博客園自帶的代碼控件,或使用MarkDown的語法塊)
- 抄襲 - 倒扣本次作業分數
1、實驗目的與要求
(1)體驗軟件項目開發中的兩人合作,練習結對編程(Pair programming)。
(2)掌握Github上增量發布軟件的操作方法。
2、實驗相關知識
閱讀現代軟件工程—構建之法第4章內容,掌握以下概念:
1)結對編程
以下圖片是一個結對編程場景:兩位學習伙伴坐在一起,面對着同一台顯示器,使用着同一鍵盤,同一個鼠標,他們一起思考問題,一起分析問題,一起編寫程序。
同學們是否嘗試過兩人合作的軟件開發模式:本次實驗,就讓我們來體驗一下結對編程的魅力。
關於結對編程的闡述可參見以下鏈接:
http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html
http://en.wikipedia.org/wiki/Pair_programming
2)代碼規范
關於代碼規范的其他參考博文:https://www.cnblogs.com/S031602240/p/10551854.html
關於github基礎操作的參考鏈接:
參考文章:http://www.cnblogs.com/schaepher/p/4933873.html
參考文章:http://www.cnblogs.com/edisonchou/p/5990875.html
學習視頻:https://www.bilibili.com/video/av10475153/
3、實驗內容和步驟
任務1:兩兩自由結對,對結對方的《實驗二 軟件工程個人項目》的項目成果進行評價,具體要求如下:
- 對項目博文作業進行閱讀並進行評論,評論要點包括:博文結構、博文內容、博文結構與PSP中“任務內容”列的關系、PSP中“計划共完成需要的時間”與“實際完成需要的時間”兩列數據的差異化分析與原因探究。
- 克隆結對方項目源碼到本地機器,閱讀並測試運行代碼,結合運行結果評論程序代碼,評論要點包括:軟件結構、代碼規范、功能實現、人機交互等。
- 嘗試利用github中的Fork、Clone、Push、Pull request、Merge pull request對結對方倉庫中的源碼進行合作修改。
任務2:采用兩人合作方式,設計開發一個英文文本統計分析軟件,使之具有以下功能:
(1)實驗2要求的功能;
(2)單詞頻數可視化柱狀圖要求是以下樣式:
(3)統計該文本行數及字符數;
(4)各種統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(5)可處理任意用戶導入的任意英文文本;
(6)人機交互界面要求GUI界面(WEB頁面、APP頁面都可);
(7)附加分功能:統計文本中除冠詞、代詞、介詞之外的高頻詞;
(8)附加分功能:統計前10個兩個單詞組成的詞組頻率。
任務二兩個合作項目實施要求:
- 結對合作開發進度計划的要求:在項目正式開發之前,預估本次合作開發任務的PSP環節的消耗時間,並在PSP過程中統計實際耗時,填寫PSP表格。
- 嘗試采用漢堡包法實施項目結對中兩個人的溝通,關於漢堡包法的闡述參見:http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
- 理解領航員和駕駛員兩種角色關系:兩人都必須參與程序的編碼工作,在結對編程中兩個人輪流做對方的角色。
- github倉庫中的代碼提交要體現兩人合作過程,不能只看到最終的代碼,至少有三次以上的代碼簽入記錄, 能顯示代碼從最初的基本框架, 基本功能,到全部功能實現的構建過程 。
- 編撰兩人合作開發遵守共同認可的編碼規范,並提交編碼規范文檔到github項目倉庫根目錄下。
- 將包含任務2的源碼以增量方式提交到指定同學注冊Github賬號下的項目倉庫中,要求項目倉庫中要能看到項目多次commit的記錄,同時必須有兩個人各自的commit記錄。
任務3:完成博文作業
博文名稱要求:學號1姓名+《英文文本統計分析》結對項目報告;
填寫博文簡要信息表:
項目 |
內容 |
這個作業屬於哪個課程 |
任課教師博客主頁鏈接 |
這個作業的要求在哪里 |
作業鏈接地址 |
課程學習目標 |
熟悉軟件開發整體流程,提升自身能力 |
本次作業在哪個具體方面幫助我們實現目標 |
第一次體驗一個完整的工程 |
博文作為兩個任務總結的文字資料,請完整包含以下內容:
- 任務1要給出所點評作業的博客、github鏈接地址,點評內容和點評心得;
- 任務2需要給出結對項目源碼在Github的倉庫主頁鏈接地址;
- 任務2博文作為結對項目實施過程的文字資料,請完整包含下面7個部分:
a.需求分析
b.軟件設計:使用類圖
c.核心功能代碼展示:展示核心功能代碼
d. 程序運行:程序運行時每個功能界面截圖
e. 描述結對的過程,提供兩人在討論、細化和編程時的結對照片(非擺拍)
f. 提供此次結對作業的PSP。
PSP2.1 |
任務內容 |
計划共完成需要的時間(min) |
實際完成需要的時間(min) |
Planning |
計划 |
8 |
6 |
· Estimate |
· 估計這個任務需要多少時間,並規划大致工作步驟 |
8 |
6 |
Development |
開發 |
82 |
88 |
·· Analysis |
需求分析 (包括學習新技術) |
6 |
10 |
· Design Spec |
· 生成設計文檔 |
5 |
6 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
4 |
6 |
· Coding Standard |
代碼規范 (為目前的開發制定合適的規范) |
3 |
3 |
· Design |
具體設計 |
10 |
12 |
· Coding |
具體編碼 |
36 |
21 |
· Code Review |
· 代碼復審 |
7 |
9 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
13 |
21 |
Reporting |
報告 |
9 |
6 |
·· Test Report |
· 測試報告 |
3 |
2 |
· Size Measurement |
計算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后總結 ,並提出過程改進計划 |
3 |
3 |
g. 小結感受:兩人合作真的能夠帶來1+1>2的效果嗎?通過這次結對合作,請談談你的感受和體會。