侵权投诉

软件编程是系统性思维的集中体现

电子产业分析 2018-04-22 10:35 次阅读

所谓“系统性思维”,就是将认识对象作为一个独立的“系统”来进行观察,从系统与要素、要素与要素、系统与环境之间的相互联系、相互作用等方面综合地考察认识对象的一种思维方法。就是说,首先要确定一个研究对象,然后确定它的边界,再对边界内的各要素之间的关系进行研究,这种思维方法使人们的思维更具全局意识和整体性。

软件编程是这种思维方式的集中体现。在编写程序之前,先要搞清楚需要完成的功能,以及要达到的性能,即理清它的业务架构和应用架构,确定整个程序系统的边界。如下图所示的飞机机票预定系统,理清各主要的要素、以及各要素之间的关系。然后再做进一步的细化,包括数据库、各要素模块之间接口的定义等。最后更进一步,确定用哪种语言编程,如用C++++等,设计类、数据、函数的结构等等。所以整个的思路是从系统的角度出发,一步步的细化。无论编写复杂的系统,如需要分布式的架构体系、并发多线程,还是嵌入式的编程,其系统化的思想类似。只是由于软件工程的成熟,你可以基于现有成熟的框架,而不用从头来开发系统,从而减少整个开发的工作量,如在IaaS、PaaS的基础上编写应用层的软件、基于Docker+Kubernets的系统框架,基于Java的编程环境及丰富的调用接口,基于安卓提供的丰富的framework,嵌入式的内核调度系统等。

对更为复杂的系统来说,特别是包含各种软硬件的系统来说,系统性的思维同样重要。如安防的系统,如下图所示,基于对整个业务的框架,确定硬件和软件的整个架构。从硬件的角度来讲,基于业务的需求,确定好系统的容量、传输速率、各个硬件之间的接口、规格等。同时基于硬件的架构,再确定整个软件的架构,使软硬件要素的协同配合。比如交换机、管理服务器等这些硬件内,都需要匹配需求的软件。

而从更微观的系统,如芯片的设计,同样需要系统的思维理念。首先对整个系统的功能与系统提出总体的需求,架构出各主要的模块,如CPUDSP、Memory、PMU、总线等,如下图的结构框图、以及各主要模块要素之间的关系。类似软件的编程,只是语言换成了verilog等硬件描述语言,进行编程与验证。对各功能模块进行版图的划分,确定好各模块的物理位置,以及按照系统的要求,Pin脚的接口定义等。

对一个公司来说,系统性的思维同样适用。只是基于公司作为一个系统的研究对象,公司是一个严密的组织,依据公司战略、业务、规模等的不同,会有不同的组织架构,有事业部制的、职能制的、矩阵制的。不同的组织架构,对各个子模块如何协同合作也会产生不同的影响。所以诊断一个企业时,需要深入观察公司各部分之间的协同合作是否顺畅,是否与公司作为整体的系统的战略相一致。

研究一个企业的时候,商业模式是我们一直很关心的。下图是非常出名的商业模式画布图,包括了重要伙伴、关键业务、核心资源、价值主张、客户关系、渠道通路、客户细分、成本结构、收入来源9个方面。这可以看作是研究企业的9个重要要素,需要着重指出的是这9个要素是相互关联,而不是孤立的静态的。举例来说,公司的价值主张是指通过产品和服务向消费者提供的价值,而这种价值是否能体现很重要取决于公司的关键业务,而公司的关键业务是否能顺利开展,取决于公司掌握的核心资源是否足够,而这种核心资源的稀缺性,往往决定了公司的成本、毛利等相关情况。所以可以看成是环环相扣,每一环运转不顺畅,将直接导致公司商业模式的缺陷。

从更大范围来说,系统的思考方式对一个产业的思考同样是如此。经典的波特五力模型分析方法就是一种很好的系统思考方法。一个产业的激烈竞争不是事物的巧合,而是五种力量要素之间的博弈,这种要素之间的博弈、以及力量之间的转换,决定了该产业当前的状态,以及未来可能的走向。当然还有其他各种产业分析模型,很多思想与系统的思维方式一致,只是要素的划分,边界的定义有区别。

系统的分析方法,特别注重全局的输入输出,以及内部各主要要素之间的互动,可以适用于许多的场景。

原文标题:系统性的思维习惯

文章出处:【微信号:gh_0cdc890e93ea,微信公众号:电子产业分析】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

C++串口控件CportC6的程序和工程文件免费下载

