当前位置: 首页 > news >正文

软考之软件工程

一、瀑布模型

  严格区分阶段,每个阶段因果关系紧密相连,只适合需求明确的项目

缺点:软件需求完整性、正确性难确定;严格串行化,很长时间才能看到结果;瀑布模型要求每个阶段一次性完全解决该阶段工作,不现实。

二、原型模型 

适合需求不明确的项目

原型模型两个阶段:1、原型开发阶段 2、目标软件开发阶段

抛弃型原型与演化型原型

三、原型及相关模型

四、V模型

五、迭代与增量

增量型:一块一块有增加

迭代型:一轮一轮在变好

 六、螺旋模型

七、构件组装模型

优点:易扩展、易重用、降低成本、安排任务更灵活。

确定:构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其他指标(如性能)、第三方构件质量难控制。

八、基于构件的软件工程(CBSE)

CBSE体现了购买而不是重新构造的哲学

CBSE的特征:

  • 可组装性:所有外部交互必须通过公开定义的接口进行
  • 可部署性:构件总是二进制式的,能作为一个独立实体在平台上运行
  • 文档化:用户根据文档来判断构件是否满足需求
  • 独立性:可以在无其他特殊构件的情况下进行组装和部署
  • 标准化:符合某种标准化的构件模型

构件的组装:

  • 顺序组装:按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件
  • 层次组装:被调用构件的“提供”接口必须和调用构件的“请求”接口兼容
  • 叠加组装:多个构件合并形成新构件,新构件整合原构件的功能,对外提供新接口

 九、快速应用开发模型(RAD)

主流程采用瀑布模型,在流程引入大量的构件

十、统一过程(UP,RUP)

十一、敏捷方法概述

11.1、敏捷方法-XP

强调四大价值观:沟通(加强面对面沟通),简单(不过度设计),反馈(及时反馈),勇气(接受变更的勇气)

实践规则:结对编程(两个人写代码,一个人写,一个人审核)、持续集成

 11.2、敏捷方法-SCRUM

核心思想:每次选一部分进行迭代,一个迭代一到四周,侧重项目管理

11.3 其他敏捷方法

水晶方法:提倡“机动性”的方法,拥有对不同类型项目非常有效的敏捷过程

特征驱动开发方法(FDD):认为有效的软件开发需要三要素:人、过程和技术。定义了六种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。

开放式源码:程序开发人员在地域上分布很广,其他方法强调集中办公

ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习

动态系统开发方法(DSDM):倡导以业务为核心

十二、逆向工程

实现级:包括程序的抽象语法树、符合表、过程的设计表示

结构级:包括反映程序分量之间互相依赖关系的信息,例如调用图、结构图、程序和数据结构

功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型

领域级:包括反映程序分量或程序实体与应用领域概念之间对应关系的信息,如实体关系模型

相关概念

(1)重构/重组。重构是指在同一个抽象级别上转换系统的描述形式。

(2)设计恢复:指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息

(3)逆向工程:逆向工程是分析程序。力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程

(4)正向工程:指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量

(5)再工程/重构工程:再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤

 十三、净室软件工程

净室即无尘室、洁净室。就是一个受控污染级别的环境。

使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制。

使用统计的测试来获取认证被交付的软件的可靠性所必需的出错率信息。

技术手段

  • 统计过程控制下的增量式开发:控制迭代
  • 基于函数的规范和设计:盒子结构 定义3种抽象层次:行为视图(黑盒)->有限状态机视图(状态盒)->过程视图(明盒)
  • 正确性验证:净室工程的核心
  • 统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法

缺点:

  • 太理论化,正确性验证的步骤比较困难且耗时
  • 开发小组不进行传统的模块测试,不现实
  • 脱胎于传统软件工程,不可避免带有传统软件工程的一些弊端

十四、需求工程-概述

软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望

相关文章:

软考之软件工程

一、瀑布模型 严格区分阶段,每个阶段因果关系紧密相连,只适合需求明确的项目 缺点:软件需求完整性、正确性难确定;严格串行化,很长时间才能看到结果;瀑布模型要求每个阶段一次性完全解决该阶段工作&#xf…...

微信小程序(六)tabBar的使用

注释很详细,直接上代码 上一篇 新增内容: 1. 标签栏文字的内容以及默认与选中颜色 2. 标签栏图标的默认样式与选中样式 3. 标签选项路径页面 4.标签栏背景颜色 🐼(文末补充)设置标签栏后为什么navigator标签无法跳转页…...

写Shell以交互方式变更Ubuntu的主机名

以下是一个简单的 Bash 脚本,用于以交互方式更改 Ubuntu 20 系统的主机名: 1#!/bin/bash 2 3# 提示用户输入新的主机名 4read -p "请输入新的系统名称(主机名): " new_hostname 5 6# 检查是否输入了新的主机名 7if [ -…...

