第一章 软件工程概论

news2024/11/7 3:32:44

文章目录

  • 第一章 软件工程概论
    • 1. 软件危机
      • 1.1.1 软件危机的介绍
      • 1.1.2 产生软件危机的原因
        • 与软件本身特点有关
        • 软件开发与维护的方法不正确有关
      • 1.1.3 消除软件危机的途径
      • 例题
    • 软件工程
      • 1.2.1 软件工程的介绍
      • 1.2.2 软件工程的基本原理
      • 1.2.3 软件工程方法学
        • 1. 传统方法学
        • 2. 面向对象方法学
    • 1.3 软件生命周期
      • 软件生命周期的8个阶段
    • 1.4 软件过程
      • 1.4.1 瀑布模型
        • 优点
        • 缺点
        • 瀑布模型的适用范围
      • 1.4.2. 快速原型模型
        • 特点
        • 优点
        • 缺点
        • 适用范围
      • 1.4.3. 增量模型
        • 特点
        • 优点
        • 缺点
        • 使用范围
      • 1.4.4 螺旋模型
        • 特点
        • 优点
        • 缺点
        • 适用范围
      • 1.4.5. 喷泉模型
        • 迭代
        • 特点
        • 优点
        • 缺点
        • 适用范围
      • 1.4.6. Rational统一过程
        • 迭代式开发
        • 特点
        • 适用范围
      • 1.4.7.敏捷过程与极限编程
      • 小总结

第一章 软件工程概论

1. 软件危机

在这里插入图片描述

1.1.1 软件危机的介绍

  1. 对软件开发成本和进度的估计常常很不准确
  2. 用户对完成的软件系统不满意的现象经常发生;
  3. 软件产品的质量往往靠不住;
  4. 软件常常是不可维护的;
  5. 软件通常没有适当的文档资料
  6. 软件成本在计算机系统总成本中所占的比例逐年上升;
  7. 软件开发生产率提高的速度跟不上计算机应用的发展趋势

1.1.2 产生软件危机的原因

与软件本身特点有关

  1. 开发期间没有发现错误
  2. 程序规模上升,复杂性逐渐上升
  3. 软件开发过程相对困难

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

  1. 忽视需求分析
  2. 忽视软件维护

1.1.3 消除软件危机的途径

  1. “软件就是程序”的错误观念
  2. 软件开发需要的协作性
  3. 合理选择开发工具
  4. 探索更好更有效的技术和方法

例题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

软件工程

  1. 1968年NATO会议:
    软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。
  2. 1993年IEEE:
    软件工程是把系统的、 规范的、 可度量的途径应用于软件开发、 运行和维护过程;

1.2.1 软件工程的介绍

  1. 大型程序构造
  2. 控制复杂性
  3. 软件经常变化
  4. 开发软件效率非常重要
  5. 和谐的合作
  6. 用户需求
  7. 由具有一种文化背景的人替具有另一种文化背景的人创造产品

1.2.2 软件工程的基本原理

  1. 分阶段生命周期严格管理
  2. 阶段评审
  3. 严格产品控制
  4. 采用现代程序设计技术
  5. 结果能清楚地审查
  6. 开发小组的人员应该少而精
  7. 承认不断改进软件工程实践的必要性

1.2.3 软件工程方法学

1. 传统方法学

传统方法学也称为生命周期方法学或结构化范型。

2. 面向对象方法学

把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。

特点:
降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性。

1.3 软件生命周期

软件生命周期的8个阶段

  1. 问题定义
  2. 可行性研究
  3. 需求分析
  4. 总体设计(概要设计)
  5. 详细设计
  6. 编码与单元测试
  7. 综合测试
  8. 维护

在这里插入图片描述

在这里插入图片描述
软件定义期,包括问题定义、可行性研究、需求分析;软件开发期,包括概要设计、详细设计、实现、测试;运行维护期,即运行维护阶段。
在这里插入图片描述

在这里插入图片描述

1.4 软件过程

软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目标:开发出客户满意的软件

生命周期模型规定了把生命周期划分成哪些阶段及各阶段执行顺序,也叫过程模型。

1.4.1 瀑布模型

在这里插入图片描述
推迟实现的观点
质量保证的观点

优点

• 迫使开发人员采用规范的方法;
• 每个阶段必须提交的文档;
• 每个阶段的产品都必须经过质量验证。

缺点

• 需求难开始完全确定;
• 文档驱动、风险大;
• 灵活性差,一旦修改损失惨重;
• 不支持软件复用和集成技术。

瀑布模型的适用范围

  1. 需求稳定、变化小且开发人员能够一次性获取全部需求的项目;
  2. 软件开发人员有丰富经验;
  3. 软件项目本身的风险很低。

瀑布模型适用于功能、性能明确,完整无变化的软件系统开发,比如 操作系统、财务系统等。

