软件工程概论

2020-03-04  本文已影响0人  独木舟的木

💡 以下笔记内容摘自 中国大学MOOC 北京大学软件工程课程 ,该笔记仅作为要点记录,详细内容请自行查看原视频课程及课件文档,特别感谢 MOOC 及北京大学老师们开设的软件工程课程,以及他们无私奉献的精神,也欢迎广大软件工程师或有意致力于软件开发的朋友一起来学习。

1 软件的定义及特点

1.1 软件的定义

计算机系统中的程序及其文档

1.2 软件的特点

不同于一般工程项目的是,在软件项目开发过程中,实际开发(编写代码)的成本只是整个工程成本的一小部分,甚至可以说是“冰山一角”

而软件测试、系统维护等任务将占据工程的很大一部分成本

1.3 软件的种类

按照软件的功能划分,软件的种类:

2 软件工程的起源和概念

2.1 软件工程的起源

1946 年计算机刚诞生时,人们采用机器码编制程序,而机器码指令只是为了驱动计算机硬件工作。

1947 年,冯·诺伊曼首先提出用流程图描述计算机的运行过程后,软件的开发和研究才逐渐开始独立地进行。

现在人们认为:在信息产业中,微电子是基础,计算机和网络是载体,软件是核心

2.2 软件开发的三个阶段

  1. 个人程序时期(1947年-1950年末):硬件价格昂贵,软件完全作为硬件的附属。
  2. 软件作坊时期(1960年初-1960年末):软件不必附属于特定的硬件,可以作为独立的产品存在。
  3. 软件工程时期(1970年代初至今):计算机应用领域在扩大,软件的规模和复杂性在增加,导致软件质量差、成本难以控制、开发周期延误,可维护性差,研发费用大幅增加,产生了“软件危机”。(不论是软件开发还是项目管理,都缺乏一套有效的管理机制和方法。)

2.3 软件工程的定义

1968 年,NATO(北大西洋公约组织)的一次会议上首次提出了软件工程的概念。标志着软件工程作为一门学科的正式出现,至今已经有40年的历史了

软件工程概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以解决软件危机

计算机百科全书上的软件工程定义

首次NATO会议上的软件工程定义:

软件工程是用来建立和使用合理的工程原则,以经济地获取可靠的、且在真实机器上可高效工作的软件。

IEEE[IEE93]中的软件工程定义

将系统化的、规范的、可量化的方法应用到软件的开发、运行及维护中,即将工程化方法应用于软件

3 软件开发的本质和基本手段

正确认识软件开发,是从事软件开发的思想基础。

3.1 软件开发的含义

软件开发的本质是什么?

问题域到不同抽象层次之间概念和计算逻辑的映射。
软件开发,即实现「问题域中的概念和处理逻辑」到「运行平台的概念和处理逻辑」的映射。

软件开发的含义

通过分层来降级映射的复杂性:

软件开发的本质:

3.2 实现映射的基本手段:建模

建模:是解决问题的一般途径。

何谓建立问题的模型:运用所掌握的知识,通过抽象,给出该问题的一个结构。

模型是在特定意图下所确定的角度抽象层次上对物理系统的描述,通常包含对该系统边界的描述,给出系统内各模型元素以及它们之间的语义关系。(去除了大量的不必要的细节,对事物本质的描述)

软件模型

分层的基本动机是控制开发的复杂性,一个抽象层是由一组确定的术语定义的。

计算机领域有句名言:

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。

软件开发的本质无非就是将现实世界中的问题通过多层抽象映射成一个解决方案的模型,最终实现一个软件系统来解决这个问题。

待解决的问题➡️需求分析➡️可行性方案验证➡️概要设计➡️详细设计➡️实现软件系统➡️软件测试➡️软件部署维护➡️解决问题

4 软件工程框架

💡「软件工程框架」描述了软件工程的三要素:软件工程的目标原则活动

软件工程框架

4.1 软件工程的目标

生产具有正确性、可用性以及开销合宜的产品。

4.2 软件工程的活动

生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。包括需求、设计、实现、确认和支持等活动。

4.3 软件工程的原则

  1. 选取适宜的开发模型;
  2. 提供高质量的工程支持(合适的软件工具和开发环境);
  3. 重视开发过程的管理;

4.4 软件工程框架的作用

软件工程可定义为三元组:目标、原则、活动。

  1. 给出了软件所涉及软件工程的工程要素;
  2. 给出了各要素之间的关系;
  3. 给出了软件工程学科所研究的主要内容:
    • 软件开发模型
    • 软件开发方法
    • 软件过程
    • 软件工具
    • 软件开发环境
    • 计算机辅助软件工程(CASE)
    • 软件经济学
上一篇下一篇

猜你喜欢

热点阅读