【Thoughtworks】换个角度认识软件

当你提到用户时,你是指什么?


我曾经参与过一个物联网系统的设计,其中大家经常会提到一个词“设备”,但是“设备”这个词在不同的开发者眼里有不同的概念,为此,讨论“设备”这个词花费了不少的功夫,最终依然没有定义清楚。


有些开发者认为“设备”是现实中看得见摸得着的物品另外的开发者将服务器上用于映射物理设备的实例也叫做“设备”。于是,他们在沟通时经常会出现对于“设备的理解不一致导致的混乱。


另外一个例子是“用户”这个概念。在不同的场景(上下文)下,“用户”这个概念可以是使用软件的大活人,也可以是数据库中的一条记录,也可以是服务中的用户对象有时候也将用户服务类叫做用户。


尝试精确定义概念


一个概念可以具有多种表达方法,对于软件设计来说,我们可以用自然语言描述概念。也可以通过定义一个类来描述,并在程序运行时实例化这个概念。通过数学或者数理逻辑,我们可以使用集合来描述一个概念。比如“商品”这个概念,可以通过不同的方法表达。


对象应该定义多少属性?


正是因为自然语言的这种模糊性,为了更加具体地描述一个概念。哲学上概念的共识是,概念有两个基本的逻辑特征,即内涵和外延。概念反映对象的特有属性或者本质属性,同时也反映了具有这种特有属性或者本质属性的对象因而概念有表达属性的范围。


例如商品这个概念的内涵是“能进行交换的产品”,本质属性是能进行交换,从本质上区别产品。它的外延就是投入市场能卖的所有事物。


对概念外延的清晰描述对我们设计软件产品的定位非常有帮助,我们购买软件服务无非两种情况,生活娱乐使用,或者工作使用。马克思社会经济学精妙的描述为生产资料、生活资料。这其中的逻辑完全不同,按照生活资料的逻辑设计一款生产资料的产品注定要走弯路。


概念的内涵和外延在一定条件下或者上下文中被确定的,这取决于参与人的共识。严格锁定概念的内涵和外延,能帮助我们讨论问题和改进软件模型。随意修改内涵和外延这是典型的偷换概念和诡辩。


从算盘、计算机到电脑


从算盘到计算机,人类走过了漫长的历史。计算机发展的转折点往往都是一些大师提出关键模型的时期,了解这些模型可以帮我们更好理解计算机世界。


新一代的软件工程师已经不再关注计算机是如何工作的了,他们把计算机当作一种可以通过编程语言对话的“生物”来看待了。我曾被问到过,我们日常使用的“电脑”为何被称作计算机,它和计算看似毫无关系。


要回答这个问题需要将图灵和冯诺依曼模型两个计算机科学基础模型清晰地分开。


算盘会被经常和计算机一起提到,算盘是人力驱动的一种计算机,算珠的状态可以看作寄存器。对中国人来说理解图灵机非常简单,我们可以使用算盘来类比。当算盘归零后算盘的状态为初始状态,每一次拨动算珠就是一个指令,当所有的指令下发完成,算盘上最终状态就是计算结果。指令序列就是算法,算盘就是一个状态机。

【Thoughtworks】换个角度认识软件
上一篇

【GUILD】2022-2023宝石学前沿-市场报告-下

2023-11-10
下一篇

【CBEC】2023 SS 跨境电商站点趋势

2023-11-10