在这里插入图片描述

1.4.2. 快速原型模型

快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的一个子集。
展示待开发软件的部分功能和性能,用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求,开发人员据此对软件进行修改完善.

特点

不带反馈环开发的系统能够满足用户真实的需求

优点

• 快速构建、容易修改;
• 取代规格说明阶段,容易适应需求的变化;
• 用户参与;
• 能够处理模糊需求

缺点

• 快速构建(弱功能);
• 资源规划和管理较为困难;
• 对开发环境要求高

适用范围

  1. 对现有软件产品进行升级或功能完善
  2. 开发人员和用户交流困难,用户需求不完全或不准确需求获取困难
  3. 开发人员对技术熟悉或把握性不大
  4. 具有支持快速开发的工具
    在这里插入图片描述

1.4.3. 增量模型

把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。

特点

系统模块化和构建化

优点

• 能在较短时间内向用户提交可完成部分工作的产品;
• 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品
• 开发顺序灵活。

缺点

• 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
• 软件体系结构必须是开放的

使用范围

• 待开发系统能够被模块化
• 软件产品可以分批次交付
• 软件开发人员对应用领域不熟悉,或一次性开发的难度很大
• 项目管理人员把握全局的水平很高

1.4.4 螺旋模型

可把它看作在每个阶段之前都增加风险分析快速原型模型

特点

• 风险驱动

优点

• 风险分析
• 质量保证

缺点

• 风险分析
• 对开发人员要求高。

适用范围

螺旋模型适用于复杂的、高风险大型软件项目

1.4.5. 喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。“喷泉”这个词体现了面向对象软件开发过程迭代无缝的特性。

迭代

实现软件的每项功能反复求精的过程,是从模糊到清晰的开发过程。不知道用户需要什么

特点

• 迭代
• 无间隙

优点

• 提高软件项目开发效率;
• 节省开发时间

缺点

• 难以管理项目。

适用范围

喷泉模型适用于面向对象的软件开发。
在这里插入图片描述

1.4.6. Rational统一过程

RUP是Rational司提出的基于UML一种面向对象软件开发过程模型。它解决了螺旋模型的可操作性问题,采用迭代和增量的开发策略,以用例为驱动,集成了多种软件开发过程模型的特点。
在这里插入图片描述

迭代式开发

RUP重复一系列组成软件生命周期的循环。每次循环都经历一个完整的生命周期,每次循环结
束都向用户交付产品的一个可运行的版本。

特点

• 可裁剪定制的软件开发过程模型;
• 为如何适用项目提供了指导;
• 能够有效提高开发效率;

适用范围

适用于大型软件项目。

1.4.7.敏捷过程与极限编程

  1. 敏捷过程
    具有高效、快速响应变化的开发过程。敏捷开发宣言由4个简单的价值观组成。
  2. 极限编程
    在这里插入图片描述

小总结

在这里插入图片描述

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

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

相关文章

集群间 ssh 互信免密码登录失败处理

一、问题描述 某次GreePlum集群免密配置过程中,需要使用普通用户实现ssh免密登录,前方反馈root用户已可完成免密登录,但普通用户同样配置,未生效,提示需输入密码才可以。 现场环境: 二、问题分析处理 …

安卓packageinfo的知识点

PackageInfo类包含AndroidManifest.xml文件的信息。 一些常用的属性如下: 获得PackageInfo //获取指定包名的packageInfo,并且包含所有的内容提供者 val pack context.packageManager.getPackageInfo(context.packageName,PackageManager.GET_PROVIDE…

GPT从入门到精通之 Tensorflow2.x 中如何使用 GPT 模型

Tensorflow2.x 中如何使用 GPT 模型 GPT 模型是自然语言处理(NLP)领域中一种重要的预训练模型。 TensorFlow2.x 是目前最流行的机器学习和深度学习框架之一,对 GPT 模型的支持度也非常高。在本篇文章中,我们将详细介绍如何使用 T…

前后端交互四、跨域与JSONP

零、文章目录 前后端交互四、跨域与JSONP 1、同源策略和跨域 (1)同源 如果两个页面URL的协议,域名和端口都相同,则两个页面具有相同的源。 例如,下表给出了相对于 http://www.test.com/index.html 页面的同源检测&…

【iOS_Swift_Alamofire实现网络请求】

文章目录 前言导入库原生网络请求单例封装一个原生网络请求Alamofire用法Alamofire的返回响应将返回的data转为字典/字符串 总结 前言 学习swift继续延续之前的思路,对照着OC学,从UI起手,学习到对应的自适应布局。 今天再次学习了swift的原生…

MySQL分库分表全攻略:从小白到大神的进阶指南!

