《团队作业第二周》五小福团队作业——UNO

一、修改完善上周提交的需求规格说明书

  • THE FIRST改变
  • 首先:我们组的博客无小组分工及占比,这是第一个问题,当时我们在写博客的时候由于很多问题都在讨论筹备当中,因此,在写博客的时候并没有及时的添加小组分工及占比。后来当我们将初步工作全部完成后之后我们在博客中补充了该内容。
    我们小组的分工占比如下:
成员 分工 占比
郭恺 界面设计,原型设计需求分析,代码初步设计 20%
段志轩 用例图设计,代码设计和部分编写 20%
李馨雨 博客和需求说明书的撰写,功能说明图 20%
王文彬 主要几种方法代码的编写 20%
李楠 用例图设计,界面设计 20%
  • THE SECOND改变
  • 其次:我们组在提交的时候并没有给出用例图。因为我们刚开始的时候并不知道用例图的作用,以为它和我们之前做的功能介绍图一样,后来在看了刘伟康学长的博客之后才知道用例图也需要给出,我们小组在经过讨论之后了解到了用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。对于了解我们的软件有很大的作用。
    小组用例图如下:

  • Markdown链接
  • pdf链接

二、团队的编码规范

1、 标识符命名规范

1.1、命名约定

尽量使用完整的英文描述符,采用适用于相关领域的术语;

要采用大小写混合使名字可读;尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一;

避免使用长的名字(最好小于15个字母);避免使用类似的名字,或者仅仅是大小写不同的名字。

1.2、具体用例

  • 包(Package)

  采用完整的英文描述符,应该都是由小写字母组成。

  • 类(Class)

  采用完整的英文描述符,所有单词的第一个字母大写。 如:Card、Robot等

  • 接口(Interface)

  采用完整的英文描述符来说明接口封装,所有单词的第一个字母大写。习惯上,名字后面加上后缀 able,ible或者er,但这不是必需的。如:Contactable、Prompter。

  • 组件/部件(Component)

  使用完整的英文描述来说明组件的用途,末端应接上组件类型。 如:startButton、fileMenu

  • 类变量

  字段采用完整的英文描述,第一个字母小写,任何中间单词的首字大写,如: firstName
、lastName

  • 实参/参数

  同字段/属性的命名规则

    public void setFirstName(String firstName){this.firstName = firstName;}
  • 获取成员函数

  被访问字段名的前面加上前缀get。例如:getFirstName(), getLastName().

  • 设置成员函数

  被访问字段名的前面加上前缀 set。例如: setFirstName(), setLastName(),setWarpSpeed()

  • 方法名

  首字母小写,如 addOrder() 不要 AddOrder()
动词在前,如 addOrder(),不要orderAdd()
动词前缀往往表达特定的含义。

  • 静态常量字段(static final)

  全部采用大写字母,单词之间用下划线分隔。 MIN_BALANCE, DEFAULT_DATE

  • 循环计数器

  通常采用字母 i,j,k 或者 counter 都可以接受。 i, j, k, counter

  • 数组(Array)

  数组应该总是用下面的方式来命名:
byte[] buffer;

2、代码格式

2.1、 源文件编码

源文件使用utf-8编码。

2.2、行宽

行宽度不要超过130。

2.3、包的导入

删除不用的导入,尽量不要使用整个包的导入。

2.4、代码块格式

2.4.1、缩进风格

大括号的开始要在代码块开始的下一行的行头,闭合在和代码块同一缩进的行首,例如:

public class TestStyle extends SomeClass implements AppleInter, BananaInter
{public static final String THIS_IS_CONST = "CONST VALUE";private static void main(String[] args) {int localVariable = 0;}public void compute(String arg) {if (arg.length() > 0) {System.out.println(arg);}for (int i = 0; i < 10; i++) {System.out.println(arg);}}
}
2.4.2、空格的使用
  • 二元三元运算符两边用一个空格隔开
    如下:
a + b = c;
b - d = e;
return a == b ? 1 : 0;

  不能如下:

