【软考程序员学习笔记】——软件工程

news2024/11/24 18:35:32

 

在这里插入图片描述

目录

🍊一、软件存周期

🍊二、软件生存周期模型

🍊三、软件开发方法

🍊四、需求分析

🍊五、内聚和耦合

🍉模块内的独立性--内聚性

🍉模块间的独立性--耦合性

🍊六、软件测试

🍉黑盒测试

🍉白盒测试

🍊七、V模型

🍊八、软件维护

🍊九、软件质量模型


一、软件存周期

问题定义:要解决的问题是什么。

可行性分析:研究问题的范围,是否值得去解,是否有可行的解决办法。

需求分析:确定软件系统必须做什么,确定功能、性能、数据和界面要求确定逻辑模型。

总体设计:概括地说,如何解决这个问题?制定推荐系统的详细计划并设计软件的结构。

详细设计:怎样具体实现这个系统?对模块完成的功能进行具体描述。

编码和单元测试:写成某种特定程序设计语言表示的源程序清单及测试每一个模块。

综合测试:通过各类型的测试是软件达到预定的要求。

维护:通过各种必要的维护活动使系统持久满足用户的需要。

二、软件生存周期模型

瀑布模型:软件生存周期各个活动规定为依线性顺序连接起来的若干阶段的模型。适合需求明确的模型,但缺乏灵活性,客户需完整表示需求

演化模型:适合对需求缺乏准确认识的情况,根据用户使用过程中提出的意见和建议对原型不断重复改进

缺点是要对用户要求加以控制

增量模型:每一个线性序列产生软件的可发布的“增量”,但需对变更进行规划,否则会造成后来增量的不稳定,部分增量可能需重新开放

螺旋模型:结合瀑布模型和演化模型的特点,并加入了风险分析,适合用户需求的动态变化,适合庞大、复杂并且具有高风险的系统

喷泉模型:用户需求为基础,适合面向对象开发,开发过程具有迭代性和无间隙性,开发要重复多次,且开发活动不存在明显边界

三、软件开发方法

结构化方法:自顶而下、逐层分解。原则是分解与抽象,开发周期长,不适用于大规模、复杂的项目以及变化的需求

原型化方法:适合用户需求不清晰、业务理论不确定、且需求经常变化的情况。适合小规模的项目

面向对象开发方法:包括面向对象分析、设计与实现,适合比较复杂的项目模型

四、需求分析

需求的任务:系统综合要求、系统数据要求、系统逻辑模型、项目开发计划。

需求的过程:问题识别、分析与综合、编制需求分析文档、需求分析与评审。

需求的分类:功能需求、非功能需求、设计约束。

应用的工具:数据流图(DFD)、数据字典(DD)、判定表、判定树。

五、内聚和耦合

模块内的独立性--内聚性

功能内聚:完成一个单一功能,各个部分协同工作,缺一不可,是最佳的内聚类型。

顺序内聚:处理元素相关,而且必须顺序执行

通信内聚:所有处理元素集中在一个数据结构的上操作

过程内聚:处理元素相关,而且必须按特定的次序执行

瞬时内聚(时间内聚):所包含的任务必须在同一时间间隔内执行

逻辑内聚:完成逻辑上相关的一组任务

偶然内聚(巧合内聚):完成一组没有关系或松散关系的任务

模块间的独立性--耦合性

非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数来交换输入、输出信息的。

标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址;

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

外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合。

(1)一个模块直接访问另一个模块的内部数据;

(2)一个模块不通过正常入口转到另一模块内部;

(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);

(4)一个模块有多个入口。

六、软件测试

黑盒测试

等价类划分、边界值分析、错误推断和因果图

白盒测试

(1)语句覆盖。被测程序的每个语句至少执行一次。是一种很弱的覆盖标准。

(2)判定覆盖。也称为分支覆盖,判定表达式至少获得一次“真”、“假”值。判定覆盖比语句覆盖强。

(3)条件覆盖。每个逻辑条件的各种可能的值都满足一次。

(4)路径覆盖。覆盖所有可能的路径。

(5)判定/条件覆盖。每个条件所以可能的值(真/假)至少出现一次。

(6)条件组合覆盖。每个条件的各种可能值的组合都至少出现一次。

