目录

浅谈软件工程学习心得

浅谈软件工程学习心得

【张城硕(sa15226451) + 《软件工程(C编码实践篇)》MOOC课程作业 】

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

关于软件工程

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

关于代码

在代码上,我在软件工程中学习到的是。

在细节上:

  • 第一、需要遵守 代码规范 ,好处是便于修改和维护。让别人看的清楚你的代码;

  • 第二、数据和业务逻辑的分离。我们需要将代码进行 模块化 ,从而更好地维护和复用代码;

  • 第三、懂得合理地 设计接口 ,既不能面面俱到,也不能太过笼统,够用就好。比如说:链表的接口设计和菜单的接口设计就有所不同。链表需要增删查改的接口,而菜单的接口就无需如此太过细节化;

  • 第三、掌握代码的运用技巧,比如说 回调函数 的使用;

  • 第四、非功能性需求,比如说 安全性 。这里尤其需要谈到的是线程安全,如何利用加锁的机制构建出写出安全的代码;

  • 第五、设计思想,这里需要应用一些前人总结的 设计模式 ,比如说工场模式、观察者模式、适配器模式等。应用这些模式能大大增加代码的延展性,更好地包容变化,更好地复用代码。当然,为了拓展视野,孟老师也提到函数式、形式化方法的编程;

关于我

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

最后,深深感谢孟宁老师给我带来了如此生动、有趣而又丰富的软件工程课程。

实验报告

下面附上我的实验报告链接(全5分,也是对我尽力编程的认可吧):

实验一:写一个hello world小程序

实验二:命令行菜单小程序V1.0

实验三:内部模块化的命令行菜单小程序V2.0

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

实验六:可重入函数的相关测试,一次小测验。

实验七:将menu设计为可重用的子系统