最近應 P2P 課程的要求,組織了六個同學開發取名為 NesQQ 的小系統。等開發完, 會把他共享,供初學者學習,現在只把開發控制文件共享。傳統的項目會有啟動,開發,實施,收尾的過程,而在這個項目中,結合實際,只做了個控制文件,俗話說麻雀雖小五臟俱全。感謝所有參與這個項目的人員,你們已經開始 Open Source 的第一步。關注 Java, 關注開源。
第二次會議記錄
1. 時間
2007-10-24 星期三
2. 地點
501 教室
3. 參加人員
XXX 小組全部成員
4.主要內容
4.1 討論參考文檔內容
4.2 討論需求
4.3 確認 2007-10-28 再次開會
第三次會議記錄
時間:2007-10-31
地點:227 寢室
1. 近一周的進展情況
2. 進一步明確需求
3. 討論設計實現(每個人都發表意見)
4. 分工及協助方式(沒有時間限制,但會有里程碑和緩沖時間)
5. 相關經驗介紹 (每個人都發言, show yourself)
正文
案卷號 |
01 |
版本號 |
1.0 |
日期 |
2007-10-17 |
<通訊系統NesQQ>
小組開發參考文檔
作 者: 汪保杰
完成日期: 2007-10-17
簽收人:
簽收日期:
修改情況記錄:
版本號 |
修改批準人 |
修改人 |
安裝日期 |
簽收人 |
|
||||
引言
引言
這個學期我們上了網絡課,學習了 TCP/IP 協議,也看了林老師發給我們的 winsock 代碼,我們對 socket 編程有了一定的了解,但這還不夠。故此,學校組織了一些專題講座,也組織同學以組為單位開發關于 socket 方面的小系統,小組最多 6 個人。
小組人員: 彭東石,周鑫,李鵬,龍曉泉,鄺月娟, 汪保杰(組長)
人員簡單介紹:
彭東石: 擅長硬件,在深圳工作兩年, 熟悉語言 C++, 做過team leader pdongshi@foxmail.com
周鑫: 擅長軟件開發,原軟件學院學生,目前在公司做項目. 熟悉 C#,Java 語言zhouxin830723@163.com
李鵬: 擅長軟件開發, 熟悉 Java 語言.lipeng82@126.com
龍曉泉: 擅長軟件開發, 熟悉 Java 語言.lxq5270@163.com
鄺月娟: 擅長軟件開發, 熟悉 Java 語言.kyjnihao@yahoo.com.cn
汪保杰: 擅長軟件開發, 在深圳工作3年多,熟悉 C++, Java,做過系統分析員 wbjeasygo@163.com
開發方式:
先給大家一開源的 Demo 一下,大家以他為開發模板完成開發工作。
大家盡量用網絡資源學習。
1 編寫目的
為了明確小組系統開發范圍以及開發注意事項,同時也叫部分沒有參與過系統開發的同學了解軟件開發過程是一個什么樣的過程,本次開發,一是要從中學習技術,二是要學習如何管理一個項目,尤其是處于我們這種模式的項目(人很分散,部分人不能上手開發)。這對大家都是一個挑戰。
關于開發相關的文檔合并在這一個文檔里,供開發時參考。同時此文檔也作為一個交流平臺。
目的很明確,希望大家能從這次開發中學到些東西,可能不只是開發哦!
2 范圍
A 軟件名稱:簡易通訊系統 NesQQ
B 軟件功能:
分兩個層次 (兩次迭代完成,至少完成第一層次功能)
1. 基本的 p2p交流
包括登陸模塊,管理好友模塊, 群功能模塊,特定好友聊天模塊
2. 文件共享,視頻,語音功能
3 參考文件
《Thinking in java》
《Java 編程規范》
《Java 1.5 API》
《Java 高級編程》
《Swing , SWT,JFace編程》
4 溝通方式
1. 每天利用課余時間交流
2. 每個星期開個小會
3. QQ 群為我們的即時通訊工具, 必要時可以用 Email
5 技術與工具
1. Java 語言 (1.5), 開發工具 eclipse 3.2
2. 數據存貯可以考慮 DB(sqlserver).
3. 建模工具用 StarUML , PowerDesigner
6 WBS (人員分配,進度計劃)
1. 簡易通訊系統 NesQQ
1.1.前期準備
1.1.1 需求確認 (OK,(ALL))
1.1.2 分析設計 (OK,(ALL))
1.2. 第一次迭代
1.2.0. 數據中心模塊 (保杰)
1.2.1. 登陸模塊 (東石)
1.2.2. 用戶管理模塊
1.2.2.1 好友查詢(小泉)
1.2.2.2 用戶注冊(月娟)
1.2.2.3 查看所有聊天記錄(小泉)
1.2.2.4 組功能模塊(保杰)
1.2.3. Socket 封裝 (周鑫)
1.2.4. 聊天模塊 (周鑫)
1.2.5. 主界面模塊(李鵬)
1.2.6. 服務器模塊(取消)
1.3. 第二次迭代 (目前不考慮)
1.3.1. 文件共享
1.3.2. 視頻
1.3.3. 語音
1.4. 第三次迭代
1.4.1. 功能完善,界面美化( ALL)
1.4.2. 驗收測試(ALL)
ALL: 所有人
PS: 鑒于實際情況,小組開發沒有時間限制,但會有里程碑和緩沖時間.
進度計劃:
1.9,10,11周,截止到 2007-11-16 完成基本功能,11周星期五第一次集成
﹟第一次集成里程碑
2.12 周,截止到2007-11-23,星期五,功能完善,美化
3.13 周的星期一,二,三,四 最終集成,測試,美化
﹟最終集成里程碑
4.13 周的星期五 準備報告
5.14 周為緩沖時間(可進一步完成其他功能)
﹟報告里程碑
7 用例模型
1. 參與者: 注冊用戶
2. 注冊用戶
2.1. 登陸和注冊
用例名稱 |
登陸和注冊 |
用例目標 |
提供用戶登陸系統和注冊界面 |
參與者 |
注冊用戶 |
前置條件 |
|
輸入 |
ID編號 (登陸時用) 姓名 口令 性別 UserIP 服務端口號 |
操作 |
輸入ID,Password 登陸, 輸入相關信息注冊ID |
輸出 |
登陸: 成功進入主界面 失敗彈出警告信息 注冊: 成功彈出成功信息 失敗彈出警告信息 |
后置條件 |
2.2. 好友管理
用例名稱 |
好友管理 |
用例目標 |
提供好友的管理(增加,刪除) |
參與者 |
注冊用戶 |
前置條件 |
已經登陸系統 |
輸入 |
增加: 好友 ID 群組 (將好友添加到哪個組中) 刪除: 在主界面右鍵單擊刪除 |
操作 |
|
輸出 |
好友以 Tree 結構顯示 如: 同學: 張三 李四 同事: 老師: |
后置條件 |
2.3. 組管理
用例名稱 |
組管理 |
用例目標 |
提供組的 CURD |
參與者 |
注冊用戶 |
前置條件 |
已經登陸系統 |
輸入 |
組名稱 組描述 建立者 組下面的好友 |
操作 |
|
輸出 |
以 Tree 型結構顯示 如: 同學: 張三 李四 同事: 老師: |
后置條件 |
2.4. 查看聊天記錄
用例名稱 |
查看聊天記錄 |
用例目標 |
查看和某個好友聊天的記錄 |
參與者 |
注冊用戶 |
前置條件 |
|
輸入 |
好友ID編號 |
操作 |
|
輸出 |
顯示記錄 時間 好友 內容 |
后置條件 |
2.5. 客戶模塊
用例名稱 |
客戶模塊 |
用例目標 |
提供向好友發送信息 |
參與者 |
注冊用戶 |
前置條件 |
已經登陸系統 |
輸入 |
好友名字 信息內容 信息發送時間 |
操作 |
|
輸出 |
成功與否 |
后置條件 |
2.6. 信息保存
用例名稱 |
信息保存 |
用例目標 |
當好友不在線時,將所發信息保存在數據中心 |
操作 |
有 Schedule Thread 負責信息再發送。 |
輸入 |
信息發送者 信息接受者 消息內容 消息創建時間 |
8分析與設計
數據庫設計:
用戶數據模型
屬性名稱 |
英文名 |
類型 |
備注 |
編號 |
ID |
NUMBER(10) |
自動生成 |
姓名 |
User Name |
NVARCHAR(50) |
用戶名稱 |
口令 |
Password |
NVARCHAR(16) |
要限制密碼長度 |
|
|
NVARCHAR(50) |
前端要驗證 Email 是否有效。 |
IP地址 |
UserIP |
NVARCHAR(20) |
自動獲取IP 地址 |
服務端口號 |
ServicePort |
NUMBER(5) |
提供默認值 |
分組模型
屬性名稱 |
英文名 |
類型 |
備注 |
組ID |
Id |
NUMBER(10) |
自動編號 |
組名稱 |
Name |
NVARCHAR(20) |
限制大小 |
建立者 |
UserId |
NUMBER(10) |
|
建立日期 |
CreateDate |
Date |
|
用戶和組的關系模型 (Many to Many)
屬性名稱 |
英文名 |
類型 |
備注 |
組ID |
Group Id |
NUMBER(10) |
自動編號 |
用戶ID |
User Id |
NUMBER(10) |
自動編號 |
信息數據模型
屬性名稱 |
英文名 |
類型 |
備注 |
信息 ID |
Id |
NUMBER(10) |
自動編號 |
發送者 |
Sender |
NUMBER(10) |
|
消息內容 |
Content |
NVARCHAR(255) |
限制大小 |
創建時間 |
CreateDate |
Date |
信息和接受用戶的關系 (one to many) 目前先實現單用戶發信
屬性名稱 |
英文名 |
類型 |
備注 |
信息 ID |
message Id |
NUMBER(10) |
自動編號 |
用戶ID |
User Id |
NUMBER(10) |
自動編號 |
數據庫名稱 nesQQ
用戶名/密碼 nesQQ/nesQQ
系統設計:
物理結構圖:
概要設計:
基于 P2P 思想,每個 Peer 實現 client和Server 兩個功能。對應兩個端口。
一個端口負責服務,一個端口負責發送消息。
當好友不在線時,將數據存儲在數據中心(Client 端有專門的線程負責重發)
(目前好友不在線,不能聊天)
9 參考界面(參考)
1. 登陸界面
2. 其他
10測試
單元測試:
在提交代碼時必須保證已經進行過完整的單元測試。可以考慮用 JUnit 自動測試或者是用界面驅動測試.
集成測試:
大家確保將完整的 Source code 提交給我,由我進行集成,等測試 ok 之后,在將新的 Source code 轉給大家 (簡單的協作實現軟件的配置管理)
組內驗收:
開會演示,當前成果.
11 公開演示
項目提交,相關文檔制作 (演示 ppt) 由組長負責,其他事項由東石組織.
12 項目總結
附錄:
對于需求不明確和需求變更多的應對措施主要有:
1.快速原型-盡快給用戶一個快速原型啟發用戶的需求。
2.增量迭代-整個開發中遵循增量迭代的思路,加強各階段與用戶的溝通,對各個功能逐步完善本文轉自項目
3.架構考慮可擴展性-架構和設計都要考慮是為變更而設計,而不僅僅是滿足當前需求。
4.需求開發-需求人員不僅僅是描述清楚用戶需求,而更多的應該是去開發用戶需求,去挖掘用戶的潛在需求。
通信協議表
本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。