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

news2024/11/19 19:21:30

前言

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


一、软件工程的概念

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

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

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


软件工程的定义

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

软件工程的特点:

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

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


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

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

软件生存周期几个概念:

  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. 预防性维护

八、甘特图

  • 甘特图又称横道图,该图是活动进度与日历表对照图。用水平线段来表示活动的工作阶段;其中 线段的长度表示完成任务所需要的时间起点和终点分别表示任务的开始和结束时间。
  • 在甘特图中,任务的完成标准是交付相应文档和通过评审。
  • 甘特图清楚地表明了项目的计划进度,并能动态反映当前开发进展状况,其不足之处在于不能表达出任务之间复杂的逻辑关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python编程 while循环

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.循环控制 1.循环控制介绍 2.while循环表达式 3.while循环表达式 4.b…

Python实现ALO蚁狮优化算法优化支持向量机回归模型(SVR算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁狮优化(Ant Lion Optimizer,ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法…

47-linux-vim-安装以及权限等-缺少

47-linux-vim-安装以及权限等: vi编辑器简介 vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版,我们主要讲解的是vim编辑器。可以利用别名让输入vi命令的时候,实际上执行vim编辑器,例如: [rootlocalhost ~]# alias v…

HTTP协议介绍

了解HTTP HTTP是什么呢?它是超文本传输协议,HTTP是缩写,它的全英文名是HyperText Transfer Protocol。 那么什么是超文本呢? 超文本指的是HTML,css,JavaScript和图片等,HTTP的出现是为了接收和…

一位全栈工程师转岗项目经理的初体验与总结

从上周开始,公司这边把我从全栈工程师的岗位调到了项目经理的岗位,开始尝试管理岗位,感觉换了一个岗位像是换了一份工作一样,又在次充满了干劲。开始新的项目,招纳新的项目成员,虽然都是在做软件开发的事情…

【手把手】分布式定时任务调度解析之Quartz

1、任务调度背景 在业务系统中有很多这样的场景: 1、账单日或者还款日上午 10 点,给每个信用卡客户发送账单通知,还款通知。如何判断客户的账单日、还款日,完成通知的发送? 2、银行业务系统,夜间要完成跑批…

CCF CSP认证——201312

文章目录201312-1 出现次数最多的数201312-2 ISBN号码201312-3 最大的矩形201312-4 有趣的数201312-5 I’m stuck!201312-1 出现次数最多的数 题目链接 数据量较小,且数据范围也比较小。可以直接暴力,通过设置数组记录下标数据出现的次数,最…

C/C++关键字

C/C关键字【1】extern "C"【2】asm【3】关键字auto【4】break语句【5】catch 语句【6】关键字class【7】关键字const【8】#if【9】#pragma once【10】#pragma pack(1)【11】#pragma pack(4)【12】explicit【】 continue语句【13】关键字enum【14】friend【15】goto语…

【springboot进阶】基于starter项目构建(二)构建starter项目-web

目录 一、创建 web-spring-boot-starter 项目 二、添加 pom 文件依赖 三、构建配置 1. rest模板配置 RestTemplateConfig 2. 统一异常处理 BackendGlobalExceptionHandler 3. 统一返回数据结构 4. jwt鉴权处理 5. 请求日志切面处理 WebLogAspect 6. 邮件配置 BackendM…

mysql数据同步到elasticsearch数据解决方案

mysql数据同步到elasticsearch数据解决方案 问题场景 1.分库分表后多关联或者多条件查找效率低下,例如2b场景的查询,导出等需要多条件查询,继续用分库分表话效率低下。 2.数据量太多需要转移非关系型数据库elasticsearch存储 3.其他数据转…

AI 实战篇 |基于 AI开放平台实现 【植物识别】 功能,成为行走的百科全书

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

代码随想录刷题记录day40 爬楼梯+零钱兑换+完全平方数·

代码随想录刷题记录day40 爬楼梯零钱兑换完全平方数 参考:代码随想录 70. 爬楼梯 思想 当作完全背包问题,物品是1,2,可以无限次取用,背包的容量是n 1.dp[j]表示容量为j的背包,装满有dp[j]次 2.dp[j]dp…

【图像处理】opencv | 图像的二值化操作| cv2.threshold() | cv2.adaptiveThreshold()

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、cv2.threshold()阈值操作函数1.1、初见1.2、阈值不同时的效果二、cv2.adaptiveThreshold()自适应阈值操作函数2.1、初见2.2、固定blocksize,改变C值大小的实…

104-127-linux-vim-shell基础

104-linux-shell: 1.shell基础 分类:linux使用Bash,可通过vi /etc/shells查看linux支持的shell类型。 1、echo [rootlocalhost ~]#echo [选项] [输出内容] 选项:-e:支持反斜线控制的字符转换(具体百度吧)-n:取消输出后行末的换行符号&…

Python实现ALO蚁狮优化算法优化支持向量机分类模型(SVC算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁狮优化(Ant Lion Optimizer,ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法…

185.基于Django的富文本编辑器安装与使用

1.DjangoUeditor 1.1 概述 富文本编辑器,在web开发中必不可少,但是django没有自带富文本编辑器,因此我们需要使用第三方库,这里使用DjangoUeditor DjangoUditor是百度开源的在线HTML编辑器,功能非常强大,像…

VUEElement简单介绍。

目录 一、VUE 1、基本介绍 2、Vue 指令 3、生命周期 二、Element 1、基本介绍 2、Element 布局 一、VUE 1、基本介绍 ▶ 概述 Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。 我们之前也学习过后端的框架 Mybatis ,My…

Linux下C/C++实现类似netstat命令(列出TCP和UDP连接)

网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline等。其中这两项数据大多可直接读取linux /proc目录下的网络状态连接文件/proc/net/tcp、/proc/net/udp), 进程状态目录(/proc/pid/xx)。 Linux 下的/proc…

Java基于JSP的报刊订阅管理系统

随着人类的发展,人们对信息的获取方式也越来越多,虽然很多时候人们习惯了通过手机来获取各类信息,但是手机也逐渐的成为了危害人类健康的杀手之一,为了能够让大家回归到健康的生活中来,我开发了本系统,旨在…

基于jsp+mysql+ssm医药进销存管理系统-计算机毕业设计

项目介绍 为了减少传统医药进销存管理的繁杂的工作量,提高医药进销存管理的效率而设计开发了此系统。本系统综合各方面的需求决定采用B/S架构,并利用clipse搭建java开发平台。从而共同完成整个医药的设计开发。系统实现的功能主要包括:用户在…