2.1 软件工程

第2章 信息技术知识

2.1 软件工程

现状:

  • 开发软件的规模越来越大
  • 复杂度越来越高
  • 用户需求并不十分明确
  • 缺乏软件开发方法和工具方面的有效支持

软件成本日益增长、开发进度难以控制、软件质量无法保证、软件维护困难等问题日益突出。人们开始用工程的方法进行软件的开发、管理和维护,即“软件工程”。

2.1.1 软件需求分析与定义

  • 软件需求是针对待解决问题的特性的描述
  • 所定义的需求必须可以被验证
  • 在资源有限时,可以通过优先级对需求进行权衡
  • 通过需求分析,可以检测和解决需求之间的冲突、发现系统的边界、并详细描述出系统需求

2.1.2 软件设计、测试与维护

软件设计:

  • 根据软件需求,产生一个软件内部结构的描述,并将其作为软件构造的基础。

  • 通过软件设计,描述出软件架构及相关组件之间的接口

  • 进一步详细地描述组件,以便能构成这些组件

  • 通过软件设计得到要实现的各种不同模型,并确定最终方案。其可以划分为 软件架构设计(高层设计)软件详细设计 两个阶段

    名称定义总结
    软件架构设计软件架构设计是最高层次的设计活动,它关注的是系统的整体结构和组织,定义系统的主要组件、它们之间的关系和相互作用方式。软件架构设计主要包括选择适当的架构风格和模式,划分模块和组件,定义系统的接口和交互规范等。它的目标是在满足系统需求的同时,实现可扩展性、可维护性、可靠性等质量属性。功能模块的划分和非功能特征是软件架构设计关注的重点!!!软件架构设计关注整体结构和组织,定义系统的主要组件、接口和相互作用方式。
    软件概要设计概要设计则更为详细,着重于定义软件系统的模块和子系统,在软件架构的基础上,进一步划分和定义各个模块的功能和职责。概要设计通常会提供模块之间的接口定义,描述各模块的输入输出和交互逻辑。它的目标是使开发人员能够更好地理解系统的模块结构和相互关系,为详细设计提供一个基础。模块之间的接口定义是概要设计关注的重点!!!概要设计则进一步定义了模块和子系统的功能和职责,提供模块之间的接口定义。
    软件详细设计详细设计是最底层的设计活动,它关注的是每个模块的具体实现细节。在详细设计中,开发人员会根据概要设计,定义模块的算法、数据结构、函数接口、内部逻辑等。详细设计通常会针对每个模块提供详细的设计文档或代码实现,以实现系统的具体功能。模块内部的算法+数据结构是详细设计的关注重点!!!详细设计则更深入地定义每个模块的具体实现细节,包括算法、数据结构和函数接口等。

软件测试

  • 测试是为了评价和改进产品质量、识别产品的缺陷和问题而进行 的活动

  • 是针对一个程序的行为,在有限测试用例集合上,动态验证是否达到预期的行为

  • 测试不仅在编码阶段完成后才开始,应该包括在整个开发和维护过程中,是实际产品构造的一个重要部分

  • 通常在概念上划分为单元测试集成测试系统测试
    在这里插入图片描述
    软件维护

  • 将软件维护定义为需要提供软件支持的全部活动

  • 这些活动包括在交付前完成的活动,以及交付后完成的活动

  • 交付前要完成的活动包括交付后的运行计划和维护计划

  • 交付后的活动包括软件修改、培训、帮助资料

软件维护类型定义
更正性维护更正交付后发现的错误
适应性维护使软件产品能够在变化后或变化中的环境中继续使用
完善性改进交付后产品的性能和可维护性
预防性维护在软件产品中的潜在错误成为实际错误前,检测并更正它们

2.1.3 软件质量保证及质量评价

  • 软件质量指的是软件特性的总合,是软件满足用户需求的能力,即遵从用户需求,达到用户满意
  • 软件质量包括**“内部质量”、“外部质量”、“使用质量”**三部分
  • 软件需求定义了软件质量特性,及确认这些特性的方法和原则
  • 软件质量管理过程由许多活动组成,一些活动可以直接发现缺陷,另一些活动则检测活动的价值
过程定义
软件质量保证- 通过制订计划、实施和完成等活动保证项目生命周期中的软件产品和过程符合其规定的要求
验证与确认- 确定某一活动的产品是否符合活动的需求,最终的软件产品是否达到其意图并满足用户需求
- 验证过程试图确保活动的输出产品构造正确,即活动的输出产品满足活动的规范说明
- 确认过程则试图确保构造了正确的产品,即产品满足其特定的目的
评审与审计- 包括管理评审、技术评审、检查、走查、审计等
- 管理评审的目的是监控进展,决定计划和进度的状态,或评价用于达到目标所用
- 管理方法的有效性,技术评审的目的是评价软件产品,以确定其对使用意图的适合性
- 软件审计的目的是提供软件产品和过程对于可应用的规则、标准、指南、计划和流程的遵从性的独立评价
- 审计是正式组织的活动,识别违例情况,并要生成审计报告,采取更正性行动

