系统开发与运行

news2024/11/25 19:20:35

系统开发与运行

系统分析与设计

需求分析

需求工程

结构化分析与设计

测试基础知识

系统运行与维护

软件架构介绍

系统分析概述

系统分析是一种问题求解技术,它将一个系统分解成各个组成部分, 目的是研究各个部分如何工作、交互,以实现其系统目标。

目的和任务:

系统分析的主要任务是对现行系统进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需的资料,并提交系统方案说明书。

系统分析的主要步骤:

(1) 认识、理解当前的现实环境,获得当前系统的“物理模型”。

(2) 从当前系统的“物理模型”抽象出当前系统的“逻辑模型”。

(3) 对当前系统的“逻辑模型”进行分析和优化,建立目标系统的“逻辑模型”。

(4) 对目标系统的逻辑模型具体化(物理化),建立目标系统的物理模型。

系统开发的目的是将现有系统的物理模型转换为目标系统的物理模型。

系统设计

系统设计基本原理:

  • 抽象(重点说明本质方面,忽略非本质方面);
  • 模块化(可组合、分解和更换的单元);
  • 信息隐蔽(将每个程序的成分隐蔽或封装在一个单一的设计模块中);
  • 模块独立(每个模块完成一个相对独立的特定子功能,且与其他模块之间的联系简单)。

模块的设计要求独立性高,就必须高内聚,低耦合,

  • 内聚是指一个模块内部功能之间的相关性,
  • 耦合是指多个模块之间的联系。

内聚⭐️⭐️⭐️

内聚程度从低到高如下表所示:

内聚分类

定义

记忆关键字

偶然内聚。

一个模块内的各处理元素之间没有任何联系

无直接关系。

逻辑内聚 

模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能

逻辑相似、参数决定

时间内聚

把需要同时执行的动作组合在一起形成的模块。

同时执行

过程内聚

一个模块完成多个任务,这些任务必须按指定的过程执行

指定的过程顺序

通信内聚1

模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。

相同数据结构、相同输入输出

顺序内聚

一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。

顺序执行、输入为输

功能内聚

最强的内聚,模块内的所有元素共同作用完成一个功能,缺一不可

共同作用、缺一不可

耦合⭐️⭐️⭐️

耦合程度从低到高如下表所示:

耦合分类

定义

记忆关键字

无直接耦合。

两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,不传递任何信息。

无直接关系。

数据耦合。

两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。

传递数据值调用。

标记耦合

两个模块之间传递的是数据结构。

传递数据结构

控制耦合

一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能。

控制变量、选择执行某一功能。

外部耦合

模块间通过软件之外的环境联合(如1/0将模块耦合到特定的设备、格式、通信协议上)时。

软件外部环境

公共耦合。

通过一个公共数据环境相互作用的那些模块间的耦合。

公共数据结构

内容耦合。

当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时。

模块内部关联

系统设计

在系统分析阶段,我们已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。进入设计阶段,要把软件“做什么”的逻辑模型转换成“怎么做”的物理模型。

系统设计的主要目的

是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,得出新系统的详细设计方案。

步骤:

概要设计和详细设计。

概要设计基本任务:

    • 设计软件系统总体结构、
    • 数据结构及数据库设计、
    • 编写概要设计文档、评审。

详细设计的基本任务:

    • 模块内详细算法设计、
    • 模块内数据结构设计、
    • 数据库的物理设计、
    • 其他设计(代码、输入/输出格式、用户界面)、
    • 编写详细设计说明书、
    • 评审。

系统总体结构设计

系统结构设计原则:

    • 分解-协调原则、
    • 自顶向下原则、
    • 信息隐蔽和抽象原则、
    • 一致性原则、
    • 明确性原则、
    • 模块间高内聚低耦合、
    • 模块的扇入系数和扇出系数合理、
    • 模块规模适当。

子系统划分的原则:

    • 子系统要具有相对独立性、
    • 子系统之间数据的依赖性尽量小、
    • 子系统划分的结果应使数据冗余较小、
    • 子系统的设置应考虑今后管理发展的需要、
    • 子系统的划分应便于系统分阶段实现、
    • 子系统的划分应考虑到各类资源的充分利用。

例(2016年上半年):

在设计软件的模块结构时, (31)不能改进设计质量。

A. 模块的作用范围应在其控制范围之内

B. 模块的大小适中

C. 避免或减少使用病态连接(从中部进入或访问一个模块)

D. 模块的功能越单纯越好

答案:

解析: ABC描述的都是常识,D描述的有问题,应该是模块的功能越单一越好,并非单纯。

