软件工程课程总结

来源:互联网 发布:网络系统管理课程 编辑:程序博客网 时间:2024/06/05 09:07

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


软件工程(C编码实践篇)课程实验报告

实验一:写一个hello world小程序
实验二:命令行菜单小程序V1.0
实验三:内部模块化的命令行菜单小程序V2.0
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
实验七:将menu设计为可重用的子系统


课程学习心得体会

  • 纸上学来终觉浅,绝知此事要躬行。软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。可是,单单学习软件工程的方法是不够的,应该弘扬科大校训,红专并进,理实结合,实践是检验真理的唯一方法。

  • 软件工程(C编码实践篇)这门课,就是以C语言为代表,将软件工程方法真真切切的运用到实践中去,通过7个线上实验,以及6个以Go语言为例的线下实验,在学习软件工程过程方法的同时,学习和重温了C语言和Go语言的编程规范以及编码要求,很大程度的提高了我的编程水平。

  • 通过这几次的实验,让我了解了linux环境下进行C语言编程的基本方法,再一次感受到了ubuntu系统的简便和快捷。 与windows编程需要IDE开发环境不同,linux系统本身已经良好的集成了进行C语言的基本环境,所以只需在终端输入几个简单的命令,程序即可编译并运行了。只是对于习惯了图形界面的我们来说,刚上手时的确会感到这种方法的不便之处,尤其是对于初学者来说,不知道任何gcc或者gdb的命令就根本无从下手,而这一切只能靠记忆。

  • 当你开发一个大的项目时,团队里分工合作,这个时候也就是考验你编程风格的时候,一个好的程序写得一手好代码,不仅仅是代码可执行性,代码的可读性也很重要,代码风格的原则:简明、易读、无二义性,缩进、命名、注释等代码编排的风格规范。

  • C语言是面向过程的一门计算机语言,可以用callback函数实现多态以便接口更加通用,实现信息隐藏

  • 模块化编程思想对一个程序员来说尤为重要,将命令程序的业务逻辑层和数据存储层分离,并且将数据存储层和功能业务层分在不同的源文件中来实现,这样可以独立的来维护。同时还学习了在编码中,一个函数或一个方法只做一件事,在设计上,一个系统、一个子系统、一个模块、一个类等也只做一件事。一定要有错误处理。 模块之间要高内聚,低耦合。

  • 在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。同时了解了函数的可重入性与线程安全之间的关系,可重入的函数不一定是线程安全的;可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);不可重入的函数一定不是线程安全的。

  • 在子系统的设计当中,要设计出可重用的接口。在linux下对代码的编译可以编写Makefile文件,然后直接用make命令编译会省事不少。getopt()用来分析命令行参数。参数argc和argv分别代表参数个数和内容。


课程学习总结

  • 收获
    在以前,我一直对软件存在一些偏见或则是误解,认为软件就是程序,软件的开发就是编写程序,只要编完了程序,一切也就ok了,而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就能写程序了。一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。 但是通过了《软件工程》这门课的学习,使我认识到了我以前的错误。软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。

  • 遗憾
    设计模式/软件设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式提高了代码可重用性、让代码更容易被他人理解、保证代码可靠性、程序的重用性。希望以后老师能够开设这门课,这样我们能对软件工程有一个更好的理解。

原创粉丝点击