Skip to content

Latest commit

 

History

History
218 lines (156 loc) · 5.45 KB

1软件工程简介.md

File metadata and controls

218 lines (156 loc) · 5.45 KB

软件的概念

定义:

软件:软件是逻辑和物理的系统,由程序、文档、数据和其他相关元素构成。软件是一个过程的抽象表示

软件工程:应用系统化、学科化、定量的方法,来开发、运行和维护软件,即将工程应用到软件。以及对以上过程中各种方法的研究

软件 = 程序 + 数据 + 文档

  • 程序:按事先设计的功能和性能需求执行的指令序列
  • 数据:是出现能正常操纵信息的数据结构
  • 文档:与程序开发、维护和使用有关的图文材料

软件的性质:

  • 复杂性
  • 难以描述性
  • 不可见性
  • 变化性

软件是逻辑的,而不是物理的

  • 开发工程化,不是制造
  • 开发环境对产品影响大
  • 开发时间工作量难以估计
  • 会多次修改
  • 开发进度几乎没有客观标准
  • 测试困难
  • 不会磨损和老化
  • 维护易产生新的问题
  • 生产是简单的拷贝

软件的分类

  • 系统软件(操作系统)
  • 应用软件
  • 工程/科学软件(MATLAB,Maple)
  • 嵌入式软件
  • 产品线软件
  • Web应用
  • 普适计算——无线网络
  • 网络资源——网络作为一个计算引擎
  • 开发源码
  • 云计算/边缘计算

软件的发展

计算需求:软件必须适应新的软件环境或技术

业务需求:软件必须改善,以实现新的业务需求

嵌入式需求:软件必须扩展,以满足和新一代系统或数据库之间的互操作性

架构需求:软件必须重新设计,使其在新的网络环境是可用的

面临的问题

  • 现实需求
    • 规模,复杂性,生产效率
  • 软件固有特性之间矛盾
    • 不可视性对于主观性
    • 软件规模有复杂性
    • 易变性与不确定性
    • 精确新与模糊性

软件危机

软件危机:计算机软件开发和维护过程中遇到一系列严重问题

严重问题:效率低,质量差

周期长、成本高、质量差、维护难

软件危机的具体表现:

  • 开发成本进度估计不准,开发进度难以控制
  • 用户对“已完成的”软件系统不满意
  • 软件质量和可靠性差强人意
  • 软件常常是不可维护
  • 软件通常没有适当的文档资料
  • 软件成本逐年上升
  • 软件开发生产率滞后于硬件和计算机应用普及

硬件/软件成本变化趋势

软件成本占比逐步上升

技术的进步跟不上需求的增长

产生软件危机的原因

  • 客观:软件本身特点
    • 逻辑思维产物
    • 规模庞大
  • 主观:不正确的开发方法
    • 需求设计

面对问题

  • 手工化 标准化
  • 查错
  • 需求获取
  • 支持维护
  • 开发速度 市场需求
  • 开发周期过长 开发成本过高
  • 研发风险
  • 软件开发复杂协作
  • 不同角色的软件神话

软件工程的概念

定义

  • 将系统化的、科学化的、可量化的方法应用于软件的开发、运行和维护,即针对软件的工程应用
  • 对上述应用方法的研究

目标

软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件

软件工程——一种层次化技术

  • 工具
  • 方法
  • 过程
  • 质量焦点

三要素:方法、工具、过程

结构化方法

  • 方法:结构化程序设计方法
    • 瀑布模型、螺旋模型等
  • 编程语言
    • Fortran语言、Pascal语言、C语言
  • 系统
    • =算法+数据结构(1960’s)
    • =子程序/函数+函数调用(1980’s)
  • 软件系统效果
    • 相当于建筑行业的平房

面向对象方法

  • 方法:面向对象方法
    • 面向对象模型、建模工具等
  • 编程语言
    • C++(1983)、Java (1995) 、Visual系列语言(1990’s)
  • 系统
    • 对象=算法+数据
    • 系统=对象+消息
  • 软件系统效果
    • 相当于建筑行业的高楼

构件化方法

  • 方法:软构件方法
    • Web Services、软件复用方法等
  • 编程语言
    • Visual系列语言、Windows操作系统等
  • 系统
    • 构件=对象+消息
    • 构件=实体+接口
    • 系统=构件+连接件
  • 软件系统效果
    • 如堆积木、造预制件
    • 可批量快速构造复杂建筑

当前软件工程方法

方法:

  • 面向服务的体系结构SOA方法:服务+服务总线
  • 基于Internet与云计算的软件开发方法

软件系统效果

  • 快速构建城市建筑群

软件工程的原则

  • 阶段性生命周期计划的管理
  • 连续验证
  • 产品控制
  • 编程工具和工程实践
  • 责任分配
  • 更好更少的人
  • 过程改进

作业

  1. 什么是软件?

    软件是物理和逻辑的系统,由程序、文档、数据和其他相关元素构成。软件是一个过程的抽象表示

  2. 什么是软件工程?

    应用系统化、学科化、定量的方法,来开发、运行和维护软件,即将工程应用到软件。以及对以上过程中各种方法的研究

  3. 软件工程具有哪些特点?

    • 使用阶段性生命周期计划的管理
    • 进行连续的验证
    • 保证严格的产品控制
    • 使用现代编程工具和工程实践
    • 保持清晰的责任分配
    • 用更好更少的人
    • 保持过程改进
  4. 什么是导致软件危机的主要原因?

    • 客观:软件本身特点
      • 逻辑思维产物
      • 规模庞大
    • 主观:不正确的开发方法
      • 需求设计
  5. 为什么职业道德和责任十分重要?