【软件工程期末复习内容】

2023-11-16

前言

时不可以苟遇,道不可以虚行。


一、软件工程的概念

  • 软件是计算机系统运行的 指令数据相关文档 的集合,即软件等于程序、数据、加上文档。
  • 程序:是事先按照预定功能性能等要求设计和编写的指令序列;
  • 数据:是使程序正常处理信息的数据结构及信息表示;
  • 文档:是与程序开发、维护和使用有关的技术数据和图文资料。

  • 软件危机:是指在计算机软件开发、运行、维护和管理的过程中所遇到的一系列严重问题。

在软件开发和维护过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发和维护的方法不正确有关。


软件工程的定义

  • 采用工程的概念、原理、技术和方法,在计划、开发、运行、维护和管理软件的过程中,将科学的管理和最佳的技术方法紧密结合,并采用适当工具,以比较经济的手段获得满足用户需求的可靠软件的一系列方法。

软件工程的特点:

  • 软件工程是在软件开发中采用工程化的原理和方法,采用一系列科学的、现代化的方法技术来开发软件,这种工程化的思想贯穿软件开发和维护的全过程。

目标是: 实现软件研发与维护的优质高效与自动化。


软件生存周期的概念(软件策划、软件开发和运行维护)

  • 软件生存周期是指从开始研发软件到软件停止使用的整个过程,即软件产品从用户提出开发需求开始,经过开发、使用和维护,直到最后淘汰的整个周期,因此也称为软件生命周期或软件生存周期,是软件工程的一个重要概念。

软件生存周期几个概念:

  1. 软件策划
  2. 需求分析
  3. 概要设计
  4. 详细设计
  5. 编写程序
  6. 测试
  7. 运行和维护

瀑布模型

  • 瀑布模型将生存期的计划时期、开发时期和运行时期又细分为若干个阶段。

二、可行性分析

  • 可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。

  • 必须记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解决。

可行性分析也称为可行性研究,其目的是围绕影响软件项目研发的各种因素的可行性进行全面、系统的分析论证,是以尽可能小的成本在较短时间内和特定条件下确定软件项目是否值得研发、是否可行。

三个方面的可行性:

  • 技术可行性;
  • 经济可行性;
  • 操作可行性。

三、需求分析

  • 需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。

需求分析是软件项目决定开发后的首要工作,在软件的整个研发过程中最关键,也是软件工程的一个重要环节。


数据流图(DFD:Data Flow Diagram)

  • 描述符号主要有四种:外部实体、数据流、加工、数据存储文件。
    在这里插入图片描述

模块化

  • 模块是构成程序的基本构件,一般软件都由其模块和子模块构成。
  • 模块设计时兼顾内聚性和耦合性并保持模块相对的功能独立性。

  • 内聚: 标志一个模块内各个元素彼此结合的紧密程度,是信息隐蔽和局部化概念的自然扩展。

设计时,应该力求做到功能高内聚。


功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。


功能内聚是最高程度的内聚。

  • 耦合: 耦合是对软件结构内不同模块之间互连程度的度量,是影响软件复杂程度的一个重要因素。

控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。

  • 对模块的设计应最大程度地追求:高内聚、低耦合。

描述软件结构的工具

  • 层次图
  • HIPO 图:“层次 - 输入 - 处理 - 输出”

概念数据模型设计

  • E-R 图;
  • 实体 - 联系模型采用简单的 E - R 图表达对现实的理解。
  • 优点: 图形元素少,接近人的思维方式、不用考虑存储结构、存取方式和具体的数据库软件,易分析、易设计等。不熟悉计算机技术的用户也能理解并使用,适合作为数据建模起始工具。
  1. 矩形:表示实体集
  2. 椭圆:表示属性
  3. 用带有下划线的主键或码名的椭圆:表示主键
  4. 菱形:表示联系,联系类型用菱形与实体间的连线表示,外键用带有下划虚线的外键名的椭圆表示,多值属性用双线椭圆表示,派生属性用虚椭圆表示。

实体关系图的设计步骤是:先确定实体类型、实体属性和联系类型,然后画出 E-R 图。


四、软件详细设计

1、详细设计的任务

  1. 模块的算法设计
  2. 模块内的数据结构设计
  3. 模块接口实现设计
  4. 模块测试用例设计
  5. 编写详细设计说明书
  6. 详细设计评审

2、详细设计的描述工具

图形工具:

  1. 程序流程图
  2. 盒图(N - S)
  3. 问题分析图(PAD:Problem Analysis Diagram)

环形复杂度

  • 用 McCabe 方法度量得出的结果称为程序的环形复杂度。

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


五、软件实现

