《高级软件工程》学习总结

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

1. 课程总结

上学期并没有选上高级软件工程这门课程,终于在这学期修了,非常有幸和孟宁老师学习这一门课程。如果学习软件工程这门课程不实际动手,就相当是政治课一样。仅仅是一些条条框框,只有实际动手,才能领会到精髓。以前对软件工程并不陌生,但孟宁老师在教授这门课程,还是给我不一样的感受。无论是线上课程和线下课程,都受益匪浅。回顾线上课程,从开始的最简单的menu起,到最终的具有一定可重用性的menu菜单小程序,在这个由浅入深的过程中,让我了解学习到了作为一名程序员要写什么风格的代码、如何写出高质量的代码、写代码时要考虑什么问题等一系列之前忽视或者没接触到的问题。

2. 实验总结

实验目录

实验一:写一个hello world小程序
实验主要是了解了git版本控制工具,如何用gcc编译运行。为以后的实验打下基础

实验二:命令行菜单小程序V1.0
实验二主要是做了代码风格的控制,通过简单的menu小程序引导我们书写代码注意缩进、命名、注释等代码编排的风格规范,写出简明、易读、无二义性的代码。

实验三:内部模块化的命令行菜单小程序V2.0
实验在上次实验的基础上,运用模块化的思想,使之包容功能的变化,使代码的书写和设计更加合理。

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
实验四中,要求使用用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,链表模块能够简化对于命令行菜单小程序的功能调用,如果在遇到较大规模的软件,可重用链表模块能够使得整体结构更加清晰。

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
实验五是在上一实验的基础上改进的,主要是为了学习callback函数,它是一种实现模块通用性的实现机制,能够实现模块解耦功能,利用callback函数参数使Linktable的查询接口更加通用,同时我们也必须要注意接口的信息隐藏。

实验六:函数的可重入性(reentrant)及线程安全
这一部分主要是写代码要考虑线程安全问题。

实验七:将menu设计为可重用的子系统
这一部分主要是:

  • 为menu子系统设计接口,并写用户范例代码来实现原来的功能;
  • 使用make和make clean来编译程序和清理自动生成的文件;
  • 使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令;
  • 可以使用getopt函数获取命令行参数。

3. 课程总结

在学习完这门课程之前,我很少意识到编码的规范问题,代码风格也几乎不会考虑,主要是实现相应的功能需求,这样能写代码吗?貌似也能,但是写出的代码很难维护,难免会走很多很多的弯路。通过学习这门课程,我不仅学习了git,熟悉了linux环境,还有了软件工程的思想,对软件工程有了宏观的认识,这种视野对今后的软件开发是大有裨益的。学习的道路还很长,需要了解的还有很多很多。
对于学习完这门课程后最大的遗憾,可能就是自己真正缺乏实际开发项目的经验吧,所以可能对有些软件工程的思想理解还比较肤浅。在以后的工作学习中,我会刻意练习这种思想,一定能螺旋上升,真正理解软件工程。

最后感谢孟宁老师,感谢助教

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值