本文档的主要内容详细介绍的是C++串口控件CportC6的程序和工程文件免费下载。
发表于 01-23 08:00 26次 阅读
C++串口控件CportC6的程序和工程文件免费下载

单独的C++ Builder 6的升级包应用程序免费下载

单独的C++ Builder 6的升级包应用程序免费下载
发表于 01-23 08:00 26次 阅读
单独的C++ Builder 6的升级包应用程序免费下载

C++ function技术的实现与具体运用

当std::function对象没有初始化任何实际的可调用元素,调用std::function对象将....
的头像 Linux爱好者 发表于 01-20 09:23 124次 阅读
C++ function技术的实现与具体运用

讲解C++ function 技术的实现与具体运用

当std::function对象没有初始化任何实际的可调用元素,调用std::function对象将....
的头像 Linux爱好者 发表于 01-19 17:05 127次 阅读
讲解C++ function 技术的实现与具体运用

Python源码剖析的PDF电子书免费下载

为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使....
发表于 01-19 08:00 26次 阅读
Python源码剖析的PDF电子书免费下载

从一个简单的C++小程序入手 站在汇编角度C++程序的条件判断语句

在当下,如果还能熟练地用汇编写程序的人怕是会被当成怪人来对待(我之前公司就有一个用汇编程序的 ),即....
的头像 strongerHuang 发表于 01-18 11:24 182次 阅读
从一个简单的C++小程序入手 站在汇编角度C++程序的条件判断语句

C语言与C++相互调用

    1C与C++相互调用 在一个嵌入式系统中大部分的底层和驱动层更多的是采用C语言来进行开发,而....
的头像 strongerHuang 发表于 01-18 11:05 202次 阅读
C语言与C++相互调用

TouchGFX是一个基于STM32硬件由C++写成的软件框架

在TouchGFX 文件夹中找到ApplicationTemplate.touchgfx.part,....
的头像 RTThread物联网操作系统 发表于 01-13 16:43 246次 阅读
TouchGFX是一个基于STM32硬件由C++写成的软件框架

C++内存管理详细介绍

引言 说到 C++ 的内存管理,我们可能会想到栈空间的本地变量、堆上通过 new 动态分配的变量以及....
的头像 Linux爱好者 发表于 01-11 10:31 194次 阅读
C++内存管理详细介绍

嵌入式代码覆盖率如何进行统计有哪些方法和经验

代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例 计算得出。代码覆盖....
的头像 Wildesbeast 发表于 01-09 11:12 450次 阅读
嵌入式代码覆盖率如何进行统计有哪些方法和经验

TIOBE公布了2020年12月编程语言排行榜

TIOBE 公布了 2020 年 12 月的编程语言排行榜。C语言依然排行第一,随后分别是Java、....
的头像 算法与数据结构 发表于 01-04 14:36 3849次 阅读
TIOBE公布了2020年12月编程语言排行榜

C++创造者:成功属于意料之外

C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一。 到 2020 年 9....
的头像 嵌入式ARM 发表于 01-02 09:46 220次 阅读
C++创造者:成功属于意料之外

C语言和C++的特点与用法详细说明

本文档的主要内容详细介绍的是C语言和C++的特点与用法详细说明。
的头像 Wildesbeast 发表于 12-26 10:58 220次 阅读
C语言和C++的特点与用法详细说明

VxWorks程序员指南的电子书免费下载

本书是《VxWorks开发人员指南丛书》之一——VxWorks程序员指南,根据Wind River公....
发表于 12-21 08:00 86次 阅读
VxWorks程序员指南的电子书免费下载

嵌入式开发中的C++语言到底好用吗

嵌入式、单片机里面C++非常好使;C with class用来作大部分开发是完全可以胜任,如果用的好....
的头像 Wildesbeast 发表于 12-06 10:51 363次 阅读
嵌入式开发中的C++语言到底好用吗

C Primer Plus中文第六版PDF电子书免费下载

本书详细讲解了C语言的基本概念和编程技巧。全书共17章。第1章、第2章介绍了C语言编程的预备知识。第....
发表于 12-02 08:00 274次 阅读
C Primer Plus中文第六版PDF电子书免费下载

中文版C语言编程一本全面的C语言入门教程第3版PDF电子书免费下载

本书是极负盛名的C语言入门经典教材,其第一版发行至今已有20年的历史。本书内容详实全面,由浅入深,示....
发表于 12-01 08:00 94次 阅读
中文版C语言编程一本全面的C语言入门教程第3版PDF电子书免费下载

C语言预处理指令及分类