白盒测试也称为结构测试,测试的是程序内部结构和逻辑过程,所以用在功能模块的单元测试中,多个模块可以同时进行。集成测试是把功能模块组合起来进行测试,测试的是各个模块集成起来后有没有达到预期的功能。确认测试是指进一步检查软件的接口、功能和性能是否与用户要求一样。系统测试是指软件与网络、外部设备等其他因素结合部署工作的情况。

七、V模型

 V模型大体可以划分为以下几个不同的阶段步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试

软件测试过程的V模型指出,左边从上到下依次是软件开发过程的各个阶段,以用户需求为基础,进行需求分析一系统设计一详细设计一编码,而右边从下到上分别对应单元测试-集成测试一系统测试一验收测试。即使单元测试发现的问题归根到底也是不符合用户需求的问题。同样,所有测试发现的问题都可以追溯到用户需求。

验收测试计划应在需求分析阶段来做,系统测试计划和系统测试设计应在系统设计阶段完成,集成测试和单元测试的计划和测试方案设计应在详细设计阶段完成。编码完成后,就要按有关计划逐步实施这些测试。

八、软件维护

正确性维护:是指改正在系统开发阶段己发生而系统测试阶段尚未发现的错误;
(17%~21%)

适应性维护:是指使应用软件适应新技术变化和管理需求变化而进行的修改;(18%~25%)

完善性维护:是指为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征:(50%~60%)

预防性维护:是指为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,主动增加预防性的功能,以使应用系统适应各类变化而不被淘汰。(4%)

九、软件质量模型

功能性(适合性、准确性、互操作性、保密安全性、功能性的依从性)

可靠性(成熟性、容错性、易恢复性、可靠性的依从性)

易用性(易理解性、易学性、易操作性、吸引性、易用性的依从性)

效率性(时间特性、资源利用性、效率依从性)

软件维护性(易分析性、易改变性、稳定性、易测试性、维护性的依从性)

软件可移植性(适应性、易安装性、共存性、易替换性、可移植性的依从性)


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

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

相关文章

提交软著的源码格式是怎么样的?软著源码规范器V1.0直接一键生成规范的源码文档

小陶在自己成功申请了软著之后,算是了解一下流程。最主要的就是两个文件,分别是软件说明书和软件源码。软件说明书倒是没啥,可以自己写,跟一个报告差不多吧。软著源码则有很多细节问题。于是我就又写了一个软著源码规范器&#xf…

Windows 11 安装Git

Windows 11 安装Git步骤 前言第一步:从官网下载最新的Git第二步:运行安装程序第三步:选择安装位置第四步:安装配置界面第五步:选择Git默认编辑器窗口第六步:调整新存储库中初始分支的名称第七步&#xff1a…

微信小程序个人中心展示样式(2)

这是之前的详细的看这里 因为这是好多年前写的了,好多人私信我代码有问题。正好今天有时间简单的还原下代码 话不多说先看图(图片样式自己搞奥~~~~我也好久没弄了这就是个参考demo) 以下是一个使用微信小程序开发的个人中心展示详情的示例: 在微信开发…

并发可见性、有序性、原子性与JMM内存模型深入解析

并发三大特性 原子性 一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行。在 Java 中,对基本数据类型的变量的读取和赋值操作是原子性操作(64位处理器)。不采取任何的原子性保障措施的自增…

如何制作html文件(合集)

在电脑桌面或者在文件夹中点击:鼠标右键-->新建-->文本文档,一般新建好的文档名字叫“新建文本文档.txt”。 如果您创建的文档没有后缀名“txt”,请不要急,下面的步骤将教您如何显示“txt”后缀名。在文件资源管理器中点击&#xff1a…

0124 计算机网络体系结构

目录 1.计算机网络体系结构 1.1计算机网络概述 计算机网络的组成 计算机网络的功能 计算机网络的分类 计算机网络的性能指标 1.1部分习题 1.2计算机网络体系结构与参考模型 计算机网络分层结构 计算机网络协议、接口与服务 ISO/OSI参考模型和TCP/IP模型 OSI参考模型…

虚拟币与传统金融体系走向健康可持续发展

近年来,虚拟币的崛起引起了全球范围内的广泛关注。作为一种数字资产,虚拟币在不断突破传统金融界限的同时,也面临着许多挑战和争议。然而,随着时间的推移,人们开始看到虚拟币与传统金融体系逐渐融合的趋势,…

解决supervisor不能监控程序子进程问题

先说一下遇到的问题,使用的是beanstalk队列,有两个tube, 使用 supervisor 监控 beanstalk 消费队列(主进程A),主进程A产生两个子进程(子进程B,子进程C),每个子进程处理一…

