手撕软件工程导论核心知识点系列:结构化设计暨编码与测试

Posted 37yuany

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手撕软件工程导论核心知识点系列:结构化设计暨编码与测试相关的知识,希望对你有一定的参考价值。

0. 思维导图

在这里插入图片描述
利用‘导弹’形状的思维导图致敬笔者硕士期间的研究方向:制导技术(Navigation guidance and control)!

1. 结构化设计

定义:结构化设计主要包括‘概要/总体设计’和‘详细设计/过程设计’——将软件需求转化成数据结构和软件系统结构。
模块化:按适当的原则将软件划分为若干个较小的、相关而又相对独立的模块。
原因:
1.O(A+B) > O(A)+O(B),降低复杂度。但不意味着划分的模块越多,开发难度越低,因为相应的接口成本也在增加,应寻找最小成本区!
2.若干相对独立的模块便于软件功能的扩展和修改。
抽象:抽出事物的本质特征,暂不考虑细节。
逐步求精:帮助设计者在设计过程中揭示底层细节。
信息隐藏:隐藏各个模块的内部实现细节,只需通过接口调用。
模块独立:原因——1.开发时便于分工合作;2.开发完成后便于测试和扩展维护。
定量衡量标准:1.耦合:不同模块之间的互联程度(无耦合、松散耦合和紧密耦合);2.内聚:模块内各元素彼此结合的紧密程度
启发规则:通过开发经验的积累,得出一些有用的开发规则。

  1. 对初步开发程序进行分解或合并,降低耦合提高内聚;
  2. 每个模块规模应适中,一般在50~100行,不超过500行;
  3. 深度、宽度、扇入和扇出适中;
  4. 降低模块接口的复杂度。

2. 编码

定义与依据:根据概要设计和详细设计说明文档,选用特定程序语言书写源代码。
程序语言分类:机器语言——汇编语言——高级语言;编程语言排行:TIOBE。
程序语言选择:根据实际需求进行适当地选择。
编码风格
1.命名规则适当;
2.1含序言性注释,如:
/********************************************
*Function Name: xxxx
*Create Date: 2021/4/15
*Author: *******
*Email: *****@163.com
**
Description: xxxxx
*********************************************/
2.2含程序中注释,有效注释量20%以上;
3.适当的空格、空行和缩进;
4.不要多个语句写在一行;
5.少用goto语句;
6.避免大量的嵌套和循环;
7.bool类型中true对应非0,false对应0,
正确用法:bool flag; if(flag)……; if(!flag)……;
错误用法:bool flag; if(flag1)……; if(flag0)……;
8.正确的输入输出方式;
9.提高编码效率:降低时间和空间复杂度;

3. 测试

定义:软件开发过程中的错误是防不胜防的,如何系统且全面地排查错误十分重要!——“发现错误”
测试方法
黑盒测试:不管软件内部逻辑,从实现功能角度测试;
白盒测试:基于对软件内部的熟知,设计相应的测试方法;
灰盒测试:在白盒测试中交叉使用黑盒测试 或 在黑盒测试中交叉使用白盒测试。
测试步骤:单元测试——>集成测试——>系统测试——>验收测试。
调试与测试:测试是只发现错误,调试是发现错误原因并修改程序以修正错误。

4. 参考文献:

[1] 张海藩,吕云翔. 软件工程[M].人民邮电出版社:, 201309.348.
[2] Varun Gupta, Chetna Gupta. Research and Evidence in Software Engineering: From Empirical Studies to Open Source Artifacts[M]. CRC Press:2021-04-15.
[3] F. L. Bauer, J. B. Dennis, W. M. Waite, et al. Software Engineering[M]. Springer, Berlin, Heidelberg:1975-01-01.

本人水平有限,文中错漏缺点在所难免,欢迎私信或评论区留言!
原创不易!鼓励收藏点赞加分享!
#非科班码农的自我救赎!共勉!#
#知乎/简书/CSDN同号:37yuany#

以上是关于手撕软件工程导论核心知识点系列:结构化设计暨编码与测试的主要内容,如果未能解决你的问题,请参考以下文章

大数据专业学啥?

软件工程导论

大厂算法系列编码手写顺序表相关功能,线性结构核心知识点详细剖析

记2——软件工程导论

搞芯片开发要学会啥课程

大数据专业主要学啥?