SpringBoot整合ElasticSearch实现基础的CRUD操作

本文来说下SpringBoot整合ES实现CRUD操作 文章目录 概述spring-boot-starter-data-elasticsearch项目搭建ES简单的crud操作保存数据修改数据查看数据删除数据 本文小结 概述 SpringBoot支持两种技术和es交互。一种的jest,还有一种就是SpringData-ElasticSearch。根据…...

【PyTorch】记一次卷积神经网络优化过程

记一次卷积神经网络优化过程 前言 在深度学习的世界中,图像分类任务是一个经典的问题,它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集,包含了10个类别的60000张32x32彩色图像。在上一篇博客中,我们已…...

C++面试宝典第24题:袋鼠过河

题目 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子。每隔一米就有一个桩子,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳得更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5,就代表袋鼠下一跳最多能够跳5米;如果为0,就会陷进去无法…...

2401vim,vim标号

标号简介 提供高亮,快速告诉用户有用信息.如,调试器在左侧列中有个表示断点的图标. 另一例可能是表示(PC)程序计数器的箭头.标号功能允许在窗口左侧放置标号或图标,并定义应用行的高亮. 此外,调试器还支持8到10种不同的标号和高亮颜色,见|NetBeans|. 使用标号有两个步骤: 1…...

Web开发中HTTP请求、响应等相关知识

目录 params和data区别? post请求可以使用params吗? put、delete请求应该使用params还是data? get和post的区别? 常用注解使用 params和data区别? 在使用Ajax时,"params" 和 "data" 通常用于不同的上下文。 "params…...

[Android] Android文件系统中存储的内容有哪些?

文章目录 前言root 文件系统/system 分区稳定性:安全性: /system/bin用来提供服务的二进制可执行文件:调试工具:UNIX 命令:调用 Dalvik 的脚本(upall script):/system/bin中封装的app_process脚本 厂商定制的二进制可执行文件: /system/xbin/system/lib[64]/system/…...

透明拼接屏在汽车领域的应用

随着科技的进步,透明拼接屏作为一种新型的显示技术,在汽车领域的应用越来越广泛。尼伽小编将围绕透明拼接屏在汽车本身、4S店、展会、工厂等方面的应用进行深入探讨,并展望未来的设计方向。 一、透明拼接屏在汽车本身的应用 车窗显示&#x…...

“深入理解RabbitMQ交换机的原理与应用“

