软件工程与建模期末
FreeL00P

单选

软件模型

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

需求分析阶段

需求分析阶段的任务有:

  1. 确定对系统的综合需求
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正开发计划

系统流程图

符号
列子
分层

数据字典

数据字典的组成

  1. ​ 数据流
  2. ​ 数据元素(数据分量)
  3. ​ 数据存储
  4. ​ 处理

定义数据的方法

  1. 顺序:以确定次序连接两个或多个分层
  2. 选择:即从两个或者多个可能的元素中取一个
  3. 重复:把指定的分量重复0次或者多次

数据字典的用途

  • 主要作为分析阶段的工具

数据字典的实现

  • 一般作为CASE结构化分析与设计工具

详细设计的任务

  1. 结构程序设计
  2. 人机界面设计
  3. 过程设计
  4. 数据结构设计
  5. 程序复杂程度定量度量

生命周期的阶段

  • 软件定义-软件开发-运行维护
  1. 问题定义
  2. 可行性研究
  3. 需求分析
  4. 总体设计
  5. 详细设计
  6. 编码和单元测试
  7. 综合测试
  8. 软件维护

软件概要设计

面向数据流的软件设计方法

结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法

信息流的类型

变换流

image

事务流

image

结构化分析方法

软件的可维护性

决定软件可维护的因素

  1. 可理解性
  2. 可测试性
  3. 可修改性
  4. 可移植性
  5. 可重用性

可行性分析

技术可行性
经济可行性
操作可行性

可行性研究过程

复查系统规模和目标
研究目前正在使用的系统
导出新系统的高层逻辑模型
进一步定义问题
导出和评价供选择的模型的解法
推荐行动方针
草拟开发计划
书写文档提交审查

详细设计

设计出程序的详细规格说明

详细设计又叫模块设计,在这个阶段详细设计每个模块,确定实现模块功能所需要的算法和数据结构

结构化程序设计

顺序-选择-循环

程序设计阶段

程序设计阶段,开发团队将根据需求分析阶段的结果,设计出符合系统需求的软件架构和技术方案。程序设计阶段涉及的任务包括确定软件的模块化结构、编写程序设计文档、编写伪代码或流程图、选择编程语言和开发工具等。程序设计阶段的目标是为软件的实现提供清晰的指导,以确保软件能够按照预期的功能和性能要求进行开发。

需求分析

需求分析阶段的任务

  1. 确认对系统的综合要求
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正系统的开发计划

总体设计

系统该如何实现

过程

系统设计阶段:确定系统的具体实现方案|
结构设计阶段:确定软件结构

设计原理

模块化
抽象
逐步求精
信息隐藏和局部化
模块独立(高内聚,低耦合)

内聚程度

功能内聚 10’
顺序内聚 9’
通信内聚 7’
过程内聚 5’
时间内聚 3’
逻辑内聚 1’
偶然内聚 0’

B

详细设计阶段的工具

UML
ER图
数据流图(DFD)
状态图
序列图
流程图

静态数据结构

在计算机科学中,静态数据结构是指一种在创建后就不会再发生改变的数据结构。这意味着,一旦静态数据结构被创建,就不能再添加、删除或修改其中的元素。静态数据结构通常用于存储不需要频繁修改的数据,例如配置文件、静态资源文件、词典等。

常见的静态数据结构包括数组、链表、树、图等。这些数据结构在创建后,其大小和结构都不会再发生改变。例如,一个数组在创建后,其大小就已经确定,不能再添加或删除元素。同样地,一个树或图在创建后,其节点和边也不能再添加或删除。

静态数据结构的优点是访问速度快,因为其结构比较简单,访问元素的时间复杂度通常是 O(1) 或 O(log n) 级别。此外,静态数据结构的空间占用比较小,因为其大小是固定的,不会随着数据的增加而增加。缺点是不能动态修改数据,一旦创建后就不能再修改,因此不适用于需要频繁修改数据的场景。

Jackson方法

面向数据结构的设计方法

PAD图

问题分析图

用二维树形结构表示程序的控制流

软件结构图

描绘软件结构的图形工具

  1. 层次图和HIPO图
  2. 结构图

增量模型

软件危机

表现

  1. 对软件开发成本和进度的估计不准确
  2. 用户对已完成的软件不满意
  3. 软件质量不行
  4. 软件没有文档
  5. 软件成本在计算机系统总成本中所占的比例越来越高
  6. 软件不可维护

简答题

a

什么是软件工程?软件工程研究的主要内容?

软件工程是指导计算机软件开发和维护的一门工程学科,该学科的目的是生产出能

按期交付的、在预算范围内的、满足用户需求的、质量合格的软件产品。

软件工程具有以下本质特性。

  • 软件工程关注于大型程序的构造。

  • 软件工程的中心课题是控制复杂性。

  • 软件产品交付使用后仍然需要经常修改

  • 开发软件的效率非常重要。

  • 开发人员和谐地合作是成功开发软件的关键

  • 软件必须有效地支持它的用户。

软件工程研究的内容主要包括以下两个部分:

  1. 软件开发技术。主要研究软件开发方法、软件开发过程、软件开发工具和环境。
  2. 软件开发过程管理。主要研究软件工程经济学和软件管理学。

软件工程基本原理

  1. 用分阶段的生命周期计划严格执行
  2. 坚持进行阶段评审
  3. 执行严格的产品控制
  4. 采用现代化程序设计技术
  5. 结果应该清楚的审查
  6. 开发人员应该少而精
  7. 承认不断改进软件工程实践的必要性

