文章目录
前言
本学期选修了孟宁老师的高级软件工程,收获匪浅,感谢孟宁老师的教导,在这里简单分享一下自己收获的知识,供大家学习参考。
一、性能有限策略背后隐藏的代价
1、开发时间上的代价
2、测试代码上的代价
3、理解代码的代价
4、修改代码的代价
二、模块化软件设计的基本原理
模块化(Modularity)是在软件系统设计时保持系统内各部分相对独立,以便每一个部分可以被独立地进行设计和开发。这个做法背后的基本原理是关注点的分离 (SoC, Separation of Concerns)
分解成易解决的小问题,降低思考负担。
每个模块只有一个功能,易于开发,并且bug会集中在少数几个模块内,容易定位软件缺陷,也更
加容易维护。
软件设计中的模块化程度便成为了软件设计有多好的一个重要指标,一般我们使用耦合度和内聚度来衡量软件模块化的程度。
一般追求松散耦合。
内聚度是指一个软件模块内部各种元素之间互相依赖的紧密程度。
理想的内聚是功能内聚,也就是一个软件模块只做一件事,只完成一个主要功能点或者一个软件特性(Feather)
三、什么是本地化外部接口
使用本地化外部接口,本质上是一种设计模式,代理模式,即客户端通过代理间接地访问该对
象,从而限制、增强或修改该对象的一些特性。能够有效降低模块与外部的耦合度。
四、接口的五个要素
1、接口的目的
2、接口的前置条件
3、使用接口的双方需要遵守的协议规范
4、接口的后置条件
5、接口所隐含的质量属性
五、接口和耦合度之间的关系
1、数据耦合
在软件模块间显式的调用传递基本数据类型为数据耦合。
2、标记耦合
在软件模块间显式的调用传递复杂的数据结构为标记耦合。
3、公共耦合
在软件模块间共享数据区和变量名成为公共耦合。隐式共享数据区和变量名。
耦合度由低到高:数据耦合,标记耦合,公共耦合。
六、通用接口定义的基本方法
1、参数化上下文
2、移除前置条件
3、简化后置条件
七、什么是可重入函数
可重入函数可以由多于一个线程并行调用,而不用担心数据错误。相反,不可重入函数不能由超过一个线程所共享,除非能确保函数的临界区是互斥访问的(或使用信号量,或在代码的关键部分禁用中断)
可重入函数可以在任意时刻被中断,稍后继续运行,不会丢失数据。
八、可重入函数一定是线程安全的吗
不一定。不同的可重入函数在多个线程中并发使用时可能会出现线程安全问题。
不可重入函数一定不是线程安全的。
总结
以上列举了部分上课时我认为比较重要的点,供大家参考。
参考资料 《代码中的软件工程》
学号:378