前言
最近应 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)
正文
引言
这个学期我们上了网络课,学习了 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编号 (登陆时用)
姓名
口令
Email
性别
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)
|
要限制密码长度
|
Email
|
Email
|
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.需求开发-需求人员不仅仅是描述清楚用户需求,而更多的应该是去开发用户需求,去挖掘用户的潜在需求。
通信协议表
本博客为学习交流用,凡未注明引用的均为本人作品,转载请注明出处,如有版权问题请及时通知。由于博客时间仓促,错误之处敬请谅解,有任何意见可给我留言,愿共同学习进步。