个人作业——软件工程实践总结&个人技术博客

这个作业属于哪个课程 2020春S班
这个作业要求在哪里 作业要求
这个作业的目标 软件工程实践总结&个人技术博客
作业正文 作业正文
其他参考文献

 

一、回望

(1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?

首先,我觉得我的编程能力得到了提升,还有代码调试能力,其次,文档撰写能力、画图能力、分析与设计能力、沟通协调能力都达到了我的期待和目标。在实践锻炼过程中,需要经常写文档,画图,还需要分析与设计,在这过程中这些能力不断得到提升,同时还要与队友合作,不断沟通协调。但是,还有一些方面存在不足。对github的使用不熟练,第一次使用github的时候还把团队项目仓库文件全都覆盖掉,对github上的所有功能还不是很清楚。同时对Android开发更深层次的东西还不够清楚。

(2)你在第一次作业的个人简历中描述了这门课程结束后,你预期你将增长的能力、技术、技能,并绘制了学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?

大部分达到了预期值。第一次作业中的预期是提升开发思维,懂得开发流程、规范和方法论,懂得对工程进行管理,熟练掌握Java开发技术,提升工程能力。对比当前我的所学所得,大部分都达到了预期值,但是对工程的管理还是不够了解。

(3)哪一次作业让你印象最深刻?为什么?

beta冲刺让我印象最深刻。因为我是我们组Android端的总负责人,在beta冲刺中我们组的主要工作是对项目进行UI界面的美化,我自觉承担了这个任务。为此我在beta冲刺开始初期就去学习使用XUI框架,这是一个Android的开源UI框架,这个框架提供了绝大多数我们在开发者常用的功能组件,样式统一,同时这些组件比Android原生的组件好看的多,因此我用这个框架来进行界面UI的美化。但是在学习XUI的过程中也遇到了许多问题,因为这是我第一次使用第三方框架,缺乏一些经验,在引入这个框架之后项目就崩坏而无法运行,好在我都解决了这些问题。在beta冲刺的过程中每天都在学习使用XUI框架提供的组件,并且应用到我们的项目上。最后在组员的协同帮助下,完成项目的优化,界面还算优美,风格统一,这让我很有成就感,所以对这次作业印象最深刻。

(4)在课程问卷中,我们统计了你在课程上花费的精力和提升;现在请你再次将这些数据罗列出来,作为个人的记录。包括以下内容:

  • 统计一下,你在这门软件工程实践中,一共完成了多少行的代码

    8000-10000

  • 软工实践的各次作业分别花了多少时间?(做一个列表)
    作业 花费时间
    软工实践寒假作业(1/2) 6h
    软工实践寒假作业(2/2) 30h
    结对第一次—某次疫情统计可视化(原型设计) 10h
    团队作业第一次—团队展示和项目展示 2h
    结对第二次作业——某次疫情统计可视化的实现 30h
    团队作业第二次—团队Github实战训练 12h
    团队作业第三次—项目需求分析 3h
    团队作业第四次—项目系统设计与数据库设计 8h
    个人作业——软件评测 6h
    团队作业第五次——站立式会议+alpha冲刺 50h
    团队作业第六次——beta冲刺+事后诸葛亮 40h
    个人作业——软件工程实践总结&个人技术博客 5h
  • 累计花了多少个小时在软工实践上?平均每周花多少个小时?

    累计花了202小时,平均每周花10.1小时

  • 学习和使用的新软件;

    Axure9、墨刀、StarUML、GitHubDesktop、SQLiteStudio、JProfiler

  • 学习和使用的新工具;

    Github、Markdown、ColorHunt、迅捷画图、XUI、Grandle、Iconfont、Leangoo

  • 学习和掌握的新语言、新平台;

    博客园、Axhub

  • 学习和掌握的新方法;

    原型设计、流程图、思维导图、JSP前后端数据交互、单元测试方法、覆盖率测试

  • 工程能力的提升;

    编程与调试、分析与设计、设计数据库、画图能力、撰写文档能力、

  • 团队合作上的提升;

    团队协调沟通能力,每日参与会议,汇报自己每日工作,及时提出问题,积极参与讨论,与队员进行沟通交流,互相帮助解决困难。

  • 其他方面的提升;

    合理安排时间,有耐心。

 

二、团队总结

  • 你是组员还是组长?你觉得你自己在哪些地方做得好?你觉得自己还有什么可以改进的地方,具体可以怎么改进?

    我是组员,我觉得我在负责我们组Android部分做的还行。因为我作为Android端的设计师,规划整体的布局,在alpha冲刺中完成后端的代码以及测试,在beta冲刺中主要负责使用XUI框架优化界面UI,较好地完成了组长分配的任务。但是我还有可以改进的地方,我的任务是和其他组员一起完成Android端单机部分,我对Android网络连接的了解很少,因此这一部分交给组长来完成,导致在网络连接这部分在对接的时候花费了很长时间,因此我希望我在之后能学习一下服务器的技术,学习Android端如何与服务器进行数据交互。

  • 你觉得你的组长(组员们)在哪些地方做得好?你觉得ta(ta们)还有什么可以进一步提升的地方,有什么具体的建议吗?

    我觉得我的组长在分配任务上做的很好。我们组的项目有服务器端、web端、Android端、IOS端,工作量相对比较大,组长根据每个人的情况合理分配任务,最后基本上都能完成我们项目的所有功能,因此我觉得组长分配任务做的很好。同时,组长每次组织开展会议,进行工作上的协调我觉得他在领导方面做的好。也会经常在网上查找相关资料方便了我们的工作。我觉得组长在时间管理上还可以进一步提升,我觉得可以提早一两天开始项目开发,为之后的完善工作多腾出一点时间。

  • 《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)

    《构建之法》中提到,团队的发展分为萌芽阶段、磨合阶段、规范阶段、创造阶段。我的团队都经历过了,最后到达了创造阶段。在萌芽阶段因为大家是随机组队所以彼此之间并不熟悉;在磨合阶段是在github实训,大家开始第一次合作项目,因为彼此之间不熟悉所以一开始感觉手足无措,还在后来慢慢都能开始协调交流了;在规范阶段,大家对彼此有了一定的了解,在分配任务上也能比较好的发挥每个人的优势;最后创造阶段在两次冲刺中大家互相配合,积极完成各自任务,互相帮助。

  • 从开发的角度,你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?

    我在团队中担任的是Android端后端开发人员以及Android端测试人员。我觉得我较好的完成了该角色的任务,后端的每一个接口我都进行过严格的测试,保证接口调用的正确性,同时组员遇到无法解决的bug也是与我沟通交流。我觉得我适合该角色。

 

