Programming Engineering and Plan Designs - PowerPoint PPT Presentation

software architecture design patterns n.
Skip this Video
Loading SlideShow in 5 Seconds..
Programming Engineering and Plan Designs PowerPoint Presentation
Programming Engineering and Plan Designs

play fullscreen
1 / 16
Download Presentation

Programming Engineering and Plan Designs

Presentation Transcript

  1. Software Architecture & Design Patterns SENG 311 By Gabriel Becerra

  2. Today’s Agenda • Software Architecture: A Definition • Software Architect Definition via C-Map • Software Architecture: 4 Views • Questions Software Architecture - Gabriel Becerra

  3. 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:] Software Architecture - Gabriel Becerra

  4. 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

  5. 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

  6. Concept of Software Architect(3/3) Software Architecture - Gabriel Becerra

  7. 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

  8. 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

  9. 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

  10. 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

  11. <<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

  12. 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

  13. 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

  14. 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

  15. <<binary>>Supervisor.class <<binary>>Security.class <<binary>>HyperBase.class <<library>>CMap.jar <<configuration description>> <<source>> CMap_w.exe(Windows) <<source>> <<source>> <<source>> <<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

  16. Questions? Software Architecture - Gabriel Becerra