Arcgis之Python的Arcpy的点线面对象的创建处理和通过pandas读取txt中的经纬度坐标创建几何对象

前言 本节将介绍点线面对象的创建和处理。创建点对象有三个类,分别是Point、Multipoint、PointGeometry,创建线对象的类为Polyline,创建面对象的类为Polygon。 一、点对象的创建——Point 点对象经常与光标配合使用。点要素将返回单个点对…

蚂蚁内容安全平台天鉴入选“北京市人工智能行业赋能典型案例”

近日,“2023全球数字经济大会”人工智能高峰论坛在京召开。会议发布了一批人工智能行业赋能典型案例,为行业提供重要的示范效应,以推动大模型应用加速赋能千行百业。其中,蚂蚁集团旗下数字藏品平台“鲸探”及内容安全平台“天鉴”…

rk3288-系统语言跟随客户luancher-②

rk3288-系统语言跟随客户luancher_旋风旋风的博客-CSDN博客rk3288-系统语言跟随客户luancherhttps://blog.csdn.net/longmin96/article/details/128265807?spm=1001.2014.3001.5501方法一: 通过修改这个给APK预制成系统软件来获取权限 方法二 客户需求是不修改成系统应用,因…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 4 日论文合集)

文章目录 一、检测相关(15篇)1.1 Artifacts Mapping: Multi-Modal Semantic Mapping for Object Detection and 3D Localization1.2 Shi-NeSS: Detecting Good and Stable Keypoints with a Neural Stability Score1.3 HODINet: High-Order Discrepant Interaction Network for…

10 从0开始学PyTorch | 多层神经网络、激活函数、学习能力

前面的训练过程我们已经了解的差不多了,但是我们所用到的模型还是一个线性模型,这一小节就让我们正经开始神经网络的搭建,研究怎么把之前的线性模型替换成神经网络来解决我们的问题。 为了更好的理解神经网络,这里我们把假设的关…

【新版系统架构】第八章-系统质量属性与架构评估

软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版) 第一章-绪论第二章-计算机系统基础知识(一)第二章-计算机系统基础知识(二)第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

(六)python实战——使用Redis库完成redis基本数据类型数据的操作案例

前言 本节内容主要介绍一下在python环境下,使用Redis库实现redis基本数据类型String、List、Set、Zset、Hash等数据的操作,通过案例的演示,学习python环境下,redis缓存数据库的基本使用和操作。 正文 ①使用pip命令安装Redis依…

Redis10大性能优化点(上)

1.Redis真的变慢了吗? 对 Redis 进行基准性能测试 例如,我的机器配置比较低,当延迟为 2ms 时,我就认为 Redis 变慢了,但是如果你的硬件配置比较高,那么在你的运行环境下,可能延迟是 0.5ms 时就…

计算机基础--->数据结构(6)【AVL树(平衡二叉树)】

文章目录 AVL(平衡二叉树)树性质AVL树的操作(Java)节点的创建AVL树的插入1.判断平衡2.保持树的平衡3.判断是否AVL树4.删除节点 全部代码 AVL(平衡二叉树)树 平衡二叉树是一种特殊的二叉搜索树,他…

不再担心代码丢失!掌握同步代码到两个git仓库的绝妙方法!

最近,我手里的项目由于某些原因,需要从一个代码仓库把所有的代码复制到另一个代码仓库中,并且以后再同步代码的时候,需要同时把本地的代码同步到两个代码仓库。为了满足这一需求,我将为大家介绍两种方案。方案一可以实…

飞行动力学 - 第4节-part1-螺旋桨式飞机的最大最小速度 之 基础点摘要

飞行动力学 - 第4节-part1-螺旋桨式飞机的最大最小速度 之 基础点摘要 1. 最小功率和最大/最小速度概念2. 最小功率2.1 手工推导2.2 PPT推导 3. 最大速度和最小速度函数关系4. 参考资料 1. 最小功率和最大/最小速度概念 最小功率:类似抛物线底部斜率为零的位置最大…

Qt-事件(下)(事件过滤、自定义事件)

文章目录 事件过滤自定义事件 事件过滤 event()函数是一个protected的函数,这意味着我们要想重写event(),必须继承一个已有的组件类,——重写其event()函数。event()函数的确有一定的控制,不过有时候我的需求更严格一些&#xff…