[架构之路-141]-《软考-系统架构设计师》-如何“从无到有”设计一个信息系统

前言:

如何“从无到有”设计一个企业信息系统?本文将探索这个话题。

第1章 目标对象:什么是企业信息系统?

1.1 企业信息化战略

备注:

在实际企业中,并不一定是企业信息化软件系统,也可以数字化系统、也可以是新产品。

企业信息化,并不一定是自己开发软件系统,也可以是外购来构建企业信息化系统。

信息系统规划属于项目开发的前端,在需求分析之前就开始了。通常是产品部门或规划部门的职责。

备注:

单系统开发,可以是自研一个软件系统,也可以是从无到有构建一个软件系统。

构建一个信息化系统时,可以是甲方,也可以是乙方,也可以是自研外销,因此信息化系统,不仅仅用于软件研发企业,也适合任何需要信息化系统辅助企业战略的企业、公司、政府机构等。

实施可以是自研,也可以外购、外包等形式,

信息化,无论是甲方,还是乙方,都是为了完成目标企业的战略目标。

甲方实施信息化:是为了满足自身的战略需求和业务重组、优化。

乙方开发信息化系统:满足客户信息化的需求,同时也实现自身组织的价值。

备注:信息化是为企业业务服务的,不能为了信息化而信息化。

1.2 信息战略规划、实施步骤

第一阶段:内部数字化

第二阶段:内部集成化

第三阶段:内外集成化

1.3 政府信息化

1.4 企业信息化体系

1.5 企业信息应用

备注:

信息系统应用包括:

  • 用于企业运营管理的通用软件系统,如ERP, 供应链管理等等。

  • 用于企业运营生成的专有软件系统,如银行、化工、通信、生产等,都是行业特定应用软件。

第2章 系统规划:对信息系统项目启动前的系统规划

2.1 步骤

2.2 可行性分析

2.3 成本分析

第3章 软件工程:利用软件工程的思想指导新开发的信息系统的软件项目研发

3.1 信息系统生命周期

需求分析:企业业务的需求分析,而不是信息系统的需求分析,输出是立项书。

总体规划:又称为系统规划/计划,输出是可行性研究报告。

系统分析:系统需求分析,输出是需求规格说明书。

3.2 信息系统开发方法

结构化:按照时间阶段进行结构化划分,适合需求非常明确,可以逐步分解的仓和。

原型:适合需求不明确的场合。

备注:

  • 首先,在现有的系统上恢复系统的抽象模型。

  • 然后,对现有模型进行优化,设计出新的符合自身业务需求的系统。

  • 最后,基于新的模型,开发出新的软件系统。

3.3 软件开发模型(单一软件)

3.3.1 概述

软件模型:是开发过程某种约定和套路。

模型是是开发方法的进一步细化和落地,是最佳实践的总结与抽象。

因此,开发模型是构建在开发方法之上的。

3.3.2 瀑布模型开发方法
3.3.3 增量模型与螺旋模型开发方法
3.3.4 V模型与喷泉模型开发方法
3.3.5 组件组装模型开发方法
3.3.6 统一过程模型UML开发方法
3.3.7 敏捷开发方法
3.3.8 逆向工程开发方法
3.3.9 净室软件工程开发方法
3.3.10 基于架构的软件开发方法ABSD:架构驱动开发

基于架构驱动软件开发的方法论。

这种开发方法,以架构为核心,从软件领域模型、到软件需求、到架构设计、以及软件测试、软件评估,

备注:

架构中包含的设计的各种组件,需要进一步完成组件/构件的设计和实现。

3.4 软件产品线(系列化软件)

软件产品线(software product line)是指具有一组可管理的公共特性的软件密集性系统的合集。

软件产品线是指具有一组可管理的公共特性的软件密集性系统的合集。

软件产品线是指具有一组可管理的公共特性的软件密集性系统的合集,这些系统满足特定的市场需求或任务需求,并且按预定义的方式从一个公共的核心资产集开发得到。

软件产品线:适合行业软件的开发

备注:

大平台的开发就是一种核心资源的开发。