a+b=c;
b-d=e;
return a==b?1:0;
  • 逗号语句后如不换行,紧跟一个空格
    如:call(a, b, c);
    不能如:call(a,b,c);

    2.4.3、空行的使用

    原因:空行可以表达代码在语义上的分割,注释的作用范围,超过十行的代码如果还不用空行分割,就会增加阅读困难将类似操作。

  • 使用规则:
    • 连续两行的空行代表更大的语义分割。
    • 方法之间用空行分割;
    • 域之间用空行分割;
  • 示例:
order = orderDao.findOrderById(id);//update properties
order.setUserName(userName);
order.setPrice(456);
order.setStatus(PAID);orderService.updateTotalAmount(order);session.saveOrUpdate(order);

上例中的空行,使注释的作用域很明显.

3.、注释规范

3.1、 注释代码规范

注释宜少而精,不宜多而滥,更不能误导。

命名达意,结构清晰,类和方法等责任明确,往往不需要,或者只需要很少注释,就可以让人读懂;相反,代码混乱,再多的注释都不能弥补。所以,应当先在代码本身下功夫。不要过于详细的注释,对显而易见的代码不添加注释。

注释要和代码同步,过多的注释会成为开发的负担;注释不是用来管理代码版本的,如果有代码不要了,直接删除,不用注释掉,否则以后没人知道那段注释掉的代码该不该删除。

3.2、Java Doc

表明类、域和方法等的意义和用法等的注释,要以javadoc的方式来写。Java Doc是个类的使用者来看的,主要介绍 是什么,怎么用等信息。凡是类的使用者需要知道,都要用Java Doc 来写。非Java Doc的注释,往往是个代码的维护者看的,着重告述读者为什么这样写,如何修改,注意什么问题等。 如下:

/** 我的数组帮助类*定义一个用于操作数组的工具类。*比如:获取最值,排序,折半。*@author 张三*@version V1.0*/

具体可看博客参考

  • javadoc 和 javadoc注释规范
  • java文档注释--javadoc的用法

3.3、块级别注释

3.3.1、块级别注释

单行时用 //, 多行时用 /* .. */。

3.3.2、较短的代码块

用空行表示注释作用域

3.3.3、较长的代码块

/*------ start: ------*/

/*-------- end: -------*/包围
如:

/*----------start: 订单处理 ------- */
//取得dao
OrderDao dao = Factory.getDao("OrderDao");/* 查询订单 */
Order order = dao.findById(456);//更新订单
order.setUserName("uu");
order.setPassword("pass");
order.setPrice("ddd");orderDao.save(order);
/*----------end: 订单处理 ------- */

3.4 行内注释

行内注释用 // 写在行尾

4.选择理由

  • 首先,这样方便软件维护。据统计,80%的软件开发费用在维护,规范化的代码才方便维护,降低维护成本。
  • 其次, 好的编码规范能够大大增强代码的可读性,便于开发人员快速的理解新代码。任何产品都需要好的包装。我们可以把代码本身看作是一种产品,那么按照规范编程也是对这个“产品”的包装 。
  • 另外,规范化的代码也是软件质量的保证手段之一,也是软件过程能够流畅的基础。我们每个人必须牢牢树立这样的观念:你今天所编写的代码,会一直使用很多年,并且很有可能被其他人维护和改进。所以,我们必须努力写出“干净”和易读的代码。本文档适用于软件开发过程中开发人员,主要包括编码人员、测试人员,开发人员,规范必须严格遵守,否则程序被视为不合格程序。

三、团队项目的数据库设计及相应ER图

由于我们组的数据库较为单纯,只需要存储用户的姓名、账号和密码以及用户在游戏中的排名和成绩,故我们的ER图较为简单。

