软工导论个人笔记

第一章

软件的定义

按软件的功能进行划分,软件可以划分为 系统软件 、支撑软件和应用软件。

  • 软件工程:是指导计算机软件开发和维护的一门工程学科

  • 软件工程的基本原理:

    • 用分阶段的生命周期计划严格管理

    • 坚持进行阶段评审

    • 实行严格的产品控制

    • 采用现代程序设计技术

    • 结果应能清楚地审查

    • 开发小组的人员应该少而精

    • 承认不断改进软件工程实践的必要性

    具体介绍:

在这里插入图片描述

软件危机

  • 定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:
       (1)用户对开发出的软件很难满意。
       (2)软件产品的质量往往靠不住。
       (3)一般软件很难维护。
       (4)软件生产效率很低。
       (5)软件开发成本越来越大。
       (6)软件成本与开发进度难以估计。
      (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

软件生存周期

  • 三周期:
    • 软件定义
    • 软件开发
    • 运行维护
  • 八阶段
    • 问题定义
    • 可行性研究
    • 需求分析
    • 总体设计
    • 详细设计
    • 编码和单元测试
    • 综合测试
    • 软件维护

第二章

软件工程方法学

  • 软件工程包括技术和管理两方面的内容

  • 在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(范型)

  • 三要素:过程、方法、工具 以质量保证为根本动力

    • 过程:指开发软件产品的一组活动及其结果
      • 规格说明
      • 软件开发
      • 软件确认
      • 软件演化
    • 方法:
      • 结构化
      • 面向对象的方法
  • 传统方法学:

    • 采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务
    • 以数据为主,小型系统
    • 局限性:重用型差,维护费用高,生产效率低
  • 面向对象方法学

    • 一致的表示方法

    • 可重用性

    • 易维护性

软件过程

  • 瀑布模型
  • 快速原型模型
  • 增量模型
  • 螺旋模型
  • 喷泉模型

五种模型的对比:

在这里插入图片描述

第三章——可行性

可行性研究

可行性研究主要集中在以下四个方面 经济可行性、 技术可行性、操作可行性、法律可行性 和抉择

系统流程图

  • 系统流程图是概括地描绘物理系统的传统工具
  • 表达:数据在系统各部件之间的流动情况
  • 区分程序流程图

数据流图(DFD)

数据流图有4种成分:源点或者终点,处理,数据存储和数据流。

在这里插入图片描述

数据流图的基本目的是利用它作为交流信息的工具,作为分析和设计的工具

ER图(实体联系图)

ER图中包含了实体(即数据对象)、关系和属性3种基本成分,通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。

  • 数据对象:

    • 数据对象是对软件必须理解的复合信息的抽象

    • 数据对象可以是外部实体、事物、行为、事件、角色、单位、地点或结构等。

      总之,可以由一组属性来定义的实体都可以被认为是数据对象。

  • 属性

    • 属性定义了数据对象的性质必须把一个或多个属性定义为“标识符”,也就是说,当人们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)

数据字典

  • 数据字典是关于数据的信息的集合,也就是对数据流图中所包含的所有元素的定义的集合。
  • 包含:1.数据流,2.数据流分量(即数据元素),3.数据存储,4.处理

成本估计

  • 软件费用管理的核心,最困难且易出错
  • 主要的成本估计方法:自行向下成本估计,自底向上成本估计,算法模型估计

成本/效益分析的方法

  • 货币的时间价值 F=P(1+ i )^n
  • 投资回收期
  • 纯收入
  • 投资回收率

第四章——需求分析

需求工程五个阶段

  • 需求管理

  • 需求获取

  • 需求分析

  • 需求规格

  • 需求验证

需求分析

  • 需求分析的任务:

在这里插入图片描述

  • 需求的分析建模
    • ER图
    • 状态转换图

需求规格说明书

在这里插入图片描述

  • 优点
    • 模板提高效率
    • 在有模板的情况下,面对一个完整的大纲,不容易遗漏重要的信息
  • 缺点
    • 并非对于所有的系统,模板的章节设计都是类似的
    • 如果仅仅为了满足标准,而填写模板的所有章节,在不相关的章节,会加入一些没有意义的内容
    • 读者很难将这些无意的文字和真正的需求分开