程序语言的发展

  1. 第一代语言:是与机器硬件密切相关的机器语言和汇编语言。
  2. 第二代语言:主要应用于各种计算,包括 FORTRAN、COBOL、PascalBASIC 等。
  3. 第三代语言:直接支持结构化构件,并且具有很强的过程能力和数据结构能力,包括结构化语言和面向对象语言,如结构化程序语言有 C 等,面向对象的语言有 C++/Java/Delphi 等,大致分为:通用高级语言、面向对象的语言和专用语言。
  4. 第四代语言:属于超高级程序设计语言,特征:强大的数据管理能力、可对数据库进行有效的存取、查询和其他相关操作……

程序注释

  • 程序注释分为:序言性注释和功能性注释。
  1. 序言性注释通常置于各种程序模块的开始部分;
  2. 功能性注释嵌在源程序体内,常放在具体语句之后,用于描述语句或程序段所要做的工作。

六、软件测试

  • 软件测试的定义:在规定的条件下对软件进行操作以发现软件错误,衡量软件质量并对其是否能满足设计要求进行评估的过程;同时也是利用特定的技术和方法,运行评价和验证软件满足需求或识别运行结果的过程,并且是检测软件的正确性、完整性、安全性和软件品质的手段和过程。

  • 注:软件测试的目的是发现软件中的错误。


软件测试用例设计

  • 白盒测试在测试早期执行,黑盒测试主要用于测试的后期。

1、黑盒测试

  • 目的是:检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为 黑盒测试方法。 黑盒测试也称为功能测试或黑箱测试。
  • “黑盒” 则指测试人员只知道被测软件的界面和接口外部情况,不必考虑程序内部的逻辑结构和内部特性,只根据程序的需求分析规格说明来检查其功能是否符合规定的需求。

2、白盒测试

  • 若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试方法。
  • 白盒测试主要是对程序内部结构执行路径的测试,有时称为 玻璃盒测试

七、软件维护

  • 软件维护就是在软件已经交付使用之后,为了改正错误或者满足新的需要而管理修改软件的过程。

软件维护类型的四种类型:

  1. 完善性维护
  2. 适应性维护
  3. 改正性维护
  4. 预防性维护