深入理解RabbitMQ交换机的原理与应用 引言1. RabbitMQ交换机简介介绍1.1 什么是RabbitMQ?1.1.1 消息中间件的作用1.1.2 RabbitMQ的特点和优势 1.2 RabbitMQ的基本概念1.2.1 队列1.2.2 交换机1.2.3 路由键 1.3 交换机的作用和分类1.3.1 直连交换机(direct…...

Programming Abstractions in C阅读笔记:p248-p253

《Programming Abstractions in C》学习第69天,p248-p253总结,总计6页。 一、技术总结 “A generalized program for two-player games”如标题所示,该小节强调要学会从一个复杂的程序中抽象出通用的内容——这也是本书的主旨——“Program…...

面试题目,你对前端工程化的了解

前端工程化是通过工具和流程来提高软件开发效率、降低维护成本以及改善项目可维护性的方法。在前端领域,前端工程化通常包括以下方面内容 版本控制 使用 git 来管理代码的版本,追踪变更,协作开发等项目脚手架 使用项目的脚手架进行项目的初始…...

2023年春秋杯网络安全联赛冬季赛 Writeup

文章目录 Webezezez_phppicup Misc谁偷吃了外卖modules明文混淆 Pwnnmanagerbook Reupx2023 CryptoCF is Crypto Faker 挑战题勒索流量Ezdede 可信计算 Web ezezez_php 反序列化打redis主从复制RCE&#xff1a;https://www.cnblogs.com/xiaozi/p/13089906.html <?php c…...

docker安装Rabbitmq教程(详细图文)

目录 1.下载Rabbitmq的镜像 2.创建并运行rabbitmq容器 3.启动web客户端 4.访问rabbitmq的微博客户端 5.遇到的问题 问题描述&#xff1a;在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node 解决方法 &#xff08;1&#…...

java web mvc-05-JSF JavaServer Faces 入门例子

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …...

yolov8 训练voc数据集

yolov8训练 from ultralytics import YOLO# 加载模型 # model YOLO(yolov8n.yaml) # 从YAML构建新模型 # model YOLO(yolov8n.pt) # 加载预训练模型&#xff08;推荐用于训练&#xff09; model YOLO(yolov8n.yaml).load(yolov8n.pt) # 从YAML构建并转移权重# 训练模型…...

Python笔记12-多线程、网络编程、正则表达式

文章目录 多线程网络编程正则表达式 多线程 现代操作系统比如Mac OS X&#xff0c;UNIX&#xff0c;Linux&#xff0c;Windows等&#xff0c;都是支持“多任务”的操作系统。 进程&#xff1a; 就是一个程序&#xff0c;运行在系统之上&#xff0c;那么便称之这个程序为一个运…...

X射线中关于高频高压发生器、高清晰平板探测器、大热容量X射线球管、远程遥控系统的解释

高频高压发生器&#xff08;High Frequency High Voltage Generator&#xff09; 在医用诊断X射线设备中扮演着关键角色&#xff0c;它主要用于产生并控制用于X射线成像的高压电能。 这种发生器采用高频逆变技术&#xff0c;通过将输入的低电压、大电流转换为高电压、小电流&am…...

【算法】最短路计数(搜索)复习

题目 给出一个 N 个顶点 M 条边的无向无权图&#xff0c;顶点编号为 1 到 N。 问从顶点 1 开始&#xff0c;到其他每个点的最短路有几条。 输入格式 第一行包含 2 个正整数 N,M&#xff0c;为图的顶点数与边数。 接下来 M 行&#xff0c;每行两个正整数 x,y&#xff0c;表…...

资源提取高效解析与跨设备管理:猫抓浏览器扩展的技术实践

资源提取高效解析与跨设备管理&#xff1a;猫抓浏览器扩展的技术实践 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化内容爆炸的今天&…...

手把手教你用MounRiver Studio开发沁恒CH32V003(附完整项目实战)

从零开始用MounRiver Studio开发沁恒CH32V003&#xff1a;温度控制器实战指南 当RISC-V遇上国产MCU&#xff0c;会碰撞出怎样的火花&#xff1f;沁恒CH32V003作为一款性价比极高的RISC-V内核微控制器&#xff0c;配合MounRiver Studio这一专为RISC-V优化的开发环境&#xff0c;…...

COMSOL数据可视化避坑指南:如何用SciPy的griddata处理不规则网格数据?

COMSOL数据可视化避坑指南&#xff1a;如何用SciPy的griddata处理不规则网格数据&#xff1f; 当你从COMSOL导出电场、温度场或其他物理场数据时&#xff0c;是否遇到过这样的困扰&#xff1a;明明在COMSOL中看起来光滑连续的场分布&#xff0c;导出到MATLAB或Python中绘制时却…...

C语言实战:构建嵌入式eMMC RPMB安全读写组件

1. eMMC RPMB分区基础解析 我第一次接触RPMB分区是在开发智能门锁项目时&#xff0c;需要存储指纹特征码等敏感数据。传统存储方式容易被篡改&#xff0c;而RPMB完美解决了这个问题。RPMB&#xff08;Replay Protected Memory Block&#xff09;是eMMC芯片中的特殊安全存储区域…...

ARM Cortex-M0 SoC实战:如何用SystemVerilog和C语言实现软硬件高效握手通信

ARM Cortex-M0 SoC实战&#xff1a;软硬件握手通信的黄金法则 在嵌入式系统开发中&#xff0c;处理器与外围设备之间的高效通信一直是工程师们面临的挑战。当ARM Cortex-M0这类精简指令集处理器遇到AHB-Lite总线时&#xff0c;如何设计出既稳定又高效的握手协议&#xff1f;本…...

如何在Linux系统中快速找到文件:FSearch终极文件搜索工具完整指南

如何在Linux系统中快速找到文件&#xff1a;FSearch终极文件搜索工具完整指南 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中寻找特定文件常常令人头疼…...

OpenJSCAD.org扩展开发完全手册:从零开始创建自定义IO格式

OpenJSCAD.org扩展开发完全手册&#xff1a;从零开始创建自定义IO格式 【免费下载链接】OpenJSCAD.org JSCAD is an open source set of modular, browser and command line tools for creating parametric 2D and 3D designs with JavaScript code. It provides a quick, prec…...

WarcraftHelper:让魔兽争霸3重获新生的兼容性增强工具

WarcraftHelper&#xff1a;让魔兽争霸3重获新生的兼容性增强工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否曾在现代电脑上尝试重温魔兽争…...

seo页面优化公司如何进行网站内容优化

SEO页面优化公司如何进行网站内容优化 在当今数字化时代&#xff0c;网站内容优化已经成为了每个企业在SEO&#xff08;搜索引擎优化&#xff09;中的关键步骤。SEO页面优化公司通过一系列策略和技术&#xff0c;帮助企业提高网站在搜索引擎中的排名&#xff0c;从而吸引更多的…...

二手交易平台信任度调查:闲鱼交易安全性深度解析

二手交易平台信任度调查&#xff1a;闲鱼交易安全性深度解析随着循环经济的兴起&#xff0c;中国二手交易市场规模在2023年突破万亿元大关。作为阿里巴巴旗下的C2C二手交易平台&#xff0c;闲鱼凭借5亿注册用户和日均10亿元的交易规模&#xff0c;已成为国内最大的闲置物品流转…...