软件工程

本文详细介绍了软件工程的概念,包括软件的定义、分类、软件危机及其解决方案。阐述了软件生存周期的各个阶段,如可行性研究、需求分析、设计、编码、测试和维护,并探讨了不同规模软件的开发特点。此外,还讨论了瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等软件过程模型的优缺点。结构化分析方法,如数据流图、实体关系图和状态转换图等工具在软件开发中的应用也得到了讲解。
摘要由CSDN通过智能技术生成

一、软件

1. 软件定义:

程序 + 文档 + 数据

2. 软件分类

① 基于软件功能:

  • 系统软件:操作系统、编译程序
  • 支撑软件:协助用户开发软件的工具型软件
  • 应用软件:商业数据处理、工程与科学软件、智能产品嵌入软件、人工智能软件、个人软件

② 基于软件规模:

类别参加人员数开发周期产品规模(LOC)
微型11~4周0.5K
小型11~6月1K~2K
中型2~51~2年5K~50K
大型5~202~3年50K~100K
甚大型100~10004~5年1M
极大型2000~50005~10年1M~10M

二、软件工程

1. 软件发展

① 程序设计阶段:

没有成体系的程序开发,没有科学的文档记录,开发者没有明确分工

② 程序系统阶段:

程序开发者忙于软件维护,出现软件危机

③ 软件工程阶段

工程化的设计原则与流程,软件危机得到缓解

④ 第四阶段

出现新技术,出现新挑战

2. 软件危机

① 定义:

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

② 表现:

  • 软件开发成本和进度估计不准
  • 产品不符合用户需求
  • 软件产品的质量不可靠
  • 软件的可维护性差
  • 软件没有适当的文档资料

3. 1993年IEEE的定义

把系统化、规范化、可度量的途径应用于软件开发、运行和维护过程中;研究其实现途径

4. 技术

  • 软件开发方法学
  • 软件开发过程
  • 软件工具和软件工程环境

5. 管理

  • 软件管理学
  • 软件经济学
  • 软件心理学

三、软件生存周期

1. 定义:

软件从产生、发展到成熟、直至衰亡为止

2. 组成:

软件定义、软件开发、软件维护

3. 国标《计算机软件开发规范》的8个阶段:

① 可行性研究与计划(可行性分析)

  • 关键任务:解决问题是什么?有行得通解决方法?粗略计划?
  • 问题定义报告:问题性质、工程目标、工程规模
  • 可行性研究报告:经济、技术、社会(操作)可行性
  • 项目开发计划:粗略

② 需求分析

  • 关键任务:目标系统必须做什么?要求完整、准确、清晰、具体
  • 需求规格说明书:目标系统需求

③ 总体设计

  • 关键任务:如何实现目标系统?根据需求设计方案
  • 总体设计说明书:记录总体设计结果

④ 详细设计

  • 关键任务:如何具体实现系统?设计每个模块的算法和数据结构
  • 详细设计说明书:用适当表达工具表达算法和数据结构

⑤ 实现(编码和测试单元)

  • 关键任务:选择语言、工具翻译详细设计结果、测试模块
  • 程序清单
  • 单元测试报告

⑥ 集成测试

  • 关键任务:将经过单元测试的模块组装起来进行测试,通过测试使软件达到预定要求
  • 测试报告:测试计划、测试方案、测试结果

⑦ 确认测试(验收测试:由用户进行的测试)

  • 关键任务:由用户按需求规格说明书规定进行测试

⑧ 使用和维护

  • 关键任务:通过必要维护活动使系统持久满足用户需求
  • 维护类型:
    • 改正性维护:软件运行过程中发现错误,进行维护
    • 适应性维护:软件运行软硬件环境变化,进行维护
    • 完善性维护:用户要求改进或扩充软件,进行维护
    • 预防性维护:为将来的维护做准备

四、软件过程模型

1. 瀑布模型

① 基本模型:使用最早,应用最广

在这里插入图片描述

② 带反馈环:更具实际性

在这里插入图片描述

③ 优点:

  • 提高软件质量
  • 降低维护成本
  • 缓解软件危机

④ 缺点:

  • 模型缺乏灵活性
  • 无法解决需求不明确问题
  • 用户不经过实践提出完整准确需求不切实际

2. 快速原型模型

① 模型:

快速建立反应用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品
在这里插入图片描述

② 优点:

  • 确定需求上优于瀑布模型(通过原型与用户交互)
  • 提供学习手段,通过开发原型与演示原型对开发者和使用者了解系统都有积极作用
  • 有的软件原型可以成为最终产品的一部分

