团队作业八——第二次团队冲刺(Beta版本)第7天&项目汇总
项目汇总
第一天:http://www.cnblogs.com/newteam6/p/6879383.html
第二天:http://www.cnblogs.com/newteam6/p/6880788.html
第三天:http://www.cnblogs.com/newteam6/p/6884975.html
第四天:http://www.cnblogs.com/newteam6/p/6895437.html
第五天:http://www.cnblogs.com/newteam6/p/6895446.html
第六天:http://www.cnblogs.com/newteam6/p/6905238.html
第七天:http://www.cnblogs.com/newteam6/p/6910784.html
conding地址:https://git.coding.net/lizhiqiang0x01/Beta-APPsizeyunsuan.git
源代码下载:四则运算源代码
APK下载:四则运算.apk
团队作业八——第二次团队冲刺(Beta版本)第7天
一、每个人的工作
(1) 昨天已完成的工作
登录注册功能的完善与实现和简单测试模块的优化
(2) 今天计划完成的工作
修复昨天写入SD存储卡文件权限问题,以及中级和高级功能的实现。
(3) 工作中遇到的困难
错题本功能的具体实现过程出现问题,因为有一些知识不了解。通过学习后逐步解决了问题。
(4) 每个人的贡献比
二、燃尽图
三、代码
package com.example.asus.appsizeyunsuan1; import android.content.Intent;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.*; public class JieguoActivity extends AppCompatActivity {
private TextView rank=null;
private TextView rank_name=null;
public String cuoti=null; @Override
protected void onCreate(Bundle savedInstanceState) { rank_name=(TextView)findViewById(R.id.textView7);//用TextView显示值
rank=(TextView)findViewById(R.id.textView13);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jieguo);
Intent intent1 = getIntent();
rank=(TextView)findViewById(R.id.textView13);
cuoti = intent1.getStringExtra("date");
rank.setText(cuoti+"%");
readSDcard(); } private void readSDcard() {
// StringBuffer strsBuffer = new StringBuffer();
try {
// 判断是否存在SD
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/Android/rank.txt");
// 判断是否存在该文件
if (file.exists()) {
rank_name=(TextView)findViewById(R.id.textView7);
// 打开文件输入流
FileInputStream fileR = new FileInputStream(file);
BufferedReader reads = new BufferedReader(new InputStreamReader(fileR));
String st="",net="";
while ((st = reads.readLine()) != null) {
net=net+st+"\n";
}
rank_name.setText(net);
fileR.close();
}
}
/* BufferedReader br=new BufferedReader(new FileReader(Environment.getExternalStorageDirectory().getPath() +"/rank.txt"));
String line=null;
while( (line=br.readLine())!=null){
rank_name.setText(line);Toast.makeText(this,"正常", Toast.LENGTH_SHORT).show();
}*/
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this,e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
https://git.coding.net/lizhiqiang0x01/Beta-APPsizeyunsuan.git
四、模块部分截图
五、项目进展
今天我们将所有的简单版本内容都实现了(主要是实现了错题本功能)
六、小结
项目方面:总的来说,我们是在一步一步向我们的目标靠近,我们修补了昨天的bug,但由于今天被其他事情影响了,没有按时能完成所有功能,今天的部分只完成了一半,我们争取明天补上。我们还是一步一步按每天的安排走的,尽最大努力完成每天的任务量,解决不了的和事发突然的,也只能延到后面,但是我们的拖延症已经慢慢好了,我们总体也越来越完善了。
团队方面:每个人都在努力最好自己的角色,看着大家也都越来越投入了,项目经理每天都给每个人分配任务并时不时的督促,导致大家都按时完成自己的任务,大家之间的默契和配合度越来越高,做东西也越来越上手了,每个人对自己的part也越来越有责任感了。
七、站立会议图片
关于代码的十个问题:
0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新、最稳定版本的软件编译出来,并运行必要的单元测试? (在这过程中,不需要和老队员做任何交流)
只是有一个文档用来指导,使新来的队员能够成功的运行代码,感觉会有点难度,因为考虑到环境搭建需要相应的版本才能够兼容,所以我们在前期需要老队员相应的指导。
1. 你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?
场景: 程序员果冻正在对几个文件进行修改,实现一个大的功能,这时候,程序员小飞也要改其中一个文件,快速修复一个问题。怎么办?
一个代码文件被签出 (check out)之后,另一个团队成员可以签出这个文件,并修改,然后签入么?
有几种设计,各有什么优缺点?
例如,签出文件后,此文件就加锁,别人无法签出; 或者, 所有人都可以自由签出文件
我们源代码是统一时间Git到coding上面的,在白天完成代码功能后,我们团队把各自负责的代码统一运行看是否可以做到正常输出。在签入签出问题上,由于我们在晚上统一整理代码,所以在这方面我们并没有明确的分隔,设定锁。
2. 如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。
场景: 程序员果冻看到某个文件被修改了,他怎么看到这个文件在最近的修改究竟改了哪些地方? (例子)
场景: 程序员果冻看到某个文件在最新版本被改动了100 多行, 那么和这100多行对应的其他修改在什么文件中呢? 这个修改是为了解决哪些问题而作的呢? 那些问题有工作项 (work item,issue),或者bug 来跟踪么?
这个问题还是比较容易解决的,应为coding托管代码功能还是比较齐全的,我们可以通过提交历史记录和文件对比很快发现最近修改了哪些地方,通过左右分页对比可以很明显发现修改文件的哪一行,在每一次上传代码时,对其进行响应的备注从而知道为什么问题解决的。
3. 如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?
在签入修改代码时,coding会自动合并git代码不同的部分并加以分页对比,让原程序编写者知道,在签入时需要对其进行告知。
4. 你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性),或者同时签入不成功?
场景: 程序员果冻要签入 20 个文件,他一个一个地签入, 在签入完5 个 .h 文件之后, 他发现一些 .cpp 文件和最新的版本有冲突,他正在花时间琢磨如何合并... 这时候, 程序员小飞从客户端同步了所有最新代码, 开始编译, 但是编译不成功 - 因为有不同步的 .h 文件和 .cpp 文件! 这时候, 别的程序员也来抱怨同样的问题,果冻应该怎么办?
在签入代码之前,本人应当现在本机上测试,测试通过,便可以很放心的将代码直接签入其中,如果测试不通过,就继续在本机上测试修改知道解决版本冲突问题。
5. 你的PC 上有关于三个功能的修改, 但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。
可以到coding上下载原始的源代码,通过直接运行源代码修改,修改完毕,然后再将修复好的bug源代码重新上传到coding上。
6. 规范操作和自动化
你的团队规定开发者签入的时候要做这些事情:
运行单元测试,相关的代码质量测试。
代码复审 (要有别的员工的名字)
和这次签入相关的issue 编号, 任务/task, 缺陷/bug 编号,等等, 以备查询。
请问你的团队有这样的自动化工具让开发者方便地一次性填入所有信息然后提交么? (高级功能, 代码提交之后, 相关bug 的状态会改动为 “fixed”, 并且有链接指向这次签入。)
暂时还没有这样的工具,后期考虑尝试一下。
7. 如何给你的源代码建立分支?
场景:你们需要做一个演示,所以在演示版本的分支中对各处的代码做了一个临时的修改, 同时,主要的分支还保持原来的计划开发。 你们怎么做到的? 在演示之后,演示版本的有些修改应该合并到主分支中,有些则不用,你们是怎么做到的?
场景: 你们的软件发布了,有很多用户,一天,一个用户报告了一个问题,但是他们是用某个老版本,而且没有条件更新到最新版本。 这时候,你如何在本地构建一个老版本的软件,并试图重现那个问题?
让组员都拥有自己的源代码分支,通过coding比较容易实现。
8. 一个源文件,如何知道它的每一行都是什么时候签入的,为了什么目的签入的 (解决了哪个任务,或者哪个bug)?
场景: 一个重要的软件历经几年,几个团队的开发和维护,忽然出现在某个条件下崩溃的事故, 程序员果冻经过各种debug手段,发现问题是在某一个文件中有一行代码似乎显然出了问题, 但是这个模块被很多其他模块调用, 这行代码是什么时候,为了什么目的,经过谁签入的呢? 如果贸然修改, 会不会导致其他问题呢? 怎么办?
将提交代码到coding上,之后修改后会再次重新提交,会产生修改记录,在记录上面会有时间,这样就能查看这行代码是什么时候签入的或者是谁签入的就可以看到记录;通过commit -m命令可以看到为了什么目的签入的。
9. 如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?
代码每天都在变, 有时质量变好,有时变差,我们需要一个 Last Known Good (最后稳定的好版本) 版本, 这样新员工就可以同步这个版本, 我们如果需要发布,也是从这个版本开始。 那么如何标记这个 Last Known Good 版本呢?
Last Known Good 版本可以理解为基线版本,通常情况下每次正式上线的版本都会打基线,即备份这个版本的源代码和发布包
10. 你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?
在签入之前,程序员能否自动在自己的机器上运行自动测试,以保证本地修改不会影响整个软件的质量?
在程序员提交签入之后,服务器上是否有自动测试程序, 完成编译,测试,如果成功,就签入,否则,就取消签入?
团队是否配置了服务器,它自动同步所有文件,自动构建,自动运行相关的单元测试,碰到错误能自动发邮件给团队
测试目前的确是我们团队一个一个短板,场景所提到的自动测试程序我们几乎没有。如今Beta的开发阶段已经过去,也仅是对成员做出测试数据记录以及测试日志的上传,测试强度依然欠缺。从现在到项目展示的这段时间,我们会尤其重视测试。如若时间条件允许,也会编一个自动测试程序进行各个变更集的编译测试。
团队作业八——第二次团队冲刺(Beta版本)第7天&项目汇总的更多相关文章
- 团队作业八——第二次团队冲刺(Beta版本)第6天
团队作业八--第二次团队冲刺(Beta版本)第6天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题 ...
- 团队作业八——第二次团队冲刺(Beta版本)第5天
团队作业八--第二次团队冲刺(Beta版本)第5天 一.每个人的工作 (1) 昨天已完成的工作 完成界面跳转界面. (2) 今天计划完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (3) 工作中 ...
- 团队作业八——第二次团队冲刺(Beta版本)第4天
团队作业八--第二次团队冲刺(Beta版本)第4天 一.每个人的工作 (1) 昨天已完成的工作 做一下用户注册的功能和登录功能. (2) 今天计划完成的工作 完成界面跳转 (3) 工作中遇到的困难 界 ...
- 团队作业八—第二次团队冲刺(Beta版本) 第 2 天
一.每个人的工作 (1) 昨天已完成的工作 昨天的工作主要是一些界面的设计,我们顺利完成了复杂模式题目数目界面.复杂模式做题界面.结果统计界面的具体代码编写,和一些细节的完善.还有日常冲刺博客的编辑. ...
- 团队作业八—第二次团队冲刺(Beta版本) 第 1 天
一.每个人的工作 (1) 昨天已完成的工作 由于是才刚开始冲刺,所以没有昨天的工作 (2) 今天计划完成的工作: 对界面的优化和一些细节的完善 (3) 工作中遇到的困难: 工作中出现了意见不一的情况 ...
- 团队作业八——第二次团队冲刺(Beta版本)第3天
一.每个人的工作 (1) 昨天已完成的工作 对界面进行完善,并增加简单界面(包含简单界面内含的界面),简单模式与复杂模式的选择界面. (2) 今天计划完成的工作 做一下用户注册的功能和登录功能. (3 ...
- 【集美大学1411_助教博客】团队作业9——测试与发布(Beta版本)
写在前面的话 已经看到了大家的发布成果,很欣喜,虽然有的团队的产品还是有一点问题,但大家也都发布成功了,这就是软件的魅力.但还是要说一些问题,大家录的视频不是没人讲解就是讲得太快,在我看来这都没有在卖 ...
- 【1414软工助教】团队作业9——测试与发布(Beta版本) 得分榜
题目 团队作业9--测试与发布(Beta版本) 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1:团队展示 团队作业2:需求分析& ...
- 【2017集美大学1412软工实践_助教博客】团队作业9——测试与发布(Beta版本)
题目 团队作业9--测试与发布(Beta版本)(http://www.cnblogs.com/happyzm/p/6917253.html) 团队作业9-1 测试与发布成绩 分值 1 0.5 0.5 ...
随机推荐
- 使用sed命令向文件中追加可变字符串
1.如何向文件追加可变字符串,有如下两种方法 sed -i '1a '$s'' filename sed -i "1a $s" filename 注意: 以上命令是假定向文件fil ...
- Linux/Unix监控其他用户和信号
--Linux/Unix监控其他用户和信号 ------------------------------------------------------2013/10/27 查看有哪些用户登录 w ...
- Oracle安装oraInventory问题
Oracle安装oraInventory问题-----------------------------2013/10/15 在使用安装Oracle软件或者使用dbca创建数据库时,所有的日志都会放在o ...
- lsof命令详解
--转载 一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied” 我总结一下lsof指令的用法: lsof ...
- Eclipse快速补全行末分号
Eclipse快速补全行末分号 Eclipse快捷键跳到行末补全分号 Eclipse快速结束当前语句(在行末加上分号,就是当前语句结束) Intellij IDEA 里是有快速补全分号的功能(快捷键: ...
- 基于spring mvc的图片验证码实现
本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...
- VMware Workstation 12 Player之安装林耐斯-Linux Red Hat 7 -系统
Linux系统之Red Hat 7 安装笔记... Red Hat(红帽)公司(NYSE:RHT)是一家开源解决方案供应商,也是标准普尔500指数成员.总部位于美国北卡罗来纳州的罗利市,截止2015年 ...
- 用notepad如何在每行结尾处添加特殊字符
在处理关键词的时候,有时候需要将每一行的末尾添加某个特殊字符,较常用的一种方法就是用excel拼接起来.今天要分享是一种简单的方法,用notepad就可以很容易实现,主要用到notepad中的扩展匹配 ...
- js history对象 手机物理返回键
有兴趣的可以了解下history对象,不感兴趣也可以直接跳到手机物理返回键监听部分 使用场景: 场景1:项目中一个表单页面,需得填写验证码,填写验证码后提交,由于使用的form直接提交,没有使用AJA ...
- 2_linux 常用基本命令
相信当你看到此帖子时,你已不再是当年那个颓废的你,你一定也在追梦的路上奔跑,那么请留下你的“梦”,让我们用心去交流,好吗? 废话不多说,直接说正事! 一.查看磁盘分区 1.fdisk -l 查看磁盘 ...