WebApp分析与设计

WebApp是基于web的系统和应用。大多数WebApp采用敏捷开发过程模型进行开发。

WebApp的特性:

    • 网络密集性(服务于不同客户全体的需求)、
    • 并发性(大量用户同时访问)、
    • 无法预知的负载量(用户数量)、
    • 性能(响应时间过长导致用户流失)、
    • 可用性(最好7*24*365可用)、
    • 数据驱动(和用户的数据交互)。

WebApp五种需求模型:

1、内容模型:

给出由WebApp提供的全部系列内容,包括文字、图形、图像、音频和视频。包含结构元素,为WebApp的内容需求提供了一个重要的视图。这些结构元素包含内容对象和所有分析类,在用户与WebApp交互时生成并操作用户可见的实体。

内容的开发可能发生在WebApp实现之前、构建之中、或者投入运行以后(全过程)。

内容对象:

产品的文本描述、新闻文章、照片、视频等。

数据树:

由多项内容对象和数据项组成的任何内容都可以生成数据树,是内容设计的基础,定义一种层级关系,并提供一种审核内容的方法,以便在开始设计前发现遗漏和不一致内容。

2、交互模型:

描述了用户与WebApp采用了哪种交互方式。由一种或多种元素构成,包括用例、顺序图、状态图、用户界面原型等。

用例

是交互分析的主要工具,方便客户理解系统的功能。

顺序图

是交互分析中描述用户与系统进行交互的方式。用户按照已定顺序使用系统,完成相应的功能,如登录流程。

状态图

是交互分析中对系统进行动态的描述。如状态的变化。

用户界面原型

展现用户界面布局、内容、主要导航链接、实施的交互机制及用户WebApp的整体美观度。

3、功能模型:

许多WebApp提供大量的计算和操作功能,这些功能与内容直接相关(既能使用又能生成内容,如统计报表)。这些功能常常以用户的交互活动为主要目标。

功能模型

定义了将用于WebApp内容并描述其他处理功能的操作,这些处理功能不依赖于内容却是最终用户所必需的。

4、导航模型:

为WebApp定义所有导航策略。考虑了每一类用户如何从一个WebApp元素(如内容对象)导航到另一个元素。

5、配置模型:

描述WebApp所在的环境和基础设施。在必需考虑复杂配置体系结构的情况下,可以使用UML部署图。

WebApp设计

1、架构设计:

使用多层架构来构造,包括用户界面或展示层、基于一组业务规则来指导与客户端浏览器进行信息交互的控制器,以及可以包含WebApp的业务规则的内容或模型层,描述将以什么方式来管理用户交互、操作内部处理任务、实现导航及展示内容。

MVC(模型-视图-控制器)结构是WebApp基础结构模型之一,将WebApp功能及信息内容分离。

2、构件设计

WebApp构件:

定义良好的聚合功能,为最终用户处理内容或提供计算或处理数据;义内容和功能的聚合包,提供最终用户所需要的功能。因此,WebApp构件设计通常包括内容设计元素和功能设计元素。

构件级内容设计:

关注内容对象,以及包装后展示给最终用户的方式,应该适合创 建的WebApp特性。

构件级功能设计:

将WebApp作为一系列构件加以交付,这些构件与信息体系结构并行开发,以确保一致性。

3、内容设计:

着重于内容对象的表现和导航的组织,通常采用线性结构、网格结重构、层次结构、网络结构四种结构及其组合。

4、导航设计:

定义导航路径,使用户可以访问WebApp的内容和功能。

软件需求

按需求内容分类:

  • 业务需求:由客户提出的宏观的一个功能需求。
  • 用户需求:设计员去调查需求中涉及到的每个用户的具体需求。
  • 系统需求: 经过整合,形成最终的系统需求,包括功能、性能、设计约束三个方面的需求。

从客户角度分类:

  • 基本需求:需求明确规定的功能。
  • 期望需求:除了基本需求外,客户认为理所应当包含在内的其他功能。
  • 兴奋需求:客户未要求的其他功能需求,会浪费项目开发时间和成本。

软件需求分类:

  • 功能需求:软件必须完成的基本动作。
  • 性能需求: 说明软件或人与软件交互的静态或动态数值需求,如系统响应速度、处理速度等。
  • 设计约束:受其他标准硬件限制等方面的影响。
  • 属性:  可用性、安全性、可维护性、可转移/转移性。
  • 外部接口需求:用户接口、硬件接口、软件接口、通信接口。

需求工程