产品开发注重满足客户的需求的产品。

第4章 项目管理:利用项目管理的技术对软件开发过程进行项目管理

4.1 范围管理

4.2 时间管理

4.3 成本管理

4.4 质量保证

4.5 配置管理

4.6 变更控制

4.7 风险管理

第5章 需求分析:利用需求工程的技术对信息系统进行需求分析

5.1 需求工程

需求:功能、性能、行为、约束条件

5.2 需求分类

业务:目标,宏观业务角度提出的概述性的需求

用户:行为,细化后的用户行为需求,从用户操作的角度提出的需求。

功能:细化后的软件需求,从软件实现的角度提出的需求。

系统:功能、性能、约束

5.3 需求获取

5.4 需求分析:结构化需求分析

适合结构化软件开发方法,在结构化软件开发流程中,处于需求分析阶段。

5.4.1 数据流图

功能:外部实体、数据流、数据加工

行为:外部实体、状态图、消息交互图

实体:内部实体、关系、联系

备注:数据流图,与硬件原理图类似!!!

类似与绘制硬件原理图

5.4.2 状态转换图
5.4.3 E-R模型

5.5 需求分析:面向对象需求分析

适合面向对象的软件开发方法,在面向对象的软件开发方法流程中,处于需求分析阶段。

5.5.1 基本概念

多态:继承于相同的父类的不同的子类对象,通过父类指针传递相同的消息,不同的子类对象,执行不同的功能。

5.5.2 UML语言
5.5.2.1 概述

备注:在面向对象中,实体/事物不仅仅是名词,还包括动词。

名词:结构性事物、分组事物、注释事物

动词:动作、行为性事物

5.5.2.2 UML静态结构图 + 动态行为图

备注:

用例图被定为动态图还是静态图是有争议的。

软考中,把用例图定义为动态图。

5.5.2.3 UML 4+1视图

视图的目的是化繁为简、从不同的角度展示目标软件系统。

5.5.2.4 用例图

5.5.2.5 类与对象图
5.5.2.6 顺序图
5.5.2.7 通信图/协作图
5.5.2.8 活动图 + 泳道

备注:类似流程图

备注:多进程之间有相互协助关系的流程图。

5.5.2.9 状图图
5.5.2.10 构建图

备注:封装后的类与它的接口。

5.5.2.11 部署图
5.5.3 需求建模

5.6 需求定义:把需求分析的结果文档化

形态:SRS需求规格说明书

  • 文本

  • 图形

5.7 需求验证

5.8 需求基线

5.9 需求跟踪

5.10 需求风险管理

  • 人:客户、需求分析人员、管理人员

  • 内容:变、多、不准确

  • 形式:精简

第6章 系统设计:利用架构设计技术对信息系统进行系统架构设计

6.1 业务处理流程

输入:业务流程分析

6.1.1 IDEF处理流程设计

6.2 软件架构定义

6.3 软件架构风格

6.4 结构化设计:概要设计、详细设计

6.5 面向对象设计

6.5.1 基本过程
6.5.2 基本原则
6.5.3 设计模式
6.5.3.1 基本概念
6.5.3.2 创建性模式
6.5.3.3结构性模式
6.5.3.3 行为性模式
6.6 人机界面设计
6.7 Web应用设计
6.7.1 概述
6.7.2 单机Web Server
6.7.3 Web应用服务器集群
6.7.4 负载均衡
6.7.5 web server状态
6.7.6 读写分离
6.7.7 内存缓存/内存数据库
6.7.8 内容分发网络
6.7.9 XML和Jason数据表示格式
6.7.10 Web应用服务器与应用的分离
6.7.11 Web缓存技术
6.7.12 REST
6.7.13 响应式Web设计
6.7.14 定时图

第7章 软件架构设计:利用软件架构设计的方法设计软件系统的架构

7.1 软件架构的概念

架构是业务需求的在软件功能上的分配

架构是软件系统越来越丰富、种类越来越多之后的产物。