八、甘特图

  • 甘特图又称横道图,该图是活动进度与日历表对照图。用水平线段来表示活动的工作阶段;其中 线段的长度表示完成任务所需要的时间起点和终点分别表示任务的开始和结束时间。
  • 在甘特图中,任务的完成标准是交付相应文档和通过评审。
  • 甘特图清楚地表明了项目的计划进度,并能动态反映当前开发进展状况,其不足之处在于不能表达出任务之间复杂的逻辑关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【软件工程期末复习内容】 的相关文章

  • 概说概要设计怎么做

    概说概要设计怎么做 51CMM COM原创 作者 厦门巨龙软件工程有限公司 卢琳生 2003 12 22 摘要 本文是在概要设计实践和学习中的一些心得与学习笔记 希望与大家分享 如有不妥之处欢迎指正 关键字 概要设计 结构化 OOD 正文
  • 软件工程学习日记(4)----面向数据流的设计方法

    用面向数据流的方法设计下列系统的软件结构 问题回顾 为方便储户 某银行拟开发计算机储蓄系统 储户填写的存款单或取款单由业务员输入系统 如果是存款 系统记录存款人姓名 住址 存款类型 存款日期 利率等信息 并印出存款单给储户 如果是取款 系统
  • 17、系统设计篇-技术选型

    技术选型 就是在两个或多个技术方案中选择适合当前项目情况的方案 技术选型不仅是个技术的选择 也是一个和项目情况密切相关的项目决策 技术选型 本质上是项目决策的一种 要做好技术选型 就是要做好项目决策 一 项目决策需考虑的角度 1 时间 范围
  • 软件设计师--结构化开发

    结构化开发 耦合 真题 内聚 真题 设计原则 真题 系统文档 真题 数据流图 数据流图基本数据元素 外部实体 数据存储 加工 数据流 父图子图平衡 加工既要有输入数据流也要有输出数据流 数据守恒 真题 数据字典 真题 杂题精选 耦合 真题
  • 系统架构设计师-数据库系统(1)

    目录 一 数据库模式 1 集中式数据库 2 分布式数据库 二 数据库设计过程 1 E R模型 2 概念结构设计 3 逻辑结构设计 三 关系代数 1 并交差 2 投影和选择 3 笛卡尔积 4 自然连接 一 数据库模式 1 集中式数据库 三级模
  • Open Source Game Clones

    Open Source Game Clones This site tries to gather open source reimplementations of great old games in one place If you t
  • 【软件工程】详细设计说明书

    详细设计说明书 1引言 1 1编写目的 说明编写这份详细设计说明书的目的 指出预期的读者 该文档实在概要设计的基础上 进一步的细化系统结构 展示了软件啊结构的图标 物理设计 数据结构设计 及算法设计 详细的介绍了系统各个模块是如何实现的 包
  • sudo配置文件/etc/sudoers详解及实战用法

    一 sudo执行命令的流程 将当前用户切换到超级用户下 或切换到指定的用户下 然后以超级用户或其指定切换到的用户身份执行命令 执行完成后 直接退回到当前用户 具体工作过程如下 当用户执行sudo时 系统会主动寻找 etc sudoers文件
  • 什么是项目管理?项目经理应该如何进行管理?

    项目管理 一是指一种管理活动 一种有意识地按照项目的特点和规律 对项目进行组织管理的活动 二是指一种管理学科 以项目管理活动为研究对象的一门学科 它是探求项目活动科学组织管理的理论与方法 就是把各种知识 技能 手段和技术应用于项目活动之中
  • 软件工程期末试题及答案(史上最全)

    软件工程期末试题及答案 文章目录 软件工程期末试题及答案 一 填空题 二 选择题 三 判断题 四 简答题 五 分析题 六 画图题 一 填空题 在信息处理和计算机领域内 一般认为软件是 文库 程序 文档 和 数据 数据流图的基本组成部分有 数
  • [需求管理-4]:需求分析全过程:需求分析+资源评估+项目计划

    前言 需求收集后 需要经过漫长的需求分析和所需要评估过程 才能正式在某个软件版本中实现需求 在软件开发人员通过编程实现需求前 中间经过了多种角色的辛苦劳动 最终才会生成需要规格说明书 需求规格说明书是逐步由粗到细的分解过程 一个需求 要进入
  • Go 语言注释教程

    注释是在执行时被忽略的文本 注释可用于解释代码 使其更易读 注释还可用于在测试替代代码时防止代码执行 Go支持单行或多行注释 Go单行注释 单行注释以两个正斜杠 开头 在 和行尾之间的任何文本都将被编译器忽略 不会被执行 示例 This i
  • Python 简介和用途

    什么是Python Python是一种流行的编程语言 由Guido van Rossum创建 并于1991年发布 它用于以下领域 网页开发 服务器端 软件开发 数学 系统脚本编写 Python能做什么 Python可用于在服务器上创建Web
  • 软件工程期末复习+数据仓库ETL

    一 软件工程 请用基本路径测试方法为下列程序设计测试用例 并写明中间过程 第1步 画出流程图 1 菱形用于条件判断 用在有分支的地方 2 矩形表示一个基本操作 3 圆形是连接点 第2步 计算程序环路复杂性 流图G的环路复杂度V G 定义为
  • WMS系统出库扫描:提升仓储管理效率与准确性

    WMS系统中的出库扫描功能是关键环节之一 它通过扫描物料或货物的条形码或二维码 实现实时 准确地记录和更新库存信息 一 WMS系统出库扫描的重要性 1 实现库存准确性 通过出库扫描 WMS系统能够准确记录物料或货物的出库信息 实时更新库存数
  • thinkphp+vue教学互动课程资源网站

    软件工程课程建设通篇文章的撰写基础是实际的应用需要 然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程 以软件工程课程建设的实际应用需要出发 架构系统来改善现软件工程课程建设工作流程繁琐等问题 不仅如此以操作者的角度来
  • 嵌入式培训机构到底怎么选?培训了能找到工作吗

    嵌入式作为一种广泛应用于企业级开发的编程语言 对于想要从事软件开发行业的人来说 掌握嵌入式技能是非常重要的 而参加嵌入式培训机构是一个快速提升技能的途径 然而 很多人可能会担心 参加嵌入式培训了能找到工作吗 如何选择靠谱的嵌入式培训机构 要
  • ICT行业“样品”相关业务挑战及解决方案介绍

    ICT行业供应链样品相关业务介绍 在信息通信技术 ICT 行业中 研发打样 结构件打样和非0价打样是研发和产品设计过程中的重要环节 下面我会通过具体的业务场景来解释这些概念 1 研发打样 场景例子 一家手机制造公司正在开发一款新型智能手机
  • 这套Go语言开发框架组合真的非常高效

    我尝试过很多框架 从Django Flask和Laravel到NextJS和SvelteKit 到目前为止 这是我唯一可以使用的不会让我感到疯狂或者放弃项目的堆栈 框架 我喜欢所有这些框架 但我只是不太适应它们的设计方式 实际上 我是一个弱
  • Python 中多态性的示例和类的继承多态性

    单词 多态 意味着 多种形式 在编程中 它指的是具有相同名称的方法 函数 操作符 可以在许多不同的对象或类上执行 函数多态性 一个示例是 Python 中的 len 函数 它可以用于不同的对象 字符串 对于字符串 len 返回字符的数量 示

随机推荐