软考高级架构师——5、系统规划分析与设计方法

系统计划主要用于描述从项目提出、选择到确立的过程,包括系统项目的提出与可行性
分析,系统方案的制订、评价和改进
,新旧系统的分析和比较,以及现有软件、硬件和数据
资源的有效利用等问题。

1、项目的提出与选择

项目的立项目标和动机

进行基础研究并获取技术

进行应用研发并获得产品

提供技术服务

信息技术产品的使用者

项目的选择和确定
 

选择有核心价值的产品/项目或开发方向

评估项目风险、收益和代价
评估项目的多种实施方式
平衡地选择适合的方案

项目提出和选择的结果
 
系统项目提出和选择的结果, 最终会以“产品/项目建议书”的方式来体现
 

2、可行性研究与效益分析

可行性研究的内容

经济可行性

技术可行性

法律可行性

执行可行性

方案的选择

可行性研究与效益分析

成本效益分析

项目可能涉及的收益

效益分析的若干指标和进一步的分析

可行性分析报告可行性研究报告首先由项目负责人审查(审查内容是否可靠),再上报给上级主管审阅
(评估项目的地位)。从可行性研究报告中应当得出“行或不行”的决断。

3、方案的制订和改进

确定软件架构

 
(1)分析模型的结构(2)一些对应于系统目标的最基本、最重要的实现要素(3)特性和要点的解释。这些附加的内容解释系统的一些特性、服务等是如何实现的。
确定实现的各种关键性要素和实现手段关键性的实现要素通常包括关键的用例、最主要的控制类、功能和服务的首要组织方式(例如网站首页);
对象的组织模式;
常用和最关键的实现算法模型。关键性的实现手段通常包括:
选定基础计算平台,如操作系统、数据库、 Web 服务器、中间件平台等;
选定开发工具和开发环境,如计算机语言、构件库、工具软件等。

归结目标到最适合的计算体系
 
通常,提供开发工具和开发环境的组织总是有一些标准的计算体系可以选择(例如, .NET和 J2EE 等),因此对于大多数系统开发项目来说,比较各种标准计算体系与预期目标之间的匹配程度即可选定计算体系。

4、新旧系统的分析和比较

淘汰策略
第 3 象限为低水平、低价值区,即遗留系统的技术含量较低,且具有较低的商业价值。
对这种遗留系统的演化策略为淘汰 

继承策略
第 4 象限为低水平、高价值区,即遗留系统的技术含量较低,可满足企业运作的功能
或性能要求,但具有较高的商业价值,目前企业业务对该系统仍有很大的依赖性。 对这种遗
留系统的演化策略为继承

改造策略
第 1 象限为高水平、高价值区,即遗留系统的技术含量较高,本身还有较大的生命力,
且具有较高的商业价值,基本上能够满足企业业务运作和决策支持的要求。这种系统可能建
成的时间还很短,对这种遗留系统的演化策略为改造。

集成策略
第 2 象限为高水平、低价值区,即遗留系统的技术含量较高,但其商业价值较低,可
能只完成某个部门(或子公司)的业务管理。
 

5、定义问题与归结模型

问题分析
 

在问题定义上达成共识
理解问题的本质

确定项目干系人和用户

定义系统的边界
确定系统实现的约束
 

问题定义
 

包括目标、功能需求和非功能需求三个方面。
目标是指构建系统的原因,它是最高层次的用户需求,是业务上的需要

功能需求

功能需求是用来指明系统必须做的事情,只有这些行为的存在,才有系统存在的价值。

非功能需求

(1)观感需求(2)易用性需求(3)性能需求(4)可操作性需求(5)可维护性和可移植性需求
(6)安全性需求(7)文化和政策需求( 8)法律需求

 6、需求分析与软件设计

需求分析的任务与过程
 

需求分析阶段的工作可以分成 4 个方面

(1)问题识别
(2)分析与综合
(3)编制需求分析的文档
(4)需求分析与评审

需求的分类:功能需求、非功能需求和设计约束

需求工程:需求开发、需求管理
需求分析方法:结构化分析方法、软系统方法、面向对象分析方法、面向问题域的分析

如何进行系统设计
 