架构和框架的区别

  • 架构Architecture:是目标软件系统的抽象,不涉及到软件代码。

  • 框架Framework:是目标软件系统的框架,是代码的实现,在此代码框架下,很容易扩展新的功能。

备注:

软件架构提供了软件系统在结构、行为、属性的高级抽象!!!

7.2 软件架构的发展史

备注:

4+1是UML的升级和简化

7.3 软件架构中不同视图的架构

基本思想:分解、拆解、化繁为简、抽象

7.3.1 架构视图的种类

框架模型:反映的是软件的整体结构

静态结构模型:反映各种功能组件的关系(横向)

静态功能模型:分层模型 (纵向)

动态行为模型:系统的对外行为

过程模型:构建目标系统的步骤和过程

7.3.2 4+1视图模型

备注:不同的视图,反应了不同视角的架构展示。

7.4 架构风格:15种基础架构风格

架构风格:是一类经典业务问题的、通用的软件解决方案。

复杂软件系统中,是各种风格的有机组合、混合!!!复杂系统,很少见到单一风格。

软件架构类似公司的组织架构!!!

复用是软件系统永恒的追求,架构设计的核心问题:架构级的复用!!!

架构就是软件系统众多结构和语义的抽象!!!

因此,抽象的能力是架构的关键!!!

7.4.1 数据流风格(串行结构:环环相扣)

数据流风格没有一个统一的集中调度者,每个环节是环环相扣,它们之间只是先有处理的时序关系,没有主从关系。

数据流风格适合:对数据进行pipeline处理的场合,如数据通信、网络数据协议栈、5G通信中的数据面、控制面、管理面、同步面等各个面的数据处理+严格的处理流程!!!!

网络播放器一边下载,一边播放,就是流式处理!!!

7.4.2 调用返回风格(树形层次结构:统一调度)

调用返回风格,在现有的软件系统中,无处不在,main函数调用各种子函数、网络协议栈,都是调用返回风格。

分层的目的:降低耦合度!!!

分层的缺陷:数据在层与层之间传递,需要有额外的开销以及数据的拷贝,会牺牲系统的性能!!!

7.4.3 独立构件风格/隐式调用:没有直接依赖关系的、独立的、并行结构

备注:

注册和通知机制,就是独立架构风格。

应用程序、组件Component之间相互解耦,每个组件与中间管理者关联。

QT UI的事件与slot函数调用之间的关系,就属于隐式调用。

7.4.4 虚拟机风格:规则和执行分离

如IPTable机是基于规则的系统架构!!!

解释器或规则解析系统对动态创建的规则和代码进行解释!!!

能够根据指定或可编排的任务和顺序进行执行程序也属于解释器风格。

7.4.5 仓库风格:以待处理的数据为中心

分布式数据库就是采用这种风格的架构

黑板:就相当于一个全局的数据库,所有的程序都监控全局数据库!!!

备注:

黑板系统与数据库系统总体结构是一致的。

不同的是:黑板的目的不是存储数据,而是为了广播信息、传递。

黑板内容的变化会引发观察者行为的变化!!!!

7.4.6 闭环控制风格: 自动化控制

适合于工业控制领域,不如恒定温度控制,如PID控制等 。

7.4.7 C2构件风格:并行构建通过连接件连接
7.4.8 层次架构风格:网络客户单服务器架构CS/BS架构

层次架构风格归属于调用返回风格。

备注:

把容易变化的后台业务处理部分,从客户端平移到服务器端执行,这样增加了系统的可修改性。

因为在服务器端改动逻辑的灵活性远远大于在分布式的客户端修改程序。

CS架构,需要在客户端安装客户端程序!!!

7.4.9 MVC架构风格:图形化界面

View:前台显示

Controller:后代业务逻辑处理

Model:数据库访问

7.4.10 MVP架构风格
7.4.11: MVVM架构风格
7.4.12 富互联网应用RIA架构风格

远程从服务器下载程序到本地,然后在本地执行。

7.4.13 基于分布式服务的架构SOA

