软件工程笔记之期末复习(简答)

一、问题定义

1. 软件的定义(产品):

软件= 程序十数据十文档

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

2. 软件的分类:

  • (按软件功能)
  1. 系统软件
  2. 支撑软件
  3. 应用软件

3. 软件工程方法学:

  • 传统方法学(结构化方法)
  • 面向对象方法学

4. 软件危机:

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

5. 产生软件危机的原因:

  • 客观原因:软件本身特点
  1. 逻辑部件
  2. 规模庞大
  • 主观原因:不正确的开发方法
  1. 忽视需求分析
  2. 错误认为: 软件开发=程序编写
  3. 轻视软件维护

6. 消除软件危机的途径:

  • 软件工程:适网于大型、复杂、多人协作开发的情形,“化繁为简”。

7. 软件工程的定义:

定义:(1)应用系统化的、学科化的、定量的方法,来开始、运行和维护软件,即将工程应用到软件。
(2)对(1)中各种方法的研究。
目标:(易维护性)在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应性强、可移动,可重用的软件。

8. 软件工程的三要素:

方法、工具、过程

9. 软件过程模型:

  • 传统软件过程模型
  1. 瀑布模型:自上而下,相互衔接的固定次序。线性模型,强调文档;
  2. 原型模型:目标不明确;
  3. 增量模型:需求可能发生变化,具有较大风险,希望尽早进入市场;
  • 现代软件过程模型
  1. 基于构件的开发模型
  2. 统一过程模型
  3. 敏捷开发过程
  • 如何选择过程模型
  1. 如何选择
  2. 案例分析

10. 软件生命周期:

问题定义->可行性研究->需求分析->总体设计->详细设计->编码->测试->维护

二、可行性研究

(确定问题是否值得去解决)

1. 逻辑模型:

  1. 系统流程图(数据在系统各个部件中的加工过程)
  2. 数据流图 (基本功能)自顶向下,逐步分层
  3. 数据字典(数据信息)

2. 可行性研究的过程实质:

可行性研究的过程实质上是 压缩简化的系统分析和设计的过程

3. 研究每种解法的可行性:

  1. 技术可行性
  2. 经济可行性
  3. 操作可行性

三 、需求分析

(做什么?)
结构化分折法是面向数据流的分析方法
明确系统的功能;
对目标系统提出 完整、准确、清晰、具体的要求;

1. 分析模型:

  • 数据模型(E-R图)(数据库) :相对稳定的
  • 功能模型(数据流):描述系统功能
  • 行为模型(状态转换图):通过描绘系统的状态 以及引起系统状态转换的事件,表示系统的行为
    方框层次图、IPO图

2. 从哪些方面验证软件需求的正确性:

  1. 一致性
  2. 完整性
  3. 现实性
  4. 有效性

3. 采用自顶向下逐层分解,抽象、分解

4. 分析方法:

  1. 结构化分析方法(SA)
  2. 面向对象分析方法(OOA)

四、总体设计

1. 什么是总体设计:

总体设计又称(概要设计或者初步设计),主要解决怎么做?系统如何实现

2. 设计原理:

  1. 模块化
  2. 抽象
  3. 逐步求精
  4. 信息隐藏和局部化
  5. 模块独立

3. 指导思想:

高内聚,低耦合

4. 耦合:

  • 数据耦合(尽量使用)
  • 控制耦合(少用,分解)
  • 特征耦合(少用)
  • 公共环境耦合(限制使用)
  • 内容耦合(禁止使用)

5. 内聚:

  • 低内聚 :
  1. 偶然内聚
  2. 逻辑内聚
  3. 时间内聚
  • 中内聚:
  1. 过程内聚
  2. 通信内聚
  • 高内聚:
  1. 顺序内聚
  2. 功能内聚

6. 层次图:

上层调用下层
矩形框 – 模块
连线 – 调用关系

7. HIPO:

带编号的层次图

8. 结构图(SC):

五、详细设计

具体实现

1. 什么是结构化设计?

如果一个程序的代码块仅仅通过顺序、选择、循环3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

2. 人机界面设计:

认识用户、色彩搭配、设计问题、设计指南、设计过程
设计问题:

  1. 系统响应时间
  2. 用户帮助设施
  3. 出错信息处理
  4. 命令交互

3. 过程设计的工具:

  1. 程序流程图(结构或非结构化)
  2. 盒图(结构化)又称为N-S图
  3. PAD图(问题分析图) (结构化)
  4. 判定表
  5. 判定树
  6. Jackson图

4. 程序复杂度:

McCabe方法

5. 流图(程序图):

六、实现

(编码和测试)
注释行的数量占整个源程序的1/5~1/3

1. 软件测试准则:

  1. 早开始
  2. Pareto原理 (2、8原则)80%错误由程序中20%模块造成
  3. 从小到大 小规模一大规模
  4. 充分覆盖,
  5. 第三方测试

2. 黑盒测试(功能测试) :

  1. 等价类划分法
  2. 边界值分析法
  3. 错误猜测法
  4. 因界图法

3. 白盒测试(结构测试):

  1. 逻辑覆盖法
  2. 路径测试法
  3. (冒烟测试)

4. 测试步骤:

单元测试-> 集成测试-> 系统测试->验收测试
集成测试分为:自顶向下和自底向上
自顶向下分析分为:深度优先 和 广度优先

5. 调试途径:

  1. 蛮干法
  2. 回溯法
  3. 原因排除法(对分查找法、归纳法、演绎法)

七、维护

八、面向对象方法学

(面向对象分析方法)

1. 面向对象思想:

数据和处理封装在一起

2. 模型:

模型工具功能
对象模型类图(静态图)做事情的实体
动态模型什么时候做?
功能模型用例图做什么

3. 面向对象的核心特征:

封装、 继承、多态

4. 抽象是面向对象领域发现类的主要方法:

5. 面向对象方法指导思想:

面向对象方法指导思想————软件系统是由多个对象组成,对象间通过消息相互交流,共同协作,以完成系统功能

6. 活动图和流程图的区别:

活动图:着重描述的是对象活动的顺关系所遵循的规则,是面向对象的 ,描述系统的行为
流程图:着重描述的是处理过程,是面向过程的;

7. 时序图:

时序图是交互图的一种,可以动态验证类模型的可行性。

九、面向对象设计

系统设计
对象设计

1. 设计准则:

  1. 模块化
  2. 抽象
  3. 信息隐藏
  4. 弱耦合
    (1)交互耦合
    (2)继承耦合
  5. 强内聚
    (1)服务内聚:一个服务完成一个功能
    (2)类内聚:一个类完成一个用途
    (3)一般-特殊内聚
  6. 可重用

2. 面向对象设计中最主要的工作:

面向对象设计中最主要的工作是建立对象模型、然后通过动态模型功能模型去完善对象的操作(服务)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JAVA开发区

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值