2017年春-高级软件工程课程总结

来源:互联网 发布:千里眼软件下载 编辑:程序博客网 时间:2024/05/29 16:28

by 欧小铉 SA16225220
本文属于《软件工程(C编码实践篇)》MOOC课程 实验总结, 原创作品转载请注明出处

一. 学习心得

1. 我对软件工程的理解(来自Software Engineering at Google的读后感)

  1. 软件开发
    Google鼓励工程师修复他们看到的任何东西,并且知道如何修复它们,不管项目的边界如何。这增强了工程师能力,带来了更高质量的基础设施,更好地满足那些使用它的人们的需求。
  2. 构建系统
    • 各个构建步骤必须是“气密的”:它们仅取决于他们所声明的输入
    • 单独构建步骤是确定性的
  3. 代码审查
    • 对主源代码存储库的所有更改必须至少由另一位工程师审查
    • 较大的更改最好分成一系列较小的更改,审查者可以轻松地一次查看完毕。
  4. 软件测试
    • Google强烈鼓励并广泛使用单元测试
  5. 编程语言的使用
    • C ++,Java,Python或Go。最小化所使用的不同编程语言的数量扫平了代码重用和程序员协作的障碍

2. 学习软件工程的心得

  1. 线上课程
    线上课程涉及到了linux, git的使用, vim编辑器的使用, gcc等编译器的使用, C语言组织程序的系统知识, 我觉得最好的手段是多实践, 多试错, 多用google, wiki和stackoverflow, 掌握自己搜索学习知识的能力
  2. 线下实验(go语言)
    除了自己主动查看文档, 多实践学习以外, 和同学们的交流也是很好的手段, 相互交流有助于发现自身代码的问题, 乃至编程的某些不良习惯, 对提高编码水平和软件工程大局观有帮助
  3. 课外阅读和交流
    多看书, 多和同学交流, 益处多多

二. 实验小结

  1. 实验一:写一个hello world小程序
    • 实现了最简单的Hello world, 对gcc, vim有了基本的了解
  2. 实验二:命令行菜单小程序V1.0
    • 实现了命令行菜单小程序
  3. 实验三:内部模块化的命令行菜单小程序V2.0
    • 实现了一个链表模块做到了功能解耦
  4. 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
    • 实现了可重用的链表模块, 进一步提高通用性
  5. 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
    • 学习了callback功能, 优化了可重用性
  6. 实验六(测验):函数的可重入性(reentrant)及线程安全(测验不需要报告)
    • 了解了线程安全和可重入性的关系
  7. 实验七:将menu设计为可重用的子系统
    • 了解了把功能组装成一个独立单元的方法, 以及makefile的使用

三. 课程总结

1. 收获

本次课程的最大收获如下:

  1. 系统学习了从Linux基本操作, vim的使用到C代码工程的组织, gcc的编译乃至makefile的使用等系统化的一整套软件工程开发流程. 这对未来从事软件开发具有很大的指导意义和启蒙意义
  2. 学习了go语言这一对我们而言比较新奇的语言, 了解了go语言的独特之处, 打开了眼界

2. 遗憾

  1. 课程涉及到的书单很多, 但由于时间有限, 其中几本非常值得一看的书(例如<构建之法——现代软件工程>)没有认认真真看完, 今后会充分利用工作之余充电
  2. 课程对当下流行的前端知识/数据挖掘知识没有太多涉猎, 比起上学期的微信小程序和网络程序设计, 可能不够贴近潮流, 但不能浮躁, 经典的总是值得学习的

最后, 感谢孟宁老师. 老师的网络程序设计和两学期的高级软件工程(上学期旁听, 这学期选择)我都参与了, 学习到了很多非常实用的软件工程知识, 也了解了最新流行的诸如机器学习的新知识, 同时也了解了软件工程领域流行的优质书籍(黑客与画家, 人月神话等)

非常给力.