备注:

  • 服务是架构在构件之上

  • 服务是规范化后的构件

  • 服务是可用独立部署的构件

  • 各种服务通过企业服务总线ESB(中介者)连接起来

  • 应用程序通过ESB访问各种服务

  • 服务与服务之间是松散耦合

  • 服务:服务的提供者,网络中有大量的服务的提供者

  • 应用程序性:服务的使用者,少量的服务的使用者

备注:分层协议

7.4.14 微服务架构风格

备注:

容器、自动化部署为微服务的普及提供的底层的技术基础。

敏捷团队、敏捷思想:为微服务的开发提供了组织和文化基础!!!

备注:

7.4.15面向对象:模型驱动架构的风格MDA

7.5 架构描述语言

备注:ADL是使用的是伪语言,图形描述语言。

7.6 行业软件:特定领域软件架构DSSA(Doamin Spefic Software Architecture)

DSSA关注的是行业软件的通用架构!!!!

备注:

就是以架构为导向,把行业领域的共性特征,抽离出来,形成通用的行业软件架构过程,就是特定领域软件架构设计,得到的架构就是特定领域软件架构

实际上,各行业都有专门的软件人员或公司在设计和软件行业软件的通用架构,以支撑行业的各种应用。

有些公司是专门做行业平台,为行业应用提供通用的解决方案,这种方案是通用的,有些公司都在行业应用。

而有些大公司,既做自己企业内部的行业平台,这种平台是企业专有的,也做自己的行业应用。

绝大部门软件,最终都是在行业内得到体现了!!!!

在通用个人电脑开发的软件,如PC机,办公软件,都是通用软件。

而解决特定行业应有的软件,如化工、生产、银行等,都属于特定的行业软件,产生的软件架构,就是行业软件架构!!!!

这个领域的架构需要的技能:

  • 领域知识 =》 系统需求

  • 公共架构知识 =》 可复用的软件架构

备注:

上述各种人员,包括软件开发人员,都需要领域技能知识。

7.8 软件架构评估与软件系统质量

通过评软件架构的质量,来推测软件系统的质量。

软件架构的质量是通过软件功能性和非功能性质量来评估的!!!

7.8.1 影响软件质量的主要因素
  • 软件开发流程的流程本身的质量

  • 流程的完备程度

  • 流程的复杂度

  • 软件开发流程中每个环境输出的质量

  • 软件需求(功能与非功能需求)的质量

  • 架构的质量

  • 软件编程的质量

  • 测试的质量

  • 软件开发流程中每个环节人的质量

  • 技能水平

  • 工作态度

  • 项目管理的质量

7.8.2 软件架构评估的依据:“三点”
  • 风险点:影响大

  • 敏感点:敏感

  • 权衡点:多方权衡

7.8.3 质量属性

可靠与可用性是具有相同的因素,又是不完全相同的概念

相同点:

  • 可用和可靠都关注软件能够持续为用户提供服务的能力

不同点:

  • 可用性:关注正常场景下提供服务的能力

  • 可靠性:关注异常场景下提供服务的能力

7.8.4 软件架构评估的方式:“三式”
  • 调查表:定性、主观,获取专家的经验与意见

  • 量化度量:定量,难度大

  • 场景评估:先细化业务应用场景,客观性,获取专家的经验与意见,应用广

备注:

第一阶段:用文字描述和语言交流的形式获取场景。

第二阶段:用图形和视图的形式展现场景。

第三阶段:确定场景中的软件质量属性

第四阶段:相互制约的质量因素进行折中,需求是无限的,必须进行优先级排序和折中,有所取舍!!!

  • 场景的优先级

  • 质量属性的优先级

第8章 硬件设计:计算机组成与体系结构

8.1 编码

8.2 体系结构分类(数据流与指令流的关系)

8.3 CISC与RISC

8.4 流水线

8.5 层次化存储结构

8.6 局部性原理

8.7 编址

8.8 磁盘结构

8.9 总线

8.10 校验

8.11 可靠性指标(串联、并联)

8.12 性能指标

8.13 嵌入式系统硬件架构

第9章 操作系统设计:了解操作系统原理,选择操作系统

9.1 进程管理

(1)同步:等

(2)互斥:抢

