软件工程(C编码实践篇) -- 课程总结


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


一:课程总结:

    软件工程是一门学科,是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件的一门科学,它在代码的规范,设计的规范,模块化思想,线程的安全性,子系统统的可重用性上都有所要求。

    跟谁孟宁老师学习软件工程mooc课程,收获颇多。写软件跟做人一样,小事能看出一个人是否聪明,而做大事,就要看这个人的人品。在软件工程中,小聪明就像一些语言中的奇艺巧计,而人品就是编程风格。稳重的编程风格更有利于交流,修改,理解,再开发。

    写软件,就像行军打仗,要有大局观,要懂得各种行为的利弊。不能只图一时痛苦或自己痛快,例如要养成写注释的良好习惯,这样以后自己活着别人再看代码时更容易看懂。同时,要会合理利用时间,不要把过多的时间浪费在自己解决问题上,有时,前人的一点指点,文献上的一句话能让我们成长更多,把时间用在理解实践这些精髓上,是绝对不吃亏的。

    这次课程,孟宁老师只是给我们用一个menu增量开发的例子来讲解软件工程中的一些概念原则,毕竟课堂时间有限,需要我们深入学习的东西还有很多。师傅领进门,修行靠个人。我相信,通过孟宁老师详细透彻的指导,我会在 IT 道路上走的更远更顺畅。


二:课程实验:

    以下是通过学习孟宁老师的软件工程(C编码实践篇)所做的具体的实验部分:

    实验一:工欲善其事必先利其器-通过第一次实验会让你深刻的了解Linux下的一些基本的操作,在Linux环境下做开发可以让你彻底掌控你的开发设计,实验报告采用markdown进行书写,可以将自己的思路进行总结,也是对将来的软件工程文档的书写打下良好的基础:第一次实验报告-“hello world”

    实验二:本次实验是实现一个命令行的菜单小程序,从hello world开始不断迭代调试使代码长的越来越像一个命令行的菜单小程序,并且通过这次实验学习了代码风格规范。“写代码要小步快跑不断迭代,罗马不是一天建成的”:第二次实验报告-命令行菜单小程序

    实验三:使实验二的代码模块化,并且学习代码设计中的一些常见方法,KISS、不要和陌生人说话原则等等:第三次实验报告-内部模块化的命令行菜单小程序

    实验四:代码是一个不断迭代调试的过程-可重用的链表模块来实现命令行菜单小程序,通过本次实验会使你更加的了解到程序模块化设计的方便之处,在后期会更加方便的维护自己的代码等等:第四次实验报告-用可重用的链表模块来实现命令行菜单小程序

    实验五:用callback函数实现的多态浅析并注意信息隐藏:第五次实验报告-用callback增强链表模块来实现命令行菜单小程序

    实验六:通过本次实验会让你学到线程方面的知识包括,函数可重入性、线程安全以及两者之间的关系,怎么去处理线程安全的问题等等。

    实验七:把我们上几次做的命令行菜单通过老师讲的一些有用的方法做成一个可重用的子系统:第七次实验报告-将menu设计为可重用的子系统


三:知识点分享:

    1.什么是函数的可重入性?

    可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。

     2.可重入函数:

        1)不为连续的调用持有静态数据。

        2)不返回指向静态数据的指针;所有数据都由函数的调用者提供。

        3)使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。

        4)绝不调用任何不可重入函数。

    3.什么是线程安全?

    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 

   线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行读写操作,一般都需要考虑线程同步,否则就可能影响线程安全。

    4.函数的可重入性与线程安全之间的关系

        1)可重入的函数不一定是线程安全的;

        2)可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);

        3)不可重入的函数一定不是线程安全的;



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





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值