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