在2010年的系统架构师考试科目二中,案例分析涉及了一家公司在开发Linux操作系统的KWIC检索系统时所面临的架构选择问题。该公司业务专家和架构师在确定系统架构时,面临着主程序-子程序(单体架构)和管道-过滤器(模块化架构)两种风格的抉择。
软件架构风格是指在设计软件系统时所采用的固定的组织模式,它定义了系统的组成部分以及它们之间的关系和交互方式。主程序-子程序架构风格强调主程序控制全局,通过调用一系列子程序来执行任务,数据主要通过共享存储区进行交换,这种风格在灵活性和功能扩展性上相对较弱,算法和数据表示变更可能导致整个系统重编译,且性能可能受限于单个程序的规模。
相比之下,管道-过滤器架构风格更倾向于模块化和松耦合。每个组件(过滤器)独立处理数据,通过数据流(管道)与其他组件通信,这使得在算法变更、功能增删时更为灵活,只需修改相关的过滤器即可。数据表示的变更不会影响其他部分,提高了代码的可维护性和扩展性。在性能方面,由于数据流处理通常比共享内存更有效率,这种架构在大规模数据处理时表现出色。
在对这两种风格进行评估时,考虑到系统的可维护性、灵活性和未来可能的需求变化,李工提出的管道-过滤器架构风格在算法变更、功能变更和数据表示变更方面的优势明显,尽管可能在初始实现阶段略显复杂。因此,最终选择了李工的方案,以确保系统的可扩展性和适应性,从而提高项目的成功概率。
总结来说,问题1要求考生理解软件架构风格的概念,并比较主程序-子程序与管道-过滤器的特点,而问题2则是通过表格形式要求考生根据具体优缺点分析并选择最佳的架构策略。在实际项目开发中,正确选择和设计架构风格对于软件的长期稳定和高效运行至关重要。