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 软件复用

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

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

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

相关文章

K8S -----二进制搭建 Kubernetes v1.20

目录 一、准备环境 1.1 修改主机名 1.2 关闭防火墙(三台一起,这里只展示master01) 1.3 在master添加hosts(依旧是三台一起) 1.4 调整内核参数并开启网桥模式 二、部署docker引擎 三、部署 etcd 集群 1.在mast…

水电站机组油压自动化控制系统概述及优势介绍

一、系统背景 我国河流、湖泊分布广泛,落差巨大,蕴藏着丰富的资源优势,我国作为世界第二大能源消耗国,对于电力的需求是巨大的,水力发电具有高效、清洁、能量供给稳定充足的特点,因此,水电工程…

基础ArkTS组件:数据面板组件(图表),日期选择器组件(HarmonyOS学习第三课【3.5】)

tuoz数据面板组件 DataPanel 数据面板组件,用于将多个数据占比情况使用占比图进行展示。 说明 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 DataPanel(options:{values: numbe…

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

基础知识要求: Java:方法、while循环、for循环 Python: 方法、while循环、for循环 题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head […

深入了解 MyBatis 插件:定制化你的持久层框架

序言 MyBatis 是一个流行的 Java 持久层框架,它提供了简单而强大的数据库访问功能。然而,有时候我们需要在 MyBatis 中添加一些自定义的功能或行为,来满足特定的需求。这时,MyBatis 插件就发挥了重要作用。本文将深入探讨 MyBati…

【C++】深度解析:用 C++ 模拟实现 String 类,探索其底层实现细节

目录 了解string类 string的内存管理 VS下string的结构 ​g下string的结构 string的模拟实现 string的构造函数 浅拷贝 深拷贝 string的遍历 重载 [] 下标访问 迭代器访问 reserve resize 增删查改 push_back() append和 insert和erase find substr swap 流插入…

一个完美的回到顶部按钮

大家好,我是 Just,这里是「设计师工作日常」,今天给大家写了一个丝滑回到顶部的按钮,原生js实现的,兼容性所有主流浏览器,可在vue中使用,适用于网页、h5等。 最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码js 部分代码完整代…

网络网络层之(5)IPv6协议

网络网络层之(5)IPv6协议 Author: Once Day Date: 2024年5月12日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day…

啥都吃的打字练习软件TL(TypeLetters)

今天给大家安利一款啥都吃的打字练习软件——TL(TypeLetters)。 为什么说TL啥都吃呢?很简单,因为不管是科技的、还是时事的、或者潮流的、或者热点的,凡是英文的资料TL都能通通吃下去,所以说TL是来者不拒&…

QT C++ widget layout 嵌套 例子2

在上篇文章中描述了实中套虚(用setLayout),虚中套实(用addWidget)。 本文再加1条,虚中套虚(用addLayout)。 所谓虚中套虚,是layout 套 layout 。 另外用循环代码生成从…

新书速览|MATLAB科技绘图与数据分析

提升你的数据洞察力,用于精确绘图和分析的高级MATLAB技术。 本书内容 《MATLAB科技绘图与数据分析》结合作者多年的数据分析与科研绘图经验,详细讲解MATLAB在科技图表制作与数据分析中的使用方法与技巧。全书分为3部分,共12章,第1…

【鸿蒙+全国产瑞芯微】智慧楼宇解决方案 | 如何实现多场景下智慧化、精细化楼宇管理?

随着数字化、智能化与工作生活的联结日渐紧密,聚焦人性化服务,以数字和科技匹配多重需求,加速商业楼宇智能化转型的脚步,逐步形成智慧楼宇产品矩阵。 方案亮点 01/数字标牌——形象展示 企业文化宣传、公告通知等 播放内容统一远…

blender 制作圆角立方体模型,倒角实现。cocos 使用。导出fbx

图片: 步骤: 1.首先创建一个立方体,这里可以使用默认的立方体。 2.在属性面板选择如“扳手”图标一样的修改器工具。 3.设置数量和段数实现圆角的圆滑效果,没有菱角。 保存导出相关的教程:

object.key()用法

object.key(obj) 一、概念:返回一个由一个给定对象的自身可枚举属性组成的数组。 二、用法: 1、参数为对象:则返回为 对象属性名组成的数组。 let obj {日期:date,姓名:userName,地址:address}console.log(Object.k…

使用Go和JavaScript爬取股吧动态信息的完整指南

引言 在现代金融生态系统中,信息流动的速度和效率对于市场的健康和投资者的成功至关重要。股市信息,特别是来自活跃交流平台如股吧的实时数据,为投资者提供了一个独特的视角,帮助他们洞察市场趋势和投资者情绪。这些信息不仅能够…

Bovine Serum Albumin ELISA kit(牛血清白蛋白)

牛血清白蛋白(Bovine serum albumin, BSA)是一种提取自牛的血清白蛋白。成熟的牛血清白蛋白含有583个氨基酸。像其他血清白蛋白一样,牛血清白蛋白在毛细血管内提供胶体渗透压,运输脂肪酸、胆红素、矿物质和激素,并在作…

Windows电脑使用Docker安装AList网盘神器并配置公网地址打造私人云存储空间

文章目录 前言1. 使用Docker本地部署Alist1.1 本地部署 Alist1.2 访问并设置Alist1.3 在管理界面添加存储 2. 安装cpolar内网穿透3. 固定Alist公网地址 前言 本文和大家分享如何在Windows系统使用Docker本地部署Alist全平台网盘神器,然后结合cpolar内网穿透工具实现…

论文阅读:The Unreasonable Ineffectiveness of the Deeper Layers 层剪枝与模型嫁接的“双生花”

作者实证研究了针对流行的开放式预训练 LLM 系列的简单层修剪策略,发现在不同的 QA 基准上,直到去掉一大部分(最多一半)层(Transformer 架构)后,性能的下降才会降到最低。为了修剪这些模型&…

自然资源-“十四五”规划引领,审批智慧化提升-值得学习

自然资源-“十四五”规划引领,审批智慧化提升-值得学习 2022年1月12日,国务院正式印发了《“十四五”数字经济发展规划》(国发〔2021〕29号),从八个方面对“十四五”期间我国数字经济发展做出总体部署。其中第五点要求…

Q1季度电饭煲家电行业线上市场(京东天猫淘宝)销售数据排行榜

鲸参谋监测的2024年Q1季度线上电商平台(天猫淘宝京东)电饭煲家电销售数据已出炉! 今年Q1季度,电饭煲销售成绩不如预期。根据鲸参谋数据显示,今年Q1季度在线上电商平台(淘宝天猫京东)电饭煲销量…