(1)组件的独立性。审视自己设计的系统,是否做到了高内聚、低耦合?
(2)例外的识别和处理。谁能保证系统使用者都精确按照使用说明书使用?
(3)防错和容错。当网络中断、数据库崩溃这样的灾难性事件发生时,系统也跟着崩溃吗?
软件设计的任务与活动
 

(1)概要设计(2)详细设计
Jackson 方法:从数据结构导出模块结构;

Parnas 方法:将可能引起变化的因素隐藏
在有关模块内部,使这些因素变化时的影响范围受到限制,它只提供了重要的设计准则,但没有规定出具体的工作步骤。

7、结构化分析与设计

结构化分析方法的基本思想是自顶向下逐层分解

结构化分析工具

数据流图( Data Flow Diagram, DFD)、数据字典( DataDictionary, DD)、结构化语言、判定表、判定树

结构化分析的工作步骤

(1)研究“物质环境”(2)建立系统逻辑模型(3)划清人机界限

数据流图

(1)数据流图的层次

 (2) Context 图

 (3)逐级分解

 (4)DFD0 层图
 

结构化设计:

结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据
流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模
块化的过程。

概要设计:设计软件的结构、确定系统是由哪些模块组成,以及每个模块之间的关系。采用结构图(包括模块、调用、数据)来描述程序的结构,此外还可以使用层次图和 HIPO(层次图加输入/处理/输出图)

详细设计:确定应该如何具体地实现所要求的系统,得出对目标系统的精确描述。它采用自顶向下、逐步求精的设计方式和单入口单出口的控制结构。常使用的工具包括程序流程图、盒图、 PAD(Problem Analysis Diagram,问题分析图)、 PDL(ProgramDesign Language,程序设计语言)

模块设计:

模块化是一个很重要的概念,它是将一个待开发的软件分解成为若干个小的简单部分——模块,每个模块可以独立地开发、测试。这是一种复杂问题的“分而治之”原则,其目的是使程序的结构清晰、易于测试与修改

1.信息隐蔽原则
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单
一的设计模块中,并且尽可能少地暴露其内部的处理。

2.模块独立性原则

 

 8、面向对象的分析与设计

面向对象的基本概念

对象是系统中用来描述客观事物的一个实体

则是对具有相同属性和服务的一个或一组对象的抽象

        实体类:实体类映射需求中的每个实体

        边界类:边界类用于封装在用例内、外流动的信息或数据流。边界类用于系统接口与系统外部进行交互

        控制类:控制类是用于控制用例工作的类。控制类没有属性,但一定有方法

继承与泛化

        继承:说明特殊类(子类)与一般类(父类)的关系。“交通工具”是“自行车”和“小轿车”的泛化

        泛化:一般类与特殊类的关系。自行车”和“小轿车”从“交通工具”中继承。
 

 多态与重载

 模板类:类属类,它用来实现参数多态机制。一个类属类是关于一组类的一个特性抽象,
它强调的是这些类的成员特征中与具体类型无关的那些部分,而用变元来表示与具体类型有
关的那些部分。

消息和消息通信:消息就是向对象发出的服务请求,它通常包括提供服务的对象标识、消息名、输入信息和回答信息。

面向对象分析

面向对象分析的目标是开发一系列模型,这些模型描述计算机软件,当它工作时以满足
一组客户定义的需求。对象技术的流行,演化出了数十种不同的 OOA 方法,每个方法都引
入了一个产品或系统分析的过程、一组过程演化的模型及使软件工程师能够以一致的方式创
建每个模型的符号体系。

1. OOA/OOD 方法

OOA 模型中包括主题、对象类、结构、属性和服务 5 个层次,需经过标识对象类、标识结构与关联(包括继承、聚合、组合、实例化等)、划分主题、定义属性、定义服务 5 个步骤来完成整个分析工作。

2. Booch 方法

Booch 认为软件开发是一个螺旋上升的过程,每个周期中包括标识类和对象、确定类和
对象的含义、标识关系、说明每个类的接口和实现 4 个步骤

 3. OMT 方法

OMT 是对象建模技术的缩写,它是由 Jam Rambaugh 及其同事合作开发的,它主要用
于分析、系统设计和对象设计。包括对象模型(静态的、结构化的系统的“数据”性质,通
常采用类图)、动态模型(瞬时的、行为化的系统“控制”性质,通常使用状态图)和功能
模型(表示变化的系统的“功能”性质,通常使用数据流图)。 OMT 方法的三大模型如表 8-6
所示

 4.OOSE 方法

