一.关于源代码管理的10 个问题:
1.你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?
我们的项目都在github上面,用的win10系统,并且我们的文件没有锁定。
2.如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。
git pull进行更新后,可以看到本地的版本和最新的版本之间的不同之处。同时,在本地上传自己的文件到分支之后也可以查看自己或者是别人上传的文件在以前的版本的基础上,修改了哪些地方。
点开项目的commit的记录,点击相应的SHA版本哈希值之后可以进入到如下的页面
3.如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?
Git可以方便地对有简单不同的修改进行合并,但对于有逻辑冲突的部分将会给出conflict的提示,这时需要手工修改针对文件的不同状态(modified、untrack、conflict等)给出不同的颜色提示。
4.你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性),或者同时签入不成功?
在Git中,所有在本地仓库中修改的文件都要统一经过commit为新的本地版本后,再push至远程分支。这保障了本地修改提交的原子性,同时git服务器远程提供的修改操作也具有原子性。这样就保障了整体修改的原子性。
5.你的PC 上有关于三个功能的修改, 但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。
没有遇到过。但是分支应该是解决这一问题的有效方法。在对文件修改之前建立分支并在这个分支上进行功能的修改,如果遇到BUG,则在主分支上再建立一个新的分支,最后当这两个分支都完成之后把它们合并到主分支当中去 。
6.规范操作和自动化你的团队规定开发者签入的时候要做这些事情:
- 运行单元测试,相关的代码质量测试。
- 代码复审 (要有别的员工的名字)
- 和这次签入相关的issue 编号, 任务/task, 缺陷/bug 编号,等等, 以备查询。
请问你的团队有这样的自动化工具让开发者方便地一次性填入所有信息然后提交么? (高级功能, 代码提交之后, 相关bug 的状态会改动为 “fixed”, 并且有链接指向这次签入。)
没有
7.如何给你的源代码建立分支?
在master上建立分支,每一段修改都进行交付。将不需要的修改的地方删除。在master上建立分支,找历史交付版本,将其下载到本地,需要哪个版本都可以进行安装,继而重现用户报告的问题。
8.一个源文件,如何知道它的每一行都是什么时候签入的,为了什么目的签入的 (解决了哪个任务,或者哪个bug)?
9.如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?
之前代码在本质是一步步完善过程中的,基本上每一次代码提交都会添加一小部分功能模块。在稳定性上来说没有什么太大的体会,并没有出现很不稳定这种的版本。就算出现了这种版本,一般也是代码处理上的错误,通常是不会选择提交,而是会改进后提交的。
10.你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?
源代码和测试这些代码的单元测试,以及其他测试脚本没有放在一起的,因为这样更方面进行处理。 至于测试的更新方面,会放到之后再进行更新,优先度来说没有那么高。 提交之前会进行简单的测试,不会将每部分功能每个方法都充分测试。
二.项目文档
1) 开发总结文档
2) 需求文档
3) 设计文档
4) 测试文档
5) 实施文档
6) 过程文档
已上传至GitHub仓库,github地址:https://github.com/yhy618/A
三.项目验收过程:
1.项目汇报
由老师担任主持人,组长上台进行PPT讲解,汇报本项目的项目背景、开发过程、功能简介、工作总结,并对本系统进行演示,在此同时,老师根据项目讲解情况、项目完成度对本项目进行评分。
2.项目验收
在此之间,我们已整理好开发总结文档、需求文档、设计文档、系统测试文档、实施文档、会议记录、项目总结文档等重要文档,完成项目软件系统演示前准备工作,并准备好项目验收意见表、验收会议名单及验收会议议程。
本次项目验收会议成员为《F4+2》团队和本团队的全体成员,先有我们团队做工作汇报和总结,接着,本团队主要技术人员进行系统实现过程简述和系统演示,接着由《F4+2》团队进行提问,本项目成员解答,最后由《F4+2》团队的组长填写项目验收意见表,验收项主要包括系统安装和运行、系统功能以及系统开发文档。
3.团队照片
四.音乐播放器视频展示
网址链接:https://v.youku.com/v_show/id_XMzY5NzU2OTQ3Ng==.html?spm=a2h3j.8428770.3416059.1
五.成员分工
| 具体任务 | 工作量比例 | 完成时间 |
杨环宇 | 1.撰写过程文档 2.Beta冲刺 3.制作ppt | 19% | 5h |
马军 |
撰写开发总结文档
| 15% | 3h |
龚继恒 | 1.项目软件系统演示前准备工作 2.撰写设计文档 | 15% | 3h |
龙正圆 | 1.项目验收意见表 2.回答源代码管理的10 个问题 | 15% | 3.5h |
纪亚星 | 1.撰写实施文档 2.整理文档 | 18% | 4h |
侯 燕 | 1.撰写测试文档 2.撰写博文 | 18% | 4h |
六.成员心得与总结
杨环宇:在本学期软件工程团队项目任务中,我主要负责团队项目后台程序编码部分,并且在前期的任务中也承担了撰写文档,整理博客的任务,在这一阶段锻炼了自己的文档撰写能力,熟练使用了大学期间学到的知识,学会了各种工具的使用比如Visio、process on、墨刀、石墨文档等工具,方便了今后的学习。而且在编程中我也提高了我的开发能力,每一阶段的任务都让我有提高,团队合作也提高了我们小组的每一位成员。忙碌了一学期,同时我也收获挺多。
马军:这次这个项目让我懂得了很多,之前学的一些东西,在这次项目中应用到了,发现基础知识很欠缺,平时做的练习也比较少。但重要的是这次学习到了团队精神,在做这次项目我们组齐心协力,分工明确,这才真正让我们了解到团队的真正意义。当然我们的能力毕竟是有限的,当我们遇到瓶颈的时候老师的悉心教导给了我们做下去的动力。他还叫我们基础知识,让我们看到了基础知识的重要性,使我收益很多,对我以后得开发会带来很多帮助!
龚继恒:在这次的项目开发的过程中,我们小组合作完成了项目。在实验的过程中,我们分工明确,能够井然有序的完成各自的任务。在项目开始前,我们先对此进行了可行性分析以及需求调研,使得项目开发的目标更加明确,有助于我们后期各部分功能的完善。通过这次项目开发,我认识到要完成一个好的项目,良好的团队合作是非常重要的,遇到问题时解决问题的思路和时间会很大幅度的减少,经过六个人的讨论会对问题理解的更透彻,效率更高,当遇到困难时,大家齐心协力,各显神通,一起解决困难,这不仅节约了很多时间,也可以找到更好的解决方案。所以说团队合作还是很有必要的。一个成功的项目后面往往有一个优秀的团队。
龙正圆:本次软件工程,通过完成一个音乐播放器的实现,第一次系统的完整按照软件开发流程去做,其中收获了很多,同时这也是第一次与其他小伙伴一起共同完成项目,有时候进步是在不知不觉中做东西来提高的,音乐播放器看似简单,其实还是有难度的,比较考验人的思维逻辑能力,我在这次实验中学到了很多知识,收益非浅.通过几个月的实验,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
纪亚星:转眼间就到了期末,回想这学期参加软件项目的过程, 从开始的组队寻找课题到撰写项目开题报告,到设置问卷调查确定项目用户需求, 确定实验项目、实施方案与寻找创新点; 并制定详细的研究方案和步骤;对项目进行相关调查和研究;到最后确定项目的可行性,一步步走来,其中的经验与成长也只有经历过的人才会分享和拥有。这是一次难得经历,一次让我得到锻炼得到成长的经历。在这几个月中,组员间相互学习,这对于我们每一个来说无疑是最值得珍藏的,这种为同一目标共同奋斗的团结氛围特别让人有归宿感。也特别感谢老师和助教长期以来的指导和帮助!
侯燕:通过这次项目开发,使我深刻体会到了软件工程的巨大作用,从最初的软件设想到现在的项目实现经过了很长的时间,我们小组精诚合作完成了项目,每个过程我们都对所做的部分进行了详细的分析,从最初的软件设想到现在的编码实现经历了漫长的过程,这其中我们花了很长的时间来做设计和建模,这个过程看似不重要,但确为软件最终的成功奠定了基础,没有前期的工作后面编码将出现很大的问题。还有古人云,磨刀不误砍柴工。前期的知识储备、文献储备、材料准备、方法准备能够避免手忙脚乱,充分的预实验可以使我们充满信心。一步一个脚印,在最后的综合实验中,我更是受益匪浅。完整的做出了一个基于安卓开发的音乐播放器,虽然功能不是太完善。但是这是整个团队一起努力的结晶。
总结:
一学期结束了,此次项目开发的过程,我们严格按照老师的要求,从开始的时候根据小组自身的能力确定项目的开发方向,项目需求的调查与分析,还有之后的项目软件设计方案的设定与书写,以及之后不断地去完善项目设计方案书,不断的迭代完善,虽然这期间花费大量的时间,但这也是软件工程的特点,它完美的将软件研发规范化,它为我们的开发提供了保障,在充分的项目方案设计的完善过程中,可以避免平时一边想一边做所出现的弊端,也可在一定程度上减少研发的时间。这样使得团队开发的效率提高了好多。团队之间分工明确,减少了不必要的问题,效率大大提高了。团队合作完成一个实验开发项目的作用是很大的。