软件工程概述

软件开发生命周期

  1. 软件定义时期:包括可行性研究和详细需求分析,任务是确定软件开发的总目标。
    • 问题定义
    • 可行性研究(经济、技术、操作、社会可行性,确定问题和解决办法)
    • 需求分析(确定功能需求,性能需求,运行环境的约束,软件需求规格说明书 Software requirements specification SRS,软件系统测试大纲,用户手册概要
  2. 软件开发时期:涉及软件的设计与实现。
    • 概要设计(在SRS的基础上,建立总体结构,包括子系统的划分,模块之间的关系)
    • 详细设计(对功能模块细化,包括算法和数据结构)
    • 编码
    • 测试
  3. 软件运行和维护:将软件产品移交给用户使用。

软件系统文档

  1. 用户文档:描述系统功能和使用方法,不涉及具体实现。这类文档主要面向软件的最终用户,目的是帮助用户理解和使用软件。它包括软件的功能描述、使用方法、操作指南等。用户文档通常不需要详细说明软件内部的工作原理或实现细节。它的目标是让非技术人员能够无障碍地使用软件,了解软件如何满足他们的需求。
  2. 系统文档:描述系统设计、实现和测试等各方面的内容。系统文档则面向软件开发团队和可能需要进行维护的技术人员。它涵盖了软件的设计、实现、测试等详细的技术信息。系统文档通常包括需求规格说明书、设计文档、代码文档、测试计划和报告等。这类文档对于软件的开发、调试和维护非常重要,因为它提供了软件内部结构、工作流程和技术细节的详细信息。

软件工程过程

  1. P(Plan):软件规格说明,规定功能及其运行限制。
  2. D(Do):软件开发,实现满足规格说明的软件。
  3. C(Check):软件确认,确认软件满足用户需求。
  4. A(Action):软件演进,不断改进以满足新需求。

软件系统工具

  1. 软件开发工具:需求分析、设计、编码与排错、测试等工具。
  2. 软件维护工具:版本控制、文档分析、开发信息库、逆向工程、再工程工具。
  3. 软件管理和软件支持工具:项目管理、配置管理、软件评价、工具选择与评估等。

软件设计活动

  1. 数据设计:数据设计是确定系统需要处理的数据类型、数据之间的关系以及数据存储和管理的方式。它包括定义数据库结构、数据格式、数据字典等内容。良好的数据设计有助于确保数据的一致性、完整性和安全性,支持系统的高效运行和维护。

  2. 架构(体系结构)设计:架构设计是定义软件系统的高层次结构,包括确定系统的主要组件、组件之间的关系以及这些组件如何交互来实现系统的功能。架构设计通常涉及系统的技术选型、模块划分、数据流设计等,是一个关键的设计阶段,对软件的可扩展性、可维护性和性能有着重要影响。

  3. 人机界面(接口)设计:人机界面设计主要关注用户与软件系统的交互方式,包括用户界面的布局、颜色、字体、按钮等视觉元素的设计,以及用户操作流程的设计。目标是设计出易于理解和使用的用户界面,提升用户体验,使用户能够高效地使用系统完成任务。

  4. 过程设计:过程设计是指定义软件系统内部的工作流程和操作步骤,确保数据处理的正确性和效率。它包括算法设计、业务规则实现、工作流定义等。过程设计需要考虑如何高效地执行业务逻辑,如何处理异常情况,以及如何优化性能。

软件需求

  1. 业务需求:企业或客户高层次的目标要求,通常由项目投资人、客户或市场营销部门提供。通过业务需求可以确定项目视图范围
  2. 用户需求:用户的具体目标及系统需完成的任务,通过访谈、问卷等方式获取。对用户使用的场景进行整理,从而建立用户需求。
  3. 系统需求:从系统角度说明软件需求,包括功能需求、非功能需求和设计约束。
    • 功能需求(行为需求)
    • 非功能需求(质量属性、其他非功能需求)
    • 设计约束(限制条件、补充规约)
需求获取是一个确定和理解不同的项目干系人的需求和约束的过程
需求获取方法
  1. 用户访谈:一对一或小范围访谈,结构化或非结构化形式。
  2. 问卷调查:适用于用户众多,无法逐一访谈的情况。
  3. 采样:从种群中选取代表性样本,数量计算方法见文本。
  4. 情节串联板:使用图片序列讲述故事。
  5. 联合需求计划(JRP):关键用户、分析师、开发团队联合会议讨论需求。
  6. 需求记录技术:任务卡片、场景说明、用户故事、Volere白卡。

需求分析

  1. 需求特性:无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性。
  2. 结构化的需求分析的结构化特点:自顶向下,逐步分解,面向数据。
  3. 结构化的需求分析的三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R图)以及数据字典。

  1. 任务:
    • 绘制系统上下文范围关系图
    • 创建用户界面原型
    • 分析需求的可行性
    • 确定需求优先级
    • 建立需求模型
    • 创建数据字典
    • 使用QFD(质量功能部署)

