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

news2024/12/23 3:47:54

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技术使用用大多数电子商务企业,完成企业之间的应用集成。目的是实现信息共享,是企业充分利用外部资源。

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

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

相关文章

FFmpeg入门 - Android移植

1、FFmpeg编译与集成FFmpeg的安卓交叉编译网上有很多的资料,基本上都是些编译配置而已。可以直接将我的脚本放到ffmpeg源码根目录,修改下NDK的路径和想要编译的ABI之后直接执行。然后就能在android目录里面得到编译好的so和.h如果的确编译出现问题,也可以直接用我编出来的库。将…

Enlight Software Ltd.官方正式推出〔金融帝国实验室试玩版本〕(Capitalism Lab Demo Version)

Enlight Software Ltd.官方正式推出〔金融帝国实验室试玩版本〕(Capitalism Lab Demo Version) ————————————— 与一般游戏的试玩版本不同,〔金融帝国实验室试玩版本〕是一款功能齐全的游戏,包含完整版本的所有功能…

spark sql(三)逻辑计划解析(analyzer)

1、前言 Spark SQL 逻辑计划在实现层面被定义为 LogicalPlan 类 。 从 SQL 语句经过 SparkSqlParser解析生成 Unresolved LogicalPlan ,到最终优化成为 Optimized LogicalPlan ,这个流程主要经过3 个阶段。 这 3 个阶段分别产生 Unresolved LogicalPlan,…

组合模式-文件目录管理

什么是组合模式? 组合模式是一种结构型设计模式,它允许你将对象组合成树形结构来表现"部分-整体"的层次结构。组合模式使得客户端可以统一地对待单个对象和对象组合,从而使得系统更加灵活。 在组合模式中,有两种基本类…

SQL开发管理工具,SQL Studio成数据库管理工具热门

达梦数据库冲击IPO成功;麒麟软件等国产Linux桌面操作系统在国防、教育等行业达到百万规模级应用;阿里云计算操作系统取得重大突破,阿里云市场份额全球第三;宝兰德、中创等厂商的应用服务器中间件能够实现对IBM和Oracle相关产品的替…

Linux学习第十一节-磁盘类型介绍和挂载

1.磁盘类型介绍 IDE接口类型:主要用于个人家用计算机领域,优点价格便宜,缺点数据传输速度慢; SCSI接口类型: 主要用于服务器领域,数据传输速度快,支持热插拔; SATA接口类型&…

Android Automotive 调节音量的过程

Android Automotive OS (AAOS) 是在核心 Android 系统的基础之上打造而成,以支持将 Android 系统用作车辆信息娱乐系统的场景。AAOS 的音频系统对核心 Android 音频系统做了扩充,创建了新的概念和抽象,如音区等,提供了新的 API 接…

〖大前端 - 基础入门三大核心之 html 篇⑩〗- 图片标签

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

如何利用github搭建个人主页网站?

本章教程告诉你如何利用github搭建一个个人静态主页网站。 适合没有服务器和域名且对网站搭建感兴趣的人玩玩,github稳定性可能差一点。 目录 一、前期准备工作 二、 创建项目仓库 三、将网站上传到github 四、我的个人主页展示 一、前期准备工作 1、首先&#x…

[1.1_1]计算机系统概述——操作系统的概念、功能和目标

文章目录第一章 计算机系统概述操作系统的概念(定义)、功能和目标(一)操作系统的概念(定义)(二)操作系统的功能和目标1、作为系统资源的管理者2、向上层提供方便易用的服务3、作为最…

选课系统的设计与实现

技术:Java等摘要:目前国内各高校的规模越来越大,进而造成教师教学管理等工作量日趋加大。然而,现代教育的信息化、网络化已经成为教育发展的一个重要方向,同时也为解决高校教学管理效率低下的现状,使管理突…

[架构之路-126]-《软考-系统架构设计师》-操作系统-5-虚拟化技术、Docker与虚拟机比较

第1章 Docker与虚拟机比较总体概述1.1 宏观比较虚拟机和Docker容器技术都是一种虚拟化技术。虚拟机包含的是整个操作系统的原生镜像,非常的庞大。docker的镜像只包含最核心的环境,非常小巧。(1)比较Docker与虚拟机技术的不同&…

【CS224W】(task9)图神经网络的表示能力(更新中!!)

note 基于图同构网络(GIN)的图表征网络。为了得到图表征首先需要做节点表征,然后做图读出。GIN中节点表征的计算遵循WL Test算法中节点标签的更新方法,因此它的上界是WL Test算法。 在图读出中,我们对所有的节点表征&…

线程基础复习

线程基础复习 程序:一段静态的代码 进程:正在执行的程序,是操作系统资源分配的最小单位 线程:进程可进一步细分为线程,是进程内部最小的执行单元,是操作系统进行任务调度的最小单元,属于进程 线程与进程的关系 一个进程可以包含多个线程,…

Python3-循环语句

Python3 循环语句 本章节将为大家介绍 Python 循环语句的使用。 Python 中的循环语句有 for 和 while。 Python 循环语句的控制结构图如下所示: while 循环 Python 中 while 语句的一般形式: while 判断条件(condition):执行语句(stat…

Mysql是怎样运行的——B+树索引

💥 前章回顾: 💥 前面我们详细唠叨了InnnoDB数据页的7个组成部分,知道了各个数据页可以组成一个双向链表,而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的…

构建“以客户为中心”的新型商业模式

很难想象一个ERP系统能帮助企业变得更加以客户为中心。然而,如果采用正确的方法,ERP系统确实可以帮助你的企业把客户置于其所有规划、产品开发和运营的中心。 什么是以客户为中心的业务方法? 以客户为中心的业务方法将客户旅程放在每个行动…

图表控件LightningChart.NET 系列教程(九):LightningChart 组件——从工具箱添加至 WPF 项目

LightningChart.NET LightningChart.NET 是一款高性能 WPF 和 Winforms 图表,可以实时可视化多达1万亿个数据点。可有效利用CPU和内存资源,实时监控数据流。同时,LightningChart使用突破性创新技术,以实时优化为前提,大大提升了实…

将字符串生成艺术字pyfiglet.figlet_format

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】将字符串生成艺术字pyfiglet.figlet_format选择题以下关于python代码表述错误的一项是?import pyfigletmyText"python"print("【执行】pyfiglet.figlet_format")resultpyf…

第一篇:1.3Inch ISP Screen简介

1.简介官方连接: http://www.lcdwiki.com/zh/1.3inch_IPS_Module我在淘宝买的这款,其驱动IC是st7789,这款的分辨率是相对来说最高的,因此买的时候可能看到比他大的屏幕比这个还便宜.1.1产品介绍1.3寸IPS彩屏,支持 RGB 65K色显示,显示色彩丰富240X240分辨…