软件工程的理解及学习软件工程(C编码实践篇)的心得

来源:互联网 发布:暨南大学网络教学平台 编辑:程序博客网 时间:2024/05/22 12:52

 

1、对软件工程的理解与学习软件工程(c编码实践)的心得

     软件工程作为开发者最为重要的课程没有之一,只要学习了一门开发语言就具有了成为开发者的基础,但是否系统学习了软件工程才是区分码农与开发者的关键,但对于软件工程的学习不止在课堂之上,更要结合在实践之中。在学习前后,简单对比我觉得就像面向过程与是面向对象区别之大一样。一般思路总是以功能来构思,列出1、2、3、4逐项实现,但在开放中的重复,交叉,高耦合都不可避免。而结合软件工程的需求分析、用例建模、对象交互分析、高级用例建模、结合设计模式等自不必说,其中的区别简直是不用多说,不说虚的,就说在在实习面试中的经历相信大家也是深有感触。

    对于c编码实践应分为4个模块:1)代码风格层次

                                                             2)代码模块化层次

                                                             3)代码可重用性层次

                                                             4)线程安全方面的问题

     1)代码风格层次——代码风格规范就像一个人的长相一样,通过看你的代码风格就能大致想象出你是一个什么样子的人,养成好的代码风格以及规范会使我们事半功倍。

     2)代码模块化层次——通过学习深刻了解到了代码模块化封装的重要性,以及一些模块化的规则,好的模块化程序的判定条件等等。

     3)代码可重用性层次——避免一些无用功,可以使以前自己或者前辈们写过的代码重用到现在要写的程序里面,在代码可重用性层次上面要非常注重模块化程序接口的设计,尽量多考虑到以后可能会用到的一些接口。

    4)线程安全的问题——现在的设备都是一些多线程同时运行的设备,如果你连最基本的线程安全问题都不懂的话,不单是设计项目能否成功,其在运行过程中的错误也无法预知。


2、课程总结

      实验列

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

     关键词:Linux环境、代码库管理

     实验一的内容非常简单,只是实现一个简单的hello world程序,但是在第一次试验中使用了linux编程环境,linux基本命令对于今后的学习会有很大的帮助,从小程序入 手,才能逐步的过渡到大的软件工程项目,而且让我们学会使用代码库来管理代码,对于今后的维护和管理很有帮助。

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

     关键词:代码规范性、代码编排风格

              本次试验通过一个简单的命令行菜单小程序来引导我们保持代码书写的规范性,遵守简明、易读、无二义性的代码风格,注意书写代码时候的缩进、命名、注释等代码编排的风格规范。

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

     关键词:内部模块化

    实验三是在实验二的基础上进一步的改进,在这一部分,主要强调的内容是注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑,和菜单数据存储,使用不同的源文件实现,所以会有2.c和一个.h作为接口文件。这部分很关注代码设计规范的方法中的内部模块化的方法,内部模块化的方法在软件开发中是利器,使得程序的整个结构体系更加的清晰,便于代码的阅读和后期的功能补充,而且在整个过程中简化了程序员对于代码的理解过程,所以在后续的程序开发中要尤其注重在这方面的提高。

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

     关键词:可重用链表、接口设计

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

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

    关键词:callback、数据隐藏

   实验五是在实验四的基础上进一步进行改进,在这一部分,是为了学习callback函数,它是一种实现模块通用性的实现机制,能够实现模块解耦功能,

利用callback函数参数使Linktable的查询接口更加通用,同时我们也必须要注意接口的信息隐藏

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

    关键词:Makefile方法、fgets()menu子系统

   实验七仍然是在之前的实验基础上进行的新功能的添加,Makefile方法能够减轻执行程序时繁琐的指令输入过程,menu子系统的引入,能够支持带参数的复杂命令,在用户代码中定义一个带参数的复杂命令。getopt()用来获取命令参数,实现对指令的调用;gets()方法有缓冲区溢出的问题,为了防止缓冲区溢出攻击的危险,使用fgets()方法更好。

3、结课总结

     3.1、在课程中最大的收获

      虽然学习本课程之前也做过几次课程实践,但是在c编码实践的课程上对系统结构的优化思路是之前从未遇到过的,学习后获益匪浅不单是孟老师的授课内容更是开拓了新的思路,之前也接触过一些软件工程中设计模式中的知识:UML相关,但是对于如何应用一直没有真正的理解感觉只是些空泛的理论,如六大原则、现在才理解到了如何在自己的编码中表现。孟老师联系google为例,由同学们来讲解各自负责方面,但是有些内容还未有充分的理解,感觉有些脱离自身的基础,不过还是有不少收获,尤其正是在测试工程实践的时候,对于我们编写文档有极大的帮助。而对于go语言的学习就是附加的收获了。


     3.2、课程后最大的遗憾

        虽然也做了ppt但是没有上台与大家分享的机会,因为是在下半学期学习孟老师的课程,错过了结合自己的工程实践来深刻理解软件工程设计的机会,其实在上半学期我也旁听了高软课程不过后来其他课程开始后,没有在继续随堂学习,如果具体自身遇到的问题与孟老师交流对理解软件工程一定有更大的收获,希望有学习机会的同学在接触这门课的同时就端正态度,完成课内任务,课余自行拓展,一定会有非凡的收获。



 郭晨 转载请注明出处《软件工程(C编码实践篇)》MOOC课程:http://mooc.study.163.com/course/USTC-1000002006#/info

阅读全文
0 0
原创粉丝点击