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