9.2 存储管理

9.3 文件管理

9.4 微内核

第10章 数据库设计:利用数据库设计原理,设计数据库系统

10.1 三级模式-两层映射

备注:

分层的目的是用来应对变化。

映射就是用来不同的层之间进行映射,通过映射,实现了不同层之间的隔离。

10.2 数据库设计四步骤:分析、概念设计(ER模型)、逻辑设计(关系)、物理设计(OS+硬件)

10.3 ER模型

10.4 关系代数

10.5 并发控制

10.6 数据库完整性、安全性

10.7 数据库备份与恢复

10.8 分布式数据库

10.9 数据库性能优化

11.10 大数据

第11章 网络设计:网络通信原理,选择网络协议栈、设置网络架构

11.1 TCP/IP协议栈

11.2 网络故障诊断命令

11.3 需求分析

11.4 分层设计

11.5 网络接入技术

11.7 IPV6

11.6 物联网

11.7 云计算

11.8 综合布线系统

第12章 系统安全分析与设计:安全性相关功能的设计

12. 1 对称加密

12.2 非对称加密

12.3 数字签名

12.4 安全协议

12.5 网络攻击

12.6 病毒与木马

第13章 中间件技术:利用中间件技术来构件中间件平台

13.1 中间件(屏蔽、分布式、简化App)

中间件的意义:

  • 分布式应用程序(对等模型、客服服务器模型)之间的共享资源与通信

  • 屏蔽硬件、操作系统、网络、数据库的差异

  • 简化了应用程序的开发和运行

13.2 构件(标准、独立、可替代)

构件:是一组相关类的对象和结构体变量的集合体。

程序 = 算法 + 数据结构 =》面向对象

面向功能:功能行为函数算法/操作为核心

面向数据:以表达数据的数据结构为核心,如XML, Jackson

面向对象:对象是数据和功能行为的封装体

复用性:面向对象的封装性使得面向对象技术更适合复用性。

13.3 中间件的优点

13.4 远程过程调用中间件

13.5 远程方法调用中间件

13.6 对象请求代理中间件

13.7 面向消息的中间件

13.8 事务处理中间件

13.9 中台

备注:

中台的本质是它代表企业的核心能力!!!

小前台:直接面向用户、异变、赚钱 (如在激光器行业,就是各种激光器的应用项目)

中台:核心能力、核心价值、不可替代、借助小前台赚钱 (如在激光器昂也,就是核心的激光器产品)

要打造:大中台、小平台的运营模式!!!

备注:

淘宝和天猫:是前台 (是树叶)

交易中心、商品中心是:中台 (是树干)

阿里云平台:是后台(是基础、是根基、是树根)

一个好的模式是:大中台、小前台、稳后台

第14章 互联网应用架构:利用应用架构技术设计应用程序架构

14.1 分布式多层应用程序

客户层:UI层、业务应用层

Web层:Web协议层

业务层:业务相关的后台处理

数据层:应用相关的数据,存放在数据库中

14.2 J2EE

14.3 Web应用架构设计

14.4 负载均衡技术

14.5 有无状态

14.6 数据库的读写分离技术(读库、写库)

14.7 数据缓存技术

数据缓存:把数据暂时存放在内存中,而不需要存放在物理数据库中。

数据缓存:本质是一种数据库,又称为内存数据库,这是相对于硬盘数据而言的。内存数据库的问题时,掉电后,数据就丢失,不可恢复!!!

14.8 内容分发网络

14.9 数据表示XML与JSON

14.10 应用服务器(后台)

14.11 表述性状态传递RESTFUL

第15章 编码实现:利用编程技术对信息系统进行编程实现

(1)编程语言: C++, C,Java, Python

(2)编程技巧

(3)业务逻辑

第16章 软件测试:利用测试技术对信息系统进行测试

16.1 测试类型

黑盒:程序的外部接口

白盒:程序的内部流程

16.2 用例设计

16.3 测试阶段(不同阶段,不同的测试类型)

16.4 面对对象测试

16.5 软件调试

第17章 其他考虑:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值