191 likes | 1.19k Views
Software Architecture & Design Patterns SENG 311 By Gabriel Becerra Today’s Agenda Software Architecture: A Definition Software Architect Definition via C-Map Software Architecture: 4 Views Questions What is Software Architecture?
E N D
Software Architecture & Design Patterns SENG 311 By Gabriel Becerra
Today’s Agenda • Software Architecture: A Definition • Software Architect Definition via C-Map • Software Architecture: 4 Views • Questions Software Architecture - Gabriel Becerra
What is Software Architecture? • Software architecture is a coherent set of abstract patterns guiding the design of each aspect of a larger software system. [Wikipedia: http://en.wikipedia.org/wiki/Software_architecture] Software Architecture - Gabriel Becerra
Concepts & Plans include Soft. Modularity develops Extensive KnowledgeofSoftware Theory SoftwareArchitect Module InteractionMethods include employs include include Interface Methods orAdapters Object Operations Concept of Software Architect (1/3) Software Architecture - Gabriel Becerra
consults is a SoftwareArchitect is a Stakeholders is a is a Clients ComputerScientists Managers know know ConceptualIssues ImplementationTechniques, Complexity, etc know know Broad DesignIssues SoftwareEngineers InnovativeStructuralFeatures Concept of Software Architect (2/3) Software Architecture - Gabriel Becerra
Concept of Software Architect(3/3) Software Architecture - Gabriel Becerra
Four Views • One of the problems with large systems is the complexity. • The solution is to provide multiple views that separate different aspects of the system to help us manage the complexity. • There are four architectural views: • The conceptual view describes the system in terms of its major design elements and represents the flow of control, thus addressing the requirements of the system • The module view decomposes the system into modules and partitions them into layers, thus showing us how we can map our solution onto software platforms and technologies. • The execution view maps the modules onto the runtime platform and the hardware architecture allowing us to address resource usage such as memory, hardware and basic control flow • The code view allows us to map implementations to deployment modules. Software Architecture - Gabriel Becerra
Conceptual View • The conceptual view is tied to the application domain and represents the components and connectors. • Problems and solutions are view in domain terms, independent of particular software and hardware techniques • Concerns addressed by the conceptual view include: • How does the system satisfy requirements? • How are COTS components integrated? • How do we partition the functionality into releases? • How is the system designed for legacy and growth integrations? • How are product lines supported? • How can the impact of changes in requirements or domain be minimized? Software Architecture - Gabriel Becerra
Application receiver sender mouse events Node Window commands command objects out commands command objects in sender receiver new and modified objects out new and modified objects in localcommand objects out localcommand objects in destination source Supervisor data data source destination new and modified objects in new and modified objects out Hyperbase Software Architecture - Gabriel Becerra
Module View • The module view maps the components and connectors to subsystems and modules. • Concerns addressed by the module view include: • How is the product mapped to the software platform? • What system support/services does it use and where? • How can testing be supported? • How can dependencies between modules be minimized? • How can reuse of modules and subsystems be maximized? • How to we guard against changes in COTS software, software platform, or standards? Software Architecture - Gabriel Becerra
<<layer>>LocalAgentServices <<layer>>RemoteAgentServices <<module>>CDS <<module>>WP <<module>>CD <<module>>YP <<module>>LAC <<layer>>Application <<module>>NodeWindow <<layer>>Supervisory <<module>>Supervisor <<module>>Security <<module>>hyperbase <<layer>>Application <<module>>fileServices <<module>>windowsServices <<module>>networkServices Software Architecture - Gabriel Becerra
Execution View • The execution view describes how modules are mapped to elements of the runtime platform and how these are mapped to the hardware architecture. • Concerns addressed by the execution view include: • How does the system meet its performance, recovery, and reconfiguration requirements? • How do we balance resource usage? • How do we achieve concurrency, replication, and distribution without adding too much complexity to the algorithms? • How can the impact of changes in the runtime platform be minimized? Software Architecture - Gabriel Becerra
socket <<CDprocess>>CD1..n <<CDSprocess>>CDS1..m <<CDprocess>>YP1..p <<WPprocess>>WP1..q <<LACprocess>>LAC1..r <<module>>CDS <<module>>WP SC <<module>>CD <<module>>YP socket <<module>>LAC socket socket socket <<OS>>System <<layer>>Application <<ApplicationProcess>>App1..s <<layer>>Application <<module>>windowsServices <<module>>NodeWindow SC <<layer>>Supervisory <<module>>fileServices <<HB_DLL>>hyperbase SC <<module>>Supervisor <<module>>Security <<module>>hyperbase <<module>>networkServices SC Software Architecture - Gabriel Becerra
Code View • The code view determines how runtime entities are mapped to deployment components, how modules are mapped to source components, and how the deployment components are produced from the source components. • Concerns addressed by the code view include: • How can the time and effort for product upgrades be reduced? • How should product versions and releases be managed? • How can build time be reduced? • What tools are needed to support the development environment? • How are integration and testing supported? Software Architecture - Gabriel Becerra
<<binary>>Supervisor.class <<binary>>Security.class <<binary>>HyperBase.class <<library>>CMap.jar <<configuration description>>CMap.info <<source>>NodeWindow.java CMap_w.exe(Windows) <<source>>HyperBase.java <<source>>Supervisor.java <<source>>Security.java <<binary>>NodeWindow.class CMap_solaris(solaris) CMap_linux(linux) CMInstaller CMap_mac(mac) <<package>>NodeWindow <<package>> generate compile import link compile Use at runtime link compile compile link Software Architecture - Gabriel Becerra
Questions? Software Architecture - Gabriel Becerra