大三下 |【软件体系结构】期末复习要点

软件体系结构

一、单选题  (2pts / 20)

  1. [A卷] MVC框架中,模型层用于( B )
    A. 处理逻辑相关   B. 处理数据相关
    C. 处理界面相关   D. 监听消息
    [B卷] MVC框架中,控制器层层用于( A )
    A. 处理逻辑相关   B. 处理数据相关
    C. 处理界面相关   D. 监听消息

  2. MVC框架中,关于视图层描述正确的是( B )
    A. 视图层可以发送消息给模型层
    B. 视图层可以监听模型层的消息
    C. 控制器层无法直接引用视图层的界面元素
    D. 视图层的数据来源于控制器层

  3. 三层架构分为哪三层( A )
    A. 表示层-业务逻辑层-数据访问层   B. 模型层-业务逻辑层-数据访问层
    C. 表示层-业务逻辑层-控制器层    D. 控制器层-业务逻辑层-模型层

  4. 三层架构的业务逻辑层作用不包含( D )
    A. 逻辑判断与执行操作        B. 接收表示层的用户指令后
    C. 实现三层之间的数据连接和指令传达 D. 访问数据库

  5. [A卷] PureMVC框架中,与模型相关联的设计模式是( B )
    A. 中介者模式
    B. 代理模式
    C. 单例模式
    D. 外观模式
    [B卷] PureMVC框架中,与视图相关联的设计模式是( A )
    A. 中介者模式
    B. 代理模式
    C. 单例模式
    D. 外观模式

  6. 以下哪一项是属于PureMVC框架的缺点( D )
    A. 充分利用消息机制来解耦
    B. View界面可以实现重用
    C. Model数据可以实现重用
    D. 对于简单的功能都得创建对应的一系列脚本

  7. [A卷] 对于观察者模式描述正确的是( B )
    A. 无法用于解耦     B. 适用于一对多的关系
    C. 只需订阅,无需发布  D. 观察者是唯一核心
    [B卷] 对于单例模式描述正确的是( D )
    A、无法用于解耦   B、适用于一对多的关系
    C、需要订阅与发布  D、保证内存中只有唯一实例

  8. 用面向对象的编程语言开发软件,其中开放封闭原则体现在( D )
    A. 对封闭的模块进行开放
    B. 扩展与修改都是开放的
    C. 扩展是封闭的,而对修改是开放的
    D. 扩展是开放的,修改是封闭的

  9. 软件项目中的界面管理类,一般采用什么设计模式( A )
    A. 单例模式   B. 命令模式
    C. 代理模式   D. 策略模式

  10. 模块化开发的核心是( A )
    A. 封装模块与管理模块   B. 组合模块与模块通信
    C. 模块之间的重用     D. 模块的分解

二、填空题  (2pts / 20)

  1. [A卷] 观察者模式中,解决了一个对象状态改变给其他对象通知的问题,而且还考虑到易用和低耦合,保证高度的协作。
    [B卷] 中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。

  2. 外观模式隐藏系统的复杂性,并向 客户端 提供了一个客户端可以访问系统的接口

  3. Pure MVC是在基于模型、视图和控制器模式建立的一个轻量级的应用框架

  4. MVC框架中控制器接受用户的输入并调用模型和视图去完成用户的需求。

  5. [A卷] 三层架构的优点是高内聚与低耦合,可以降低层与层之间的依赖
    [B卷] 设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案

三、判断题  (1pts / 10)

  1. (  ) 对于IT项目采用哪种架构来开发,采用哪种设计模式来实现,要根据项目的实际需求来确定。

  2. ( × ) [A卷] MVC框架中视图层可以发送给模型层消息。
    ( × ) [B卷] MVC框架中控制器层可以发送给模型层命令。

  3. ( × ) [A卷] 三层架构的数据访问层一定是来源于本地数据库。
    (  ) [B卷] 三层架构的数据访问层不一定是来源于本地数据库。

  4. ( × ) 对于有服务器的联网项目,在设计数据通信模块需要考虑传输数据的加密,但不需要考虑数据的压缩。

  5. (  ) 软件架构中的管理类一般都需要提供对外接口。

  6. (  ) 外观模式实现了子系统与客户端之间的松耦合关系。

  7. (  ) 在PureMVC框架中利用中介者模式有效的隔离了View层与Controller和Model层的耦合。

  8. ( × ) [A卷] 软件架构中,配置表的实现也是重要的模块之一,配置表可以取代数据库。
    (  ) [B卷] 软件架构中,配置表的实现也是重要的模块之一,配置表不可以取代数据库。

  9. (  ) 架构软件的时候,还需要考虑项目是否需要加入热更新,热更新功能是为了方便在不卸载的情况下,更新项目模块与增加新功能。

  10. ( × ) MVC框架是不能根据项目来修改的,是固定的开发模式。

