软考之软件工程

一、瀑布模型

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

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

二、原型模型 

适合需求不明确的项目

原型模型两个阶段: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种抽象层次:行为视图(黑盒)->有限状态机视图(状态盒)->过程视图(明盒)
  • 正确性验证:净室工程的核心
  • 统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法

缺点:

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

十四、需求工程-概述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode_11_中等_盛最多水的容器

文章目录 1. 题目2. 思路及代码实现(Python)2.1 双指针 1. 题目 给定一个长度为 n n n 的整数数组 h e i g h t height height 。有 n n n 条垂线,第 i i i 条线的两个端点是 ( i , 0 ) (i, 0) (i,0) 和 ( i , h e i g h t [ i ] ) (i…

Python入门(一)

anaconda安装 官网:https://www.anaconda.com下载 jupyter lab 简介: 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境,你可以使用它编写notebook,操作终端,编辑markdown文本&#xf…

openGauss学习笔记-205 openGauss 数据库运维-常见故障定位案例-业务运行时整数转换错

文章目录 openGauss学习笔记-205 openGauss 数据库运维-常见故障定位案例-业务运行时整数转换错205.1 业务运行时整数转换错205.1.1 问题现象205.1.2 原因分析205.1.3 处理办法 openGauss学习笔记-205 openGauss 数据库运维-常见故障定位案例-业务运行时整数转换错 205.1 业务…

CSS之边框样式

让我为大家介绍一下边框样式吧!如果大家想更进一步了解边框的使用,可以阅读这一篇文章:CSS边框border 属性描述none没有边框,即忽略所有边框的宽度(默认值)solid边框为单实线dashed边框为虚线dotted边框为点线double边框为双实线 代码演示&…

Vulnhub靶机:FunBox 4

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:FunBox 4(10.0.2.29) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.com/funbo…

Java 面向对象案例 03(黑马)

代码: public class phoneTest {public static void main(String[] args) {phone [] arr new phone[3];phone p1 new phone("华为",6999,"白色");phone p2 new phone("vivo",4999,"蓝色");phone p3 new phone("苹…

喷墨打印机市场分析:预计2029年将达到548亿美元

喷墨打印机是将彩色液体油墨经喷嘴变成细小微粒喷到印纸上,有的喷墨打印机有三个或四个打印喷头,以便打印黄、品红青黑四色;有的是共用一个喷头,分四色喷印。 喷墨打印机是在针式打印机之后发展起来的,采用非打击的工作方式。比较突出的优点有…

STM32标准库开发——串口发送/单字节接收

USART基本结构 串口发送信息 启动串口一的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);初始化对应串口一的时钟,引脚,将TX引脚设置为复用推挽输出。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDef GPIO_In…

第7章 7.6.5 常量指针 Page406~407

const可以限制指针指向的数据,也可以限制指针的指向 const限制指针指向的数据,不可以修改指向的数据,可以改变指向 推荐写法 常见写法:

discuz论坛附件上传限制大小2MB

我遇到了这个问题,去修改了配置PHP.ini文件没有解决. 我把他变成2000M依旧没有用,然后我选择了用户组,附件部分。如图所示: 然后这个时候我还是没有好,我同事的却不限制大小了,我去清理缓存&#xff…

k8s 容器 java 应用内存限制不生效

一 k8s java 应用内存限制不生效 回顾:Linux杂谈之java命令 namespace负责资源隔离 cgroups负责资源限制 容器JVM最佳实践 Metaspace 是 非 Heap 内存 管理空间,那么 Heap 就是操作空间 JVM内存模型简介 隔离: 两个进程完全隔离感知&#xff1…

进程线程知识

一 初识linux线程 1 线程由来 我们之前说创建一个进程,要创建进程控制块pcb,进程地址空间,页表,而且我之前的博客中都有意无意的说明这个pcb是描述进程的,是os用来管理进程的,而有了线程后,就要…

linux中用户及用户组信息

1,linux通过用户名和口令来验证用户的身份。 2,几个用户可以组成一个用户组。 3,useradd工具添加用户,groupadd命令添加用户组。 4,history 命令查看用户在Shell中执行命令的历史记录。 5,userdel命令删…

机械硬件知识学习

目录 1.电机减速机、扭矩2.伺服电机、步进电机、直线电机3.电机马达的曲线运动是如何转化为轴的直线运动 大佬科普运动控制系统链接:https://www.cnblogs.com/cariohu/p/15508175.html 自己对机械知识的了解是盲区,学习下接触到的一些硬件知识&#xff0…

Ubuntu Desktop Server - xport: command not found

Ubuntu Desktop Server - xport: command not found 1. xport: command not found2. export 错误写成了 xportReferences 1. xport: command not found 2. export 错误写成了 xport strongforeverstrong:~$ gedit ~/.bashrcReferences [1] Yongqiang Cheng, https://yongqian…

部署 Seafile 开源企业云盘

一、Seafile 介绍 Seafile 简介 :::info 官网:https://www.seafile.com/ GitHub:https://github.com/haiwen/seafile ::: Seafile 是一款开源的企业云盘,注重可靠性和性能。 支持 Windows,Mac,Linux,iOS&…

算法复杂度分析看这一篇就够了

2023年也慢慢的步入了年末,光阴易逝,前段时间在学习算法的时候谈到了复杂度,所以今天就来总结一下 算法的复杂度是衡量算法执行效率的度量标准。它描述了随着输入规模的增加,算法所需执行的基本操作的数量或运行时间的增长程度。一…

JSP的学习

1.JSP概念: Java服务端页面;一种动态的网页技术,既可以定义HTML,JS,CSS等静态内容,也可以定义Java代码的动态内容;JSPHTMLJava;JSP的作用:简化开发,避免了在Servlet中直接输出HTML标签; 2.JSP快速入门 3.JSP原理 概念:Java Server Pages,Java服务端页…

C# CefSharp 输入内容,点击按钮,并且滑动。

前言 帮别人敲了个Demo,抱试一试心态,居然成功了,可以用。给小伙伴们看看效果。 遇到问题 1,input输入value失败,里面要套了个事件,再变换输入value。后来用浏览器开发工具,研究js代码,太难了&a…

UG制图-全剖和阶梯剖

当机件的内部形状较复杂时,视图上将出现许多虚线,不便于看图和标注尺寸 解决方法就是使用剖视图 剖视图的形成:假想用一个剖切面将机件剖开,移去剖切面和观察者之间的部分,将其余部分向投影面投射,并在剖切…