软件工程线上课程(C语言实践篇)学习心得总结

时间:2021-08-05 16:45:59

王俊杰 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》:

MOOC课程http://mooc.study.163.com/course/USTC-1000002006

一、 前言

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、*部门等。这些应用都促进了经济和社会的发展,也提高了工作和生活效率 。同时,软件工程师研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件的一门科学,代码的设计不单单是为了使程序可运行,可实现需要的功能,在代码的规范,设计的规范,模块化思想,线程的安全性,子系统的可重用性上都有所要求。而这门软件工程线上课程(c语言实践篇)正是侧重代码的规范和设计的规范性。

二、心得体会

学习完这门课,我对软件设计开发有了一个新的认识,以前总认为软件就是写程序,开发软件项目就是大家一起写程序,然后拼在一起实现最后的功能,但现在,通过8周的学习,我了解到软件开发远比单单写程序来更高端,更复杂。
课程一开始就介绍了在编码中需要注意的许多事项,比如代码应具有良好的可读性,对变量和函数的命名都应该有严格的规范,同时遵循一种统一的风格,良好的代码风格能够省去不必要的注释,让代码更“漂亮”,同时易于他人阅读。紧接着,实验从最熟悉的hello word开始,当然,这个实验主要是让我们先了解实验环境,了解代码规范的一些基础内容,为后面的学习打基础。接着一步一步地添加功能,不知不觉将命令行菜单的一个小程序慢慢地变成了一个命令行的小系统。
在逐步求精的过程中,同时注意代码的重用性,将可重用的代码模块化,以供其它模块使用,而不必在每次使用时重新编写。整个实验过程中,老师多次强调代码规范问题,促使我们养成良好的代码编写习惯。

三、实验内容及报告

实验一: 写一个helloword程序

在实验楼Linux环境使用C语言编写,编译后执行输出"Hello,World!";
实验和实验报告务必在实验楼linux下完成,课程视频是在本地虚拟机上操作的,除了目录环境和作业提交方式不同外,基本的命令和编辑操作方式是一致的。

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

实现一个命令行的菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,实现的命令个数不少于8个;
类似ftp的help目录或者bash的help目录;
程序循环、接收用户的命令,如help、others等命令;
可以广泛通用的命令行菜单子系统组件,可方便地定制而嵌入到其他系统。

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

注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储
要求:1)遵守代码风格规范,参考借鉴代码设计规范的一些方法;2)代码的业务逻辑和数据存储使用不同的源文件实现,即应该有2个.c和一个.h作为接口文件。

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

用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作;
链表模块的接口设计要足够通用,命令行菜单小程序的功能保持不变;
可以将通用的Linktable模块集成到我们的menu程序中;
接口规范;

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

给lab5-1.tar.gz(在实验楼Linux虚拟机环境下~/se_files/目录下)找bug,quit命令无法运行的bug
利用callback函数参数使Linktable的查询接口更加通用
注意接口的信息隐藏

实验六(测验): 函数的可重入性(reentrant)及线程安全

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

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

四、总结

这门课程使我获益良多,让我对软件工程有了初步的认识,遗憾是课时有点少,没有能更深入的了解。通过实验楼的学习,我知道课堂上学到的知识是有限的,在这个网络发达的时代,只要我们够努力,肯花时间去努力去钻研,不断学习,最终一定可以学到更多知识。谢谢网易云课堂平台!