软件 = 程序 软件工程

在我正式开始阅读这本书之前,我对于软件工程这个词汇的概念还是模糊的,认为它只是停留在是一门学科,一个专业,或者是一大堆硬生生的理论知识,然而当我读完构建之法这本书的推荐序和第一,第二版前言开始,我就深刻意识到我之前对于软件工程的肤浅认识是多么错误。

我看书一般喜欢从从书的封面开始看起,或许这也是大多数人看书的习惯,·在本书的封面素描着一副鲁班锁,刚开始让人感觉有点奇怪,明明是一本讲软件工程的书,为什么要用鲁班锁做为封面图案呢?原来玄机深藏于鲁班锁的内部,这鲁班锁从外部看,是严丝合缝的十字立方体,但是各个部件在内部凹凸部分互相咬合,这正是“构建之法”的体现。

上完数据结构的课程后,或者在更早之前,“程序=数据结构+算法”这句话,就早已深记于心,可是一个实现理论的程序在实际的学习和生活中好像并没有什么用,我们在工作中,老板不可能叫你完成一个求最短路径算法的实现,我们要完成的项目是包括需要求最短路径在内的各种程序的集合,本书中的引例就非常详细并且生动的说明了所谓的程序,软件,软件工程这三者之间的关系,从完成一个随机打印小学二年级的加减法题目,到由此带来的用户和需求,进而扩展为支持例如二元一次方程的,并且网站可以长时间访问的一个工程。从一个简单的程序,扩展到满足各种功能的应用软件,再扩展到能保证维修的软件服务,这正是软件工程的这一“工程”的一步步构建的过程。

一般来说,软件团队都要用户提出需求开始的,再到软件的整体构建,然后是软件设计,这是各个功能的代码实现阶段,再者是软件测试阶段,测试完之后,投入到实际生活中使用,在实际生活中接受用户的各种各样的反馈,解决bug,维护软件。这是一整个软件开发的流程,再加上对源代码以及项目的管理,构成了软件开发的核心,广义上的软件工程还包括用户体验部分,交互界面的设计部分等等,由此,作者得出一个推论:

软件 = 程序 + 软件工程

这个推论让我对软件这个概念有了深刻的认识。

然而软件工程这个名词解释是什么呢,作者给出的解释是“·软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程;软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和维护;软件工程和下列学科相关:计算机科学,计算机工程,管理学,数学等等。”

从作者讲到的软件的不同开发阶段,也让我对软件的开发有了进一步认识,那就是一个成熟的软件都是从一个玩具模型(简单的程序)开始然后慢慢发展到影响到一个公司或者一群用户的生态系统,例如淘宝和Windows操作系统,如果说这两者都出现了更新上严重错误,那么这将会对人们的生产生活造成巨大的影响。

读完本书的绪论,就激起了我对软件工程巨大的兴趣,也彻底颠覆了我原来对软件及软件工程的理解。一个复杂且庞大的软件的构建过程不亚于一栋大厦的建造过程,用“工程”称其,当之无愧。

本文为头条号作者发布,不代表今日头条立场。

在我正式开始阅读这本书之前,我对于软件工程这个词汇的概念还是模糊的,认为它只是停留在是一门学科,一个专业,或者是一大堆硬生生的理论知识,然而当我读完构建之法这本书的推荐序和第一,第二版前言开始,我就深刻意识到我之前对于软件工程的肤浅认识是多么错误。

我看书一般喜欢从从书的封面开始看起,或许这也是大多数人看书的习惯,·在本书的封面素描着一副鲁班锁,刚开始让人感觉有点奇怪,明明是一本讲软件工程的书,为什么要用鲁班锁做为封面图案呢?原来玄机深藏于鲁班锁的内部,这鲁班锁从外部看,是严丝合缝的十字立方体,但是各个部件在内部凹凸部分互相咬合,这正是“构建之法”的体现。

上完数据结构的课程后,或者在更早之前,“程序=数据结构+算法”这句话,就早已深记于心,可是一个实现理论的程序在实际的学习和生活中好像并没有什么用,我们在工作中,老板不可能叫你完成一个求最短路径算法的实现,我们要完成的项目是包括需要求最短路径在内的各种程序的集合,本书中的引例就非常详细并且生动的说明了所谓的程序,软件,软件工程这三者之间的关系,从完成一个随机打印小学二年级的加减法题目,到由此带来的用户和需求,进而扩展为支持例如二元一次方程的,并且网站可以长时间访问的一个工程。从一个简单的程序,扩展到满足各种功能的应用软件,再扩展到能保证维修的软件服务,这正是软件工程的这一“工程”的一步步构建的过程。