需求定义

  1. 软件需求规格说明书(SRS):需求开发的结果,作为开发基础的重要文档。是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少。

需求定义方法

  1. 严格定义(预先定义):基于所有需求预先定义、清晰交流和图形文字表达的假设。
  2. 原型方法:迭代开发,涉及实际可参与的模型、合适的开发环境、反复验证,最终需求确定后按照严格方法执行。

需求验证

  1. 目的:确认需求无误,评审和测试需求规格说明书(SAS)
  2. 步骤:
    • 需求评审(正式评审、非正式评审)
    • 需求测试(设计概念测试用例)
  3. 需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程。

需求管理

  1. 需求基线:评审通过的需求说明书作为基线。

  1. 变更和风险:关注需求变更过程中的风险,包括风险做法和变更原因。
    1. 带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增加、模棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算。
    2. 变更产生的原因:外部环境的变化、需求和设计做的不够完整、新技术的出现、公司机构重组造成业务流程的变化。
  2. 变更控制委员会(CCB):也称为配置控制委员会,其任务时对建议的配置项变更做出评价、审批,以及监督已经批准变更的实施。
  3. 需求跟踪:双向跟踪(正向和反向),确保实现需求的完整性和准确性。

    如下图所示:

    • 正向跟踪:检查原始需求是否实现。
    • 反向跟踪:确认实现的功能是否符合需求。

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

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

相关文章

基于51单片机的日历流水灯proteus仿真

地址: https://pan.baidu.com/s/1lt1ubDhKNTeIcP0Kf1UXrA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C51 是一款常用的 8 位单片机,由 Atmel 公司(现已被 Microchip 收…

【Go沉思录】朝花夕拾:探究 Go 接口型函数

本文目录 序1.接口型函数案例方式1 GetterFunc 类型的函数作为参数方式2 实现了 Getter 接口的结构体作为参数价值 2.net/http包中的使用场景 序 之前写Geecache的时候,遇到了接口型函数,当时没有搞懂,现在重新回过头研究复习Geecache的时候…

【若依框架】代码生成详细教程,15分钟搭建Springboot+Vue3前后端分离项目,基于Mysql8数据库和Redis5,管理后台前端基于Vue3和Element Plus,开发小程序数据后台

今天我们来借助若依来快速的搭建一个基于springboot的Java管理后台,后台网页使用vue3和 Element Plus来快速搭建。这里我们可以借助若依自动生成Java和vue3代码,这就是若依的强大之处,即便你不会Java和vue开发,只要跟着石头哥也可…

Java 线程与线程池类/接口继承谱系图+核心方法详解

Java 线程与线程池类/接口继承谱系图 1. 线程相关类与接口关系 #mermaid-svg-shTOx2cIkm79Zevf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-shTOx2cIkm79Zevf .error-icon{fill:#552222;}#mermaid-svg-shTOx2cI…

BFS(十三)463. 岛屿的周长

463. 岛屿的周长 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰…

使用 Ansys Mechanical 和 optiSLang 进行材料模型校准

介绍 提供与实验数据匹配的准确仿真结果的材料模型是成功对实际应用进行 FEA 仿真的基础。根据实验数据校准材料模型是一个优化问题,其中仿真和真值信号之间的“距离”最小,表明模型与实验的“接近”程度。在此示例中,我们将对校准示例进行概…

SSA-朴素贝叶斯分类预测matlab代码

麻雀搜索算法(Sparrow Search Algorithm,简称 SSA)是于 2020 年提出的一种新兴群智能优化算法,其灵感主要来源于麻雀的觅食行为以及反捕食行为。 本次使用的数据是 Excel 格式的分类数据集数据。数据集被合理划分为训练集、验证集…

Houdini SOP层 Scatter节点

