跳到主要内容

软件工程概论

软件

Mooc:软件工程概论-北京大学

定义

  • 计算机科学技术百科全书:计算机系统的程序与文档,合并已即是软件
  • 可定制为某种人群开发

特点

  • 软件是无形,不可见的逻辑实体
    • 特殊性:软件是被设计开发,生产过程中无法被定义
    • 复制性:使用过程中没有磨损、老化的问题且可复制使用
    • 复杂性:面对人类各行各业,涉及到跨学科的专业知识
  • 计算机系统环境
    • 涉及多种社会因素:机构管理、体制、人类观点和心理要素

典型的软件项目

image-20220417165924279

种类

  • 系统软件
    • 管理系统各种资源:最靠近硬件一层
    • 编程程序:可执行的低级软件
  • 支撑软件
    • 中间件:支撑其他软件的开发、维护、运行的软件
    • 软件开发环境:数据库、接口、工具组等
    • 小结:处于系统与应用之间的胶水层
  • 应用软件
    • 定义:特定应用领域的专用软件

软件工程起源与概念

  • 1946年,计算机诞生
  • 1947年,冯诺依曼提出流程图描述计算机的运行过程
  • 信息产业:
    • 基础:微电子
    • 载体:计算机与网络
    • 核心:软件

软件开发的三大阶段

  • 个人时期(1947~1950):软件完全作为硬件的附属
  • 作坊时期(1960~1964):IBM System/360系列机实现不同机型具有相同/相似指令集,令软件可彼此兼容。
  • 工程时期(1970~至今):爆发软件危机,急需控制开发成本、质量、可维护性而提出的软件工程概念。

软件工程的定义

  • 起源:1968年,德国提出软件工程概念
  • 目的:以工程化原理、原则、方法解决软件危机
  • 概念:系统化、规范性、可量化,成本、范围、

交叉性学科

软件开发的本质、基本手段

含义

硬件、网络、操作系统——异构性

自上以下的映射

抽象:系统建模、需求分析、处理逻辑、设计模式、应该框架

软件开发本质示意

映射:抽象层

问题空间、客体、映射、模型化表达(对象)、数据抽象

行为结构抽象

建模

抽象结构化描述

模型分类:概念、设计、实现、部署

计算机科学

Coursera

为什么要编程

唐·克努特(Don Knuth)领先的计算机科学家的一句话,

“与其想象我们的主要任务是指导计算机做什么,

我们应该做的是集中精力向人类解释我们希望计算机做什么。”

高级编程语言,告诉计算该做什么

Bjarne Stroustrup 的一句名言,他是C++的开发者。

他说,‘只有两种编程语言。那些人们总是抱怨的和那些没人使用的。”