当前位置: 首页 > news >正文

信息系统基本知识(三)软件工程

1.4 软件工程

定义:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程即上述方法的研究

软件工程由方法、工具和过程三个部分组成

1.4.1 需求分析

软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。

需求层次

  1. 业务需求:是反映企业或客户对系统高层次的目标要求,通常来自项目投资人、购买产品的客户、客户单位的管理人员、市场营销部门或产品策划部门
  2. 用户需求:描述的是用户的具体目标,或用户要求系统必须完成的任务
  3. 系统需求:从系统的角度来说明软件的需求,包括功能需求、非功能需求和设计约束

质量功能部署

质量功能部署:QFD-Quality Function Deployment,是一种将用户需求转化成软件需求的技术,其目的是最大限度的提升软件工程过程中用户的满意度

  • 常规需求:用户认为系统应该做到的功能或性能
  • 期望需求:用户想当然认为系统应具备的功能或性能,但不能正确描述自己想要得到这些功能或性能需求,如果期望需求没有得到实现,用户会感到不满意
  • 意外需求:也称为兴奋需求,使用户要求范围外的功能或性能

需求获取

需求获取是一个确定或理解不同的项目干系人的需求和约束的过程。

常见的需求获取方法:用户访谈、问卷调查、采样、情节串联版、联合需求计划
信息系统项目需求获取的方法:问卷调查、会议讨论、界面原型、可运行原型系统

需求分析

需求分析人员需要把杂乱无章的用户要求和期望转化为用户需求、这就是需求分析工作。

一个好的需求应该具有:无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性。

需求分析的方法:

  • 结构化分析方法:
    • 数据模型:实体联系图、ER图
    • 功能模型:数据流图、DFD–Data Flow Diagram
    • 行为模型:状态转化图、STD–State Transform Diagram
  • 面向对象分析方法:OOA
    • 使用用例模型方法来描述系统需求
    • 使用分析模型描述系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及他们如何保持通信,实现系统行为(动态模型)

需求软件规格说明书

需求软件规格说明书:Software Requirement Specification SRS,是需求开发活动的产物,编制目的是是项目干系人与开发团队对系统的初始规定有一个共同的理解,使其成为整个开发工作的基础。

  • 范围
  • 引用文件
  • 需求(SRS主体部分)
  • 合格性规定
  • 需求可追踪性
  • 尚未解决的问题
  • 注解
  • 附录

需求验证

需求验证也成需求确认,主要确认下面几个内容:

  • SRS正确的描述了预期的、满足干系人需求的系统行为和特征
  • SRS中的软件需求是从系统需求、业务规格和其他来源中正确推导而来的
  • 需求是完整的和高质量的
  • 需求的表示在所有的地方都是一致的
  • 需求为继续进行系统设计、实现和测试提供了足够基础
  • 通过需求评审和需求测试工作来对需求进行验证

对象 = 属性+方法

UML

UML:Unified Modeling Language,统一建模语言,支持从需求分析开始的软件开发的全过程。是一个支持模型化和软件系统开发的图形化语言、为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

组成UML的3个要素

  • 基本构造块(事物、关系和图)
  • 规则(支配这些构造块如何放置在一起)
  • 机制(运用于整个语言的机制)

事物:也成建模元素

  • 结构事物:是静态部分,类、接口、协作、用例、活动类、构件和节点
  • 行为事物:是动态部分,代表时间和空间上的动作,一种是交互,另一种是状态机
  • 分组事物:是组织部分,UML只有一种分组事物,称为包
  • 注释事物:UML解释部分