③ 缺点:

  • 快速建立的系统结构加连续修改可能导致产品质量低下
  • 原型系统的内部结构可能不好

3. 增量模型

① 模型:

又称渐增模型,开发软件时将软件产品做一系列增量构建设计、编码、集成和测试
在这里插入图片描述

② 区别:

瀑布和快速原型模型是一次把满足所有需求产品提交给用户,增量模型是分批向用户提交产品

③ 优点:

  • 较短时间向用户提交可完成有用工作产品
  • 用户有充裕时间学习和适应产品
  • 软件结构必须开放,方便向现有产品加入新构件
  • 在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小

④ 缺点:

  • 做到第三个优点比较困难

⑤ 风险更大的增量模型:

确定用户需求后,各构件级并行构建
在这里插入图片描述

4. 螺旋模型

① 模型:

  • 加入风险分析,常指导大型软件项目
  • 软件风险:超期、超预算、行业竞争
  • 笛卡尔坐标四象限表达四方面活动,延螺线自内向外每旋转一圈开发出更完善新版本:
    • 制定计划:确定目标、选定方案、设定约束条件
    • 风险分析:评估方案、识别和消除风险
    • 实施工程:软件开发
    • 客户评估:评价开发工作,计划下一阶段工作
      在这里插入图片描述

② 优点:

  • 大型软件开发项目有较好的风险控制

③ 缺点:

  • 需要风险评估的经验
  • 契约开发通常需要事先指定过程模型和发布产品
  • 普及不如前述模型

5. 喷泉模型

① 模型:

面向对象生命周期模型,体现迭代和无缝特性

  • 迭代:求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统
  • 无缝:分析、设计、编码各阶段不存在明显边界
    在这里插入图片描述

② 优点:

  • 无缝,可同步开发,提高开发效率,节省开发时间
  • 适应面向对象软件

③ 缺点:

  • 可能随时添加各种信息、需求与资料
  • 需严格管理文档,审核的难度加大

6. Rational统一过程

① 模型:

强调迭代的二维模型,具有四个连续阶段,九个核心工作流
在这里插入图片描述

② 优点:

  • 不断地版本发布成为一种团队日常工作的直正驱动力
  • 将发现问题、制定方案和解决过程集成到下一次迭代
  • 迭代开发,降低风险
  • 更好的安排产品开发的辅助过程

7. 微软公司软件开发过程

① 模型:

  • 微软公司在实践过程中开发,具有五个阶段:
    • 规划阶段:开展市场调查研究,结合公司战略形成产品的远景目标
    • 设计阶段:根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度
    • 开发阶段:完成产品中所有构件的开发工作
    • 稳定阶段:实行全面的内部和外部测试,最终形成可发布的RTM版本
    • 发布阶段:确认产品质量符合发布标准后,发布产品及相关消息
  • 递进式的开发策略:解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期
    在这里插入图片描述

② 缺点:

  • 过于依赖实践,理论依据不足

五、结构化分析

1. 核心思想:

  • 分解化简问题
  • 物理与逻辑表示分开
  • 进行数据与逻辑抽象

2. 分析步骤

① 发现需求

  • 与用户交谈,向用户提问题
  • 参观用户的工作流程,观察用户的操作
  • 向用户群体发调查问卷
  • 与同行、专家交谈,听取他们的意见
  • 分析已经存在的同类软件产品,提取需求
  • 从行业标准、规则中提取需求
  • 从互联网上搜索相关资料

② 求精

对初步需求反复求精多次细化

③ 建模

建立模型,用图形符号和组织规则书面描述事物

  • 核心:数据字典
    • 用于描述软件使用和产生的所有数据对象
  • 数据模型:数据对象模型、实体—关系图
    • 描述数据对象间关系
    • 图中数据对象属性用“数据对象描述”表达
  • 功能模型:数据流图、处理规格说明
    • 描绘数据在软件中移动、变换及相应功能
    • 图中功能用“处理规格说明”表达
  • 行为模型:状态转换图、控制规格说明
    • 描绘系统状态和在不同状态间转换方式
    • 图中软件控制附加信息用“控制规格说明”表达

④ 规格说明

书写软件需求规格说明,作为分析阶段最终成果

⑤ 复审

再次审核

3. 数据模型:实体—关系图

① 数据对象:

软件必须理解的复合信息表示,复合信息是具有一系列不同性质或属性的事物

  • 事务(报表)
  • 地点(教室)
  • 角色(学生)
  • 单位(学校)
  • 行为(上课)

