• 软件工程实践总结



    一、回望


    1. 对比现在的你和开学初博客开篇的课程目标和期待

    开学初本想进行服务器端的编程,但是由于项目的需要,我成了客户端编程的一员。虽然没能学习服务器端的知识,但是在客户端的编程过程中,我纠正了自己的很多不良编程习惯,学习了一些客户端编程的新技巧,也是很不错的。

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

    • 学习和使用的新软件

    • 学习和使用的新工具

    学习了android stdio的 UI测试框架Espresso及Junit测试工具
    学习了用Markdown写博客

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

    对Java语言略有了解
    第一次接触Mob(移动开发者服务平台)
    掌握了高德开放平台

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

    大约2500行吧

    • 学习和掌握的新方法

    主要是学习了代码测试的方法

    • 其他的提升

    提高了自己的团队合作能力


    二、写下属于自己的人月神话


    • 项目中的命名采用统一的规范很重要,有助于你找到需要的文件。

    • 我们要注意注释的添加,以防时间久了,忘了这个变量/函数的作用。

    • 我们需要多于他人交流,或许有可能获得更好的解决问题的方法。就比如在这个项目中,我们短信验证码的功能和利用Picasso显示多张图片都是在他人的建议指导下完成的。

    • 调试版APk和发布版APK还是有不同的,有些东西在生成发布版时才会报错。同时发布版的SHA1会发生改变,如果你用到的功能里有涉及到项目的SHA1,则需要修改后功能才能正常使用。**比如我们项目有用到高德地图的定位功能,定位功能有需要项目的SHA1值,在发布后要记得修改,否则发布后无法使用定位功能。 **

    • 软件的设计要考虑安全方面,这个栋哥提醒后我们才有去考虑的,之前完全忽略了。

    • 在不同Activity传递参数数,记得初始化和对值为空的判断。我们alpha版就是由于缺少这些判断,导致经常闪退。


    三、对下一届的建议&&对于后来人的期许。

    很多东西其实是需要我们课后去学习的,我很后悔之前浪费了很多时间,对于学弟学妹,我想建议你们去了解自己的兴趣,去学习课堂上学不到的知识。
    对于后来人的期许:希望后来人能通过这门课学到更多东西,做出更优秀的作品。


    四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?


    五、阅读软件工程中关于代码质量的的经典论文做一个阅读笔记

    我主要参考了Quantitative evaluation of software quality这篇论文。
    论文主要是针对软件质量评价进行了细致的分析并指出了软件质量的重要性。
    论文指出代码要是可理解的、可维护的、可测试的、简洁的等特征。

    The following initial set of software characteristics were developed and defined as a first step: (1) Understandability, (2) Completeness, (3) Conciseness, (4) Portability, (5) Consistency, (6) Maintainability, (7) Testability, (8) Usability, (9) Reliability, (10)Structuredness, (11) Efficiency. Definitions of these characteristics are given in the Appendix.


    论文中给我们评价软件质量的方向如下:

    • a:每个程序模块是否包含项目名称,日期等信息?
    • b:决策点和后续分支的选择充分描述吗?
    • c: 模块的功能以及输入/输出充分定义允许模块测试?
    • d: 特定的输入值测试?
    • e: 程序模块间的相互影响?
    • f: 程序修改的影响?
    • g: 是否有程序文档、项目框架?
    • h&&j: 命名是否规范、清晰?
    • i: 注释是否清晰完善?

    通过对比,我感觉写的代码不够规范,理解性很差,简洁性也不够,注释不够完整,看起来乱糟糟的。


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


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

    我们的用户实际上现在人并不多,但是我们会努力地去推广。

    2. 通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件,有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄

    我们有制定自己的安排表,每天按计划尽量去完成,完不成的会在下一天补完,最终在预定时间完成了项目。

    3. 并且通过数据展现软件是可以维护和继续发展的。
    而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目发展的资料

    源代码是可以找到的,有文档,能编译,但是没有task/bug等项目发展资料


    七、写一段话,介绍下你自己吧。


    我叫张建华,没有什么特长,班上那个默默无闻,最不起眼的就是我了。

  • 相关阅读:
    iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
    聚类_七月算法4月机器学习班第10次课程笔记
    codejam环境熟悉—Minimum Scalar Product
    STL源码剖析读书笔记--第6章&第7章--算法与仿函数
    STL源码分析读书笔记--第5章--关联式容器
    STL源码剖析读书笔记--第四章--序列式容器
    STL源码分析读书笔记--第二章--空间配置器(allocator)
    树莓PI上跑爬虫
    树莓PI安装jdk1.8,ant,maven【转】
    myeclipse10 安装 testng插件
  • 原文地址:https://www.cnblogs.com/1-zjh/p/6234615.html
Copyright © 2020-2023  润新知