软件工程_复习

软件工程

  1. 软件危机(1968 60年代)

    产生软件危机的原因:

    一方面与软件本身的特点有关,另一方面也和软件开发和维护的方法不正确有关。

    与软件本身特点有关:

    1.软件不同于硬件,软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难

    2.软件在运行过程中不会因为使用长时间而被“用坏”,如果运行中发现了错误,很可能是遇到了一个在软件开发时期引入的在测试阶段没能检测出来的错误。

    3.软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

    4.对用户要求没有完整准确的认识就匆忙着手编写程序时许多软件开发工程失败的原因之一。

    5.目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

    6.错误的认知和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法让它运行,轻视软件维护等。

    软件开发与维护的方法不正确有关:

    1.只重视程序而忽视软件配置其余成分的糊涂观念。

    2.软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现“已完成的”软件不完全符合用户的需要。

    3.严重的问题是在软件开发的不同阶段进行修改需要付出的代价是很不相同的.

    消除软件危机的途径:

    1.首先应该对计算机软件有一个正确的认知。

    2.必须充分认识到软件开发不是某个个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

    3.应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法。

    4.应该开发和使用更好的软件工具。

    5.为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

  2. 软件工程定义:(1968NATO 1993IEEE)

    ①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。

  3. 软件工程的基本原理:(7条)

    1.用分阶段的生命周期计划严格管理

    2.坚持进行阶段评审

    3.实行严格的产品控制

    4.采用现代程序设计技术

    5.结果应该能清楚地审查

    6.开发小组的人员应该少而精

    7.承认不断改进软件工程实践的必要性

  4. 软件工程方法学

    通常把在软件生命周期全过程中使用的一整套技术方法的集合成为方法学。

    软件工程方法学包含三个要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。区别(软件组成:程序 文档 数据)

    目前使用的最广泛的软件工程方法学:

    传统方法学:

    传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。

    面向对象方法学:

    与传统方法相反,面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。

    CASE :计算机辅助软件工程

  5. **软件生命周期(三大八小)**填空

    1.软件定义时期

    1)问题定义—确定软件开发工程必须完成的总目标 要解决的问题是什么?

    2)可行性研究–行或不行 值不值得?

    3)需求分析—必须完成的功能 做什么?

    2.软件开发时期

    1)总体设计/概要设计—怎么做?

    2)详细设计—怎么具体实现?

    3)编码和单元测试—编写并测试编写的模块

    4)综合测试—使软件达到要求

    3.软件运行维护

    1)软件维护—通过各种必要的维护活动使系统持久地满足用户的需要

  6. 软件过程

    是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤。软件过程描述为了开发出客户需要的软件,什么人、在什么时候、做什么事以及怎样做这些事以实现某一个特定的具体目标。

    1.瀑布模型

    –自上而下,用户需求须明确,文档驱动

    –阶段间具有顺序性和依赖性、推迟实现的观点、质量保证的观点

    2.快速原型模型:目的 获取需求

    –快速、需求模糊

    –资源规划管理困难、开发环境要求高

    3.增量模型 适用:应用领域不熟悉 一次性开发难度大

    –分批次交付、降低风险,先交付核心模块

    4.螺旋模型

    –风险分析(使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型)

    –风险驱动

    5.喷泉模型

    –迭代、面向对象

    6.Rational统一过程模型

    –面向对象、用例驱动、适用大型项目

    –最佳实践:迭代式开发 管理需求 使用基于构件的体系结构 可视化建模 验证软件质量 控制软件变更

    –RUP软件开发生命周期:初始阶段 精化阶段 构建阶段 移交阶段

    7.敏捷过程与极限编程

    –敏捷过程:个体和交互胜过过程和工具 可以工作的软件胜过面面俱到的文档 客户合作胜过合同谈判 响应变化胜过遵循计划

    –极限编程(XP):客户作为开发团队的成员 使用用户素材 短交付周期 验收测试 结对编程 测试驱动开发 集体所有 持续集成 可持续的开发速度 开放的工作空间 及时调整计划 简单的设计 重构 使用隐喻

    8.微软过程

  7. 可行性研究的任务:确定问题是否值得去解决

    可行性:技术、经济、操作、(法律 社会效益)

  8. 系统流程图:系统物理模型(黑盒)

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

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

相关文章

Python笔记06-文件操作

文章目录 文件的编码文件读取文件写入文件追加 文件的编码 编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。算机中有许多可用编码:UTF-8、GBK、Big5等 不同的编码,将内容翻译…

typescript递归处理

typescript是一种类型强约束的语言,一般来讲定义类型时都要明确指定类型的数据结构。而如果数据结构中涉及到不知道基层嵌套的递归时,就会有一些麻烦。 在 https://stackoverflow.com/questions/51657815/recursive-array-type-typescript 有一个回答…

Java Swing手搓坦克大战遇到的问题和思考

1.游戏中的坐标系颇为复杂 像素坐标系还有行列坐标,都要使用,这之间的互相转化使用也要注意 2.游戏中坦克拐弯的处理,非常重要 由于坦克中心点是要严格对齐到一条网格线,并沿着这条线前进的,如果拐弯不做处理&#…