关系:UML用关系把事物结合在一起

  • 依赖:两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义
  • 关联:描述一组对象之间连接的结构关系
  • 泛化:一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的额对象
  • 实现:类之间的语义关系,其中的一个类指定了有另一个类保证执行的契约

  • 类图:实体类的静态关系,是软件的蓝图,详细描述了系统内各个对象的相关的类,以及这些类之间的静态关系
    在这里插入图片描述

  • 对象图:表示某一时刻类的对象静态结构和行为
    在这里插入图片描述

  • 构件图:描述类的实现环境
    在这里插入图片描述

  • 用例图:用户观察到系统功能的模型图,列出了系统中的用例和参与者。显示哪个参与者参与了哪个用例的执行。用于业务建模、需求获取、定义。静态
    在这里插入图片描述

  • 顺序图:用于显示对象间的交互活动,关注对象之间消息传送的时间顺序。
    在这里插入图片描述

  • 状态图:利用状态和事件描述对象本身的行为。动态
    在这里插入图片描述

  • 活动图:通过动态来组织,主要用于描述某一方法、机制或用例的内部行为
    在这里插入图片描述

  • 部署图:描述系统所需的硬件构件的物理部署。
    在这里插入图片描述
    UML 视图:就是对上面图的分类

  • 用例视图:最基本的需求分析模型,如用例视图

  • 逻辑视图:也称为设计视图,如类图、对象图以及包图

  • 进程视图:可执行线程和进程作为活动类的建模,他是逻辑视图的一次执行实例,描述了并发与同步结构,如状态图、活动图、时序图等

  • 实现视图:对组成基于系统的物理代码的文件和构件进行建模,如构件图

  • 部署视图:把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构,如部署图

面向对象分析

1.4.2 软件架构设计

软件架构设计核心问题:是能否达到架构级的软件复用,能否在不同的系统中,使用同一个软件架构。

解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。

软件复用有利于节省工期、减少成本、保持质量

软件架构的风格

  1. 数据流风格:包括批处理序列和管道/过滤器风格
    在这里插入图片描述

  2. 调用/返回风格:包括主程序/子程序、数据抽象和面向对象,以及层次结构
    在这里插入图片描述

  3. 独立架构风格:包括进程通信和事件驱动系统
    基于事件驱动的系统,有点类似设计模型的观察者模式,由构件公布或者广播一些事件,其他构件对此事件进行注册。当这个事件被触发时,立即通知这个事件上注册的过程

  4. 虚拟机风格:包括解释器和基于规则的系统
    具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键的应用,解释器通常被用来建立一种虚拟机一弥补语义上的差异

  5. 仓库风格:包括数据库系统、黑板系统和超文本系统
    在这里插入图片描述

软件架构评估

敏感点:一个或者多个构件的额特性

权衡点:是影响多个质量属性的特性,是多个质量属性敏感点

  • 基于调查问卷方式
  • 基于场景方式
  • 基于度量方式

1.4.3 软件设计

软件设计是需求分析的延伸和拓展

需求分析阶段:解决“做什么”的问题
软件设计阶段:解决“怎么做”的问题

  1. 结构化设计SD:
    • 自顶向下、逐步求精
    • 模块化、相对独立
    • 高内聚、低耦合
  2. 面向对象的设计OOD
    • 抽象、封装和可扩展
    • 遵循OOD设计原则
  3. 设计模式
    • 包含模式名称、问题、目的、解决方案、效果、实例代码等

1.4.4 软件工程的过程管理

CMMI:Capability Maturity Model Integration是指能力成熟度模型集成

CMMI是一种为组织有效性提供基本要素的过程改进方法,它的目的是帮助软件企业对软件工程进行管理和改进,增强开发与改进能力从而能按时、不超预算的开发出高质量的软件。

CMMI过程域可分为4类:项目管理、过程管理、工程和支持四个级别

CMMI有阶段式和连续式两种表现方式:

  • 使用阶段式表示法使你能达到“成熟度级别”,阶段式表示法用于模型整体
  • 使用连续式表示法使你能达成“能力级别”。连续式表示用于单个过程域

过程域的阶段式分组
在这里插入图片描述

连续式分组
在这里插入图片描述

1.4.5 软件测试及管理

测试是在软件交付给客户之前所必须完成的重要步骤。

