李伯威+原创作品转载请注明出处+《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

一、心得体会

首先我要真挚的感谢孟宁老师两个月来不辞辛苦的授课,这让我在其中获益良多.经过两个多月的学习,高级软件工程的课程就要结束了.本人在本科也学习过软件工程这门课程,本想应该没有那么多不同,但是没想到这门课由孟宁老师演绎的如此的不同.尤其是在代码层面的学习,孟老师教授我们把代码作为整个工程的一部分,从代码设计规范,模块化思想,子系统的接口可重用,线程安全等多个方面来编写代码。而且孟老师打破了传统软件工程书本教学的方式,而是理论与实践完美的结合起来,每个实验之间都相互关联,实验内容层层深入,实验难度逐步增加,为我们理解软件工程的思想起到了明显的作用。学习完这几周的课程,我对代码从另外一个角度有了一个全新的认识,真的受益颇多!探索如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件。这样的思维我认为对于一个准程序员来说是非常珍贵的经验.以下是本课的部分经验

(1)在代码的规范上,需要项目组统一格式,函数和变量的命名方式,每个语句前是用tab键还是用4个空格 等等都需要规范!
(2)在设计规范上,要保证代码是高内聚,例如一个函数只做一件事,一个模块只做一类事的,实现功能尽量用库函数;还有要遵循“不和陌生人说话”的原则,以保证除了类提供的接口,别人无法访问类的其他内容。同时要合理使用数据结构、控制结构等来简化代码。
(3)在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性。
(4)在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。
(5)在子系统的设计当中,要设计出可重用的接口。
(6)如何设计带参数的函数等。

正如孟宁老师课上讲的:“软件工程是计算机学科中一门政治课,无论在今后的论文答辩还是实际工作中,都会产生深远的影响。”一门学科,比如土木工程,机械工程等,一旦被提高到工程的高度,就意味这不仅仅只是一门科目的学习,需要多学科交错,以有关的自然科学和技术科学为理论基础,结合生产实践中的技术经验,研究和解决在设计,开发,测试,维护软件中的全部理论和实际问题。所以,人们在软件危机(Software Crisis)后,专门设立研究软件工程来解决在软件开发中遇到的问题。现今,数不清的互联网企业加持着计算机软件蓬勃发展,特别是移动端的 App,开发周期短,更新频率高,需求不稳定,这就要求我们这些软件开发人员要对软件工程理解深刻,特别对敏捷开发这一方面。所以孟宁老师在整个授课周期内,安排了一个实践开发项目,来模拟公司中小项目的敏捷开发,强调了只开发有用的制品,聚焦可执行的软件,提倡交流、沟通、团结、合作,让开发者全面理解软件需求。

二、实验报告参考目录

第一周实验:写一个hello world小程序 注:学习Linux环境下的一些基本操作,如cd,gcc,vim,git等,熟悉实验环境。

第二周实验:命令行菜单小程序v1.0 注:学习代码风格的原则:简明、易读、无二义性。并注意缩进、命名、注释等代码编排的风格规范。

第三周实验:内部模块化的命令行菜单小程序V2.0 注:学习模块化思想相关的知识,学会将系统抽象为两个层级:菜单业务逻辑和菜单数据存储。

第四周实验:用可重用的链表模块来实现命令行菜单小程序V2.5 注:学习高内聚低耦合的思想,使代码更具有通用性并且更容易管理。注意接口规范。

第五周实验:用callback增强链表模块来实现命令行菜单小程序V2.8 注:利用callback函数参数接口更加通用,注意接口的信息隐藏

第七周实验:将menu设计为可重用的子系统 注:熟悉使用Makefile文件来简化多个文件的编译命令,学习menu程序的可重用性,学习getopt函数。

三、总结

综上:高级软件工程这门课收获是非常多的,不同于其他传统老师上课讲学生下面听的课程,这门自己动手在写vue.js的代码种不断强化自己对软件工程这么学科的深度理解,互相学习的课程使我认识到软件工程对我们今后的开发,面试找工作都有着重大的影响,在一个团队中一个好的设计,好的代码质量将给团队带来巨大的效益。代码风格良好也为程序带来了良好的可读性,同时也便于软件后期的维护和升级。现在自己在编程的时候经常会自动的考虑代码规范性问题,以及要不要模块化,要不要对接口加以改进,这是学习这门课最大的收获。每一次课每一次实验都有一种新的体验:原来我还可以这样!这是一种思想的前进,思维的提升,相比于两成时间写代码,其余时间维护测试,思维的提升更重要!最后再次感谢孟宁老师和两位助教老师的辛苦指导,没有你们的辛苦耕耘,就没有我们的获益良多!