C/C++ 程序中的源代码中包含以 # 开头的各种编译指令,这些指令称为预处理指令。预处理指令不属于....
的头像 strongerHuang 发表于 11-29 10:14 360次 阅读
C语言预处理指令及分类

Python的PyCoral迎来多项更新,为边缘AI注入更多精彩

冬天终于来了,而与之一起到来的是 Coral 新发布的 C++ 和 Python API 及工具,还....
的头像 TensorFlow 发表于 11-26 09:47 505次 阅读
Python的PyCoral迎来多项更新,为边缘AI注入更多精彩

C语言预处理命令的分类和工作原理详细说明

C 语言编程过程中,经常会用到如 #include、#define 等指令,这些标识开头的指令被称为....
发表于 11-25 10:34 93次 阅读
C语言预处理命令的分类和工作原理详细说明

高质量C++和C语言编程指南的PDF电子书免费下载

 早期的编程语言如 Basic Fortran 没有头文件的概念 C++/C 语言的初学者虽然会用使....
发表于 11-23 08:00 86次 阅读
高质量C++和C语言编程指南的PDF电子书免费下载

C++的异常机制底层原理与实际应用详细说明

我们在对 vector 做 push 操作的时候,或者对某个指针做 new 操作的时候,如果没有做异....
的头像 Wildesbeast 发表于 11-22 11:34 475次 阅读
C++的异常机制底层原理与实际应用详细说明

C#良好兼容了值类型/引用类型

反观历史,C#也曾经因为 值类型/引用类型 保守诟病,“拆箱”和“装箱”一直是个招黑的设计。但后来我....
的头像 STM32嵌入式开发 发表于 11-20 10:14 385次 阅读
C#良好兼容了值类型/引用类型

如何用Bazel构建C++项目

众所周知,C/C++ 语言具备很强可移植性,作为高级的底层语言能兼容各式各样的系统环境或应用。因此很....
的头像 TensorFlow 发表于 11-18 17:23 639次 阅读
如何用Bazel构建C++项目

引入仿函数(functor)原因

这个函数看起来比前面一个版本更具有一般性,但是他不能满足count_if函数的参数要求:count_....
的头像 嵌入式ARM 发表于 11-16 16:49 406次 阅读
引入仿函数(functor)原因

C和C++是一回事吗

C语言虽说经常和c++在一起被大家提起,但可千万不要以为它们是一个东西。现在我们常用的C语言是C89....
的头像 STM32嵌入式开发 发表于 11-13 18:18 465次 阅读
C和C++是一回事吗

人工智能行业,编程学习是Python还是C++好?

很多想要进入人工智能行业的开发者都会纠结于学习Python还是学习C++。有些人认为,Python目....
的头像 电子魔法师 发表于 11-13 09:29 644次 阅读
人工智能行业,编程学习是Python还是C++好?

使用MZ7035系列开发板实现XILINX FPGA HLS 图像入门教程免费下载

在进行 Vivaado HLS 的学习之前,我们先把相应的准备工作做好,所谓工欲善其事,必先利其器,....
发表于 11-09 08:00 113次 阅读
使用MZ7035系列开发板实现XILINX FPGA HLS 图像入门教程免费下载

C语言程序设计基础实验指导书第一版免费下载

C语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序设计语言的特....
发表于 11-09 08:00 84次 阅读
C语言程序设计基础实验指导书第一版免费下载

为什么要用C语言实现面向对象

不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变化,C语....
的头像 strongerHuang 发表于 11-05 18:05 469次 阅读
为什么要用C语言实现面向对象

10月份GitHub上最热门的Python开源项目上榜详情

10月份GitHub上最热门的Python开源项目排行已经出炉啦,一起来看看上榜详情吧: 1 GHu....
的头像 人工智能与大数据技术 发表于 11-05 15:29 474次 阅读
10月份GitHub上最热门的Python开源项目上榜详情

如何使用C语言和C++对TMS320系列外围设备进行编程

半导体器件一直是沿着提高器件工作频率和提高器件功率处理能力这两个方向发展的。每一种器件在频率和功率兼....
发表于 10-27 08:00 87次 阅读
如何使用C语言和C++对TMS320系列外围设备进行编程

如何使用C语言实现动态扩容的string

众所周知,C++ 中的string使用比较方便,关于C++ 中的string源码实现可以看我的这篇文....
的头像 Wildesbeast 发表于 10-25 10:59 438次 阅读
如何使用C语言实现动态扩容的string

关于C++仿函数

【导读】:在我们日常编码中会发现有些功能代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独....
的头像 inr999 发表于 10-23 15:28 323次 阅读
关于C++仿函数