1.4.5.1 测试方法

  • 静态测试:采用人工检测和计算机辅助静态分析的手段对程序进行检测。
  • 动态测试:在计算机上实际运行程序进行软件测试。白盒测试与黑盒测试

1.4.5.2 测试类型

  • 单元测试:模块测试
  • 集成测试:模块之间接口联调
  • 确认测试:验证软件功能、性能和其它特性是否与用户需求一致
  • 系统测试:对象是完整的、集成的计算机系统。黑盒测试,真实环境下验证
  • 配置测试:软件配置
  • 回归测试:软件变更之后

1.4.5.3 面向对象测试

  • 封装性:考虑信息隐蔽对测试的影响
  • 继承性:考虑继承对充分性的影响
  • 多态性:考虑动态绑定对测试充分性影响

1.4.5.4 软件调试

在这里插入图片描述
测试与调试的区别

  • 测试的目的是找出错误,调试的目的是定位错误并修正错误
  • 调试是测试之后的活动,测试和调试在目标、方法和思路上都有所不同
  • 测试从一个已知的条件开始,使用预先定义的过程,由预知的结果;调试从一个未知的条件开始,结束的过程不可预计
  • 测试过程事先设计,进度可以事先确定;调试不能描述过程或持续时间

1.4.5.5 软件测试管理

  • 过程管理
  • 配置管理
  • 评审工作
    • 测试就绪评审
    • 测试评审

1.4.5.6 软件集成技术

企业应用集成:Enterprise Application Integration EAI,企业应用集成可以消除信息孤岛,将多个企业信息系统连接起来,实现无缝集成,使之像一个整体一样。EAI所连接的应用包括各种电子商务系统、ERP、CRM、SCM、OA、数据库系统和数据仓库。
在这里插入图片描述

  1. 表示集成
    也称页面集成,是把原有零散的系统页面集中在一个新的页面中;为用户提供看上去统一,但是有多个系统组成的应用系统;当只有可能在显示界面上实现集成时。
    在这里插入图片描述

  2. 数据集成

    • 通过不同的中间件工具完成数据集成
    • 数据集成比表示集成更加灵活,但是当业务逻辑发生变化时,数据集成就会面临困难
      在这里插入图片描述
  3. 控制集成
    也称功能集成和应用集成

    • 在业务逻辑层上对应用系统进行集成
    • 借助于远程过程或方法调用、面向消息的中间件、分布式对象技术和事物处理监控器来实现
    • 与数据集成和表示集成相比,灵活性更高
    • 当被集成业务系统没有提供API时,集成难度会增加
      在这里插入图片描述
  4. 业务集成
    也称过程集成
    业务流程集成超越了数据和系统,有一些列基于标准、统一数据格式的工作流完成

  5. 企业之间集成
    EAI技术使用用大多数电子商务企业,完成企业之间的应用集成。目的是实现信息共享,是企业充分利用外部资源。

相关文章:

信息系统基本知识(三)软件工程

1.4 软件工程 定义:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程即上述方法的研究 软件工程由方法、工具和过程三个部分组成 1.4.1 需求分析 软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。 需求层次 业务…...

Linux下软件部署安装管理----rpmbuild打包rpm包部署安装

来源:微信公众号「编程学习基地」 文章目录1.安装rpmbuild2.rpm包制作打包rpm包3.rpm包安装4.rpm包卸载1.安装rpmbuild yum install rpmbuild yum install rpmdevtools创建rpm包管理路径,生成rpm相关目录 RPM打包的时候需要编译源码,还需要…...

ThreadLocal学会了这些,你也能和面试官扯皮了!

前言 我们都知道,在多线程环境下访问同一个共享变量,可能会出现线程安全的问题,为了保证线程安全,我们往往会在访问这个共享 变量的时候加锁,以达到同步的效果,如下图所示。 对共享变量加锁虽然能够保证线程的安全,但是却增加了开发人员对锁的使用技能,如果锁使用不当…...

【存储】存储特性