需求工程六个阶段

  • 需求获取: 获取需求,方法有收集资料、联合讨论会JRP、用户访谈、书面调查、现场观摩、参加业务实践、阅读历史文档、抽样调查。
  • 需求分析与协商:分析不同人提出的所有需求之间的关系并判断。
  • 系统建模:建立系统的抽象模型。
  • 需求规约:也即需求定义,目的是为了编写需求规约(即需求规格说明书),在双方之间达成一个共识。
  • 需求验证: 需求开发阶段的复查手段,需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线。
  • 需求管理:对需求工程涉及的所有过程进行规划和控制。

需求管理

定义需求基线:

通过了评审的需求说明书就是需求基线,下次如果需要变更需求,就需要按照流程来一步步进行。

处理需求变更:

主要关心需求变更过程中的需求风险管理,带有风险的做法有:

    • 无足够用户参与、
    • 忽略了用户分类、
    • 用户需求的不断增加、
    • 模棱两可的需求、
    • 不必要的特性、
    • 过于精简的SRS、
    • 不准确的估算。

需求跟踪:

双向跟踪,两个层次,正向跟踪表示用户原始需求是否都实现了,反向跟踪表示软件实现的是否都是用户要求的,不多不少。如下图所示:

例(2013年上半年)

“软件产品必须能够在3秒内对用户请求作出响应”属于

软件需求中的(18)

18.A.功能需求

B.非功能需求

c.设计约束

D.逻辑需求

答案:B

解析:3秒内相应用户需求,类似这种响应速度的都是性能需求,对应选项中非功能需求。

 

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

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

相关文章

Android系统启动全流程分析

当我们买了一个手机或者平板,按下电源键的那一刻,到进入Launcher,选择我们想要使用的某个App进入,这个过程中,系统到底在做了什么事,伙伴们有仔细的研究过吗?可能对于Framework这块晦涩难懂的专…

数据流畅驰骋:探秘Logstash在大数据领域的卓越表现【上进小菜猪大数据系列】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 摘要:Logstash是大数据领域中常用的数据处理引擎,能够高效地采集、转换和输出数据。本文将深入介绍Logstash的基本概念、工作原理和常见应用场景&#xff0…

科学计算库-Pandas随笔【及网络隐私的方法与策略闲谈】

文章目录 8.2、pandas8.2.1、为什么用 pandas ?8.2.2、pandas Series 类型8.2.3、pandas 自定义索引8.2.4、pandas 如何判断数据缺失?8.2.5、pandas DataFrame 类型8.2.6、pandas 筛选8.2.7、pandas 重新索引8.2.8、pandas 算数运算和数据对齐8.2.9、pan…

linux 内核开启调试选项

前言 嵌入式 linux 经常要编译 linux 内核,默认情况下编译出的内核镜像是不带调试信息的,这样,当内核 crash 打印 PC 指针和堆栈信息时,我们需要反汇编来确认出错位置,不直观。 如果内核开启了调试选项,我…

控制系统中的闭环带宽

控制系统中的闭环带宽是指反馈控制系统中控制器输出与被控对象输入之间的频率范围。具体来说,闭环带宽是在稳定性和响应速度之间做出的折衷,越高的闭环带宽通常意味着更快的响应速度,但也可能导致系统变得不稳定。 在实际应用中,…

HTML <base> 标签

实例 <head> <base href="http://www.w3school.com.cn/i/" /> <base target="_blank" /> </head><body> <img src="eg_smile.gif" /> <a href="http://www.w3school.com.cn">W3School<…

JAVA常用ApI - Object和Objects

文章目录 目录 文章目录 前言 一 .Object是什么&#xff1f; 二 .Object的常用方法 1.tostring 1.1 返回值 1.2 重写toString方法 3.clone(克隆) 1.克隆接口 三.Objects 总结 前言 大家好,我是最爱吃兽奶,今天给大家讲一下java中的object和object的工具类objects 那…

泰裤辣,可以利用AI测测Vue知识的掌握程度。

以下是一些常见的Vue面试题&#xff1a; 可以先试着回答&#xff0c;以下是参考答案。 1. 什么是Vue&#xff0c;它的优点是什么&#xff1f; Vue是一套用于构建用户界面的渐进式JavaScript框架&#xff0c;它以简洁的API和响应式数据绑定的特性来大大简化了前端开发过程。Vue…

Linux基本指令和操作(3)

目录 一. date指令 -- 显示时间 二. cal指令 -- 日历打印指令 三. find指令 -- 查找文件 四. grep指令 -- 行过滤指令 五. zip/unzip指令 -- 压缩和解压缩 六. tar指令 -- 解压/打包 或 查看压缩包内文件 七. bc指令 -- 计算器 八. uname指令 -- 获取电脑和操作系统相关…