最大的遗憾就是没有使用vue.js设计一个符合孟宁老师授课的思想的一个完整项目,但是我会争取在课下时间去弥补此次的遗憾.

高级软件工程《软件工程(C编码实践篇)》课程学习心得及内容总结相关推荐

  1. 软件工程(C编码实践篇)学习总结【实验楼系列shiyanlou.com】

    对软件工程的理解及学习软件工程(C编码实践篇)的心得 有些事情没有亲身去体验去经历,永远不知道书上总结的一些思想方法是多么的实用,软件工程是将软件按照工程化方法去开发软件,不是当时完成客户需求就可以了 ...

  2. 云课堂软件工程(C编码实践篇)学习之我见

    梁作宇 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 写在前言 ...

  3. 《软件工程(C编码实践篇)-孟宁》学习心得汇报

    作者:郑航 原创作品转载请注明出处 <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006" 一 ...

  4. 《软件工程(C编码实践篇)》课后感

    Fibonacci(与最后申请证书的姓名务必一致) + 原创作品 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1 ...

  5. 利器而善事——记《软件工程(C编码实践篇)》学习感悟

    张少伟 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 SA17225499 张少伟 感悟 一 ...

  6. 软件工程(C编码实践篇)课程总结

    软件工程(C编码实践篇)课程总结 真实姓名:夏雪松(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.stud ...

  7. 软件工程(C编码实践)学习总结——中国科学技术大学孟宁老师主讲!

    原创作品转载请注明出处<软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/learn/USTC-1000002006 软件工程(C编码实践篇)> ...

  8. 计算机网络课学习心得,计算机网络课程学习心得

    计算机网络课程学习心得 计算机网络课程学习心得 除笔试外,还采取机试综合大作业.小组课题设计等考试形式,客观地反映学生对所学知识的把握程度. 计算机络学习心得1:计算机络课程学习心得(4199字) 通 ...

  9. 大学计算机课的学后感,大学课程学习心得体会感想

    大学课程学习心得体会感想 通过每周一次的大学课程学习,我也接触到了更加丰富的英语学习资源,开阔了视野,掌握了利用个人展示这一强大的平台来锻炼我们的心得体会感想.下面是为大家收集整理的大学课程学习心得体 ...

最新文章

  1. 当PullToRefreshScrollView里面嵌套ListView
  2. 自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  3. Alpha冲刺Day5
  4. 第一个正式的python版本_LeetCode | 0278. First Bad Version第一个错误的版本【Python】...
  5. 拖动无边框的登入窗口
  6. VMware产品演示网站
  7. 二叉树的基本操作(C)
  8. 如何将 UbuntuServer 安全的升级
  9. ClassyShark——apk分析利器
  10. 【Python学习21】Python中函数的用法,使用函数进行简单的数学运算
  11. 世界主要国家货币名称列表整理[外贸免费工具]
  12. kdiff3的主窗口说明 Base Local Remote 分别代表什么分支
  13. 树莓派安装中文输入法(谷歌拼音)
  14. 空间里相片批量导入u盘_怎样将U盘内相片弄到QQ空间的相册内
  15. 验证OpenVino时,找不到指定模块的解决
  16. MySQL原理与实践(五):数据库的锁机制
  17. AdGuard过滤规则
  18. 线上线下模式暗藏专利风险?
  19. 夜神模拟器连接手柄无反应_夜神安卓模拟器怎么连接手柄 夜神模拟器连接手柄教程...
  20. 用MAC系统写C语言程序

热门文章

  1. 蓝桥杯 省赛 砝码称重
  2. java毕业设计网络学习平台源码+lw文档+mybatis+系统+mysql数据库+调试
  3. Aspose.PDF for Java 21.6 Crack
  4. 时光易逝,且行且珍惜
  5. Cookie报错java.lang.IllegalArgumentException
  6. UE4独立游戏开发简介
  7. VS2019和pycharm的添加炫酷图片背景(详细步骤)
  8. 大数据技术之_31_Java 面试题_02_== 和 equals 有什么区别 + String 相关 + 多态 + 传值 + static 加载机制 + 线程
  9. 计算机室内设计 cad 论文,CAD室内设计毕业答辩论文.doc
  10. ECCV 2020 3D点云 Point Cloud 文章汇总