第三次作业
本次作业题目:
-
本周的作业请参照此文:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html 制定本组项目的GitHub版本更新流程。
-
制定本组的代码规范、GitHub提交源码的标准。
- 组长组织每周例会(可以使用群微信群试验一下每天沟通项目开发进度的方法)需要有证据能够在博客上公布
- 根据邹欣老师的教材相关内容,确定小组成员的角色,细化项目需求、时间计划、列出产品积压工作项和预计开发时间
我们的解答:
1.GitHub版本更新流程(王旭阳)
根据使用Github Flow 的前提条件:
- 团队规模控制在15人之内
- 部署作业完全自动化。必须自动化,一天之类需要多次部署
- 重视测试
- 让测试自动化
- 编写测试代码,通过全部测试
- 维护测试代码
由于本次项目比较小,所以使用Github flow即可
Github flow是以部署为中心的开发模式,通过简单的功能和规则,持续且高速 安全地进行部署。在实际开发中往往一天之内会实施几十次部署,而支撑这一切的,就是足够简单的开发流程以及完全的自动化。
由上图所示,有以下特点:
- 令master 分支时常保持可以部署的状态
- 进行新的作业时要从master 分支创建新的分支,新分支名称要具有描述性
- 在2新建的本地仓库分支中进行提交
- 在Github 端仓库创建同名分支,定期push
- 需要帮助、反馈,或者branch已经准备merging时,创建Pull Request,以Pull Request 进行交流
- 让其他开发者进行审查,确认作业完成后与master分支进行合并(合并的代码一定要测试
- 与master分支合并后,立刻部署
2.代码规范、GitHub提交源码的标准(徐怡琳)
Java代码风格规范
(1)方法注释中必须使用相关关键字标识出参数的具体含义,返回值的含义。
/* * @param numerator 操作数分子栈 * @param denominator 操作数分母栈 * @param ChaStack 操作符栈 */ Stack<Integer> numerator = new Stack<Integer>(); Stack<Integer> denominator = new Stack<Integer>(); Stack<Character> ChaStack = new Stack<Character>(); /** * @return 最小公倍数 **/ private int Minfunc(int a, int b) { return a * b / Maxfunc(a, b); }
(2)用英文命名变量名,在没有合适词语的情况下,可以考虑汉语拼音。循环语句中的局部变量可以使用单个字符,如i,j。
(3)定义变量名、函数名、类名避免使用长名字,最好不要超过15个字符。
(4)避免使用相似或者仅在大小写上有区别的名字。
(5)必须使用{}闭合,即使只有单行语句,且每个”{”和”}”都独占一行,格式如下:
If(condition)
{
DoSomething();
}
Else
{
DoSomethingElse();
}
(6)使用Tab作为缩进,并设置Tab缩进为4。
(7)不要把多个变量定义在同一行上。
错误示范:
int a,b; if(fFoor) Bar();
正确示范:
int a; int b; if(fFoor) { Bar(); }
(8)所有类型/类/函数名都用Pascal形式,即所有单词的第一个字母都是大写,如Member、ProductionInfo等。
(9)表达式较长时,需要注意用小括号控制表达式的优先级。
(10)在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如.),后不应加空格。
说明:采用这种松散方式 编写代码的目的是使代码更加清晰。
由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要留空格,如果语句已经足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号见不必加空格,因为在Java语言中括号已经是最清晰的标志了。
eg:
1)逗号、分号只在后面加空格。
int a, b, c;
2)比较操作符,赋值操作符”=”、”+=”,算术操作符”+”、”%”,逻辑操作符”&&”、”&”,位域操作符”<<”等双目操作符的前后加空格。
if (current_time >= MAX_TIME_VALUE) a = b + c; a *= 2; a = b ^ 2;
3)“!”、”~”、”++”、“--”、“&”(地址运算符)等单目操作符前后不加空格。
flag = !isEmpty;
i++;
4)“.”前后不加空格。
p.id = pid;
5)if、for、while、switch等与后面的括号间应加空格,使用if等关键字更为突出、明显。
if (a >= b && c > d)
Java代码设计规范
(1)类属性和类方法不要交叉放置,不同存取范围的属性或者方法也尽可能不要交叉放置。
类定义 { public class; protected class; private class; public method; protected method; private method; }
(2)每个函数只完成一个功能。
(3)在Debug版本中,所有的参数都要验证其正确性,在正式版本中,对从外部传递过来的参数,要验证其正确性。
(4)不要在构造函数中做复杂的操作,简单初始化所有数据成员即可,构造函数不应该返回错误。
(5)把所有的清理工作都放在析构函数中,如果有些资源在析构函数之前就释放了,记住要重置这些成员为0或者NULL,析构函数不应该出错。
Github提交源码标准
1.先提交自己的代码
2.检查是否别人,改过远程仓库的项目代码
3.检查是否在自己的仓库下
4.将修改好的最新代码推送的自己的远程仓库
3.小组讨论(王旭阳、徐怡琳、杨星星、刘高生)
我们建立了一个微信群,用来讨论一些相关事宜,下面四张截图时对开发环境等问题的讨论:
以上为在微信上讨论的部分截图
还有本周在一个小会议室进行小组例会,把各项列出来结果图如下:
下面图显示了小学生四则运算基本需求:
下图列出了本周作业应该完成的,写在博客上的东西:
4 需求分析(杨星星)
需求分析
需求分析是指对要处理的问题进行详尽的分析,弄清楚要处理的问题的实际要求,确定软件系统功能,统计分析其能够完成的可能性大小,保证即将开发的软件的意义性。在一个软件工程中,需求分析为一关键性步骤。
1 可行性分析
1.1 经济可行性
由于小学生四则运算系统本身并不复杂,并且操作起来十分方便,开发人员为小组内四位学生,因此其开发费用相对来说很低,只需要每个人有自己的电脑,将环境变量讨论完整后共享一下即可。
因此,开发本四则运算系统在经济上是完全可以接受,即其在经济上是可行的。
1.2 技术可行性
本小学生四则运算系统对软、硬件系统要求比较低,所需硬件设备均可选择原有设备,软件选择中采用Windows操作系统,选择MyEclipse+JDK 8作为开发工具,运行起来特别方便,通俗易学,可用性高。本系统开发时引入面向对象的程序设计思想,运用发展较成熟且仍在不断完善的的JSP技术,可以直接使用大量已经编好的JSP程序。由于JSP易学易用,对开发人员的要求较低。数据库管理系统采用MySQL Server,它在数据仓库、数据库和电子商务解决方案中起着关键性作用,可以完美支持企业的数据管理,并提供有效的数据管理,保证数据的完整性、安全性、可靠性和易用性等等【1】。另外,本小学生四则运算系统采用Browser/Server模式进行开发设计,相对容易把握,可运行于任何网络结构;初步设计本系统采用Spring MVC框架实现系统的开发,结合H—UI框架,使前端尽量美观大方。
本小学生四则运算系统所用技术与软件在当今应用市场已经被广泛应用,在技术上发展的都比较成熟,因此在技术上也是可行的。
1.3 操作可行性
本小学生四则运算系统的操作界面简单明了,直观友好,且可视化界面统一规范,功能齐全,可为使用者提供良好的用户体验,用户很容易理解并实现相应操作。因此,本实验室排课系统在操作上也是可行的。
2 功能需求分析
本实验室排课系统的设计最核心的功能是实现四则运算练习,包括简单四则运算、混合四则运算以及真分数四则运算,同时需要有基本的登陆、注册和查询功能。本部分将本系统分为三个模块,注册/登录模块、查看模块、练习模块。
2.1 注册/登录模块
用户输入自己的用户名和密码,若还没有账号,用户可以新建账号,登录之后进入系统主页;若当前用户存在,则验证用户名和密码是否匹配,若不匹配,则提示“密码错误!”,若匹配,则进入系统菜单页面。
对应用例图如图3.1系统登录模块用例图所示:
图3.1 系统登录模块用例图
2.2 查看模块
(1) 查看得分记录;
(2) 查询做题时长;
(3) 查看正确答案
对应用例图如图3.2系统查看模块用例图所示:
图3.2 系统查看模块用例图
2.3 练习模块
(1) 可供选择练习的有简单四则运算、混合四则运算以及真分数四则运算。
(2) 系统自动生成20道题目供用户解答,解答完成后提交即可查看答题正确情况并得到相应的分数。
对应用例图如图3.3系统练习模块用例图所示:
图3.3 系统练习模块用例图
3 性能需求分析
一个系统开发完成后必须具备良好的性能,这样才能称得上好的系统,本实验室排课系统的性能需求分析如下:
信息完整性:必须确保信息的完整性,出现信息录入不符合系统要求时,要给出明显的提示信息,保证及时的人机交互。
界面友好性【2】:必须保证操作界面简单明了,颜色、组件、图标和文本方面进行综合考虑交互性,要减少用户的记忆压力,保证结构统一即保证界面的一致性【3】,并且布局要合理,基本功能都可以很好的实现,尽量保证功能的完善性。
要遵循主流的标准和规范:这为系统在其它平台上运行提供了可能性,可以简化系统的开发过程,参考前人的开发结果,便于后来开发者的借鉴,可以得到很好的传播,符合时代的进步。
参考文献
[1] 刘增杰.张少军.MySQL从零开始学.清华大学出版社.2013/2
[2] 徐云飞.网站界面设计艺术与技巧[J].美术大观,2009(2)
[3] 李岩.网站可用性设计研究探析[J].中国电力教育,2008(S3)
5 第四题(刘高生)
1.首先确定我们组各个成员的角色(具体还要根据项目再协调):
需求分析:杨星星,王旭阳
整体架构:王旭阳 ,徐怡琳
数据库设计:杨星星
功能模块的完成:徐怡琳,杨星星,刘高生
测试:刘高生
2.时间计划
**预计开发时间一个月,各阶段具体开发时间如下:
(1)第一阶段: 九月25号到10月1号,需求分析,并细化项目的需求;
(2)10月2号至5号数据库设计阶段,完成各数据的设计及说明各个表之间的关系
(3)10月6号到20号,完成各个功能模块;
(4)10月20号到24号测试软件,并进一步完善。
**产品积压项
用户:小学生或者家长
需要执行的操作:注册,登录,选择答题的模式,查看错题;
执行操作的原因:每个用户都应该具有一个独立的账号并登录,每个用户都有
选择答题模式的权利并通过查看错题来进行强化练习来提高自己的成绩。