存储特性精简配置技术(SmartThin)SmartThin主要功能容量虚拟化存储空间写时分配:Capacity-on-Write读写重定向:Direct-on-Time应用场景及配置流程存储分层技术(SmartTier)存储分层工作原理关键技术容量初始…...

Qt使用OpenGL进行多线程离屏渲染

基于Qt Widgets的Qt程序,控件的刷新默认状况下都是在UI线程中依次进行的,换言之,各个控件的QWidget::paintEvent方法会在UI线程中串行地被调用。若是某个控件的paintEvent很是耗时(等待数据时间CPU处理时间GPU渲染时间&#xff09…...

Vue基础入门讲义(三)-指令

文章目录1.什么是指令?2.插值表达式2.1.花括号2.2.插值闪烁2.3.v-text和v-html3.v-model4.v-on4.1.基本用法4.2.事件修饰5.v-for5.1.遍历数组5.2.数组角标5.3.遍历对象6.key7.v-if和v-show7.1.基本使用7.2.与v-for结合7.3.v-else7.4.v-show8.v-bind8.1. 属性上使用v…...

pod资源限制,探针(健康检查)

pod资源限制,探针(健康检查)一、资源限制当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源当为 Pod 中的容器指定了 request 资源时,调度器就使用…...

Python | 蓝桥杯进阶第一卷——字符串

欢迎交流学习~~ 专栏: 蓝桥杯Python组刷题日寄 蓝桥杯进阶系列: 🏆 Python | 蓝桥杯进阶第一卷——字符串 🔎 Python | 蓝桥杯进阶第二卷——递归(待续) 💝 Python | 蓝桥杯进阶第三卷——动态…...

2023-03-03 mysql列存储-cpu占用100%-追踪思路

摘要: 最近在处理mysql列存储时, 发现在执行explain时, cpu占用达到了100%. 本文分析定位该问题的思路过程 现象: mysqld进程占用100%使用kill processlist终止会话, 无响应查看show processings; 发现一直在运行mysql> show processlist; +----+-----------------+-----…...

JVM—类加载子系统

JVM细节版架构图 ​ 本文针对Class Loader SubSystem这一块展开讲解类加载子系统的工作流程 类加载子系统作用 1.类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识即16进制CA FE BA BE; 2.加载后的Class类信息…...

在codeIgniter3中session.php中的数组追加值

如果key是字符串时,输出什么值?会直接把atime()的时间戳添加到key是字符串时,输出什么值?会直接把atime()的时间戳添加到key是字符串时,输出什么值?会直接把atime()的时间戳添加到arr[‘vars’]数组里面&am…...

Windows环境下Gpu版本的Pytorch安装

文章目录安装步骤总览(6步)1 首先看电脑有没有显卡,显卡是否支持cuda软件1.1 先看自己电脑是否有显卡1.2 两种方法看自己的电脑的显卡驱动支持的CUDA1.3 显卡,显卡驱动、CUDA、CUDNN 4者说明2 安装CUDA,就是1个软件2.1 检测自己电…...

项目实战典型案例13——学情页面逻辑问题

学情页面逻辑问题一:背景介绍二:学情页面逻辑问题分析逻辑问题缓存滥用的问题三:LocalStorage基础知识数据结构特性应用场景localStorage常用方法四:总结升华一:背景介绍 本篇博客是对项目开发中出现的学情页面逻辑问…...

工作日志day02

1.云计算? 相关职位 开源软件和linux起源: 自由软件之父:理查德.斯托曼linux之父:林纳斯.本纳第克特.托瓦兹linux发行版 RHEL:Red Hat Enterprise Linux 红帽linux商业公司CentOS:Community Enterprise Operating Sys…...

C++Primer16.1.6节练习

练习16.28&#xff1a; 简易的shared_ptr代码如下 #include <iostream> #include <vector> #include <list> using namespace std;//shared_ptr模板 template<typename T>class SharedPtr {friend SharedPtr<T>& MakeShared(T* t); public…...

初尝并行编程

进程被分为后台进程和应用进程 大部分后台进程在系统开始运行时被操作系统启动&#xff0c;完成操作系统的基础服务功能。大部分应用进程由用户启动&#xff0c;完成用户所需的具体应用功能 进程由程序段、数据段、进程控制块三部分组成 程序段也被称为是代码段&#xff0c;…...

keepalived学习记录:对其vip漂移过程采用gdb跟踪

对其vip漂移过程采用gdb跟踪keepalived工具主要功能产生vip漂移过程两种情况gdb调试常用命令gdb调试时打到的函数栈&#xff08;供学习参考&#xff09;函数栈的图是本人理解下画的&#xff0c;不对请多指正 keepalived主要有三个进程&#xff0c;父进程是core进程&#xff0c;…...

51单片机串口通讯原理及程序源码-----day8

51单片机串口通讯原理及程序源码-----day8 1.定义单片机为TTL电平&#xff1a;高 5V 低 0V RS232电平&#xff1a; 计算机的串口高 -12V 低12V 所以计算机与单片机之间通讯时需要加电平转换芯片CH340T 、 MAX232。 2.通信分类&#xff1a; &#xff08;1&#xff09;并行通信通…...

mongodb入门到使用(下)

mongodb中常用命令操作一、用户操作二、创建用户三、数据库操作基本操作四、扩展操作五、集合操作一、用户操作 在mongo中使用mongodb都需要在admin数据库中操作。然后在使用下面的命令 use admin二、创建用户 db.createUser({"user":"imooc", #用户名&q…...

云HIS系统源码 医院his源码 云his源码

大型医院his系统源码 SaaS运维平台多医院入驻强大的电子病历完整文档 &#xff0c;有演示 一、系统概述&#xff1a; 基层卫生健康云是一款满足基层医疗机构各类业务需要的健康云产品。该产品能帮助基层医疗机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子…...

朴素贝叶斯法学习笔记

频率派和贝叶斯派 频率派认为可以通过大量实验&#xff0c;从样本推断总体。比如假定总体服从均值为μ\muμ&#xff0c;方差为σ\sigmaσ的分布。根据中心极限定理&#xff0c;是可以通过抽样估算总体的参数的&#xff0c;而且抽样次数越多&#xff0c;对总体的估计就越准确。…...

vscode与C++安装与使用【不好用来骂我】

网上教程很多&#xff0c;但是都不太好用&#xff0c;这是我垃圾堆里淘金淘出来的教程&#xff1a; 安装软件 安装 Visual Studio Code: 你需要下载并安装 Visual Studio Code&#xff0c;可以在官网下载 https://code.visualstudio.com/download。 安装 C 扩展: 在 Visual S…...

C++11使用多线程(线程池)计算相似度实现性能优化

需求&#xff1a;图像识别中&#xff0c;注册的样本多了会影响计算速度&#xff0c;成为性能瓶颈&#xff0c;其中一个优化方法就是使用多线程。例如&#xff0c;注册了了3000个特征&#xff0c;每个特征4096个float。可以把3000个特征比对放到4个线程中进行计算&#xff0c;然…...

【测绘程序设计】——平面坐标转换

测绘工程中经常遇到平面坐标转换——比如,北京54(或西安80)平面坐标转换成CGCS2000平面坐标、工程独立坐标系平面坐标转换成CGCS2000平面坐标等,常用转换模型包括:①三参数法(2平移+1旋转);②四参数法(赫尔默特法,2平移+1旋转+1尺度);③六参数法(仿射变换法,2平移…...

五子棋的设计与实现

术&#xff1a;Java等摘要&#xff1a;五子棋是一种两人对弈的纯策略型棋类游戏&#xff0c;非常容易上手&#xff0c;老少皆宜。为了更好的推广五子棋&#xff0c;研究简单的人工智能方式&#xff0c;运用Java开发五子棋游戏。主要包含了人机对战&#xff0c;棋盘初始化&#…...

大数据项目软硬件选择

目录 一.技术选型 二.系统数据流程设计 三.框架版本选型 如何选择Apache/CDH/HDP版本...

redis数据结构的适用场景分析

1、String 类型的内存空间消耗问题&#xff0c;以及选择节省内存开销的数据类型的解决方案。 为什么 String 类型内存开销大&#xff1f; 图片 ID 和图片存储对象 ID 都是 10 位数&#xff0c;我们可以用两个 8 字节的 Long 类型表示这两个 ID。因为 8 字节的 Long 类型最大可以…...

同步、异步、全双工、半双工的区别

1、通讯 1.1 并行通讯 定义&#xff1a;一条信息的各位数据被同时传送的通讯方式称为并行通讯&#xff1b; 特点&#xff1a; 各个数据位同时发送&#xff0c;传送速度快、效率高&#xff0c;但有多少数据位就需要多少根数据线&#xff0c;因此传送成本高&#xff0c;并且只…...

ClickHouse 与 Amazon S3 结合?一起来探索其中奥秘

目录ClickHouse 简介ClickHouse 与对象存储ClickHouse 与 S3 结合的三种方法示例参考架构小结参考资料ClickHouse 简介ClickHouse 是一种快速的、开源的、用于联机分析&#xff08;OLAP&#xff09;的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;由俄罗斯的Yan…...

【Spark分布式内存计算框架——Structured Streaming】1. Structured Streaming 概述

前言 Apache Spark在2016年的时候启动了Structured Streaming项目&#xff0c;一个基于Spark SQL的全新流计算引擎Structured Streaming&#xff0c;让用户像编写批处理程序一样简单地编写高性能的流处理程序。 Structured Streaming并不是对Spark Streaming的简单改进&#xf…...

做视频网站视频/电脑优化工具

Linux指令篇:文件打印--lpd(转)名称&#xff1a; lpd使用权限&#xff1a; 所有使用者使用方式&#xff1a;lpd [-l] [#port]lpd 是一个常驻的打印机管理程序&#xff0c;它会根据 /etc/printcap 的内容来管理本地或远端的打印机。/etc/printcap 中定义的每一个打印机必须在 /v…...

lol做视频那个网站好/百度投诉热线中心客服

时间函数select curdate(); 返回2014-09-12,不包含时分秒select curtime(); 返回14:13:22&#xff0c;不包含年月日select now(); 返回2014-09-12 10:46:17select unix_timestamp(now());unix_timestamp(date)返回date的UNIX时间戳 select unix_timestamp(2013-09-01)…...

花木网站模版/永久免费个人网站申请注册

1 FFmpeg录屏以及录音的命令 最近需要用到FFmpeg录制声卡中的声音&#xff0c;在cmd.exe的命令行中使用正常的录音命令&#xff1a; ffmpeg -f dshow -i audio"virtual-audio-capturer" -acodec aac f:\temp.aac是可以实现录制的 然后按照官方的按Q键暂停录制 也…...

丹阳网站推广/免费建站模板

题目 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode-cn.com/problems/maximum-length-of-subarray-with-positive-product 著作权归领扣网络所有。商业转载请联系官方授权&#xff0c;非商业转载请注明出处。 给你一个整数数组 num…...

广州营销型网站建设公司哪家名气大/制作网站

需求说明&#xff1a; /* *需求说明: *获取元素&#xff1a;tBodies,tHead,tFoot,rows,cells *表格的创建 *数据添加 *隔行变色 *删除操作&#xff0c;剩余表格重新计算&#xff0c;实现隔行变色*/HTML: <table id"table1"><tbody><tr><th>编…...

怎么用腾讯云主机建设网站/百度seo策略

MySQL数据库安装配置和启动 1&#xff0c;下载MySQL 打开MySQL的官网www.mysql.com&#xff0c;发现有一个DOWNLOADS 点击它&#xff0c;进入到MySQL的下载页面&#xff0c;在页面的底部有一个MySQL Community Edition&#xff0c; 并且下面有一个蓝色的链接 点击这个蓝色的链接…...