四、名词解释 (4pts / 12)

  1. 软件项目框架
    答:软件项目框架是为了实现某个业界标准完成特定基本任务的软件组件的规则和规范;某些情况下,也指为了实现某个软件组件规范时,提供规范所要求的基础功能软件产品。(回答要点: 框架是规则, 规范)
     
  2. [A卷] 高内聚低耦合
    答: 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要看内聚性是否耦合度是否。目的是使得模块的可重用性移植性大大增强。通常程序结构中各模块的内聚程度越高, 模块间的耦合程度越低。
    内聚描述的是模块内的功能联系;耦合描述的是模块之间的相互连接。
     
    [B卷] 热更新
    答:热更新是一种软件开发者常用的更新方式。开发者通过动态下发代码,用户打开软件后即时更新。热更新可以在开发者不发布新版本的情况下,修复bug和发布功能,避免长时间审核等待以及多次被拒造成的成本
     
  3. 序列化和反序列化
    答:序列化是将对象的状态信息转换为可以存储传输的形式(如字节序列)的过程。
    反序列化是将字节序列恢复为原先的对象的过程。
     

五、简答题  (5pts / 15)

  1. 请简述观察者模式的应用
    答:观察者模式,也称为发布订阅模式,是一种行为型的设计模式。当对象存在一对多的关系时,就可以使用观察者模式来定义对象的一对多的依赖关系;当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新
    例子:用户界面可以作为一个观察者,业务数据就是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在页面上。
     
  2. [A卷] 请简述三层架构中业务逻辑层的作用
    答:业务逻辑层(Business Logic Layer, BLL) 负责业务规则制定、业务流程实现等与业务需求有关的系统设计;同时业务逻辑层处于数据访问层与表示层中间,接收来自表示层的数据请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,起到了数据交换中承上启下的作用。
    [B卷] 请简述三层架构中业务数据访问层的作用
    答:数据访问层(Data Access Layer, DAL) 负责与数据库的交互,包括对数据库的查询插入删除更新等操作。如果要加入ORM的元素,那么就会包括对象数据表之间的映射,以及对象实体的持久化
     
  3. 开发一款游戏软件,优先选择三层架构还是MVC架构?
    答:优先使用 MVC
    1. 两者的适用领域不一样,三层架构可归于部署模式,而MVC模式可归于表示模式
    2. MVC模式基于页面,将页面代码划分为视图控制器模型,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
    3. 三层架构按层划分,将整个业务应用划分为:界面层业务逻辑层数据访问层降低了系统的性能,在需求更改的情况下容易导致自上而下级联修改
    4. 游戏软件常常有高响应界面交互变更需求,选择MVC更加利于项目研发进度推进
       

六、综合题  (15pts 8pts / 23)

  1. 请画出MVC完整架构图并详细分析 (15pts)

    答: MVC(Model-View-Controller) 是软件工程中的一种软件架构模型, 分成三个基本部分:

    1. 模型(Model):负责数据的管理请求更新
    2. 视图(View):负责向用户展示模型数据
    3. 控制器(Controller):负责Model和View之间的交互。负责为View提供正确的数据,向Model申请来自View的操作请求

    MVC模式的目的是实现一种动态的程序设计,简化后续对程序的修改扩展,并使程序某一部分的重复利用成为可能。MVC通过简化复杂度,使程序的结构更加直观
     

  2. 用单例模式设计设计用户数据类,用户数据类需要有金币信息与相关的对外接口 (8pts)

    public class CoinManager {
        private static CoinManager instance;
        
        public CoinManager GetInstance() {
            if (instance == null) {
                instance = new CoinManager();
            }
            return instance;
        }
        
        public int CoinCount { get; private set; }
        
        public void AddCoin(int count) {
            CoinCount += count;
        }
        
        public bool SubCoin(int count) {
            if ((CoinCount - Count) < 0)
                return false;
            CoinCount -= count;
            return true;
        }
    }
    
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值