大家好,我是小米,一个热爱技术的程序员。今天,我来和大家聊一下关于MySQL中的分库分表技术,相信对于开发者和DBA来说是一个非常重要的话题。 什么是分库分表 首先,我们先来了解一下什么是分库分表。分库分表是指将原本…

Apifox(1)比postman更优秀的接口自动化测试平台

Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman Swagger Mock JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自…

scratch躲避陨石 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年5月

目录 scratch躲避陨石 一、题目要求 1、准备工作 2、功能实现 二、案例分析

性能测试计划,怎么写显得你能更专业?

性能测试计划 性能测试是一种非常重要的测试类型,用于确定系统或应用程序在特定负载下的性能指标。以下是一个性能测试计划的建议步骤: 目标 首先,定义性能测试的目标和范围。这包括测试的系统或应用程序以及所需测试的性能指标&#xff0…

基于蒙特卡洛模拟法的电动汽车充电负荷研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

开源项目的流程

开源的好处 增加知名度和使用量:开源项目可以让更多人知道和使用,进而增加项目的知名度和使用量。提高代码质量:开源项目需要接受有可能来自全球的开发者审核和参与,这样可以使得项目代码得到更多高质量的反复审查和改进。快速修…

计算机视觉 | 目标检测与MMDetection

目 录 目标检测的基本范式 滑窗使用卷积实现密集预测锚框多尺度检测与FPN 单阶段&无锚框检测器选讲 RPNYOLO、SSDFocal loss 与 RetinaNetFCOSYOLO系列选讲 一、目标检测的基本范式 1、什么是目标检测 给定一张图片 ——》用矩形框框出所感兴趣的物体同时预测物体类…

前后端交互一、服务器概念与初识Ajax

零、文章目录 前后端交互一、服务器概念与初识Ajax 1、上网的过程 网络相关知识请参考网络详解HTTP相关知识请参考HTTP详解 (1)客户端与服务器 **上网的目的:**通过互联网获取和消费资源 **服务器:**上网过程中,负…

基于STM32的智能粮仓系统设计

一、项目背景 随着粮食质量要求的提高和储存方式的改变,对于粮仓环境的监测和控制也愈发重要。在过去的传统管理中,通风、防潮等操作需要定期人工进行,精度和效率都较低。而利用嵌入式技术和智能控制算法进行监测和控制,不仅能够…

【Git】git push origin master时发生的各类错误汇总

文章目录 一、常见的git命令二、错误一三、错误二四、错误三五、问题解决 一、常见的git命令 使用 git 命令时&#xff0c;您可以执行一系列操作来管理代码仓库。下面是一些常用的 git 命令及其功能&#xff1a; git init: 在当前目录初始化一个新的 git 仓库。git clone <…

2023年5月青少年机器人技术等级考试理论综合试卷(二级)

青少年机器人技术等级考试理论综合试卷&#xff08;二级&#xff09;2023.6 分数&#xff1a; 100 题数&#xff1a; 45 一、 单选题(共 30 题&#xff0c; 共 60 分) 1.下图中的凸轮机构使用了摆动型从动件的是&#xff1f; &#xff08; &#xff09; A.a B.b C.c D.d 试题类…

我是怎么劝退打算入行软件测试的同学的?

过去千篇一律的机构、文章都在劝大家入行软件测试——门槛低、工资高、加班少&#xff01;而这两年&#xff0c;受国内外形势、经济影响&#xff0c;整个IT行业都在走下坡路&#xff0c;被专家们称作行业回归理性发展。最近机构劝入行测试的帖子少了&#xff0c;而“我是在xxx如…

【Python 继承和多态】零基础也能轻松掌握的学习路线与参考资料

Python 继承和多态是面向对象编程中非常关键的概念。继承是一种创建新类的方法&#xff0c;通过继承一个已有的类来创建新类。而多态则是指不同的对象以不同的方式对同一消息作出响应的能力。在这篇文章中&#xff0c;我们将为您介绍 Python 继承和多态的学习路线&#xff0c;并…

d2l学习_第三章线性回归/欠拟合过拟合/权重衰减

x.1 Linear Regression Theory x.1.1 Model 线性回归的模型如下&#xff1a; 我们给定d个特征值 x 1 , x 2 , . . . , x d x_1, x_2, ..., x_d x1​,x2​,...,xd​&#xff0c;最终产生输出yhat&#xff0c;我们产生的yhat要尽量拟合原来的值y&#xff0c;在这一拟合过程中我…

【MySQL】数据库的增删改查、备份、还原等基本操作

【MySQL】数据库的基本操作 一、创建数据库---create1.1 字符集与校验规则1.1.1 查看系统默认字符集以及校验规则1.1.2 默认方式建立数据库1.1.3 指定编码集建立数据库 1.2 建库的本质 二、查看数据库及其相关属性---show2.1 显示所有数据库2.2 显示数据库的创建语句3.2 显示目…