需求验证

主要方法:

  • 评审(审查)需求文档。
  • 以需求为根据编写测试用例
  • 编写用户手册。
  • 确定合格的标准。

第五章——总体设计

目标任务:

  • 总体设计的主要任务: 划分组成系统的物理元素——程序、文件、数据库、人工过程、文档

设计原理

在这里插入图片描述

设计步骤——系统设计+结构设计

1 出发点

需求分析阶段得出的数据流图是总体设计的极好的出发点。

2 选取合理的方案

  • 系统流程图
  • 物理元素清单
  • 成本/效益分析
  • 进度计划

3 推荐最佳方案

4 功能分解:结构设计+过程设计

5 设计软件结构

6 设计数据库

7 指定测试计划

8 书写文档

9 审查和复审

总体设计原理

1 模块化

2 抽象

  • 抽象化思维

3 逐步求精

  • 逐步求精最初是由Niklaus Wirth提出的一种自顶向下的设计策略
  • 分为分层+划分

4 信息隐藏和局部化

5 模块独立(最主要)

内聚
  • 衡量一个模块内部各个元素彼此结合的紧密程度
  • 低内聚:
    • 偶然内聚:一个模块完成一组任务,这些任务彼此间即使有关系,关系也是松散的
    • 逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类
    • 时间内聚:一个模块包含的任务必须在同一段时间内执行
  • 中内聚:
    • 过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。
    • 通信内聚:模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据
  • 高内聚:
    • 顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺 序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)
    • 功能内聚:模块内所有处理元素属于一个整体,完成一个单一的功能。功能内聚 是最高程度的内聚
耦合
  • 对一个软件结构内不同模块之间互连程度的度量
  • 分为数据耦合(必须存在)、控制耦合、特征耦合、公共环境耦合、内容耦合
    • 数据耦合:两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。数据耦合是低耦合。系统中至少必须存在这种耦合。
    • 控制耦合:传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。控制耦合是中等程度的耦合。
    • 特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。
    • 公共环境耦合:当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境
    • 内容耦合:最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合
    • 要坚决避免内容耦合!

图形工具

层次图
  • 用来描绘软件的层次结构
  • 数据结构的层次方框图相同,但 是表现的内容却完全不同。
  • 层次图很适于在自顶向下设计软 件的过程中使用
    在这里插入图片描述
HIPO图

(Hierarchy plus Input-Process-Output, HIPO)是美 国IBM公司发明的“层次图加输入/处 理/输出图”的英文缩写。为了能使 HIPO图具有可追踪性 , 在 H 图 (Hierarchy, 层次图)里除了最顶层的方框之外,每个方框都加了编号

在这里插入图片描述

结构图
  • 图中一个方框代表一个模块,框内注明模块的名字或主要功能
  • 方框之间的箭头(或直线)表示模块的调用关系
  • 尾部是空心圆表示传递的是数据
  • 实心圆表示传递的是控制信息
    在这里插入图片描述
面向数据流的设计方法
  • 概念:把信息流映射成软件结构,信息流的类型决定了映射的方法。

  • 变换流

    特征:信息沿输入通路进入系统,由外部形式变换成内部形式,进入系统的信息通过变换中心,经加 工处理以后再沿输出通路变换成外部形式离开软件系统。

  • 事务流

    特征:数据沿输入通路到达一个处理T,这个处 理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流

总结

  1. 总体设计阶段主要由系统设计和结构设计两阶段组成。
  2. 总体设计步骤的九步。
  3. 进行软件结构设计时应该遵循的最主要的原理是模块独立原理。
  4. 在软件开发过程中既要充分重视和利用这些启发式规则,又要从实际情况出发避 免生搬硬套。
  5. 层次图和结构图是描绘软件结构的常用工具。
  6. 用形式化的方法由数据流图映射出软件结构。
  7. 模块化设计思想以及流程。
  8. 数据流图的绘制。
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值