【张城硕(sa15226451) + 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006 】

学习软件工程两个月来,我在孟宁老师的教导下确实获益匪浅。我从一开始对不知如何使用vim和git的无知,逐渐演变到软件设计模块化的熟练。下面, 我将谈谈这两个月学习软件工程线上课程的具体体会。

关于软件工程

首先,我先谈谈我对软件工程的理解。软件工程在我的脑海里就是如何利用工程化管理的技术来做软件。为什么会诞生软件工程呢?孟老师不止一次的提到,随着代码量的增大,人对代码的掌控能力越来越弱,代码的逻辑、进度和成本越来越不好控制,产生了软件危机!为了解决软件危机,软件工程应运而生。我比较喜欢线上编程,基本上每次线上课程我都投入了大量的时间和精力。

关于代码

在代码上,我在软件工程中学习到的是。
在细节上:
* 第一、需要遵守代码规范,好处是便于修改和维护。让别人看的清楚你的代码;
* 第二、数据和业务逻辑的分离。我们需要将代码进行模块化,从而更好地维护和复用代码;
* 第三、懂得合理地设计接口,既不能面面俱到,也不能太过笼统,够用就好。比如说:链表的接口设计和菜单的接口设计就有所不同。链表需要增删查改的接口,而菜单的接口就无需如此太过细节化;
* 第三、掌握代码的运用技巧,比如说回调函数的使用;
* 第四、非功能性需求,比如说安全性。这里尤其需要谈到的是线程安全,如何利用加锁的机制构建出写出安全的代码;
* 第五、设计思想,这里需要应用一些前人总结的设计模式,比如说工场模式、观察者模式、适配器模式等。应用这些模式能大大增加代码的延展性,更好地包容变化,更好地复用代码。当然,为了拓展视野,孟老师也提到函数式、形式化方法的编程;

关于我

总之,学习软件工程我最大的收获,就是理解了软件工程,初步设计软件,明白软件开发的流程。特别是,由于孟老师有着丰富的软件开发经验,所以比只讲软件工程理论要来的有趣、更好理解得多!最大的遗憾是,我希望线上课程能让我和同学共同协作,通过规定接口来完成一个软件项目,因为我感觉软件工程离不开沟通协作。
最后,深深感谢孟宁老师给我带来了如此生动、有趣而又丰富的软件工程课程。

实验报告

下面附上我的实验报告链接(全5分,也是对我尽力编程的认可吧):
实验一:写一个hello world小程序
https://www.shiyanlou.com/courses/reports/645718
实验二:命令行菜单小程序V1.0
https://www.shiyanlou.com/courses/reports/659872
实验三:内部模块化的命令行菜单小程序V2.0
https://www.shiyanlou.com/courses/reports/683728
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
https://www.shiyanlou.com/courses/reports/701555
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
https://www.shiyanlou.com/courses/reports/715800
实验六:可重入函数的相关测试,一次小测验。
实验七:将menu设计为可重用的子系统
https://www.shiyanlou.com/courses/reports/750491

浅谈软件工程学习心得相关推荐

  1. 浅谈如何学习深度学习(经验之谈,仅供参考)

    浅谈如何学习深度学习 方向 书籍 视频 方向 首先,要选择一个感兴趣的方向,或者说是将深度学习与自己的专业.学校的优势学科相结合. 计算机视觉(数字图像处理.图像分类.目标检测.图像语义分割.目标跟踪 ...

  2. 浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现)

    浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现) 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学习:了解RNN和构建并预测 浅谈深度学习:基于对LS ...

  3. 浅谈深度学习:了解RNN和构建并预测

    浅谈深度学习:了解RNN和构建并预测 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学习:了解RNN和构建并预测 浅谈深度学习:基于对LSTM项目LSTM Neural Network for ...

  4. 浅谈深度学习:基于对LSTM项目`LSTM Neural Network for Time Series Prediction`的理解与回顾

    浅谈深度学习:基于对LSTM项目LSTM Neural Network for Time Series Prediction的理解与回顾#### 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学 ...

  5. 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广

    没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...

  6. 浅谈工作/学习中找bug的思路_0_调试、try-catch以及打印报错信息和百度的方法、No default constructor for entity: com.gyf.bos.mod

    浅谈工作/学习中找bug的思路_0 文章目录 浅谈工作/学习中找bug的思路_0 调试.try-catch-以及打印报错信息和百度的方法 前言 描述 解决思路1 -- 检查移植的代码,细枝末节也不要忽 ...

  7. 浅谈深度学习的基础——神经网络算法(科普)

    浅谈深度学习的基础--神经网络算法(科普) 神经网络算法是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助 ...

  8. 浅谈深度学习:如何计算模型以及中间变量的显存占用大小

    原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...

  9. 网易云课堂--软件工程学习心得

    网易云课堂–软件工程学习心得 一.软件工程实验 通过十周的学习,老师要求的网易云课堂–软件工程的学习,终于结束了. 从开始的对linux平台的不熟悉,到能够熟练运用linux书写代码,我相信大家和我一 ...

  10. 中科大高级软件工程学习心得体会

    中科大高级软件工程学习心得体会 在本门课程中,首先我对一些基本开发工具,如VSCode.Git.Vim.正则表达式等,重新审视了自己的认知,顺便学了一手shell编程,并在课程的基础上又自定义了很多配 ...

最新文章

  1. 人工智能、区块链、混合现实:2019年新闻、媒体与技术趋势
  2. Java ResultSet如何检查是否有任何结果
  3. 如何写出安全的、基本功能完善的Bash脚本
  4. java 动态切换_java-动态切换日志级别的3种方案
  5. 孔板流量计计算公式_带你全面了解各种流量计
  6. 删除已有的 HTML 元素
  7. android webview js 交互框架,自定义android混合框架开发实践1:实现基础andorid和webview交互...
  8. mysql 错误编码_【分享】MySQl操作系统提示错误编码
  9. 基于Callable和Future的匹配文件数量计算实例
  10. C#弹出窗体、C#导出Excel、C#数据展示框、C#弹出框
  11. 为什么仿宋字体打印出楷体_请问仿宋体和楷体有什么区别?
  12. 大型连锁百货运维审计用什么软件好?有哪些功能?
  13. Emacs,最强编辑器,没有之一
  14. pika异步consumer简单使用
  15. wps加入全国计算机二级,WPS进入全国计算机二级考试,明年3月开考
  16. C语言-make概述
  17. 计算机快速启动BIOS,掌握50个电脑BIOS启动快捷键,再也不为装系统发愁了!
  18. 【Proteus仿真】按键设置+数码管显示
  19. OA是什么意思?什么是OA? OA系统是什么?
  20. 程序员去外包公司有前途吗?

热门文章

  1. (Struts)ActionForm类及表单数据验证
  2. 哈工大《同义词词林》共享版的若干改进
  3. pc机 串口 并口 com口 详解
  4. 微信即时通信原理_企业即时通讯工具需注意哪些问题
  5. MATLAB的人工神经网络应用
  6. 【阿卡乐谱】【日常分享】超级强大的简谱-《茉莉花》
  7. 使用Keras-yolov3来识别滑动验证码
  8. 逆波兰表达式 c++
  9. 如何在Excel/Word中使用复选框
  10. SpringMVC工作原理与工作流程