柠檬Lemon测评机的配置和测试方法

柠檬Lemon测评机的配置和测试方法 只需3步,即可配置好柠檬 第一步:选择g++,点击下一步 第二步:找到g++的目录,添加编译器,点击下一步 第三步:检查结果,点击完成。(此时,配置完成) 只需3步,即可用柠檬做考试测试 第一步:新建比赛

SpringCloud系列篇:核心组件之注册中心组件

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.注册中心组件是什么 二.注册中心…

大模型机器人原理解析:如何从RT/RT2、Berkeley Gello到发展到斯坦福Mobile ALOHA、Google家务机器人

前言 23年7月,我在朋友圈评估Google的RT2说道: “大模型正在革新一切领域啊,超帅,通过大模型不仅能理解“人话”,还能对“人话”进行推理,并转变为机器人能理解的指令,从而分阶段完成任务。回…

opencv006图像处理之仿射变换(旋转,缩放,平移)

空间变换中的仿射变换对应着五种变换,平移,缩放,旋转,翻转,错切。而这五种变化由原图像转变到变换图像的过程,可以用仿射变换矩阵进行描述。而这个变换过程可以用一个2*3的矩阵与原图进行相乘得到。关键就是…

5年经验之谈 —— 探索自动化测试用例设计粒度!

自动化测试用例的粒度指的是测试用例的细致程度,即每个测试用例检查的功能点的数量和范围。 通常,根据测试用例的粒度,可以被分为3种不同的层次,从更低层次的细粒度到更高层次的粗粒度。 第一种:单元测试 - 细粒度 单…

16、Kubernetes核心技术 - 节点选择器、亲和和反亲和

目录 一、概述 二、节点名称 - nodeName 二、节点选择器 - nodeSelector 三、节点亲和性和反亲和性 3.1、亲和性和反亲和性 3.2、节点硬亲和性 3.3、节点软亲和性 3.4、节点反亲和性 3.5、注意点 四、Pod亲和性和反亲和性 4.1、亲和性和反亲和性 4.2、Pod亲和性/反…

chatGPT带你学习设计模式 (二)抽象工厂模式(创建型模式) GURU

深入理解抽象工厂模式 引言 在面向对象编程中,对象的创建是一个常见且关键的挑战。尤其在需要管理一系列相关对象的创建时,传统的对象创建方法(如直接使用 new 关键字)可能导致代码的高耦合和低灵活性。这时,抽象工厂…

jmeter连接数据库

下载jdbc 在浏览器输入 mysql jdbc官网 ; 网址:MySQL :: MySQL Connectors 点击 Download 查看自己mysql服务的版本,找到对应版本的jdbc 所以下载5版本的jdbc 安装jdbc(绿色版安装) 操作jmeter 打开jmeter&#xff0…

前端框架中的状态管理(State Management)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

GEE:随机数

作者:CSDN _养乐多_ 本文将介绍在 Google Earth Engine(GEE)上生成随机数的 API,可以指定随机数的生成范围、类型(整型、浮点型)、分布方式(均匀分布、正态分布)。 文章目录 一、随…

基于springboot的基于协同过滤算法的东北特产销售系统的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的基于协同过滤算法的东北…

2024年度 ROTS - 实时操作系统 Top 15

RTOS(实时操作系统)。 这里说的 RTOS 并非新星球大战电影中的机器人,而是物联网设备、航空系统、空中交通管制等背后的无声协调者,就在地球上。 RTOS,或称实时操作系统,设计它们是为了更好的管理资源&…

MySQL5.7 InnoDB 内存结构

官网地址:MySQL :: MySQL 5.7 Reference Manual :: 14.5 InnoDB In-Memory Structures 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. MySQL 5.7 参考手册 / ... / 缓冲池 14.5.1 缓冲池 缓冲池是…

20240106-换一种思维,工作也不过就是一种挣钱的方式而已了

今天在车上一个百度的同事聊抱怨说:累了,真的累了,干不动了,想跑路了,不想打工了。我们之前也会经常聊到和吐槽这种事情,但是我最近由于思维的一些改变,所以就想到把这个事情记录下来。 在大厂…

第四讲_css常用属性

css常用属性 1. css颜色表示方式1.1 颜色名1.2 rgb 和 rgba1.3 hex 和 hexa1.4 hsl 和 hsla 2. css 常用属性2.1 常用的文本属性2.2 常用的列表属性2.3 常用的边框属性2.4 表格独有属性2.5 常用的背景属性2.6 常用的鼠标属性 1. css颜色表示方式 1.1 颜色名 在css中定义了一些…

华为OD机试 - 矩阵匹配(Java JS Python C)

题目描述 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式: N M K N*M矩阵 输出描述 N*M 的矩阵中可以选出 M! / N! 种组合数…

NumPy 高级教程——并行计算

Python NumPy 高级教程:并行计算 并行计算是在多个处理单元上同时执行计算任务的方法,以提高程序的性能。在 NumPy 中,可以使用一些工具和技术来进行并行计算,充分利用多核处理器的优势。在本篇博客中,我们将深入介绍…