软件设计与体系结构实验报告

1.实验名称

通过实验,熟悉并掌握面向对象架构设计模式的设计过程。

2.实验目的

完成系统的软件架构设计图。

  1. 实验要求

(1) 参照实验一的需求分析,和业务约束及限制,构建本系统的业务架构。

(2) 领域架构设计。

第一步:提取业务模块

  • 提炼业务模块:
  • 业务模块优化:

第二步:确定业务模块之间的关系

  • 业务模块间的关系:

第三步:完成领域架构图

(3) 软件架构设计。

第一步:“照猫画虎”:将领域架构中的各部分的名称后增加“⼦系统”,形成初始的软件架构。

绘制初始软件架构图如下:

第二步:“按图索骥”:根据质量需求,选取合适的架构模式。

第三步:“深思熟虑”:全⾯评估各个备选⽅案的优劣点,挑选最优的⽅案。

指标

方案1

方案2

结论

4.实验过程

(1)构建业务架构

业务整体结构:

用户第一次下载使用中通快修技师维修端,在维修工登录页面点击注册账号 ->

用户进入注册界面,填写手机号,验证码以及密码,点击确认完成注册->用户注册成功后点击去登录,进入登录页面->用户点击忘记密码,进入找回密码界面->用户输入手机号,接受验证码,修改新密码->用户进入登录页面并输入手机号和密码点击登录进入应用首页

业务约束和限制

性能:10万个用户同时使用 登录页面要可以承担多名用户的访问请求

成本:预算<=100万

可靠性:登录每失败五次后增加10分钟的等待时间,必须使用中国手机号码注册,因为APP只在中国地区提供服务,登录相关信息采集与应用需符合国家标准要求

技术性:.NET技术

兼容性:与APP的其它功能兼容

  1. 领域架构设计

第一步:提取业务模块

提炼业务模块:

用户下载APP。提炼‘下载’

用户在维修工登录页面点击注册账号。提炼‘注册’

用户填写手机号,验证码以及密码,点击确认完成注册。提炼‘输入’

用户注册成功后点击去登录,进入登录页面。提炼‘登录’

用户点击忘记密码,进入找回密码界面。提炼‘找回密码’

用户输入手机号,接受验证码,修改新密码。提炼‘新密码’

用户进入登录页面并输入手机号和密码点击登录进入应用首页。提炼‘应用首页’

业务模块优化:

   合并,拆分。现有业务的先进模式,未来的业务模式。

第二步:确定业务模块之间的关系

业务模块间的关系:

‘注册’,‘登录’,‘找回密码’模块都需要从‘输入’模块获取‘个人信息’

‘找回密码’模块给与‘新密码’

‘输入’模块通过‘账号’‘密码’进入‘业务首页’

第三步:完成领域架构图

软件设计与体系结构实验报告_第1张图片

 

  1. 软件架构设计。

第一步:“照猫画虎”:将领域架构中的各部分的名称后增加“⼦系统”,形成初始的软件架构。

绘制初始软件架构图如下:

软件设计与体系结构实验报告_第2张图片

 

第二步:“按图索骥”:根据质量需求,选取合适的架构模式。

性能需求不满足(10万人同时使用)

不满足原因:单台机器自身性能瓶颈

方法一:增加物理机器的数量。例如:用10台机器来完成‘登录子系统’,那么每台机器1万人.每台机器同时能够满足的注册人数为1万人/秒此时同时求请求注册的人数为8万人,请求登录和修改的人数分别为5千,5千,可以看出注册时使用一台服务器明显是不能够满足的,所以我们拆机器,将机器拆为10台,每台处理1万/s的登录请求。

软件设计与体系结构实验报告_第3张图片

 

方案二:拆分’输入子系统’为:’账号输入子系统’ , ’密码输入子系统’ .然后把每个子系统再对照质量需求评估.拆分后会发现’账号输入子系统’需要设计10台机器来完成, ‘密码输入子系统’可以慢慢对照’账号输入子系统’传来的账号.’密码输入子系统’用1台机器完成.

软件设计与体系结构实验报告_第4张图片

 

第三步:“深思熟虑”:全⾯评估各个备选⽅案的优劣点,挑选最优的⽅案。

深思:全面评估

指标

方案1

方案2

结论

高性能

两者均可

高可靠性

高:任意机器宕机,其他机器可继续处理业务

中:’密码输入子系统’只有一台机器,一旦宕机将影响账号输入子系统

方案1优

成本

高:20台机器

低:12台机器

方案2优

复杂度

中:每台机器都可以完成完整的业务

高:需要将业务拆分为多个子系统,子系统之间关联耦合复杂度高

方案1优

可扩展性

中:所有功能都在一个系统内实现,后续扩展性一般

高:不同功能分开到不同子系统,子系统可以独立扩展

方案2优

     熟虑:挑选方案

选择的标准:按质量属性的优先级进行判定.即:优先选择我们最关注的质量属性表现占优的方案.性能是我们最关注的质量属性.两个方案表现一样.继续比较.其次关注的质量属性是可靠性,两方案对比之下,方案1更优.所有选择方案一

你可能感兴趣的:(架构,软件工程,设计模式)