《软件工程基础》读书笔记

2023-11-24
4分钟阅读时长

一些题外话

大学开过《软件工程基础》课,说实话当时并未重视这门课程,很多知识点并未仔细阅读理解,加上学生时期没有工作经历,导致一些理论上死记硬背的知识点早已经忘记的差不多。

真正参加工作之后,工作过程中遇到过各种问题,无一例外都印证了课本中的各种举例,踩过了各种坑,回头才发现软件工程学的重要性,存在即合理。

如果你准备从事程序员的工作,或者想在软件开发方面深入发展。在你学习了各种语言语法、花里胡哨的技术之后,我建议你回过头来好好看看这本书,好好学学软件工程学。软件工程学可以让你从一个野生程序员,成长为独当一面的软件工程师,大大提升你的专业能力。让你对软件开发有一个更加全面的认识。

软件工程概述

什么是软件工程学

什么是软件工程学

20 世纪 70 年代初至今,软件产业迅速发展,过程中出现了很多问题,如典型的软件危机问题。为了更加有效地开发和维护软件,多年来软件工作者认真研究对应的解决方案,产生的一门工程学科,即被称作——软件工程学

软件工程学主要研究:如何系统性的、规范化的、可定量的过程化方法去开发和维护软件。以及如何把经过时间考验证明是正确的管理技术和当前能够得到的最好的技术方法结合起来。

什么是软件

  • 软件是程序和其相关文档的集合
  • 程序是实现功能的指令代码集合
  • 文档时软件开发、维护和使用过程中有关的图文资料
  • 软件是软件,程序是程序,不是一个概念,程序只是软件的一部分

软件的特点

  • 软件是一种逻辑实体,看不见摸不着,但是通过观察、分析、思考、判断等方式可以感觉到其存在
  • 软件是通过人的智力的高度发挥开发而成,是脑力劳动的成果
  • 软件开发依赖于计算机系统,有时还需要考虑社会原因
  • 软件虽不像硬件会产生磨损、老化问题,但会随着硬件发展而退化,需要不断维护
  • 软件价值无法准确估量

软件怎么分类

  1. 按功能分:主要分为系统软件、应用软件
  2. 按规模分:微型、小型、中型、大型,分别从参与人员、研发周期、代码行数等方面考量
类型 参与人员数 研发周期
微型 1 1 ~ 4 周
小型 2-5 1 ~ 12 月
中型 5-20 1 ~ 2 年
大型 >20 >2 年
  1. 按工作方式分:实时处理软件、分时处理软件、交互软件、批处理软件
  2. 按服务对象分:项目软件(定制软件)、产品软件(通用软件)

软件发展史

  • 第一阶段:(20 世纪 60 年代中期前):程序设计阶段,第一代软件主要用机器语言编写,这个时代末期出现汇编语言,使用汇编器编写程序的程序员是最初的系统程序员,在 20 世纪 60 年代末出现了“软件危机”
  • 第二阶段:(20 世纪 60 年代中期~ 70 年代中期):程序系统阶段——“软件工程”学科诞生
  • 第三阶段:(20 世纪 70 年代中期~ 80 年代中期):软件工程阶段
  • 第四阶段:(20 世纪 80 年代中期至今):软件过程化、软件产业在世界经济中已经占据举足轻重的地位

软件危机

软件危机是指在软件开发和维护过程中遇到的问题的集合,主要表现在两方面:

  • 面对硬件技术的发展,如何开发软件
  • 以前开发的一些软件如何维护

软件危机典型表现主要存在以下几个方面:

软件开发费用和进度失控

前期对软件规模、费用成本、技术支持等需求分析不到位,导致超支、进度拖延情况屡屡发生。或者为了赶进度或者压缩成本,不得不采取一些权宜之计,但这样又严重损害了软件产品的质量

软件可靠性差

耗费大量成本开发出来的软件,各种出错,造成了损失

生产出来的代码难以维护

之前开发过程中缺少文档资料,导致程序中的错误难以定位、难以改正,或者改正已有的错误又导致新的错误

软件危机产生的原因

  • 忽略软件需求分析:开发人员没有正确理解用户的需求,甚至根本不去深入理解用户的需求
  • 开发过程没有统一规范,文档不齐全:软件从计划到使用维护要经历一个漫长的过程,称为软件的生命周期,主要分为软件定义、软件开发、软件运行三个时期。而编程只是开发过程的一个小阶段,缺少规范而盲目编写程序是不可取的
  • 忽视测试工作:软件测试和软件开发一样重要,忽视测试会导致很多潜在的问题不能被发现
  • 轻视软件维护:软件维护是一个漫长的过程,必须及时改正软件在使用中出现的错误,软件维护工作是及其复杂艰巨的,工作量往往会随着系统环境、用户需求的变化而变化

未完待续