四、项目的后端架构设计

  • 我们小组使用Xmind实现如下:

  • 登录界面
    首先跳出一段我们制作的欢迎动画,让玩家感受到满满的游戏画面感。
    然后进入登录界面
    登录界面包括两个内容,注册与登录。
    若已经注册则直接点击登录进入游戏,若尚未注册则点击注册进入注册页面,待注册完毕后登录进入游戏。
  • 准备界面
    准备界面包括开始游戏、退出游戏、游戏介绍。
    点击开始游戏即可进入下一个界面,下一个界面包括继续上次游戏和选择游戏场规模两个选项;若选择继续上次游戏就直接进入游戏界面继续游戏,若单击选择游戏场规模就进入对游戏场的选择。一共有四个游戏场规模的选择,分别是三人场、四人场、五人场和无限场(不对牌的数量做限制)。再通过选择后进入游戏场。
  • 游戏界面
    游戏界面包括以下内容:
    (1)牌类
    该内容显示你现在所拥有的所有手牌,以及不同分类,还有其他玩家的手牌个数,牌堆剩余个数。
    (2)功能按钮类
  • 一键整理按钮:可以整理你的手牌
  • 选色按钮:为下一家指定颜色。
  • 出牌按钮:选定你选择的牌并点击出牌,若是满足游戏规则就正常出牌,若是不满足就报错给玩家。
  • 菜单栏
    • 存档:保存当前游戏,下次可在准备界面中选择继续游戏。
    • 音乐选择:可以选择打开或者关闭
    • 重来:重新开局
    • 退出:直接退回开始的主界面。

五、团队分工

成员 分工
郭恺 负责有关Android界面设计
段志轩 负责Android数据库,存放用户名、密码、用户分数
李馨雨 代码规范,后端设计,学习动画设计
王文彬 设计纸牌还有牌类完善
李楠 整理博客,学习Android数据库

【注】个别成员在没有具体工作时会进行动态分配。

  • 利用象限法确定各个核心需求的优先级:
  • 功能介绍图(WBS):

六、TODOList及燃尽图

  • TODOList的项目添加
  • 码云上的Issue:
  • github上的Issue:
  • 燃尽图:(仅本周任务)

七、本次分工及工作量比例

成员 个人贡献及完成度 占比
郭恺 界面的制作,学习了github完成燃尽图 20%
段志轩 通过Powerdesigner完成团队项目的数据库设计,并在随笔中提供了相应ER图。 20%
李馨雨 进行项目的后端架构设计 ,制定团队的编码规范,添加了issues 20%
王文彬 编写代码,确定每个子功能的工作量 20%
李楠 整理博客,利用象限法确定各个核心需求的优先级 20%

八、本周小组会议及交互总结

  本周的共同学习时间太少,讨论时间不够,大家做事效率比较低,整体氛围有待缓冲提高。

  在本周,我们小组共同确定了任务方向、制定了工作计划和任务。代码方面王文彬同学较好的完成了自己的工作,将bug整改了;李馨雨同学也学习了XMIND来完成了后端设计并制定了团队的编码规范,郭恺同学也着手部分界面设计和AS学习,段志轩同学也完成了自己负责的数据库方面,李楠同学做了象限图、用例图和博客的整理。

  下一周我们将投入更多时间去攻坚克难,希望所有小伙伴们不要掉以轻心,多多做好自己分内的工作,互帮互助,努力写好小组项目的新篇章!

参考资料汇总

  • [Java和Android开发学习指南](第二版)
  • 使用Github生成燃尽图
  • 分而治之(Work Breakdown Structure, WBS)
  • xmind新手入门教程
  • ER图的绘制

转载于:https://www.cnblogs.com/LXY462283007/p/10053861.html

