个人作业——软件工程实践总结

作业格式

这个作业属于哪个课程 软件工程1916-W(福州大学)
这个作业要求在哪里 个人作业——软件工程实践总结作业
学号 221600417
这个作业的目标 总结这学期的软工实践。
其他参考文献 [1]邹欣.构建之法[M]

一、请回望开学初的第一次作业,你对于软件工程课程的想象

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

整个软件工程课程中,贯彻着软件项目管理的思想。通过组队进行团队项目的开发,让我对于未来工作中的协作开发有了一个更好的认识,开发过程中的经验教训都将会让我在以后的工作中更好地融入团队,高效率地进行协作开发。在认识软件项目管理提高协作开发能力都达到了我的期待和目标。

但明显的不足是,项目的代码质量值得商榷。即便课程包含项目测试的过程,但由于时间的紧迫,项目开发的难度较大,无法编写出高质量的代码。很多时候没有考虑到代码的鲁棒性以及性能,而是想着加快开发的进度。

2)总结这门课程的实践总结和给你带来的提升

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

大概完成了6K行左右的代码。

2.软工实践的各次作业分别花了多少时间?(做一个列表)

作业名称 时间/h
第一次作业-准备篇 1
结对第一次—原型设计(文献摘要热词统计) 4
结对第二次—文献摘要热词统计及进阶需求 7
团队作业第一次—团队展示 1
团队作业第二次—项目选题报告 3
团队第三次-项目原型设计 4
团队作业第四次-项目需求分析 8
团队作业第五次—项目系统设计与数据库设计 13
团队作业第六次—团队Github实战训练 12
项目Alpha冲刺(团队) 60
事后诸葛亮(团队) 2
项目Beta冲刺(团队) 90
Beta阶段团队项目互评 2
个人作业——软件工程实践总结作业 3
总计 210

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

项目Alpha冲刺最让我印象深刻。作为后端开发人员,长期面向功能点开发,而其他的前端人员则是面向自己的原型开发,导致后端的接口和前端一直对不上,接口的格式不对,又或者缺少接口。最后改变了开发的方式,结合前端的原型图,并和前端积极交流,砍掉原型图中冗余的功能点。最后也是慢慢的步入了正轨,没有在经常出现接口对不上的问题。

4.累计花了多少个小时在软工实践上?平均每周花多少个小时?

累计花了210+小时在软工实践上。平均每周花15个小时

5.学习和使用的新软件和新工具

原型开发:墨刀

版本控制:Git

接口文档:Swagger

性能测试: JProfiler 腾讯压测大师

画图: ProcessOn

6.学习和掌握的新语言、新平台

7.学习和掌握的新方法

使用 MyBatis Generator 插件自动生成 Dao,Model,Mapping相关文件。

8.其他方面的提升。

协作开发能力,软件项目管理的理解,和队友的配合。

二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析

团队项目实践中,我们团队经常不在一起同时开发,并且碰到问题时通过网络进行交流,此时就出现了一个开发效率上的问题。由于只能通过网络进行交流,往往一个问题需要解释半天,例如前端和后端讨论接口设计时,双方只能通过文字对自己的观点进行阐述,但如果换成口头交流,那么沟通的效率将提高很多。

因此,我得出的一个经验总结是:尽量使得团队在相同的地点相同的时间进行开发,遇到问题能够及时解决,整个开发的进度也会加快。

三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?

下一届实践的建议:

这门课程能带领我们看到整个项目开发的过程,从需求分析,原型开发,系统设计等等一系列下来,每完成一个阶段的任务,也能从中学到一些新的东西,比如各种性能测试插件,原型开发软件,接口文档插件等等。虽然工作量相比其他课程不是一个量级的,但学到的东西也不是一个量级的!希望下一届,尤其是没什么项目经验的同学,一定要好好把握住这门课程,尽可能地投入到课程之中,过程肯定是辛苦的,但结果不会让你们失望的。

中途换队友:

换队友挺好的,能让我们充分感受到未来工作中队友离职所带来的危机感。但是,我觉得换队友还得换个差不多的队友,至少。。。语言是一致的。可以先调查每个团队所使用的语言,然后在相同的语言里面进行换队友操作。这样即便新队友不熟悉框架,但有了语言了基础,框架学习起来也就不会那么吃力,况且现在框架的门槛也是在不断地下降。