OOSE 是面向对象软件工程的缩写,它是由 Ivar Jacobson 提出的。它在 OMT 的基础
上,对功能模型进行了补充,提出了“用例”的概念,最终取代数据流图进行需求分析和建
立功能模型。

统一建模语言

统一建模语言(Unified Modeling Language, UML)是用于系统的可视化建模语言,它将
OMT、 OOSE 和 Booch 方法中的建模语言和方法有机地融合在一起,是国际统一的软件建
模标准。

UML 是一种语言、一种可视化语言、一种可用于详细描述的语言

UML 的结构:

构造块
 
建模元素包括结构事物(类、接口、协作、用例、活动类、组件、节点等)、行为事物(交
互、状态机)、分组事物(包)、注释事物
关系包括关联关系、依赖关系、泛化关系、实现关系

静态模型:类图、对象图、包图、构件图、部署图、制品图
动态模型:对象图、用例图、顺序图、通信图、定时图、状态图、活动图、

交互概览图

公共机制规格说明规格说明是元素语义的文本描述,它是模型的重要组成部分
修饰UML 为每一个模型元素设置了一个简单的记号,还可以通过修饰来表达更多的信息。
公共分类包括类元与实体(类元表示概念,而实体表示具体的实体)、接口和实现(接口
用来定义契约,而实现就是具体的内容)两组公共分类
扩展机制包括约束(添加新规则来扩展元素的语义)、构造型(用于定义新的 UML
建模元素)、标记值(添加新的特殊信息来扩展模型元素的规格说明)
架构
 
逻辑视图:以问题域的语汇组成的类和对象集合。
进程视图:可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例。
实现视图:对组成基于系统的物理代码的文件和组件进行建模。
部署视图:把组件物理地部署到一组物理的、可计算的节点上。
用例视图:最基本的需求分析模型。

用例图

包含关系:当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个组
件来实现某一个用例的部分功能是很重要的事时,应该使用包含关系来表示。所提取出来的
公共行为称为抽象用例。包含关系的例子如图 8-13 所示。

扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多
种事情。可以将这个用例分为一个主用例和一个或多个辅用例,描述可能更加清晰。扩展关
系的例子如图 8-14 所示。

      

 类图和对象图

 ① 依赖关系。有两个元素 X、Y,如果修改元素 X 的定义可能会引起对另一个元素 Y 的
定义的修改,则称元素 Y 依赖于元素 X。在 UML 中,使用带箭头的虚线表示依赖关系。

② 泛化关系。泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父
类与子类之间的关系。继承关系是泛化关系的反关系,也就是说子类是从父类中继承的,而
父类则是子类的泛化。在 UML 中,使用带空心箭头的实线表示,箭头指向父类。

③ 关联关系。关联表示两个类之间存在某种语义上的联系。例如,一个人为一家公司
工作,一家公司有许多办公室。就认为人和公司、公司和办公室之间存在某种语义上的联系。

④ 实现关系。实现关系是用来规定接口和实现接口的类或组件之间的关系的。接口是
操作的集合,这些操作用于规定类或组件的服务。在 UML 中,用一个带空心箭头的虚线表
示。

交互图

顺序图
 
顺序图用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。

 
通信图
 
通信图用于描述相互合作的对象间的交互关系和链接关系,顺序图着重体现交互的时间顺序,
通信图则着重体现交互对象间的静态链接关系。

 
定时图
 
如果要表示的交互具有很强的时间特性(例如,现实生活中的电子工程、
实时控制等系统中),在 UML 1.X 中是无法有效地表示出来的。而在 UML 2.0 中引入了一
种新的交互图来解决这类问题,这就是着重表示定时约束的定时图
状态图
 

用来描述一个特定对象的所有可能状态及其引起状态转移的事件。大多数面向对象技术
都用状态图表示单个对象在其生命周期中的行为。一个状态图包括一系列的状态及状态之间
的转移。

 

活动图
 
活动图的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和
对象内部的工作过程。活动图是由状态图变化而来的,它们各自用于不同的目的。
带泳道的活动图
 
