感悟网 导航

如何软件系统设计(软件系统设计流程)

作者&投稿:戎殃 (若有异议请与网页底部的电邮联系)
~

一、善用UML工具

用例图

用于需求分析阶段,从用户角度描述系统功能。

用例图

静态图:类图、对象图、包图

静态图

交互图-时序图(注重时间)

常用组合片段:选项(Opt)、循环(Loop)、并行(Par)、抉择(Alt)、中断(Break)

时序图

交互图-协作图(注重对象)

协作图

行为图-状态图(注重状态)

状态图

行为图-活动图(注重活动)

活动图

实现图-组件图

组件图

实现图-部署图

部署图

二、遵从设计原则

设计模式基础

单一职责:一个类只负责一个职能;

里氏转换:在子类中不应重写、重载父类的方法,子类要能替代父类;

接口隔离:不依赖不需要的接口,拆分大接口;

迪米特法则:一个对象应该对其他对象保持最少的了解(低耦合);

开放封闭:对扩展开放,对修改关闭;

依赖倒置:抽象不应该依赖细节,细节应该依赖抽象,即针对接口编程,所有依赖关系都终止于抽象类或接口,不要对实现编程。

设计模式

创建型

工厂方法(FactoryMethod)、抽象工厂(AbstractFactory)、建造者(Builder)、单例(Singleton)、原型(Prototype)。

结构型

组合(Composite)、代理(Proxy)、外观(Facade)、适配器(Adapter)、装饰(Decorator)、桥接(Bridge)、享元(Flyweight)。

行为型

策略(Strategy)、模板方法(Temple

Method)、观察者(Observer)、状态(State)、备忘录(Memento)、迭代器(Iterator)、命令(Command)、责任链(Chain

Of)、中介者(Mediator)、访问者(Visitor)、解释器(Interpreter)。

分布式设计原则

高可用

降级、限流(漏桶-平滑、令牌桶-可突发、环形队列滑动窗口)、切流、熔断、回流、可回流、超时、隔离(线程、读写、资源、热点、爬虫)、负载均衡。

高并发

无状态、拆分、服务化、队列、数据异构(异构->原子化->聚合->缓存)、缓存、并发化(Future、Callback、CompletableFuture)、池化。

业务设计

防重、幂等、规则引擎、状态机、审计、审批。

分布式理论

CAP:一致性、可用性、分区容错性(三选二);

BASE:基本可用、软状态、最终一致性;

ACID:原子性、一致性、隔离性、持久性。

一致性原则

XA协议:准备->提交(具有阻塞、协调者单点、脑裂等缺点);

XA三段协议:询问->准备->提交;

TCC:try->confirm/try->cancel锁定->确认/释放;

最终一致性:查询、补偿、定期校对、可靠消息、缓存一致性。

超时处理

原则:谁超时谁处理,即接口调用超时,查询补偿;接口调用成功后,接口内部服务超时须自己补偿。

两状态同步接口(OK/ERR):接口调用超时,调用方查询补偿;接口内部服务超时,内部快速失败冲正;

三状态同步接口(OK/ING/ERR):接口调用超时,调用方查询补偿;接口内部服务超时,返回处理中,内部查询补偿到成功,调用方轮询;

异步接口:接口调用超时,调用方查询补偿;接口内部服务超时,内部查询补偿到成功,回调通知;接口回调通知超时,指数补偿回调;

消息队列:生产者发送超时,持久化可靠发送幂等消费;消费者消费超时,消息处理完偏移量增加。

缓存

缓存分片:客户端分片(redic)、代理分片、集群分片(一致性Hash);

缓存穿透:缓存空值、有效Key判断;

缓存并发:分布式锁、本地锁、软过期(业务过期);

缓存雪崩:错峰失效。

三、画好架构图

41视图

场景视图:参与者与功能用例关系,用例图表示;

逻辑视图:功能拆解后的组件边界及关系,组件图和类图表示;

物理视图:软件与硬件映射关系,部署图表示;

处理流程图:各组件流程与数据交互,时序图和流程图表示;

开发视图:模块划分及包组成,包图表示。

C4视图

语境图:梳理待建设系统用户和高层次依赖,在中间画出自己的系统,周围是用户与其它交互系统。

C4语境图

容器图:展开语境图待建设系统,用框图表示,可包含名称、技术选择、职责、框图间交互,明确外部系统边界。

C4容器图

组件图:展开某个容器,描述其内部模块组件组成、关系。

C4组件图

类图:同UML静态图,此处不再展开。



《如何达到软件系统架构设计的目标》
答:1.可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。2.安全性(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。3.可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应...

《如何做系统 系统设计与实现步骤详解?》
答:三、系统实现 1.明确需求:明确客户的需求和期望,包括功能需求、性能需求、安全需求等。1.编写代码:根据系统设计文档编写代码,实现系统所需的功能。3.制定计划:根据需求分析的结果,制定详细的计划和时间表,以便为后续的工作提供指导。3.部署上线:将系统部署到生产环境中,进行线上测试和调试,保证...

《软件系统开发流程有哪些》
答:结构错误包括逻辑、数据流、初始化等错误 用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果 白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误 其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误 黑盒法用例设计的关键同样也是以较少的用例覆盖模块...

《如何进行软件架构设计》
答:软件架构,如同建筑的灵魂,是大型系统设计的抽象蓝图,它揭示了系统的结构和运作方式。让我们深入探讨它的几个关键组成部分,以便更好地理解如何进行有效的设计。业务架构,是设计的起点,它将模糊的商业愿景转化为清晰的流程和问题领域。这个阶段,我们的目标是将业务逻辑条理化,以便于理解和实现。产品架构...

《软件设计包括哪两个阶段?》
答:软件设计包括的两个阶段:1、对软件的全局观点。系统通过逐步求精使得设计陈述逐渐接近源代码。这里有两个基本步骤,第一步是初步设计,关注于如何将需求转换成数据和软件框架。2、详细设计,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代...

《什么是软件设计?》
答:软件设计的基本目标是用比较抽象、概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径 。从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计;(1)结构设计定义软件系统各主要...

《OA软件系统开发设计原则,求助?》
答:系统除支持本约定的设计规范外,还提供标准化的WEBSERVICE外部接口,遵循SOA功能架构规范,遵循工作流标准WFMC;遵循W3C XForm表单标准(XML定义表单数据,数据和逻辑分离,独立于平台和设备),支持JSR168和WSRP等Portal标准。因此,系统可以轻松与各种操作系统、中间件、数据库、业务系统及工具软件进行平滑对接...

《软件设计包括哪些方面》
答:不幸的是,软件的设计过程往往存在...余下全文>>问题二:计算机软件设计这个属于什么专业? 计算机软件设计属于 IT(Internet Technology)专业。户件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体...

《系统设计的主要内容有哪些》
答:系统设计的主要内容 系统设计分为总体结构设计与详细结构设计。1.总体结构设计主要解决子系统的划分与确认、模块结构设计、网络设计和配置方案等问题。 ①子系统划分:是将一个复杂的系统设计转为若干子系统和一系列基本模块的设计,并通过模块结构图把分解的子系统和一个个模块按层次结构...2.详细结构设计...

《系统设计的技术路线》
答:充分考虑数据信息的组成特点和软件系统用户现有的计算机软件环境,以开发独立运行的软件系统为目标,确定系统设计的技术路线。(1)对地热资源的主体数据信息,包括地热井、温泉、地热田等,以关系数据库的形式进行管理,充分利用关系数据库强大的信息管理功能。(2)系统预置1∶500万地理底图,可利用具有空间坐标...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网