② 数据对象间的关系:

对象彼此间相互连接的方式,也称联系

  • 老师教学生:教
  • 一对一
  • 一对多
  • 多对一

③ 属性:

定义数据对象的性质

  • 姓名
  • 学号
  • 班级

④ E—R图:

  • 实体:矩形框
  • 属性:圆角矩阵、椭圆
  • 关系:菱形
    在这里插入图片描述

4. 功能模型:数据流图

① 符号:

  • 数据的源点或终点:正方形
  • 变换数据的处理:圆角矩阵
  • 数据存储:开口矩形或两条平行线
  • 特定数据的流动方向:箭头
  • 且:乘号
  • 或:加号
  • 异或:圆圈加号
    在这里插入图片描述
    在这里插入图片描述

② 层次结构的数据流图:

  • 顶层数据流图:包含一个加工项
  • 底层数据流图:加工项不再分解
  • 中间层数据流图:对低层的细化
    在这里插入图片描述
  • 编号:
    • 子图的编号是父图相应的处理逻辑的编号
    • 子图中处理逻辑编号由子图号、小数点与局部号组成
      在这里插入图片描述
  • 平衡:
    • 子图详细地描述父图中处理逻辑
    • 子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致
      在这里插入图片描述
  • 局部数据存贮:在子图中出现的数据存贮,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节
  • 命名规则:
    • 用名词,区别于控制流
    • 充分反映全部功能,不能出现描述不充分
    • 不用缺乏具体含义名字(不能引发歧义)

③ 作用:

  • 作为交流信息的工具
  • 作为分析和设计的工具
  • 物理系统不同时需标注自动化边界
    在这里插入图片描述

5. 行为模型:状态转换图

① 组成:

  • 状态:被观察到的系统的行为模型
  • 事件:引起状态转换的外界事件抽象
  • 行为:进入某状态所做动作

② 符号:

  • 初始状态:实心圆
  • 终止状态:实心圆+圆环
  • 中间状态:圆角矩形(表格化处理)
    • 状态名
    • 状态变量
    • 行为
  • 事件:箭头表示,需标注箭头名,后跟状态转换的条件
  • 行为:状态框内do+行为名
    在这里插入图片描述

6. 数据字典

对系统使用的所有元素定义的集合,半形式化方法表达

① 定义:

  • 数据流:
    • 数据流名
    • 说明:简要介绍作用即产生的因果
    • 数据流去向
    • 数据流组成:数据结构
    • 每个数据的数据量、流通量
      在这里插入图片描述
      在这里插入图片描述
  • 数据元素:
    • 数据元素名
    • 类型:数字(离散值、连续值)、文字(编码类型)
    • 长度
    • 取值范围
    • 相关数据元素及数据结构
      在这里插入图片描述
  • 数据存储:
    • 数据存储名
    • 简述:存放的是什么数据
    • 输入数据
    • 输出数据
    • 数据文件组成:数据结构
    • 存储方式:顺序、直接、关键码
    • 存取频率
      在这里插入图片描述
      在这里插入图片描述
  • 处理:
    • 处理名
    • 处理编号:反映该处理的层次
    • 简要描述:加工逻辑及功能简述
    • 输入数据流
    • 输出数据流
    • 加工逻辑:简述加工程序、加工顺序
      在这里插入图片描述

② 定义数据方法:自顶向下

由数据元素组成数据的方式:

  • 顺序:以确定次序连接两个或多个数据元素
  • 选择:从两个或多个可能元素中选一个
  • 重复:把指定数据元素重复零次或多次
  • 可选:一个数据元素可有可无的

③ 符号:

符号含义举例
= = =等价于/定义为 x = a x=a x=a
+ + +与/连接 x = a + b x=a+b x=a+b
[   ∣   ] [~\mid~] [  ]或/选择 x = [ a ∣ b ] x=[a\mid b] x=[ab]
m   {   }   n m~\left\{~\right\}~n m { } n重复m…n次 x = 1 { a } 5 x=1\left\{a\right\}5 x=1{a}5
(   ) (~) ( )可选 x = a + ( b ) x=a+(b) x=a+(b)
"   " "~" " "基本数据元素 x = " 0 " x="0" x="0"
⋅ ⋅ ·· 范围 x = " 1 " . . " 9 " x="1".."9" x="1".."9"

④ 示例:

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BeZer0

打赏一杯奶茶支持一下作者吧~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值