![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高级软件工程
文章平均质量分 88
青衫客36
这个作者很懒,什么都没留下…
展开
-
No Silver Bullet
“No Silver Bullet” is a popular term in software engineering, originating from a famous paper titled “No Silver Bullet — Essence and Accidents of Software Engineering” written by Fred Brooks in 1986. In this paper, Brooks put forth his views on the diffic原创 2023-07-31 13:44:59 · 229 阅读 · 0 评论 -
Benchmarks
A benchmark in software engineering is a standard or point of reference against which software products or processes can be compared to assess their quality or performance.Benchmarks are used for a variety of reasons:Performance: Benchmarks are often used原创 2023-07-25 10:55:21 · 83 阅读 · 0 评论 -
《代码中的软件工程》学习总结/心得体会
从个软件过程PSP框架的概要描述中,可以清楚地看到,如何作好项目规划和如何保证产品质量,是任何软件开发过程中最基本的问题。PSP可以帮助软件工程师在运用软件过程的方法和原则,借助于一些度量和分析工具,了解自己的技能水平,控制和管理自己的工作方式,使自己日常工作中的评估、计划和预测更加准确、更加有效,进而改进个人的工作表现,提高个人的工作质量和产量,积极而有效地参与高级管理人员和过程人员推动的团队范围的软件工程过程改进。个体软件过程PSP为软件工程师提供了发展个人技能的结构化框架和必须掌握的方法。原创 2023-07-07 11:45:07 · 1268 阅读 · 0 评论 -
VS Code Remote Development
当被提示时,输入你的密码并且按 Enter,继续安装。(2)安装完成后,SSH 服务将会被自动启动。输出将会告诉你服务正在运行,并且启用开机启动:注意,Ubuntu 自带一个配置防火墙配置工具,称为 UFW。原创 2023-05-21 20:18:30 · 1284 阅读 · 1 评论 -
Makefile实验
1、input.h2、input.c3、calcu.h4、calcu.c5、main.c编译上述.c文件执行生成的可执行文件main./main。原创 2023-04-10 21:27:37 · 615 阅读 · 3 评论 -
Makefile工程文件
在Linux C/C++的开发过程中,当源代码文件较少时,我们可以手动使用gcc或g++进行编译链接,但是当源代码文件较多且依赖变得复杂时,我们就需要一种简单好用的工具来帮助我们管理。于是,make应运而生。make主要用来管理C/C++项目,通过Makefile书写的规则来对项目中的源代码文件进行编译,生成可执行的程序。转载 2023-04-10 17:23:18 · 162 阅读 · 0 评论 -
可重入函数与线程安全
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行读写操作,一般都需要考虑线程同步,否则就可能影响线程安全。原创 2023-04-03 22:43:32 · 764 阅读 · 0 评论 -
Linktable增加Callback方式的接口
由上图我们可以发现,在业务模块初始化Menu菜单时,我们使用malloc开辟了tDataNode类型的空间,然后把其中的成员变量赋值,注意最后我们在向LinkTable链表中插入时,对其进行了强制类型转换,转换成了tLinktableNode类型,因为LinkTable中的节点tLinktableNode中,成员只有一个(即指向自己后继的指针),那这样强制类型转换后,tDataNode中的其他成员的属性值是不是就丢失了呢?回调函数是通过函数指针调用的函数。linktableInternal.h文件。原创 2023-04-01 16:05:32 · 493 阅读 · 0 评论 -
可复用软件模块的接口设计
在上一篇博客中,我们给出了模块化代码的基本写法,本文我们继续探讨对menu程序进行改造,使之成为可复用软件模块。下面先引入可重用软件的一些相关概念。原创 2023-03-31 23:05:06 · 2187 阅读 · 0 评论 -
VS Code配置go编译调试环境+编写menu第一版简单程序
选用go或rust编写menu项目,创建一个版本库(gitee或github),采用VS Code作为编译调试环境。撰写一个帖子,从创建版本库、配置VS Code编译调试环境、编写menu第一版简单程序,以及最终调试运行,完整记录下来,目标是为go或rust的开发者提供一个开发环境配置和工作流程的参考。1、在Gitee上创建仓库menu,使用git clone命令克隆到本地。2、Linux配置go编译调试环境。3、VSCode配置Go编译调试环境。(5)查看所有go环境变量的当前值。(3)调试运行该程序。原创 2023-03-19 10:29:18 · 778 阅读 · 0 评论 -
menu.go第二个版本-使用开源社区的典型写法
我们在 datanode.go 文件中定义结构体 DataNode ,它包括命令名称、命令描述、命令对应的 handler 函数和指向下一个 DataNode 结点的指针。注意所有的变量名首字母都要大写,这样我们才能在 linklist 包外访问该 DataNode 和它的成员。Cmd string。原创 2023-03-26 19:35:41 · 312 阅读 · 0 评论 -
模块化软件设计
进一步,还可以将数据结构及其操作与菜单业务处理进行分离,将数据结构及其操作独立出来,与命令的定义和菜单引擎分解开来各自独立编码。进行了模块化软件设计之后,我们往往使设计的模块与实现的源代码文件有映射对应关系,menu.c和linklist.h/linklist.c模块的映射对应关系如下图所示,因此我们需要将数据结构及其操作放到单独的源代码文件中。在开源社区中命令行菜单常见的写法是通过一个数据结构的数组来定义一组命令,从而实现命令的定义独立于菜单引擎关键代码,其中的关键是使用指针函数handler。原创 2023-03-27 10:26:51 · 2300 阅读 · 0 评论