《团队作业第二周》五小福团队作业——UNO相关推荐

  1. 《团队作业》五小福团队--UNO的博客链接汇总

    <团队作业>五小福团队--UNO的博客链接汇总 <团队作业第一周>五小福团队作业--UNO <团队作业第二周>五小福团队作业--UNO <团队作业第三.第四周 ...

  2. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day6

    <团队作业第三.第四周>五小福团队作业--Scrum 冲刺阶段--Day6 一.项目燃尽图 二.项目进展 [20172301郭恺第六天的进展] 第五天完成的任务: 点击牌会抬起.选中牌的图 ...

  3. 《团队作业》五小福团队作业--UNO-- LandingDay--降落

    <团队作业>五小福团队作业--UNO-- LandingDay--降落 写在前面 几周的飞行之后,降落之日也如期而至了.在2018年12月19日我们顺利地完成了项目的总结汇报.但是,短暂的 ...

  4. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day5

    <团队作业第三.第四周>五小福团队作业--Scrum 冲刺阶段--Day5 一.项目燃尽图☈ 二.项目进展 [20172301郭恺第五天的进展] 第五天完成的任务: 开始界面的图形设计和完 ...

  5. 团队项目第二周 - 需求规格说明书 - 天冷记得穿秋裤队

    团队项目第二周 - 需求规格说明书 - 天冷记得穿秋裤队 队员姓名 学号 陈俊旭(组长) 3116004630 夏瓦克提·木合塔尔 3116004658 张婷(副组长) 3216004672 周方源 ...

  6. 团队大作业第二周周报

    团队大任务第二周总结 本周小组分工 咖啡机的物理建模 我,赵宏伟 基于Stateflow设计各个软件模块的控制逻辑和算法 赵言明,吴彦均,方葵 本人完成工作 这周因为我另外参加的UROP项目面临结项答 ...

  7. 团队作业第二周刘先润个人篇

    我选取的游戏app软件是极品钢琴(Just Piano) 1.此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的? 他们的目标都是盈利么? 他们的目标都是赚取用户的现金么? ...

  8. 团队作业-第二周-测试计划

    第1章引言 1.1目的 本测试计划文档作为指导此测试项目循序渐进的基础,帮助我们安排合适的资源和进度,避免可能的风险.本文档有助于实现以下目标: 1) 确定现有项目的信息和应测试的软件结构. 2) 列 ...

  9. 《吴恩达深度学习》编程作业-第二周

    目录 1.题目:基于神经网络思维模式的逻辑回归 2.声明 3.知识回顾 4.Python编程分析 4.1.导入需要用的库 4.2.数据处理 4.2.1.读取数据(包括训练集和测试集) 4.2.2.取出 ...

  10. Linux内核分析作业第二周

    操作系统是如何工作的 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 1.计算机工作三 ...

最新文章

  1. 12C OCP 1Z0-063 题库(8月以前)
  2. JDK各版本内容和新特性
  3. Windows环境下搭建React Native
  4. pwn学习总结(五) —— 堆溢出经典题型整理
  5. python 主语_前深度学习时代--FFM模型的原理与Python实现
  6. Shiro切入Spring的方式
  7. KMP算法详解 网络上转的。。。仰慕此人
  8. 嵌入式Linux系统编程学习之三十一线程的属性
  9. 使用IntelliJ IDEA创建SpringMVC项目
  10. Python 字典(Dictionary) 基本操作
  11. java 视频合并_java 实现分段视频合并
  12. 二维码生成(js实现)
  13. Laravel的env和config傻傻分不清?
  14. 机械--NX2007(UG)--间隙分析(干涉检查)
  15. 为什么玩转Power BI一定需要Office 365
  16. DCL(数据控制语言)和TCL(事务控制语言)
  17. Chrome Extension 小试牛刀
  18. 终于把“翻转课堂”、“微课”和“慕课”说明白了
  19. android studio 中配置groovy源码_麻省理工教程:使用Unity AR Foundation在AR中查看模型...
  20. 声源定位与stm32示例

热门文章

  1. 液晶屏的接口信号RGB_TTL、LVDS、MIPI
  2. word怎么恢复自动保存_如何使用自动恢复自动保存Word文档并恢复丢失的更改
  3. 照相馆、摄影工作室如何利用选片和底片下载来做微信公众号吸粉
  4. 软件定义网络入门学习笔记3-学习第一个ryu app-simple_switch_13.py
  5. zabbix监控系统--详细安装教程
  6. 代码题(23)— 数组中的最长山脉
  7. 关系型数据库的发展历史
  8. pr导入srt字幕显示因文件头错误而不能打开,或pr导入字幕乱码
  9. Ajax请求下载文件
  10. GMQ钱包积极打造并维护区块链健康生态的发展