| 教學班 | 羅傑、任建班周五3、4節 |
|---|---|
| gitlab項目地址 | Here it is. |
| 成員 | 周遠航(3004) 李辰洋(3477) |
結對編程體驗
感受
- 在前期設計時,兩人合作可以收集更多資料,提供更多想法,有利於設計更完備的架構。
- 一人寫代碼、一人領航員的配合方式及時對於能肉眼辨別的錯誤進行糾正,例如筆誤、空指針錯誤等。
照片
設計階段:對指導書進行精讀,設計整體邏輯架構和類。

編程階段:一人主筆,一人領航,交替進行。


在后期由於課業原因不方便同時在線時,我們還選擇了分工協作的方式,每人負責相對獨立的方法實現,push后對方對其進行檢查。
設計思路
在初期設計時,我們充分融合了linux哲學核心思想:一切皆文件,並參考了Google開源java7文件系統實現源碼,對於本次結對任務的初期架構進行了如下設計:

-
MyFileSystem
文件系統核心類。記錄了root和currentPosition兩個目錄入口。
-
DirectoryEntry
目錄入口類。用於管理目錄下的所有文件(包括目錄文件、普通文件)以及文件樹的上下級關系。
-
File
抽象類,“一切皆文件”中的“文件”,所有文件的父類,定義了一些文件的統一屬性。
-
RegularFile
普通文件,繼承File抽象類。
-
Directory
目錄文件,繼承File抽象類。
在完成本次任務的架構設計后,我們嘗試使用TDD(測試驅動開發)的開發流程,使用JUnit4模塊為MyFileSystem類需要實現的接口方法建立測試。通過基本設計框架的確定,以及測試模塊的搭建,更好地指導了本次任務的開發和功能實現。
時間規划
| PSP2.1 | Personal Software Process Stages | 預估耗時(分鍾) | 實際耗時(分鍾 |
|---|---|---|---|
| Planning | 計划 | 90 | 90 |
| Estimate | 估計這個任務需要多少時間 | 360 | 600 |
| Development | 開發 | 270 | 300 |
| Analysis | 需求分析 (包括學習新技術) | 30 | 30 |
| Design Spec | 生成設計文檔 | 10 | 10 |
| Design Review | 設計復審 (和同事審核設計文檔) | 10 | 10 |
| Coding Standard | 代碼規范 (為目前的開發制定合適的規范) | 0 | 0 |
| Design | 具體設計 | 30 | 30 |
| Coding | 具體編碼 | 120 | 120 |
| Code Review | 代碼復審 | 120 | 300 |
| Test | 測試(自我測試,修改代碼,提交修改) | 120 | 300 |
| Reporting | 報告 | 60 | 60 |
| Postmortem & Process Improvement Plan | 事后總結, 並提出過程改進計划 | 20 | 20 |
整體來看,設計和主要代碼的編寫過程比較順利,后期的測試花費了比想象中更多的時間。
