• 软件工程概述


    概述

    1. 软件
    1. 软件的概念:软件是与计算机操作系统操作有关的程序、规程、规则、及任何与之有关的文档及数据的完整集合(软件=程序+数据+文档)
    2. 软件的特点
      • 逻辑产品
      • 不存在磨损问题,存在退化问题
      • 依赖于计算机操作系统
      • 复杂性
    3. 软件的分类
      • 按软件的功能分类
        • 系统软件:操作系统、数据库管理系统、设备驱动程序、通信处理程序等。
        • 支撑软件:文本编辑器、文件格式化程序、程序库系统等。
        • 应用软件:类似于qq这种软件
      • 按软件规模进行划分:微型、小型、中型、大型、甚大型、极大型
    4. 软件的发展
      • 程序设计阶段
      • 软件设计阶段
      • 软件工程阶段
    2. 软件危机
    1. 软件危机的含义

      指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

    2. 软件危机的主要表现

      • 花费超预期
      • 不能按时完成
      • 不得不重新设计
    3. 软件危机的主要特征

      • 软件开发周期大大超过规定日期
      • 软件开发成本严重超标
      • 软件质量难于保证
    4. 软件危机产生的原因

      • 用户需求不明确
      • 缺乏正确的理论指导
      • 软件开发规模越来越大
      • 软件复杂度越来越高
    5. 如何解决软件危机?

      • 软件工程就能解决
    3. 软件工程及其三要素
    1. 软件工程的概念

      软件工程:指用工程、科学和数学的原则与方法研制、维护计算机软件有关技术及管理方法

    2. 软件工程三要素

      • 方法:分为传统方法和面向对象方法
      • 工具:软件工具为软件工程的方法提供了自动或半自动的软件支持环境
      • 过程:定义了以下
        • 方法使用的顺序
        • 要求交付的文档资料
        • 为保证质量和适应变化所需的管理
        • 软件开发各个阶段完成的产品的度量
    3. 软件工程项目的基本目标

      • 付出较低的开发成本
      • 达到要求的软件功能
      • 取得较好的软件性能
      • 开发的软件易于移植
      • 需要较低的维护费用
      • 能按时完成开发工作,及时交付使用
    4. 软件工程的原则

      • 选取适宜的开发模型
      • 采用合适的设计方法
      • 提供高质量的工程支撑
      • 重视软件开发过程的管理
    4. 软件生存周期
    1. 软件生存周期概念
      软件产品从形成概念开始,经过开发、运行(使用)和维护直到退役的全过程,称为软件生存周期,包括软件定义、开发、使用和维护三部分。

    2. 软件生存周期的阶段

      • 可行性研究和项目开发计划:系统要解决什么问题、是否可行

      • 需求分析

        • 需求获取 --需求定义,系统功能的一个正确的陈述
        • 需求规约 --系统需求规格说明
          • 主要成分:系统模型(系统功能的一个精确、系统的描述)
        • 需求验证
      • 设计:在需求的基础上,给出系统的软件解决方案

        • 概要设计
          • 系统的软件体系结构
          • C/S结构
          • 以数据库为中心的结构
          • 管道结构
          • 面向对象的结构
        • 详细设计
          • 针对总体设计结果,给出每个模块的详细描述,把功能描述变为精确的。结构化的过程描述
      • 实现阶段:选择可用的构件,或以一种选定的语言,对每一构件进行编码

      • 确定阶段:贯穿软件开发的整个过程,主要任务是软件测试

      • 支持阶段:完善性维护,纠错性维护

      5. 软件过程模型(软件开发模型、软件生存周期模型)

      软件过程模型概念:

      描述软件过程中各种活动如何执行的模型

      • 瀑布模型

        • 经典的软件开发模型,最早的软件开发模型

        • 概念

          • 将软件生命周期中的各项活动规定为依线性顺序连接的若干阶段

          • 阶段包括:需求分析、设计、编码、测试、运行与维护。看起来像瀑布一样

          • 特点

            • 各项活动严格按照线性方式进行
            • 以文档作为驱动
            • 当前活动的工作结果需要进行验证
            • 适合于软件需求很明确的软件项目
          • 存在的问题

            • 软件开发各个阶段划分固定,阶段间会产生大量文档,增加工作量
            • 线性开发增加了开发的风险
            • 无法解决需求不明确或者变动的问题
      • 增量模型

        • 非整体开发模型,分为渐增模型和快速原型模型

        • 概念

          • 将需求分解,划分为一系列增量,并为增量排序,急需的增量先开发。

          • 每个增量都历经需求、设计、编码、测试、移交几个阶段

          • 优点

            • 按照增量持续不断的发布软件新版本,可以及时得到用户反馈,调整后续软件开发的策略
            • 因为需求确定,可先设计软件体系结构,并在开发过程中保持
          • 缺点

            • 增量模型规模不能大
            • 分解增量要求对需求十分了解,并有顶层的设计经验
            • 基本服务的增量定义和实现比较困难
          • 适用于

            • 软件需求不明确,设计方案有一定风险的项目
      • 螺旋模型

        • 将瀑布模型和增量模型结合起来,并加入了风险分析

        • 概念

          • 螺旋模型是迭代模型,从里向外,螺旋线每个回路表示的软件工程都有四个阶段组成。

          • 四个阶段:定义目标、风险分析、开发和验证、规划。

        • 优点:边学习、边建模、边开发、边使用、边改进。

        • 缺点:多次迭代导致软件体系结构变化,为软件理解和维护带来困难

        • 适应于

          • 大型的软件开发 如,电子商务,电子政务等业务软件的开发
      • 喷泉模型

        • 以用户需求为动力,以对象为驱动的模型
        • 优点:可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程
        • 缺点:开发过程中需要大量的开发人员,因此不利于项目的管理;严格的文档管理,使得审核的难度加大
      • 智能模型

        • 基于知识的软件开发模型

        • 概念

          • 称为“基于知识的软件开发模型”,把瀑布模型和专家系统结合在一起,利用专家系统来帮助软件开发人员工作

  • 相关阅读:
    ABAP学习(10):ALV显示之function alv
    ABAP学习(11):ALV显示之OO ALV使用示例
    ABAP学习(3):屏幕显示
    ABAP学习(6):ABAP GUI和开发工具
    ABAP学习(9):时间日期操作
    ABAP学习(8):操作EXCEL
    ABAP学习(2):控制语句
    ABAP学习(5):数据库语句
    ABAP学习(4):内表
    编程经验:高性能.NET WEB开发(1)http压缩
  • 原文地址:https://www.cnblogs.com/cjdstudy/p/12797306.html
Copyright © 2020-2023  润新知