什么是软件开发方法?有哪些主要方法

软件工程方法学包含3个要素:方法、工具、过程

  • 方法就是完成软件开发的各项任务的技术和方法,回答怎么做的问题
  • 工具是为运用方法而提供的自动的或者半自动的软件工程支持环境
  • 过程是为了获得高质量软件所需要完成的一系列任务的框架

主要方法:

  1. 结构化方法
  2. 面向数据结构方法
  3. 面向对象方法
  4. 形式化方法

需求分析阶段的任务是什么

  1. 确定对系统的综合要求
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正系统开发计划

软件设计的基本原理是什么?

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

软件维护的内容有哪些?

  1. 纠错性维护:修复软件中出现的错误和缺陷,以确保软件的正常运行和稳定性。
  2. 适应性维护:根据用户需求的变化,对软件进行修改和优化,以满足用户的新需求和期望。
  3. 完善性维护:对软件进行优化和完善,以提高软件的性能、可靠性、安全性等方面的质量。
  4. 预防性维护:对软件进行预防性维护,包括代码重构、技术升级、文档更新等,以确保软件的可维护性和可扩展性。
  5. 管理性维护:对软件进行管理性维护,包括版本控制、配置管理、问题跟踪等,以确保软件的追踪和管理,避免软件演化过程中出现不利影响。

维护过程

  • 维护组织
  • 维护报告
  • 维护的事件流
  • 保存维护记录

B

详细设计的基本任务

  1. 结构程序设计
  2. 人机界面设计
  3. 过程设计
  4. 数据结构设计
  5. 程序复杂程度定量度量

总体设计的基本任务

  1. 方案设计
  2. 系统结构设计
  3. 设计数据库
  4. 接口设计
  5. 安全设计
  6. 性能设计
  7. 可维护性设计
  8. 可扩展性设计

可行性研究的步骤

  1. 复查系统规模和目标
  2. 研究目前正在使用的系统
  3. 导出新系统的高层逻辑模型
  4. 进一步定义问题
  5. 导出和评价供选择的解法
  6. 推荐行动方针
  7. 草拟开发计划
  8. 书写文档提交审查

结构化分析的步骤

填空题

A

数据字典

数据字典的组成

  1. ​ 数据流
  2. ​ 数据元素(数据分量)
  3. ​ 数据存储
  4. ​ 处理

定义数据的方法

  1. 顺序:以确定次序连接两个或多个分层
  2. 选择:即从两个或者多个可能的元素中取一个
  3. 重复:把指定的分量重复0次或者多次

数据字典的用途

  • 主要作为分析阶段的工具

数据字典的实现

  • 一般作为CASE结构化分析与设计工具

描述处理过程的三个工具

三类:图形、表格、语言

  1. 程序流程图
  2. 盒图
  3. PAD图
  4. 判定表
  5. 判定树
  6. 过程设计语言(PDL)

评定模块的独立性

  • 内聚:度量模块内的各个元素彼此之间的紧密程度
  • 耦合:对一个软件结构内不同模块之间互连程度的度量

软件结构设计

  1. 概要设计
    1. 方案设计
    2. 软件体系架构设计
  2. 详细设计
    1. 过程设计
    2. 数据设计
    3. 接口设计
  • 设计原理
    • 模块化与模块独立
    • 抽象
    • 逐步求精
    • 信息隐藏
    • 局部化
  • 描绘软件结构的图形工具
    1. 层次图和HIPO图
    2. 结构图

软件测试的步骤

  1. 模块测试
  2. 子系统测试
  3. 系统测试
  4. 验收设置
  5. 平行运行

编码阶段

软件维护费用

B

软件工程方法学三要素

  1. 方法

  2. 工具

  3. 过程

软件工程研究的主要内容

研究内容:

软件工程是一门研究如何以系统化、规范化、可重复的方式开发和维护软件的学科。

包括以下几个方面:

  1. 软件开发过程:研究软件开发的全过程,包括需求分析、设计、编码、测试、部署和维护等环节。
  2. 软件需求工程:研究如何对用户需求进行分析和规范化,以便于在软件开发过程中进行有效的沟通和协作。
  3. 软件设计和架构:研究如何进行软件设计和架构,以满足软件的可维护性、可扩展性、可重用性、可移植性等要求。
  4. 软件测试和质量保证:研究如何进行软件测试和质量保证,以确保软件的正确性、可靠性、安全性、性能等方面的质量。
  5. 软件项目管理:研究如何进行软件项目管理,包括进度管理、资源管理、风险管理、质量管理等方面的内容。
  6. 软件维护和演化:研究如何进行软件维护和演化,以确保软件的持续运行和不断改进。

系统的逻辑模型

软件生命周期

  1. 软件定义
  2. 软件开发
  3. 软件维护

软件定义

软件定义时期的基本任务

  1. 问题定义
  2. 可行性研究
  3. 需求分析

可行性研究

研究方面:

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

研究步骤:

  1. 复查系统规模和目标
  2. 研究目前正在使用的系统
  3. 导出新系统的高层逻辑模型
  4. 进一步定义问题
  5. 导出和评价供选择的解法
  6. 推荐行动方针
  7. 草拟开发计划
  8. 书写文档提交审查

应用题

判定表