zoukankan      html  css  js  c++  java
  • 个人作业——软件工程实践总结

    作业格式

    这个作业属于哪个课程 软件工程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的反应

  • 相关阅读:
    你想了解数据库吗,进来瞧一瞧吧,详细的数据库解读
    MySQL8.0-INFORMATION_SCHEMA增强
    工作总结:涉及数据库、软件测试等内容
    MySQL高级-MySQL锁
    年轻就该多尝试,教你20小时Get一项新技能
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    MySQL数据库高级操作(图文详解)
    JAVA RMI helloworld入门
    JAVA8 十大新特性详解
    Java 8 Lambda表达式探险
  • 原文地址:https://www.cnblogs.com/hlxing/p/10990117.html
Copyright © 2011-2022 走看看