一般来说,软件团队都要用户提出需求开始的,再到软件的整体构建,然后是软件设计,这是各个功能的代码实现阶段,再者是软件测试阶段,测试完之后,投入到实际生活中使用,在实际生活中接受用户的各种各样的反馈,解决bug,维护软件。这是一整个软件开发的流程,再加上对源代码以及项目的管理,构成了软件开发的核心,广义上的软件工程还包括用户体验部分,交互界面的设计部分等等,由此,作者得出一个推论:

软件 = 程序 + 软件工程

这个推论让我对软件这个概念有了深刻的认识。

然而软件工程这个名词解释是什么呢,作者给出的解释是“·软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程;软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和维护;软件工程和下列学科相关:计算机科学,计算机工程,管理学,数学等等。”

从作者讲到的软件的不同开发阶段,也让我对软件的开发有了进一步认识,那就是一个成熟的软件都是从一个玩具模型(简单的程序)开始然后慢慢发展到影响到一个公司或者一群用户的生态系统,例如淘宝和Windows操作系统,如果说这两者都出现了更新上严重错误,那么这将会对人们的生产生活造成巨大的影响。

读完本书的绪论,就激起了我对软件工程巨大的兴趣,也彻底颠覆了我原来对软件及软件工程的理解。一个复杂且庞大的软件的构建过程不亚于一栋大厦的建造过程,用“工程”称其,当之无愧。

本文为头条号作者发布,不代表今日头条立场。


相关内容

  • 计算机软件系统
  • 1. 计算机操作系统的主要功能是( ). A )管理计算机系统的软硬件资源,以充分发挥计算机资源的效率,并为其它软件提供良好的运行环境 B )把高级程序设计语言和汇编语言编写的程序翻译到计算机硬件可以直接执行的目标程序,为用户提供良好的软件开发环境 C ) 对各类计算机文件进行有效的管理,并提交计算 ...

  • 天津专接本软件工程专业考试资料
  • 1. 软件工程:是指导计算机软件开发和维护的一门工程学科.采用工程的概念.原理.技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它. 2. 软件危机:是指在计算机软件的开发与维护过程中所遇到的一系列问题. 3. ...

  • 软件工程基本概念
  • 软件工程基本概念 考点1 软件的定义与软件特点 1软件的组成 软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序.数据和相关的文档. 软件由两部分组成: (1)机器可执行的程序和数据: (2)与软件开发.运行.维护及使用等有关的文档. 2软件的特点 软件具有如下特点: (1)软件是逻辑产品,而 ...

  • 软件工程基础知识点整理免费版
  • 软件工程基础知识点整理 一. 软件工程基本概念: 1. 软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序.数据以及相关文档的完整集合. (1)程序是软件开发人员根据用户需求开发的.用程序设计语言描述的.适合计算机执行的指令(语句)序列. (2)数据是使程序能够正常操作信息的数据结构. ( ...

  • [软件工程学]作业
  • <软件工程学>作业 一.简答题 1.需求分析的任务 答:需求分析的任务主要包括以下几项: 确定目标系统的综合要求,其中包括 (目标系统的功能.性能.运行的环境及扩展性要求): 分析目标系统的数据要求,其中包括(系统平台需要哪些数据?数据间有什么关系?数 据数据及数据结构?对数据的处理逻辑 ...

  • 软件工程导论(第五版)课后习题答案
  • <软件工程导论>课后习题答案 第一章 软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意. (2)软件产品的质量往往靠不住. (3)一般软件很难维护. (4)软件生产效率很低 ...

  • 软件工程导论试题(打印)
  • 软件工程导论试题(老师给的) 一.选择 1.瀑布模型把软件生命周期划分为八个阶段:问题的定义.可行性研究.软件需求分析. 系统总体设计.详细设计.编码.测试和运行.维护.八个阶段又可归纳为三个大的阶段: 计划阶段.开发阶段和 ( ). A.详细计划 B.可行性分析 C.运行阶段 D.测试与排错 2. ...

  • 第一章软件工程的基本概念
  • 第一章 软件工程的基本概念....................................................................................... 1 1.1 计算机发展简史 ................................... ...

  • 软件工程重点知识
  • 第1章软件工程学概述 1.1软件危机 概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题.实际上,几乎所有软件都不同程度地存在这些问题. 原因: 1. 与软件本身的特点有关.1)软件不同于硬件,缺乏"可见性",它是计算机系统的逻辑部件而不是物理部件.2)软件不同于一般程 ...

  • 对软件测试的认识
  • 对软件测试的认识 软件测试的认识 赵兴丽 (重庆市北碚区西南大学计算机与信息科学学院,重庆 北碚 400715) 摘要: 摘要: 本文首先就其软件测试的内容.测试原则.测试方法的分类等做了简要的概述.然后针 对软件中的白盒测试.黑盒测试做了详细论述,分析了灰盒测试的必要性,并对处于黑盒与 白盒测试之 ...