C语言的诞生 C语言与C++40年的相爱相杀

作者 | cor3ntin 译者 | 弯月 以下为译文: 70年代初,贝尔实验室创建了C语言,它是开....
发表于 10-19 10:51 238次 阅读
C语言的诞生 C语言与C++40年的相爱相杀

基于GPIO的按键板实现方案

介绍简单的ADC实现,需要IC提供一个额外的ADC。但出于IC成本的考虑,无法提供这个的ADC时,但....
的头像 39度创意研究所 发表于 10-18 11:43 756次 阅读
基于GPIO的按键板实现方案

关于C++编码的转换

【CPP开发者导读】:在处理东方语言(中日韩)时,经常会遇到各种编码问题,而且被这类问题搞的晕头转向....
的头像 inr999 发表于 10-16 11:57 448次 阅读
关于C++编码的转换

C++中字符编码的转换

作者:FlushHip 在处理东方语言(中日韩)时,经常会遇到各种编码问题,而且被这类问题搞的晕头转....
的头像 inr999 发表于 10-15 10:21 393次 阅读
C++中字符编码的转换

通过HLS封装一个移位流水灯的程序案例

当我们安装好Vivado 的时候,也同时装好了Vivado HLS.。 这是个什么东西?我就有一种想....
的头像 39度创意研究所 发表于 10-14 15:17 962次 阅读
通过HLS封装一个移位流水灯的程序案例

如何利用Open GL在MFC中实现喷泉模拟应用程序的开发设计

由于自然环境中大部分景物(如云彩、火焰、烟雾、瀑布、雪花等特效)具有不规则性、复杂性与随机性,且随着....
的头像 电子设计 发表于 10-13 10:34 859次 阅读
如何利用Open GL在MFC中实现喷泉模拟应用程序的开发设计

C++在嵌入式中表现如何?

这就是用C实现派生,虚函数扩展的代价;你可能会说:Linus这种方式效率高呀!答案是:不存在;无论你....
的头像 嵌入式ARM 发表于 10-12 17:44 758次 阅读
C++在嵌入式中表现如何?

单片机的学习实践

如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片....
的头像 嵌入式ARM 发表于 10-12 17:29 531次 阅读
单片机的学习实践

啊哈C语言的PDF电子书免费下载

啊哈C语言是一本非常有趣的编程启蒙书,《啊哈C语言》从中小学生的角度来讲述,没有生涩的内容,取而代之....
发表于 10-10 08:00 177次 阅读
啊哈C语言的PDF电子书免费下载

干货:三大实例讲解三种C++运算符重载

本章节主要讲解是运算符重载。运算符重载是赋予运算符能操作自定义类型的功能。C++运算符重载主要分为以....
的头像 如意 发表于 09-30 16:59 525次 阅读
干货:三大实例讲解三种C++运算符重载

许多C++开发人员则希望C语言灰飞烟灭?!

70年代初,贝尔实验室创建了C语言,它是开发UNIX的副产品。很快C就成为了最受欢迎的编程语言之一。....
的头像 嵌入式ARM 发表于 09-29 14:42 432次 阅读
许多C++开发人员则希望C语言灰飞烟灭?!

C++ Primer Plus的PDF的电子书免费下载

本书全面讲述了C语言编程的相关概念和知识。全书共17章。第1、2章学习C语言编程所需的预备知识。第3....
发表于 09-27 08:00 110次 阅读
C++ Primer Plus的PDF的电子书免费下载

HALCON项目应该使用哪种主机语言的观点

编程语言的选择对于公司来说是一个战略和长期的决策。这很难在一篇文章中详细解释。我们将尽最大努力强调C....
的头像 新机器视觉 发表于 09-24 11:18 962次 阅读
HALCON项目应该使用哪种主机语言的观点

手机模拟系统的C++源代码免费下载

本文档的主要内容详细介绍的是手机模拟系统的C++源代码免费下载。
发表于 09-23 08:00 61次 阅读
手机模拟系统的C++源代码免费下载

2020年底将正式发布C++20

9月4日,C++ 20的国际标准草案投票结束,而且获得了全票通过。这意味着C++ 20已完成最终的技....
的头像 嵌入式ARM 发表于 09-22 14:28 1116次 阅读
2020年底将正式发布C++20

TIOBE已公布2020年9月的编程语言排行榜

TIOBE 每个月都会公布一次编程语言的排行榜,这份排行榜排名基于全球技术工程师、课程和第三方供应商....
的头像 玩转单片机 发表于 09-21 14:13 2986次 阅读
TIOBE已公布2020年9月的编程语言排行榜