对象流
 
在活动图中可以出现对象。对象可以作为活动的输入或输出,对象与活
动间的输入/输出关系由虚线箭头来表示。如果仅表示对象受到某一活动的影响,则可用不
带箭头的虚线来连接对象与活动。
 
信号
 
在活动图中可以表示信号的发送与接收,分别用发送和接收标识来表示。
发送和接收标识也可与对象相连,用于表示消息的发送者和接收者。
 
构件图
 
构件图是面向对象系统的物理方面进行建模要用的两种图之一。它可以有效地显示一组
构件,以及它们之间的关系。构件图中通常包括构件、接口及各种关系。
部署图
 

部署图,也称为实施图,它和构件图一样,是面向对象系统的物理方面建模的两种图之
一。

 9、用户界面设计

 接口设计主要包括三个方面的内容:一是设计软件构件间的接口;二是设计模块和其他
非人的信息生产者和消费者(如外部实体)的接口;三是人(如用户)和计算机间界面设计。

 

1 用户界面设计的原则置用户于控制之下、减少用户的记忆负担

 
2 用户界面设计过程
 
用户界面的设计过程也应该是迭代的,它通常包括 4 个不同的框架活动

 10、工作流设计

 工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则、文档、信息或任务在不同的执行者之间传递、执行 

 11、 简单分布式计算机应用系统的设计

 12、系统运行环境的集成与设计

  •  1.集中式系统
  • 2.分布式系统
  • 3. C/S 结构
  • 4.多层结构
  • 5.Internet、 Intranet 和 Extranet:Intranet 是私有网络,只限于内部使用,也使用 TCP/IP
  • 协议。 Extranet 是一个扩展的 Intranet。它包括企业之外的和企业密切相关合作的其他企业。
     

13、系统过渡计划

1.直接过渡:新系统运行时,立即关闭原来的系统

2.并行过渡:让新系统和旧系统在一段时间里同时运行,通过这样的旧系统作为新系统的备份,可以大大降低系统过渡的风险

3.阶段过渡
 

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

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

相关文章

Linux 终端命令之文件浏览(2) more

Linux 文件浏览命令 cat, more, less, head, tail,此五个文件浏览类的命令皆为外部命令。 hannHannYang:~$ which cat /usr/bin/cat hannHannYang:~$ which more /usr/bin/more hannHannYang:~$ which less /usr/bin/less hannHannYang:~$ which head /usr/bin/he…

vue复习。从安装到使用

vue官网:cn.vuejs.org vue安装 cnpm install -g vue/cli 查看是否安装成功 vue --version 创建一个项目 vue create vue-demo(项目名称) 这个取消掉。空格可选中或者取消。 运行项目: cd 进入到项目下 npm run serve 运行成功后,访问这…

数据安全加固:深入解析滴滴ES安全认证技术方案

前文分别介绍了滴滴自研的ES强一致性多活是如何实现的、以及如何提升ES的性能潜力。由于ES具有强大的搜索和分析功能,同时也因其开源和易于使用而成为黑客攻击的目标。近些年,业界ES数据泄露事件频发, 以下是一些比较严重的数据泄露案件: 202…

《机器学习系统:设计与实现》读书笔记一

最近几年一直在做算法工程的工作,对机器学习系统有所涉猎,也很感兴趣。近期发现一本开源书籍《机器学习系统:设计与实现》。去图书馆找了它的纸质版,发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇,主…

【RocketMQ入门-安装部署与Java API测试】

【RocketMQ入门-安装部署与Java API测试】 一、环境说明二、安装部署三、Java API 编写Producer和Consumer进行测试四、小结 一、环境说明 虚拟机VWMare:安装centos7.6操作系统源码包:rocketmq-all-5.1.3-source-release.zip单master部署,在…

冶金作业VR虚拟仿真厂家

对于高风险行业来说,开展安全教育培训是企业的重点工作,传统培训逐渐跟不上时代变化和工人需求,冶金安全VR模拟仿真培训系统作为一种新型的教育和培训工具,借助VR虚拟现实技术为冶金行业的工人提供一个安全、高效的培训环境。 冶金…

后端开发9.商品类型模块

