资源描述
软件体系结构 过程调用体系结构 Call/Return Systems 孙志岗 2 2021/4/6 History Main program and subroutines Decomposition into processing steps with single- threaded control 单线程控制,划分为若干处理步骤 Functional modules Aggregation of processing steps into modules 把处理步骤集成到模块内 Abstract Data Types Bundle operations and data, hide representations and other secrets 操作和数据捆绑在一起,隐藏实现和其他秘密 3 2021/4/6 History Objects Methods (bound dynamically), polymorphism (subtypes), reuse (through inheritance) 方法(动态绑定),多态(子类),重用(继承) OO Architectures Objects as separate processes/threads 对象活动与不同的进程 /线程 Client-server, tiered styles Components Multiple interfaces, binary compatibility, advanced middleware (多个接口,二进制兼容,高级中间件) 4 2021/4/6 Main Program and Subroutine 5 2021/4/6 Main Program and Subroutine Hierarchical decomposition: 逐步分解 Based on definition-use relationship 基于定义 使用关系 Uses procedure call as interaction mechanism 用过程调用作为交互机制 Single thread of control: 单线程控制 Supported directly by programming languages 程序设计语言直接支持 6 2021/4/6 Main Program and Subroutine Hierarchical reasoning: 推论 Correctness of a subroutine depends on the correctness of the subroutines it calls 子程序的正确性取决于它调用的子程序的正确性 Subsystem structure implicit: 子系统的结构不清晰 Subroutines typically aggregated into modules 子程序通常合成为模块 7 2021/4/6 Main Program and Subroutine 8 2021/4/6 Criteria for Modularization What is a module? Common view: a piece of code. Too limited. Compilation unit, including related declarations and interface (编译单元,包含相关的声明和接口) Parnas: a unit of work. Why modularize a system, anyway? Management: Partition the overall development effort divide and conquer (分而治之 ) Evolution: Decouple parts of a system so that changes to one part are isolated from changes to other parts 进化:降低模块间的耦合度,使改变一个模块不会影响其他 Understanding: Permit system to be understood as composition of mind-sized chunks 理解:系统可以被理解成若干个易于理解的模块的组合 Key issue: what criteria to use for modularization 9 2021/4/6 Modularization Problems Access to internal representation: Vulnerability: Visible representations can be manipulated in unexpected, undesired, and dangerous ways Nonlocality: If the way something is used depends on its implementation, you must find all uses to change it (e.g. Y2K) Forced distribution of knowledge: Non-uniform referents: Syntax may reveal structure (If you export a data structure, how does its user iterate through it?) 10 2021/4/6 Modularization Problems Coupling: Instance dependence: When multiple instances of a given structure are active, they must remain independent Families of definitions: (众说纷纭 ) Dynamic binding: If shared definitions involve type variants, function variants must be chosen at run-time 11 2021/4/6 Module Decomposition Parnas Hide secrets. OK, whats a secret? Representation of data Properties of a device, other than required properties Mechanisms that support policies Try to localize future change Hide system details likely to change independently 把可能改变的系统细节分别隐藏 Expose in interfaces assumptions unlikely to change 把改变的可能不大的放到接口当中 Use functions to allow for change Theyre easier to change than visible representation 12 2021/4/6 Key Word In Context (KWIC) Problem Description: The KWIC index system accepts an ordered set of lines, each line is an ordered set of words, and each word is an ordered set of characters. KWIC索引系统接受一些行,每行有若干字,每个字由 若干字符组成 Any line may be circularly shifted by repeatedly removing the first word and appending it at the end of the line. 每行都可以循环移位。重复地把第一个字删除,然后 接到行末 The KWIC index system outputs a listing of all circular shifts of all lines in alphabetical order. KWIC把所有行的各种移位情况按照字母表顺序输出 13 2021/4/6 Key Word In Context (KWIC) Inputs: Sequence of lines Pipes and Filters Architectures for Software Systems Outputs: Sequence of lines, circularly shifted and alphabetized and Filters Pipes Architectures for Software Systems Filters Pipes and for Software Systems Architectures Pipes and Filters Software Systems Architectures for Systems Architectures for Software 14 2021/4/6 Design Considerations Change in Algorithm Eg., batch vs incremental Change in Data Representation Eg., line storage, explicit vs implicit shifts Change in Function Eg., eliminate lines starting with trivial words Performance Eg., space and time Reuse Eg., sorting 15 2021/4/6 Solution 1 Decompose the overall processing into a sequence of processing steps. Read lines; Make shifts; Alphabetize; Print results Copy data in modules 数据在每个模块内拷贝 Determine the representation of data between neighbors. 相邻模块间约定好数据格式 Usually use the same representation of data for all modules 通常完全采用相同的数据格式,也最好这样做 16 2021/4/6 Solution 1: Modularization Module 1: Input Read data lines and pass to the next module 按行读取数据,传递给下一模块 Module 2: Circular Shift The first lines coming make it work 第一行数据到来后开始运作 Transmit the old and new lines to the next 把原始数据行,和新的移位后的行输出给下一模块 Module 3: Alphabetize Collect data lines, buffer. All done, begin to work 接收行数据,缓存。当数据都到达后,开始排序 Finish, output results 排序完毕,输出结果 17 2021/4/6 Solution 1: Modularization Module 4: Output Called after Alphabetization 排序后被调用 Read sorted data lines, print formatted output 读取排序生成的数据,逐行格式化输出 18 2021/4/6 Architecture of Solution 1 19 2021/4/6 Properties of Solution 1 Concurrent partly 部分并行处理 Use lots of memory 空间消耗很大 Every modules should know the representation of data 每个模块都必须知道输入和输出的数据格 式 20 2021/4/6 Solution 2 Decompose the overall processing into a sequence of processing steps. Read lines; Make shifts; Alphabetize; Print results Each step transforms the data completely. 每一步完全转换数据 Intermediate data stored in shared memory. Arrays of characters with indexes 带索引的字符数组 Relies on sequential processing 串行处理 21 2021/4/6 Solution 2: Modularization Module 1: Input Reads data lines and stores them in core. Storage format: 4 chars/machine word; array of pointers to start of each line. Module 2: Circular Shift Called after Input is done. Reads line storage to produce new array of pairs: (index of 1st char of each circular shift, index of original line) Module 3: Alphabetize Called after Circular Shift. Reads the two arrays and produces new index. 22 2021/4/6 Solution 2: Modularization Module 4: Output Called after alphabetization and prints nicely formatted output of shifts Reads arrays produced by Modules 1 procedural interface Storage format: not specified at this point Module 2: Input Reads lines of data and stores using Characters ADT Module 3: Circular Shift Provides access functions to characters in circular shifts Requires setup as initialization after Input is done 27 2021/4/6 Solution 3: Modularization Module 4: Alphabetize Provides index of circular shift Alph called to initialize after Circular Shift Module 5: Output Prints formatted output of shifted lines Module 6: Master Control Handles sequencing of other modules 28 2021/4/6 Architecture of Solution 3 29 2021/4/6 Properties of Solution 3 Module interfaces are abstract hide data representations could be array + indices, as before or lines could be stored explicitly hide internal algorithm used to process that data could be lazy or eager evaluation require users to follow a protocol for correct use initialization, error handling Allows work to begin on modules before data representations are designed. Could result in same executable code as solution 2. according to Parnas, at least 30 2021/4/6 Comparisons - 1 Change in Algorithm Solution 1: permits alternatives Solution 2: batch algorithm hard-wired Solution 3: permits alternatives Change in Data Representation Solution 1: data formats are common among many modules or two modules Solution 2: data formats are common among many modules Solution 3: data formats are hidden 31 2021/4/6 Comparisons - 2 Change in Function Solution 1: easy if adding a new filter Solution 2: easy if adding a new phase of processing Solution 3: modularization doesnt give particular help. But we can use inheritance. Performance Solution 1: Bad in space and good in speed Solution 2: Good Solution 3: Probably not as good, but might be 32 2021/4/6 Comparisons - 3 Reuse Solution 1: Poor since tied to particular data formats Solution 2: Poor since tied to particular data formats Solution 3: Better 33 2021/4/6 KWIC: Summary What does this example teach us? For some quality attributes (space/time performance, change of functional flow) shared memory can be a good architecture For other quality attributes (reuse, general modifiability, portability) ADT solution is better The ADT solution also permits a divide-and-conquer approach to software development in terms of allocation of work in terms of cognitive effort This thinking leads to (led to) object architectures. 34 2021/4/6 Encapsulation/Information Hiding Parnas: Hide secrets (not just representations) Booch: Objects behavior is characterized by actions that it suffers and that it requires 对象的行为体现在其接受和请求的动作 35 2021/4/6 Encapsulation/Information Hiding Practically speaking: Object has state and operations, but also has responsibility for the integrity of its state 对象拥有状态和操作,也有责任维护状态 Object is known by its interface 通过接口了解对象 Object is probably instantiated from a template 对象一般是一个模板(类)的实例 Object has operations to access and alter state and perhaps generator 通过操作来存取、改变和产生对象的状态 There are different kinds of objects (e.g., actor, agent, server) 36 2021/4/6 Data Abstraction or Object- Oriented 37 2021/4/6 Elements of Object Architectures Encapsulation: Restrict access to certain information 封装 :限制对某些信息的访问 Interaction: Via procedure calls or similar protocol 交互 :通过过程调用或类似的协议 Polymorphism: Choose the method at run- time 多态 :在运行时选择具体的操作 Inheritance: Keep 1 definition of shared functionality 继承 :对共享的功能保持唯一的接口 38 2021/4/6 Elements of Object Architectures Advantage: Reuse and maintenance: Exploit encapsulation and locality to increase productivity 复用和维护 :利用封装和聚合提高生产力 Problem: Management of many objects: Need structure on large set of definitions 管理大量的对象 :怎样确立大量对象的结构 Note: the object architecture often closely resembles the object programming style. Is this a problem? 注意:面向对象体系结构,通常和面向对象编程风格 很类似,这是个问题吗? 39 2021/4/6 Finding Objects: Model the Real World Its intuitive: if we understand the domain then we are led to a natural system structure based on the domain. 直觉很重要:如果对现实领域理解得很好,那么 我们设计的体系结构就自然而然地基于现实的结 构 The real world doesnt change much, so systems that model it are unlikely to change much either. 现实世界结构变化很小,按照其结构建立的体系 结构变化也会很小 40 2021/4/6 Finding Objects: Model the Real World Capture families of related designs through use of templates, and inheritance 通过类和继承表达同一家族的事物 But what happens when you arent modeling the real world (e.g. system for manipulating FSMs, fuzzy logic robot controller, natural language translation system)? 但是当你不是为现实世界建模时,怎么办?(比 如,你在写 FSM管理软件,模糊逻辑机器人控制, 翻译软件) 41 2021/4/6 Problems with Object Approaches Managing many objects vast sea of objects requires additional structuring 对象的海洋需要额外的结构来容纳 hierarchical design suggested by Booch and Parnas Managing many interactions single interface can be limiting this facilitated communication between the software engineers and the customers/users 尽可能地按照物理组件的形式进行分解。这使开 发者和用户之间更容易交流 Modeling of malfunctions encapsulated within components affected 把故障封装在引起该故障的组件内 61 2021/4/6 Structural Modeling Style: Major Object Types Two parts: application and executive Application: modeling objects subsystems components Executive: real-time scheduling, instructor/operator interface, data sharing/integrity objects periodic sequencer event handler timeline synchronizer surrogates 62 2021/4/6 Application Component/Patterns S u b s y s t e m C o n t r o l l e r C o m p o n e n t i m p o r t p r o c e s s _ e v e n t u p d a t e c o n f i g u r e c o n f i g u r e p r o c e s s _ e v e n t u p d a t e 63 2021/4/6 Salient Features of Application Supports strict two-level hierarchical pattern of decomposition and interaction. Each subsystem controller has multiple components as children. Communication between subsystems is handled by subsystem controllers, not independent components. Each component can communicate only with its parent. There are limited methods. normal cyclic operation aperiodic operation modify configuration 64 2021/4/6 Executive Components T i m e l i n e S y n c h r o n i z e r S u r r o g a t e P e r i o d i c S e q u e n c e r E v e n t H a n d l e r A i r V e h i c l e S u b s y s t e m s e n d r e c e i v e i m p o r t e x p o r t u p d a t e i m p o r t i m p o r t u p d a t e c o n f i g u r e p r o c e s s e _ e v e n t s e n d c o n f i g u r e g e t _ o u t b o u n d _ m s g c o n s t i t u e n t _ e v e n t p r o c e s s _ e v e n t N e t w o r k t o O t h e r P r o c e s s o r s 65 2021/4/6 Salient Features of Executive Executive: controls real-time scheduling, manages events, invokes data sharing. the timeline synchronizer manages the real-time scheduling on a single hardware platform and synchronization with other computers periodic tasks are controlled by the periodic sequencer (principally import and update) aperiodic events are handled by the event handler surrogates represent non-native subsystems on a computer and hides platform specifics from the rest of the executive and the application 66 2021/4/6 Responsibilities of Components Timeline synchronizer maintains global time for single processor coordinates time with other processors The periodic sequencer controls schedule (invoking subsystems at the right rates/orders). The event handler manages aperiodic events (configure, send, etc.). Surrogates manage communication between air vehicle, environment, and operator. 67 2021/4/6 How Structural Model Achieves Qualities Real-time performance is managed via a strict separation of concerns. Scheduling is managed by the executive. Application does the modeling. Subsystems are given a time budget and must complete their computations within that time. Frame overruns are recorded for performance monitoring and tuning. Subsystems run independently of each other. 68 2021/4/6 How Structural Model Achieves Qualities Modifiability is managed by a division of functionality that matches the air vehicle wherever possible making components and subsystems standalone; components/subsystems do not communicate directly with each other strict patterns of object interactions This avoids spaghetti objects. 69 2021/4/6 How Structural Model Achieves Qualities Integrability is achieved by the limited paths of communication between components and subsystems. Components are called by their subsystem, which manages their data needs. Subsystems are similarly called by the executive. There is little direct coupling between objects (unlike in unconstrained object architectures). 70 2021/4/6 Side Issue: Template-Based Development Templates (forms) were developed for specifying functions. A generator was applied to the templates to insert coordination and communication interfaces; functionality is kept separate from infrastructure. 71 2021/4/6 Flight Simulation: Summary Architecture was the basis for achieving qualities. A structural model uses a minimal number of patterns to construct flight simulators; this eases system comprehension. The strict limitations on data and control flow simplify integrability, modifiability, and performance tuning. Modifiability is also eased by the direct mapping of air vehicle subsystems to software subsystems.
展开阅读全文