阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。
[说明]
某公司拟开发一套在线软件开发系统,支持用户通过浏览器在线进行软件开发活动。该系统的重要功能包括代码编辑、语法高亮显示、代码编译、系统调试、代码仓库管理等。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
a)根据用户的付费情况对用户进行分类,并根据类别提供相应的开发功能;
b)在正常负载情况下,系统应该在0.2s内对用户的界面操作请求进行响应;
c)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测和防御;
d)系统主站点断电后,应在3s内将请求重定向到备用站点;
e)系统支持中文昵称,但用户名必须以字母开头,长度不少于8个字符; .
f)系统宕机后,需要在15s内发现错误并启用备用系统;
g)在正常负载情况下,用户的代码提交请求应在0. 5s内完成;
h)系统支持硬件设备灵活扩容,应保证在2人天内完成所有的部署与测试工作;
i)系统需要针对代码仓库的所有操作进行详细记录,便于后期查阅与审计;
j)更改系统web界面风格需要在4人天内完成;
k)系统本身需要提供远程调试接口,支持开发团队进行远程排错;
在对系统需求、质量属性和架构特性进行分析的基础上,该公司的系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对候选系统架构进行评估。
针对该系统的功能,李工建议采用管道过滤器(pipe and filter) 的架构风格,而王工则建议采用仓库(repository)架构风格。请指出该系统更适合采用哪种架构风格,并针对系统的主要功能,从数据处理方式、系统的可扩展性和处理性能三个方面对这两种架构风格进行比较与分析,填写表1-1中的(1)~ (4)空白处。

应该采用仓库风格。
表(1) - (4)空的空白分别为:
(1)数据存储在中心仓库,处理流程独立,支持交互式处理。
(2)数据与处理紧密关联,调整处理流程需要系统重新启动。
(3)数据与处理分离,需要加载数据,性能降低。
(4)数据处理组件之间一般无依赖关系,可并发调用,提高性能。
从系统的核心功能看:代码编辑/语法高亮/编译/调试/代码仓库管理,本质是围绕中心代码与元数据开展的一系列交互式活动,强调“多工具围绕同一份项目/仓库数据的协同与一致性”。
仓库架构将系统关键数据(项目、版本、提交、构建产物、调试会话元数据等)集中在统一的数据仓库中,周边功能组件(编辑器服务、编译服务、调试服务、权限与审计服务等)通过标准接口访问仓库:这使得(1)数据处理以数据为中心、流程彼此独立,天然支持交互式与回溯操作;(2)可扩展性强:新增语法检查器、静态分析、SAST/DAST、安全审计、远程调试探针等,只需对接仓库接口与事件流即可,最小化对既有流程的侵扰;(3)一致性与可追溯:所有操作统一落库,便于实现 a)差异视图、b)多版本管理、c)细粒度权限与全面审计(i),与题干的安全合规需求高度贴合。
与之对比,管道过滤器强调固定顺序的数据流:输入沿若干过滤器经管道依次处理,适合数据加工型、批处理/流式场景(例如编译器前端流水线、日志清洗等)。
但本题场景多为人机交互、随机访问、频繁回退/跳转的模式,流程不是严格线性的;当要改变步骤或插拔新工具时,常需重排管道或重启(对应表中(2)),对已有会话与中间态处理不友好。性能层面,仓库风格因组件围绕共享数据工作,若需要跨组件计算则可能出现多次加载/反序列化,数据与处理分离,需要加载数据,性能降低(对应(3));仓库架构 无强依赖、可并发/并行,对吞吐友好(对应(4))。
综合“在线 IDE + 代码仓库管理 + 审计 + 远程调试(k)”的需求权重,仓库架构更契合系统形态,同时更容易与权限模型、审计日志、分支/标签/提交等领域概念对齐,后续叠加消息总线/事件溯源可进一步提升扩展性与可观测性。