概述 简介 商品类型我设计的复杂了点,设计了多级类型 效果图 数据库设计 创建表 DROP TABLE IF EXISTS &

c语言每日一练(6)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

ubuntu supervisor 部署 python 项目

ubuntu supervisor 查看系统是否可用 cuda 初环境与设备安装 supervisor 环境创建 Supervisor 配置文件启动 Supervisor 服务管理项目 本篇文章将介绍 ubuntu supervisor 部署 python 项目 Supervisor 是一个用于管理和监控进程的系统工具。它的主要功能是确保系统中的进程持续…

Kuebernetes资源控制管理

第四阶段 时 间:2023年8月11日 参加人:全班人员 内 容: Kuebernetes资源控制管理 目录 Kubectl命令工具 一、kubectl 命令行的语法 二、kubectl命令列表 三、使用 Kubectl 工具容器资源 (一)创建Pod &…

腾讯云CVM服务器2核2g1m带宽支持多少人访问?

腾讯云2核2g1m的服务器支持多少人同时访问?2核2g1m云服务器短板是在1M公网带宽上,腾讯云服务器网以网站应用为例,当大规模用户同时访问网站时,很大概率会卡在公网带宽上,所以压根就谈不上2核2G的CPU内存计算性能是否够…

MATLAB算法实战应用案例精讲-【图像处理】图像分类模型Swin TrasnformerViT

目录 Swin Trasnformer 1. 模型介绍 2. 模型结构 3. 模型实现 4. 模型特点 5. 模型效果 ViT( Vision Transformer) 模型介绍 模型结构与实现 1. 图像分块嵌入 2. 多头注意力 3. 多层感知机(MLP) 4. DropPath 5. 基础模块 6. 定义ViT网络 …

分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)

文章目录 01. Kafka 消费者分区再均衡是什么?02. Kafka 消费者分区再均衡的触发条件?03. Kafka 消费者分区再均衡的过程?04. Kafka 如何判定消费者已经死亡?05. Kafka 如何避免消费者的分区再均衡?06. Kafka 消费者分区再均衡有什…

MATLAB从文件得出数据并计算吸收光谱

这一系列就是科研用的真实程序了,也是对自己的一个备忘录 真的收购每次都重写了 但真的文件太多了找不到啊!!! 好吧是我废物 废话不多说,这就开始 基础的清理: clear clc close all 读取文件中的数据…

SpringBoot案例-部门管理-修改

目录 前言 查看页面原型,明确需求 页面原型 需求 阅读接口文件 思路分析 功能接口开发 控制层(Controller类) 业务层(Service类) 业务类 业务实现类 持久层(Mapper类) 接口测试 前…

LNMP环境介绍和搭建

一.LNMP简介 1.含义 2.工作原理 二.部署LNMP环境 1.Nginx环境 (1)上传nginx包,下载编译安装工具并解包到指定目录(tar 参数 tar包 - C 目录路径) (2) 开始编译安装,每次编译后…

HTTP代理编程:Python实用技巧与代码实例

今天我要与大家分享一些关于HTTP代理编程的实用技巧和Python代码实例。作为一名HTTP代理产品供应商,希望通过这篇文章,帮助你们掌握一些高效且实用的编程技巧,提高开发和使用HTTP代理产品的能力。 一、使用Python的requests库发送HTTP请求&a…

25. K 个一组翻转链表

25. K 个一组翻转链表 题目-困难难度示例1. 链表转列表 -> 计算 -> 列表转链表2. 反转合并 题目-困难难度 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果…

mac harbor的安装

harbor的安装 为什么要整这个呢,因为我在学习k8s,但是需要一个自己的镜像仓库。于是,最开始想到的就是在本地直接部署一个,还比较安全、快速。 直接下载了官方的项目,运行脚本发现出了异常,这种异常我已经…

Ajax 笔记(一)—— Ajax 入门

笔记目录 1. Ajax 入门1.1 Ajax 概念1.2 axios 使用1.2.1 URL1.2.2 URL 查询参数1.2.3 小案例-查询地区列表1.2.4 常用请求方法和数据提交1.2.5 错误处理 1.3 HTTP 协议1.3.1 请求报文1.3.2 响应报文 1.4 接口文档1.5 案例1.5.1 用户登录(主要业务)1.5.2…