三、人月神话

1、怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?请在随笔中用数据证明上述内容或侧重选择之一。

在与团队合作的过程中,我参与了团队开发的整个过程,包括分析、设计、开发、测试等过程,因此我觉得我对软件工程有了初步的认识。

(1)研发出符合用户需求的软件

由于我们的项目并没有公开发布,只在用户使用调查的时候邀请各自的亲朋友好进行注册使用。

(2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件

在整个开发过程中不断与队友进行沟通交流,需要传输的文件都通过QQ群来进行共享。

个人作业——软件工程实践总结&个人技术博客_第1张图片

在编程这一阶段,每个人都能按时完成自己的任务

个人作业——软件工程实践总结&个人技术博客_第2张图片

还使用了Leangoo这个在线工具,记录整个团队开发过程中每个人的任务以及完成情况

个人作业——软件工程实践总结&个人技术博客_第3张图片

 

(3)并且通过数据展现软件是可以维护和继续发展的。

我们团队项目能够在Github上找到源码,说明文档以及测试文档等都在团队博客里,代码能够正常编译和运行,博客和github上的commit记录都能查看项目的发展资料。

【团队博客】

【团队GitHub仓库】

个人作业——软件工程实践总结&个人技术博客_第4张图片

 

2、写下属于你自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析,字数不限,开放命题,可以使用你自己喜欢的方式表达

在整个团队开发中,我学到了很多,不仅仅是技术上的知识,还有明白了团队合作的重要性。我们组或许没有能力非常突出的技术大佬,但我觉得我们组完成的情况很不错。总结下来我觉得有两点非常重要,第一就是项目的设计,第二就是团队的协调沟通。这是我第一次参与一个大的项目的开发,以往我在学习过程中基本上都是独立开发,而且做的都是小项目,只要一收到任务要求就马上开始上手敲代码,在边敲代码的过程中边设计。然而在这次团队开发中我深深感受到了设计的重要性,项目初期的设计就像一个工程的地基,如果地基没有打好,不管建多少次楼都会倒塌,如果一个项目前期没有做好设计这方面的工作,将会给后期编程工作带来很大的麻烦。就比如说前期进行数据库设计,我们组的总数据库设计是我参与的,因为我们组有服务器端、web端、Android端、IOS端,每个端口都需要设计数据库,并且要如何设计数据库才能使得移动端能与服务器端进行数据交互,最难的一个问题就是移动端如何与服务器端进行数据同步,因为项目的移动端数据库的一个本地数据库,当用户操作的时候会涉及到对数据库修改,而本地数据库又要与服务器端的数据库同步,因此在数据库中每个表后面都加上了两个字段state和anchor,用于同步。正是由于前期设计的足够完善,在后期编码的过程中才能减少遇到的问题。同时沟通协调也是非常重要的,在alpha冲刺中,我只顾完善后端代码,前端交给其他组员设计,因此我对前端的界面样式完成情况并不了解,最后部分UI并没有达到预期的效果。所以应该多与其他组员沟通交流互相了解完成情况才能进行比较好的对接工作。综上所述,设计和沟通是非常重要的。

四、建议

对下一届同学的建议,或者对于开学初的你,对于大一的你,你有什么建议和想要告知的呢?请写下你对后来人的期许。

1、对于下一届同学,或者大一的同学,你想说:

编程是基础,尤其是C语言,是一门非常经典的语言,作为刚入门的一门学科,一定要好好学,为将来打下扎实基础,这样以后再学习其他编程语言才能游刃有余。课内的知识一定要好好学习,同时可以利用课余时间去学学一些课外的技术,我正是因为一年前学过Android开发,虽然这不是学校的课程要求,但正好在一年后的这门课实践上能用到,你学所的一切不会没有用武之地的,或许将来的有一天你正好能用上,机会是留给有准备的人。

2、对于自己今后,你有哪些建言?

希望我能成功保研福州大学,同时也希望自己能够找到真正感兴趣的计算机领域,好好学习,争取将来能够有所建树。

3、对于助教工作,你有哪些建议?

助教工作非常认真,很感谢这学期有助教的帮助,但还是希望助教能够及时回复消息。

4、对于软工实践课程,你有哪些建议?对于软工实践课程的上课形式和内容,你有什么具体的意见和建议?在哪儿需要强化或者剔除?

对于这门课程我希望能够放在大三上,将大三上的一些选修课程调整到大三下,毕竟大三下这学期大家都忙着考研、找工作、实习,而这门课程工作量还是挺大的,所以我觉得放在大三上比较合适。我觉得这门课程随机组队的想法很好,每个队伍的技术水平基本上都比较平均,这样很好的模仿了将来工作过程中的团队开发,毕竟你并不清楚你将来会遇到什么样的队友,会进入什么样的团队。但是后来的模拟企业换人的想法我觉得不合理,虽然确实有可能会遇到有人想要跳槽而退出队伍,但这是要看个人意愿的,有的人想要退出自己所在的团队,但大部分人都对自己团队有感情,并不想退出,而模拟企业换人要求随机抽出一人调换到其他队,这样并没有尊重这个人的意见,我觉得并不能模拟企业换人这种情况,好在后来没有真正实施这一策略。还有我希望如果有时间可以讲解一下《构建之法》,毕竟这样一本四百多页的书实在难以在短时间内掌握。

 

五、个人技术总结

XUI使用总结

概述:

介绍如何使用XUI这个框架提供的组件,以及在使用过程中遇到的一些常见问题应该如何解决。

 

六、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记

论文:Open source software development should strive for even greater code maintainability

该论文介绍了开源软件开发应该努力提高代码的可维护性。

开放源代码软件(OSS)与传统的封闭源代码软件(CSS)不同,OSS可以自由使用、修改和重新发布。它的源代码也可以自由访问。如今,人们常常发现CSS项目演变成OSS来获得它的好处。项目的协调人最终决定要接受的贡献和错误修复,将它们合并到主代码和最终产品版本中。实际上,同样的代码贡献和错误修复过程以这种循环的方式继续进行。这种发展既有优点也有缺点。在各种情况下,OSS似乎解决了传统软件工程方法的许多问题,因为它可以在短时间内生产出可靠、高质量和低成本的软件。

 

个人作业——软件工程实践总结&个人技术博客_第5张图片

为了证明OSS更优于CSS,研究工作启动了一个封闭源类型的项目(称为CSSPrA),最初的OSS系统(OSSPrA)继续发展,这两个项目开发了基本相同的功能。为此做了一个统计图,横轴为连续发布的版本,纵轴是可维护性指数(MI)。从图中可以看出虽然两个项目的可维护性都有所下降,但是OSS版本的性能明显优于CSS版本。

你可能感兴趣的:(个人作业——软件工程实践总结&个人技术博客)