软件工程笔记

  • 一、问题定义
    • 1. 软件的定义(产品):
    • 2. 软件的分类:
    • 3. 软件工程方法学:
    • 4. 软件危机:
    • 5. 产生软件危机的原因:
    • 6. 消除软件危机的途径:
    • 7. 软件工程的定义:
    • 8. 软件工程的三要素:
    • 9. 软件过程模型:
    • 10. 软件生命周期:
  • 二、可行性研究
    • 1. 逻辑模型:
    • 2. 可行性研究的过程实质:
    • 3. 研究每种解法的可行性:
  • 三 、需求分析
    • 1. 分析模型:
    • 2. 从哪些方面验证软件需求的正确性:
    • 3. 采用自顶向下逐层分解,*抽象、分解*
    • 4. 分析方法:
  • 四、总体设计
    • 1. 什么是总体设计:
    • 2. 设计原理:
    • 3. 指导思想:
    • 4. 耦合:
    • 5. 内聚:
    • 6. 层次图:
    • 7. HIPO:
    • 8. 结构图(SC):
  • 五、详细设计
    • 1. 什么是结构化设计?
    • 2. 人机界面设计:
    • 3. 过程设计的工具:
    • 4. 程序复杂度:
    • 5. 流图(程序图):
  • 六、实现
    • 1. 软件测试准则:
    • 2. 黑盒测试(功能测试) :
    • 3. 白盒测试(结构测试):
    • 4. 测试步骤:
    • 5. 调试途径:
  • 七、维护
  • 八、面向对象方法学
    • 1. 面向对象思想:
    • 2. 模型:
    • 3. 面向对象的核心特征:
    • 4. 抽象是面向对象领域发现类的主要方法:
    • 5. 面向对象方法指导思想:
    • 6. 活动图和流程图的区别:
    • 7. 时序图:
  • 九、面向对象设计
    • 1. 设计准则:
    • 2. 面向对象设计中最主要的工作:

一、问题定义

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. 面向对象设计中最主要的工作:

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

软件工程笔记之期末复习(简答)相关推荐

  1. 最优化理论笔记及期末复习(《数值最优化》——高立)

    目录 一.预备知识 二.无约束最优化方法的基本结构 三.凸集和凸函数 四.负梯度方法和Newton型方法 五.共轭梯度法 六.约束最优化问题的最优性理论 七.罚函数方法 八.期末复习 8.1 知识点复 ...

  2. 数据结构笔记(期末复习,持续更新)

    目录 一.绪论 1.数据结构基本概念 2.算法定义与特征 二.线性表 1.线性表的定义 2.顺序表的存储结构 3.链式存储结构 三.栈和队列 1.栈的基本概念 2.队列的基本概念 3.循环队列 四.字 ...

  3. 《软件工程导论》期末复习知识总结

    第一章 软件工程概论 软件:是计算机程序.方法.规则.相关的文档以及运行计算机系统时所必需的数据的总和(狭义定义:软件=程序+数据+文档) 软件的特性:软件是复杂的.软件是不可见的.软件是不断变化的和 ...

  4. 《人机交互:软件工程视角》期末复习提纲

    第八章由于懒了,没写.有几个公式需要记忆一下. 一.概论 交互:人与计算机之间的直接或间接的通讯. 人机交互的目的:从尊重用户的角度来改善用户和计算机之间的交互,从而使计算机系统更加容易使用. 人机交 ...

  5. 模式识别-期末复习简答题(87个知识点、问题集锦|已完结)

    单选题.判断题.简答题.计算题.综合题 ① 课前测的题目 ② 87个知识点 1.什么是模式?监督模式识别和非监督模式识别的典型过程分别是什么? 模式:指需要识别且可测量的对象的描述 监督模式识别:分析 ...

  6. 陈玉福算法设计与分析期末考试题-简答部分

            陈述算法在最坏时间下的时间复杂度和平均时间复杂度:这两种评估算法复杂性的方法各自有什么意义?陈述算法在最坏时间下的时间复杂度和平均时间复杂度:这两种评估算法复杂性的方法各自有什么意义? ...

  7. 计算机组成与系统结构名词解释,北京邮电大学 计算机系统结构(体系结构) 期末复习 术语解释...

    北邮 体系结构 期末复习 简答题(名词解释) 1. 计算机系统结构:机器语言程序员所看到的传统机器级所具有的属性,它包括概念性结构和功能特性两个方面. 2. 计算机组成:指的是计算机系统结构的逻辑实现 ...

  8. 信息安全概论期末复习

    信息安全概论 期末复习 简答题 三个安全目标: 安全目标主要包括保密性(confidentiality).完整性(integrity) 和可用性(availability). 保密性:保密性是指信息能 ...

  9. Android期末复习篇_传智课后习题以及答案(选择、填空、判断、简答、编码题)

    写在前面 此为移动应用开发传智课后习题及答案,供期末复习使用,注意 答案仅供参考 加粗题目为强调 题型涉及:选择.判断.填空.简答.编程题 另8章习题及答案汇总:Android期末复习篇_8章节练习题 ...

最新文章

  1. Perl的Hash一个小细节
  2. Netflix实用API设计 1:Protobuf FieldMask实践
  3. 【SpringCloud】Feigin:伪装
  4. Syslinux引导文件名与菜单解释
  5. win7任务栏计算机图标,Win7系统任务栏怎么添加显示桌面图标 显示桌面图标如何放到win7任务栏...
  6. 野火stm32呼吸灯程序_说一说STM32启动过程
  7. java 蓝桥杯算法训练 筛选号码(题解)
  8. 质量不同的球java编程_荐非常经典的java编程题全集-共50题(1-10)...
  9. Docker1.12.6+CentOS7.3 的安装
  10. 酷狗php 技术题目,广州酷狗php面试题(赋答案)
  11. RN开发系列<8>--Redux(1)入门篇
  12. 吉林大学超星学习通02(1)
  13. Python 安卓群控随机修改机型
  14. Apple Configurator 2使用教程: 修复或恢复搭载 Apple M1芯片的 Mac!
  15. 积分第一中值定理与伏汝兰尼(Froullani)积分
  16. 中国传统节日介绍——中秋节
  17. android自适应屏幕翻转,Android中正确自适应屏幕翻转
  18. 漫画主动学习:人工智能居然被PUA了?
  19. Java获取访问者真实的IP地址
  20. 云服务器文件同步,和云服务器同步文件

热门文章

  1. 程序员的训练日记:编程也是一项耐力活动
  2. html5按钮自动特效,HTML5 svg和CSS3 22种炫酷鼠标点击按钮特效
  3. 04-爬虫利器Fiddler
  4. JDBC——ClassNotFoundException报错
  5. 【oracle】 一千条记录查200到300的记录怎么查
  6. 双极性根升余弦信号qpsk_【MATLAB】【通信原理】QPSK的调制与解调
  7. C/C++在VS2015下使用CURL下载文件
  8. C#实现windows设备管理器的“卸载设备”和“扫描检测硬件改动”,解决Realsense无法连接的问题。
  9. Python 之天天向上的魔力
  10. 散人霸业iOS客户端技术支持