四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)

萌芽阶段:

团队中每个人都表达了对项目的看法,并相互交流自己所拥有的技术栈。

磨合阶段:

前端和后端的接口没有对接成功,并且接口的鲁棒性不高,经常引起前端开发人员的烦恼,整个项目开发的热度以及效率都有所下降。前端的原型图也没按照完全按照需求进行设计,出现一些画蛇添足的东西。

规范阶段:

小组商议后,前端与后端的开发不再是独立的,封闭的,而是相互交流。通过大量的沟通,后端也就能够设计出与前端人员理想中的接口,不需要再进行频繁地修改,前端也修改了部分当初设计的原型图,整个开发的效率逐步提高。

创造阶段:

目前还没达到,会努力到达的。

五、怎样证明你学会了软件工程?

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

通过 Git 完成整个项目的提交,合理划分功能点,每完成一个功能点 commit 一次。将团队任务安排发布于博客之中,每天站立式会议确定今日任务的完成情况,解决问题,改进下一步任务。

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

项目源码均保存在 GitHub 当中,在 Swagger 中在线保存着 API 文档,需求用例也留存在腾讯文档之中。

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

Code quality analysis in open source software development:

如何衡量自己的代码质量:

将分析限制在组件级别,即函数级别。收集项目中的数据,用于计算组件质量的10个指标

度量指标及可接受的范围如下

指标 定义 可接受范围
语句数(N_STMTS) 每个组件的可执行语句的平均数。 1-50
圈复杂度(VG) 它是基于图论的度量,表示连接图中线性独立路径的数量,这里是组件控制流图,被认为是理解和测试组件所需努力的指标。 1-15
最大级别(MAX_LVLS) 测量组件控制结构中的最大嵌套数。 1-5
路径数(N_PATHS) 计算每个组件的非循环路径的平均数。 1-80
无条件跳转(UNCOND_J) 计算GOTO的出现次数。 0
注释频率(COM_R) 这被定义为注释行与可执行语句的比例。 0.2-1
词汇频率(VOC_F) Halstead(1975)定义为唯一操作数n 1和运算符n 2的总和,它们是程序定义所必需的。 1-4
程序长度(PR_LGTH) 唯一操作数和运算符的出现次数之和。 3-350
平均大小(AVG_S) 每个组件的平均语句大小,并等于PR_LGTH / N-STMTS。 3-7
输入/输出数量(N_IO) 计算组件的输入和退出节点数。该度量控制符合另一种已知的结构化编程原则(仅允许一个输入和一个输出)。 2

上述的指标以及标准充分反映了开源代码所需要的质量特定。

下面,通过一些指标,分析一下团队项目中后端方向的代码质量。(由于英语水平有限,部分指标目前无法理解

语句数(N_STMTS):

较大部分组件的语句数只有30行不到,综合下来,平均数在35左右,符合要求。

最大级别(MAX_LVLS):

从控制层,服务层,DAO 层 一共4层的嵌套,符合要求。

无条件跳转(UNCOND_J):

GOTO 作为 Java 的保留字,但并不支持使用,没有出现的机会。出现次数0次,符合要求。

注释频率(COM_R):

由于偷懒,或者没有这个习惯,大部分服务的实现类中的组件的注释频率小于0.1,不符合要求。

通过上述几个指标,我认为后端的代码质量还可以,值得提高的地方是注释频率。在以往的开发中,对于代码的注释并不太关注。但现在回过头看,发现开源项目的注释较多,例如Spring框架源码中,大部分的组件都包含一个注释头,说明了组件的作业,组件的作用,输入参数以及返回类型等等,这些注释有利于我们更好地阅读源码,提高整个项目的可维护性。在未来的开发中,我也将会试着在每个组件加入注释头,提高自己的代码质量。

七、个性发挥,包括图文、照片和创意等

不同人员看到bug的反应

posted @ 2019-06-08 19:40  hlxing  阅读(283)  评论(1编辑  收藏  举报