Siemens’ 4 View Model (props to My-An Nguyen for giving me her 344 notes on which this lecture is based) Conceptual View Activities • Central design tasks. – Create conceptual… • components, connectors, ports, roles, protocols. • configuration. – Global evaluation. • Final design task. – Software resource budgeting (memory, CPU time, …). What is a Module Definition • Think of it as a UML package. • Does not imply that code will be nonObject-Oriented. • In execution view, will eventually “hold” either Object-Oriented (classes, …) or non-Object-Oriented code. Module View Activities • Central design tasks. – Definition of subsystems, layers, modules. – Allocation of conceptual elements to the above. – Global evaluation. • Final design task. – Design of (key) module interfaces – Operations (name, signature Execution View Definition • Define / perform … – Mapping of conceptual components and modules to run-time entities. – Run-time entities: e.g. tasks, processes, threads. – o Communication paths & mechanisms. – o Configuration. – o Resource allocation. • We are concerned with non-trivial views – Trivial Execution View = software that uses a single thread and process. Execution View Activities • Central design tasks. – Define run-time entities, communication paths, execution configuration. – (Global evaluation) • Final design task. – Resource allocation. Code View Definition (1) • Define / perform … – Mapping of modules from the Module View to source components – Mapping of run-time entities from the Execution View to deployment components – Define intermediate components; dependencies. – Organization of these components. – Build and Configuration Management. Code View Definition (2) • Key words: – – – – Source components. Intermediate components. Deployment components. Dependencies between components. • We are concerned with non-trivial views – Trivial Code View = software with a single executable and a small development team. The Code View will then mimic the Module View. Code View Activities • Central design tasks. Define & organize … – Source Components (& dependencies). – Intermediate Components (& dependencies). – Deployment Components (& dependencies). – (Global evaluation) • Final design task: – Build procedure. – Configuration management. Code View (common complaints) • Consider what if… – Customer X has a problem with their release that was last built in October, then patched in December and January. You need to run tests to confirm the problem. – The Probe S/W team has just issued a new release, you need to integrate and test … • The Code View contains architectural decisions concerning the code! IS2000 (look familiar?) Case study (1) IS2000 Execution and Code View – Global Analysis • The few strategies applicable to the Execution View: • Issue: Skill Deficiencies – Strategy: Avoid use of multiple threads. – Strategy: Encapsulate multiprocess support facilities. • Key concern for view: performance. Case study (2) IS2000 Execution and Code View – Global Analysis • Introduce new issue: High Throughput – Probe has higher data rate than previous products. – Image processing must keep up with probe. – Solutions/Strategies: • Map independent threads of control to processes. However, there was only one developer with experience in multithreading and the cost of creating/destroying processes is low. • Use an additional CPU. • Avoid the use of multiple threads.