SOP 代表 Surface Operator(几何体操作节点),所有几何体的建模、变形、分布等操作都在此层级完成。 Scatter节点的作用就是 以不同的密度在模型表面撒点 Scatter 节点属于 SOP(几何体)层级: 进入 Geometr…

数据结构:有序表的合并

前文介绍了《有序表的插入》,本文介绍有序表的合并。这两种对有序表的操作,是数据结构中常考的内容,特别是在 408 考卷中,在算法设计的题目中,有可能会考查对有序表的操作。那么,这两篇文章中的方法就是能够…

STM32Cubemx-H7-8-维特科技WT61C-TTL陀螺仪获取XYZ角度

前言 本人玩车的时候要用到陀螺仪 MPU6050容易卡死,然后还很漂,还是太难用了 68块钱的陀螺仪再上位机上的效果挺满意,于是打算用串口用到自己的模型上 本文教大家如何编写串口程序,通过串口获取角度 大家把本文的原理学会后&…

本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件

文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome!它不仅让你随时随地畅享本地音乐…

音视频入门基础:RTP专题(15)——FFmpeg源码中,获取RTP的视频信息的实现

一、引言 通过FFmpeg命令可以获取到SDP文件描述的RTP流的视频压缩编码格式、色彩格式(像素格式)、分辨率、帧率信息: ffmpeg -protocol_whitelist "file,rtp,udp" -i XXX.sdp 本文以H.264为例讲述FFmpeg到底是从哪个地方获取到这…

配置 Thunderbird 以使用 outlook 邮箱

配置 Thunderbird 以使用 outlook 邮箱 thunder bird 作为邮件客户端非常好用,不用每次登录邮箱网页端查看邮件,直接打开配置好的 thunder bird 即可免登录查看邮件。 0. 什么是 Thunder Bird ? https://www.thunderbird.net/zh-CN/ Thunderbird 创立…

关于ModbusTCP/RTU协议转Ethernet/IP(CIP)协议的方案

IGT-DSER智能网关模块支持西门子、倍福(BECKHOFF)、罗克韦尔AB,以及三菱、欧姆龙等各种品牌的PLC之间通讯,支持Ethernet/IP(CIP)、Profinet(S7),以及FINS、MC等工业自动化常用协议,同时也支持PLC与Modbus协议的工业机器人、智能仪…

蓝桥杯省赛真题C++B组-裁纸刀2022

一、题目 问题描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。 小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来&#x…

阿里云操作系统控制台实战评测:提升云资源管理与监控效率

文章目录 前言产品介绍操作系统控制台体验阿里云操作系统开通 帮助与总结建议 前言 随着云计算和虚拟化技术的发展,操作系统控制台作为运维管理的核心工具之一,在现代IT环境中发挥着越来越重要的作用。它提供了一种更加直观、高效的方式来管理操作系统&…

C++ 链表List使用与实现:拷贝交换与高效迭代器细致讲解

目录 list的使用: 构造与赋值 元素访问 修改操作 容量查询 链表特有操作 拼接(Splice) C11 新增方法 注意: stl_list的模拟实现: 一、链表节点设计的艺术 1.1 结构体 vs 类的选择 二、迭代器实现的精髓 2…

复试难度,西电卓越工程师学院(杭研院)考研录取情况

01、卓越工程师学院各个方向 02、24卓越工程师学院(杭研院)近三年复试分数线对比 PS:卓越工程师学院分为广研院、杭研院 分别有新一代电子信息技术、通信工程、集成电路工程、计算机技术、光学信息工程、网络信息安全、机械,这些…

【JavaEE】线程池

【JavaEE】线程池 一、引言1.1 什么是线程池1.2 为什么要使用线程池 二、ThreadPoolExecutor类2.1 构造方法2.1.1 corePoolSize和maximumPoolSize2.1.2 KeepAliveTime和unit2.1.3 BlockingQueue<Runnable> workQueue2.1.4 ThreadFactory threadFactory2.1.5 RejectedExec…

GaussDB安全配置指南:从认证到防御的全方面防护

一、引言 随着企业数据规模的扩大和云端化进程加速&#xff0c;数据库安全性成为运维的核心挑战之一。GaussDB作为一款高性能分布式数据库&#xff0c;提供了丰富的安全功能。本文将从 ​认证机制、权限控制、数据加密、审计日志​ 等维度&#xff0c;系统性地讲解如何加固 Ga…