2.1.4 软件配置管理

  • 软件配置管理通过标识产品的组成元素、管理和控制变更、验证、记录和报告配置信息,来控制产品的进化和完整性
  • 软件配置管理与软件质量保证活动密切相关,可以帮助达成软件质量保证目标
  • 软件配置管理活动包括软件配置管理计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付等活动
软件配置管理活动注意点
软件配置管理计划软件配置管理计划的制定需要了解组织结构环境和组织单元之间的联系,明确软件配置控制任务
软件配置标识软件配置标识活动识别要控制的配置项,并为这些配置项及其版本建立基线
软件配置控制软件配置控制关注的是管理软件生命周期中的变更
软件配置状态记录软件配置状态记录标识、收集、维护并报告配置管理的配置状态信息
软件配置审计软件配置审计是独立评价软件产品和过程是否遵从已有的规则、标准、指南、计划和流程而进行的活动
软件发布管理和交付软件发布管理和交付通常需要创建特定的交付版本,完成此任务的关键是软件库

2.1.5 软件过程管理

过程定义
项目启动与范围定义启动项目并确定软件需求
项目规划制订计划,其中一个关键点是确定适当的软件生命周期过程,并完成相关的工作
项目实施根据计划,并完成相关的工作
项目监控与评审确认项目工作是否满足要求,发现问题并解决问题
项目收尾与关闭为了项目结束所做的活动。需要项目验收,并在验收后进行归档、事后分析和过程改进等活动

2.1.6 软件开发工具