webserver|4.23-4.24 TCP状态转换、半关闭、端口复用

4.23 TCP状态转换 四次挥手&#xff1a; 另一种状态图&#xff1a; 红色实线&#xff1a;客户端 绿色虚线&#xff1a;服务端状态转变 4.24 半关闭、端口复用 半关闭 基本就是一边closed&#xff0c;另一边还没有closed 一边一旦closed之后就不能再向另一方传数据&#xff08;A…

异常检测专栏(三)传统的异常检测算法——上

前言 在上一篇推文中&#xff0c;我们简要介绍了异常检测常用的几种数据集如ImageNet、CIFAR10/CIFAR100、MNIST等。接下来&#xff0c;我们将基于传统的异常检测算法分为上、下两部分&#xff0c;逐一介绍不同类别的方法。 本教程禁止转载。同时&#xff0c;本教程来自知识星球…

matlab将RGB图像在HSI空间去噪

思路与代码 RGB 转换为 HSI 的计算步骤如下&#xff1a; 首先归一化三通道值 &#xff1a; r R R G B r \frac{R}{RGB} rRGBR​ g G R G B g \frac{G}{RGB} gRGBG​ b B R G B b \frac{B}{RGB} bRGBB​ 接下来&#xff0c;计算 HSI 图像的亮度 I I I&#xf…

(转载)从0开始学matlab(第3天)—子数组

你可以选择和使用一个 MATLAB 函数的子集&#xff0c;好像他们是独立的数组一样。在数组名后面加括号&#xff0c;括号里面是所有要选择的元素的下标&#xff0c;这样就能选择这个函数的子集了。例如&#xff0c;假设定义了一个数组 arr1 如下 arr1[1.1 -2.2 3.3 -4.4 5.5] 那…

yolov5 实例分割 jason标注格式转换 训练自己的数据集

目录 一、coco128-seg数据集分析 1、配置文件 coco128-seg.yaml 2、coco128-seg数据集 二、自己用anylabeling标注获得的json文件 三、json文件转coco128-seg格式 四、实例分割训练 1、修改数据配置文件 coco128-seg.yaml 2、训练 一、coco128-seg数据集分析 这个博客中有…

5。STM32裸机开发(3)

嵌入式软件开发学习过程记录&#xff0c;本部分结合本人的学习经验撰写&#xff0c;系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维&#xff0c;为RTOS做铺垫&#xff08;本部分基于库函数版实现&#xff09;&#xff0c;如有不足之处&#xff0c;敬请批评指正。 &…

【探索SpringCloud】服务发现

前言 今天&#xff0c;我们来聊聊SpringCloud服务发现。主要有如下几个议题&#xff1a; 一、服务发现的概念与方案&#xff1b;二、SpringCloud是如何与各个服务注册厂商进行集成的。 服务发现 在微服务架构中&#xff0c;我们不可避免的需要通过服务间的调用来完成系统功能…

Fourier分析入门——第1章——数学预备知识

第 1 章 学习Fourier分析的数学预备知识 目录 第 1 章 学习Fourier分析的数学预备知识 1.1 引言 1.2 几何和代数的一些相关概念的回顾 1.2.1 标量运算(scalar arithmetic) 1.2.2 向量运算(vector arithmetic) 1.2.3 向量乘法(vector multiplication) 1.2.4 向量长度 …

设计模式(java)-观察者模式

1. 简介 观察者模式&#xff0c;行为型设计模式。观察者模式在实际项目实践中&#xff0c;是一种使用较频繁的设计模式&#xff0c;它主要解决的是信息同步的问题&#xff0c;当多个对象需要从同一个主题中得到自身所需要的信息或状态&#xff0c;并通过这些信息或状态做出相应…

以太网外设ETH

1. 概述 近几年&#xff0c;项目需要&#xff0c;在多款单片机上使用了以太网外设。 本文为阶段知识整理&#xff0c;查缺补漏&#xff0c;方便以后再次遇到相关任务时&#xff0c;可以游刃有余的完成工作。 1.1 修改时间 2023年5月6日创建本文。包含STM32的ETH外设。2023年…

利用CNN对车牌进行智能识别(python代码,解压缩后直接运行)

1.代码流程 该段代码主要利用卷积神经网络&#xff08;CNN&#xff09;来识别车牌。下面是代码的主要流程&#xff1a; 导入所需的库和模块&#xff0c;包括matplotlib、numpy、cv2、tensorflow等。 加载用于检测车牌的级联分类器&#xff08;cascade classifier&#xff09;…