根据IBMResearch说法:软件开发是指一组计算机科学活动,专门用于创建,设计,部署和支持软件的过程。软件本身的就是一组指令或程序,它们告诉计算机要做什么。它立于硬件,并使计算机可编程。共有三种基本类型:提供核心功能的系统软件,例如操作系统,磁盘管理,实用程序,硬件管理和其他操作必需品。编程软件,为程序员提供工具。
功能性的变化指随着对业务的深入理解、或者已有业务规则为了匹配市场而产生的变化。比如***方式由传统的货到付款变成了网银付款,又变成了微信***、***宝扫码等等。一个原始的电商平台仅仅提供基本的购物服务,但是后来可以根据已有数据产生推荐商品,从来带来更大的流量。这些变化需要体现在已有的代码中,而对代码的修改往往是牵一发而动全身。
它可以设计得很好,也可以设计得很差,而且快速的设计很少能持久。如果人们不能用语言来描述它会做什么(包括想要的结果和如何实现),那么计算机也无法做到。“how”被称为算法,这并不神奇。机器学习和其他人工智能技术也并不神奇。机器学习是基于数据的预测,而不是显式的规则或指令。它一般是用线性代数来做的。我们的工作是创造一个能认识到这一点的环境。
软件不是魔术。虽然它看起来像魔术,或者是魔法,但它不是魔法。每一个元素都是由人设计的,都有其数学基础,或者是可以用人类语言解释的过程。与魔术不同,软件不是凭空变出来的。它需要设计、构建和维护。就像房子有多种系统一起工作(地基、结构、管道、房间、家具等等)那样,软件系统也需要许多层和子系统来创建整个系统。