类型工具
软件需求工具包括需求建模工具和需求追踪工具
软件设计工具包括软件设计创建和检查工具
软件构造工具包括程序编辑器、编译器、代码生成器、解释器、调试器等
软件测试工具包括测试生成器、测试执行框架、测试评价工具`测试管理工具、性能分析工具
软件维护工具包括理解工具(如可视化工具)和再造工具(如重构工具)
软件配置管理工具包括追踪工具、版本管理工具和发布工具
软件工程管理工具包括项目计划与追踪工具、风险管理工具和度量工具
软件工程过程工具包括建模工具、管理工具、软件开发环境
软件质量工具包括检查工具和分析工具

2.1.7 软件复用

  • 软件复用是指利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用
  • 复用是提高软件生产力和质量的—种重要技术
  • 软件复用的主要思想是,将软件看成是由**不同功能的“组件”**所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具
  • 早期的软件复用主要是代码级复用,被复用的知识专指程序
  • 后来扩大到包括领域知识、开发经验、设计决策、架构、需求、设计、代码和文档等一切有关方面
  • 由于面向对象方法的主要概念及原则与软件复用的要求十分吻合,所以该方法特别有利于软件复用

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

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

相关文章

geotrust ov泛域名证书2990

Geotrust是一家正规的CA证书颁发机构,致力于为个人以及企事业单位开发者提供安全可靠的数字证书产品,维护了个人博客网站、企业官网、商城网站以及银行等金融网站的数据安全,营造了一种健康的网络环境。今天就随SSL盾小编了解Geotrust旗下的O…

Ansys Zemax|基于Alvarez自由曲面透镜的光学变焦系统

附件下载 联系工作人员获取附件 Alvarez变焦是一个出色的光学系统,其中由自由曲面镜头的横向位移提供了光学变焦。这篇文章解释了Alvarez变焦镜头的主要原理,并提供了在Zemax OpticStudio中对Alvarez变焦镜头的计算和建模演示。 什么是Alvarez变焦镜头…

Android PreferenceActivity可以自动设置的Activity

1、介绍 PreferenceActivity 是一个抽象类,继承自ListActivity ,该类封装了SharedPreferences. PreferenceActivity 提供了一些常用的设置项如,与普通组件一样,这些配置项既可以从XML文件创建,也可以从代码创建. 每一个设置项标签有一个andro…

MyBatis——MyBatis 参数处理

一、单个简单类型参数 简单类型包括: byte short int long float double char Byte Short Integer Long Float Double Character String java.util.Date java.sql.Date parameterType 属性:告诉 MyBatis 参数的类型 MyBatis 自带类型自动推断机制…

揭秘APP广告:变现逻辑全解析!

在当今的移动互联网时代,APP广告变现已经成为了各大应用开发者的主要营收来源之一。然而,随着科技的发展、用户行为的变化以及广告市场趋势的演进,APP广告变现逻辑也正在不断地进行优化和调整。本文将基于当前市场和技术趋势,为大…

【技巧】如何查看RAR格式文件?

RAR是一种压缩文件格式,想要查看RAR文件,如果电脑系统自带解压缩功能,可以直接双击打开查看;也可以使用解压缩软件,比如常见的WinRAR、7-ZIP软件,来查看RAR文件 。 以WinRAR软件为例,安装好软件…

[华为OD] B卷 树状结构查询 200

题目: 通常使用多行的节点、父节点表示一棵树,比如 西安 陕西 陕西 中国 江西 中国 中国 亚洲 泰国 亚洲 输入一个节点之后,请打印出来树中他的所有下层节点 输入描述 第一行输入行数,下面是多行数据,每行以空…

海外客户开发渠道有哪些

海外客户开发是一个多元化的过程,涉及线上与线下多个渠道。以下是一些有效的海外客户开发渠道: 平台电商: 利用国际B2B电商平台,如阿里巴巴国际站、 Globalsources、Made-in-China等,这些平台拥有庞大的国际买家流量&a…

vue-fontawesome-elementui-icon-picker选择icon框架

第一步:安装vue-fontawesome-elementui-icon-picker依赖 npm install vue-fontawesome-elementui-icon-picker --save-dev 第二步:main.js配置 (放在element ui引入之后) import iconPicker from vue-fontawesome-elementui-icon-picker; Vue.use(ico…

深入探索van Emde Boas树:原理、操作与C语言实现

van Emde Boas (vEB) 树是一种高效的数据结构,用于处理整数集合。它是由荷兰计算机科学家Jan van Emde Boas在1977年提出的。vEB树在处理整数集合的查找、插入、删除和迭代操作时,能够以接近最优的时间复杂度运行。vEB树特别适合于那些元素数量在某个较小…

跨ROS系统通信:使用TCP实现节点间的直连

当涉及到在机器人操作系统(ROS)环境中的通信时,标准做法通常是在同一个ROS网络内通过话题和服务进行。但在某些特定情况下,比如当你有两个分布在不同网络中的ROS系统时,标准的通信方法可能不太适用。此时,一…

基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架)全网首发【图像识别-天气分类】

一个能够从给定的环境图像中自动识别并分类天气(如晴天、多云、雨天、雪天闪电等)的系统。 技术栈: 深度学习框架:PyTorch基础模型:VGG16与EfficientNet任务类型:计算机视觉中的图像分类 模型选择 VGG16 …

【微信小程序开发】深入探索事件绑定、事件冒泡、页面跳转的逻辑实现

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

微信小程序(Taro)获取经纬度并转化为具体城市

1、获取经纬度 申请权限,想要使用微信小程序获取经纬度的方法是要申请该方面的权限。 获取经纬度的方法有很多选择其中一个使用就好。 我使用的是Taro.getFuzzyLocation() 在app.config.js中需要添加设置 requiredPrivateInfos: ["getFuzzyLocat…

第2章Spring Boot实践,开发社区登录模块【仿牛客网社区论坛项目】

第2章Spring Boot实践,开发社区登录模块【仿牛客网社区论坛项目】 前言推荐项目总结第2章Spring Boot实践,开发社区登录模块1.发送邮件配置MailClient测试 2.开发注册功能访问注册页面提交注册数据激活注册账号 3.会话管理体验cookie体验session 4.生成验…

10分钟获取IP SSL证书——建议收藏

IP SSL证书是一种专门为IP地址签发的安全套接字层(SSL)证书,与常规SSL证书主要绑定到域名(如 example.com)不同,IP SSL证书直接绑定到服务器的IP地址(如 192.0.2.1)。 一 . IP地址…

百度文心一言 java 支持流式输出,Springboot+ sse的demo

参考&#xff1a;GitHub - mmciel/wenxin-api-java: 百度文心一言Java库&#xff0c;支持问答和对话&#xff0c;支持流式输出和同步输出。提供SpringBoot调用样例。提供拓展能力。 1、依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId…

C语言例题41、八进制转换为十进制

#include<stdio.h>void main() {int x;printf("请输入一个8进制整数&#xff1a;");scanf("%o", &x);printf("转换成十进制后的整数为%d\n", x); }运行结果&#xff1a; 本章C语言经典例题合集&#xff1a;http://t.csdnimg.cn/FK0Qg…

学习软考----数据库系统工程师32

NoSQL非关系型数据库 CAP理论和BASE特性 关系型数据库主要使用ACID理论 各种NoSQL数据 库的分类与特点

前端XHR请求数据

axios封装了XHR(XMLHttpRequest) 效果 项目结构 Jakarta EE9&#xff0c;Web项目。 无额外的maven依赖 1、Web页面 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&…