1 / 51

May 08, 2017

CSCE 742 Software Architectures. Lecture 1. What is Architecture?. Topics.  Architectural Styles  Key Word In Context (KWIC)  Other Cases Studies  Evolution of Software Engineering. May 08, 2017. CSCE 742 Software Architecture.

jfortner
Download Presentation

May 08, 2017

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCE 742 Software Architectures Lecture 1 What is Architecture? Topics  Architectural Styles  Key Word In Context (KWIC)  Other Cases Studies  Evolution of Software Engineering May 08, 2017

  2. CSCE 742 Software Architecture Description: Software Architecture. Structural organizations for software systems as collections of interconnected components: formal models and languages; design tools and guidelines. Not auditable. Instructor Manton M . Matthews 3A53 Swearingen Phone: 777-3285 Email: mm at sc dot edu Office Hours: M-W 9:15-10:45 , others by appointment Previous offerings: Fall 2003, 2005, 2009, 2014 Summer 2011, 2016 Lots of reading, writing, design, analysis meetings and some presentations. – 2 – CSCE 742 Summer 2017

  3. Overview What is Software Architecture? What do you already know? Architectural styles: Pipes and filters Data abstraction and object-oriented org. Event based, implicit invocation Layered Systems Repositories Table driven interpreters Distributed processes State transition systems Domain specific software architectures Process control systems Heterogeneous Architectures Case Studies – 3 – CSCE 742 Summer 2017

  4. Course Outcomes The goal for this course is for you to understand: What is software architecture? • How do you use software architectures in practice? • What does a software architect do for an organization? • What value does software architecture provide? • – 4 – CSCE 742 Summer 2017

  5. Important Dates MySC then  to Registration  schedule     “Important dates.”  Significance  Last day to drop  Last Day W assigned  http://registrar.sc.edu/html/bannerApps/POTDates.aspx – 5 – CSCE 742 Summer 2017

  6. Schedule – current -- Proposed – 6 – CSCE 742 Summer 2017

  7. CSCE 742 Summer 2017 Schedule Class Date Day Topic Reading Garlan and Shaw Labs Soft. Engr. Background Evaluation Call graph generation,& drawing Minutes in class 1 8-May 10- May 15- May Mon Overview Case Studies; What is Software Architecture 85 2 Wed Chap 1-3 85 3 Mon Quality Attrubutes Chap 4 Chap 20; Eclipse Projects 85 17- May 22- May 24- May Software Architecture Reconstruction Availability; Avionics Case Study Interoperability, Modifiability, and Performance Security, Testability, and Usability; Interoperability Case Study 4 Wed UML & Reconstruction project 85 5 Mon Chap 5 85 6 Wed Chap 6-8 Quality Attributes 85 29- May 31- May 7 Mon Chap 9-11 85 8 9 5-Jun Wed Test 1 Mon Tactics, Patterns, Modelling 85 85 Chap 13-14 Arch. Significant Requirements; SA in Agile projects 10 7-Jun Wed Chap 15 Chap 16-17, + Designing SA text 85 Designing Architecture; Case Study 1112-Jun Mon Self-Service Carolina Design 85 1214-Jun Wed Architecture Evaluation - ATAM Chap 21 85 1319-Jun Mon ATAM Case Study - BCS Documenting Software Architectures ATAM homework 85 1421-Jun Wed Chap 18 85 – 7 – CSCE 742 Summer 2017

  8. Documenting Project 15 26-Jun Mon ATAM Team Competencies 85 ATAM Case Study - Earth Observing System 16 28-Jun 3-Jul Wed Mon No classes 85 Designing Architectures Again; ATAM again 17 18 10-Jul 12-Jul 5-Jul Wed Mon Test 2 Wed No class 85 85 out (Team meeting - Finalize Architecture) Architecture meeting Report 19 17-Jul Mon 85 Software Architecture ATAM 0 - minutes ATAM plan 19-Jul Wed No class Mon out (Team meeting - ATAM 0) Wed No class 20 24-Jul 26-Jul 85 Cloud Computing Architectures Chap 26 21 31-Jul Mon 85 ATAM Evaluation Team1 evaluates Team 3's SA 22 2-Aug Wed 180 ATAM Evaluation Team2 evaluates Team 1's SA 23 7-Aug Mon 180 ATAM Evaluation Team3 evaluates Team 2's SA 24 9-Aug Wed 180 – 8 – CSCE 742 Summer 2017 Exam - Aug. 15, Tuesday - 12:30 p.m. 15 Aug Tue

  9. Grading policy: Assignments: 15% • Project 25% • Two Tests: 15% each • Final: 30% • No late homework or projects will be accepted. If you cannot make it to class due to other commitments, you can hand in your homework the day before it is due. • – 9 – CSCE 742 Summer 2017

  10. What do you already know? Survey on website  Degree you are working on  Tools you have used  IDE – Emacs vs Eclipse vs  Languages  Courses in Software Engineering 740, 741, 743, 747 or elsewhere  Student/Working status – 10 – CSCE 742 Summer 2017

  11. Pragmatics of CSCE 742 (cont.) Books: 1. Software Architecture: Perspectives on an emerging Discipline by Mary Shaw and David Garlan http://www-2.cs.cmu.edu/afs/cs/project/able/ www/paper_abstracts/intro_softarch.html 2. Software Architecture in Practice 3rd edition by Bass, Clements, and Kazman. Many diagrams from lecture are from Shaw-Garlan – 11 – CSCE 742 Summer 2017

  12. Topics  the architecture business cycle  understanding and achieving quality attributes  attribute-driven design  documenting software architecture  evaluating software architecture  architecture reuse – 12 – CSCE 742 Summer 2017

  13. Architecture (not Software Architecture) 1. the art or science of building ; specifically : the art or practice of designing and building structures and especially habitable ones 2. a: formation or construction resulting from or as if from a conscious act <the architecture of the garden> b: a unifying or coherent form or structure <the novel lacks architecture> – 13 – CSCE 742 Summer 2017

  14. Architecture Handbook – 14 – CSCE 742 Summer 2017

  15. Technical Sketches   Drafting Architectural drafting is basically pictorial images of buildings, interiors, details, or other items that need to be built. These are different from other types of drawings as they are drawn to scale, include accurate measurements and detailed information, and other information necessary to build a structure. – 15 – http://www.iar.unicamp.br/lab/luz/ld/Arquitetural/livros/interior%20design%20student%20handbook.pdf CSCE 742 Summer 2017

  16. CAD - – 16 – http://www.iar.unicamp.br/lab/luz/ld/Arquitetural/livros/interior%20design%20student%20handbook.pdf CSCE 742 Summer 2017

  17. Innovation Center – New CSE home 1/1/17 – 17 – CSCE 742 Summer 2017

  18. Computer Architecture “computer architecture is a set of rules and methods that describe the functionality, organization, and implementation of computer systems” (Wikipedia) the components and their interactions – 18 – CSCE 742 Summer 2017

  19. Software Architecture Issues Structural issues Organization of the systems as in the composition of components Global control structures Protocols for communication, synchronization and access Assignment of functionality to design elements Composition of design elements Physical distribution Scaling and performance – 19 – Quality Attributes CSCE 742 Summer 2017

  20. Quality Attributes Requirements – Functional requirements Non-functional requirements == Quality Attributes Examples:  Availability  Usability  Security  Performance  Latency  throughput – 20 – CSCE 742 Summer 2017

  21. What is Software Architecture? (2) Software architecture involves: 1. the description of elements from which systems are built 2. Interactions among those elements 3. Patterns that guide their composition 4. Constraints on these patterns Thus a system is defined in terms of components and interactions among those components. This system may then form an element in a higher level design. – 21 – CSCE 742 Summer 2017

  22. Describing Software Architectures It has been recognized for a long time that “Finding an appropriate architectural design is key to long-term success.” Current practices for describing architectures  typically informal  Idiosyncratic  Ad hoc  Typically box and line diagrams with accompanying prose But things are getter better. UML and such – 22 – CSCE 742 Summer 2017

  23. Describing Software Architectures “Camelot is based on the client-server model and uses remote procedure calls …” “Abstraction layering and system decomposition …” “We have chosen a distributed, object-oriented approach to managing information.” “The easiest way to make the canonical sequential compiler into a concurrent compiler is to pipeline the execution of the compiler phases.” – 23 – CSCE 742 Summer 2017

  24. Some Perspective on the formalization of Software Architectures Consider the development of programming languages as a sequence:  Introduce  Use to solve problems  Develop patterns that are “good solutions”  Abstract from the patterns new concepts to integrate – 24 – CSCE 742 Summer 2017

  25. Abstraction in Programming Languages 1. Pre 1946 – program with plug boards 2. Von Neumann – stored program concept; but programmed in machine code 3. Symbolic Assemblers – “Load X” instead of 0x251049 4. Formula Translators (Fortran)  Algebraic expression evaluation  Patterns lead to formalization  Loops, arrays, … 5. Abstract data types / Object Oriented Programming – 25 – CSCE 742 Summer 2017

  26. Where are we now in Software Architectures? Mid 1990’s (Shaw and Garlan) realization of examples of good architectural sytle. Abstract from these examples concepts and features leading to the development of systems for representing, documenting, and evaluating software architectures. Reflection on 20 Years of Architecture – Linda Northrop  http://resources.sei.cmu.edu/asset_files/Presentation/2012_017_001_23736.pdf – 26 – CSCE 742 Summer 2017

  27. Common Architectural Styles We now will overview some commonly used architectural styles. The framework that we will use in this discussion is to Treat an architecture as a collection of computational components together with their interactions. A graph with annotations for the connections describing how the components interact. – 27 – CSCE 742 Summer 2017

  28. Pipes and Filters In a pipe and filter style each component has a set of inputs and a set of outputs. The output is frequently viewed as a function of just the input but it also could remember some state. e.g., Unix shell scripts – 28 – CSCE 742 Summer 2017

  29. Pipes and Filters Advanatges: 1. allow understanding overall behavior as composition of simpler behaviors 2. They support reuse; a good filter gets used many times. 3. Systems can easily be maintained and extended. 4. Permit certain kinds of analysis; throughput, deadlock analysis. Disadvantages 1. Not good for handling highly interactive systems. 2. They force lowest common denominator in I/O; sending characters then reparsing words etc. – 29 – CSCE 742 Summer 2017

  30. Data Abstraction and Object-Oriented Organization UML diagrams; ER diagrams for Databases Objects interact through method invocation Many nice features including data hiding Disadvantage: for interaction you must know the other object – 30 – CSCE 742 Summer 2017

  31. Event-based, Implicit Invocation Graphical user interfaces X windows: Events Call backs – 31 – CSCE 742 Summer 2017

  32. Layered Systems – 32 – CSCE 742 Summer 2017

  33. Repositories In a repository architecture there are two types of components: 1) A central data structure (the blackboard) for storing the current state 2) independent components that manipulate the central state (figure taken from Shaw and Garlan) – 33 – CSCE 742 Summer 2017

  34. Table Driven Interpreters – 34 – CSCE 742 Summer 2017

  35. Distributed processes: Client-Server Remote procedure calls – 35 – CSCE 742 Summer 2017

  36. Client-Server – 36 – CSCE 742 Summer 2017

  37. Domain-specific software architectures: Architectures that are developed for very distinct specific problems Specializing the architecture allows one to increase the descriptive power of structures Air-traffic control Banking Medical image processing – 37 – CSCE 742 Summer 2017

  38. State transition systems: – 38 – CSCE 742 Summer 2017

  39. Process control systems: Systems designed to monitor and maintain control over physical devices Characterized by a feedback loop – 39 – CSCE 742 Summer 2017

  40. Heterogeneous Architectures – 40 – CSCE 742 Summer 2017

  41. Case Studies  Key word in context  Instrumentation Software  Compilers  Layered Design with Different Styles for the Layers  Interpreter using Different Idioms for Components  A Blackboard – 41 – CSCE 742 Summer 2017

  42. Case Study: Key word in context In 1972, Parnas proposed the following problem KWIC: The KWIC [Key Word in Context] index system: 1. Accepts an ordered set of lines, each line is an ordered set of words, and each word is an ordered set of characters. 2. Any line may be ``circularly shifted'' by repeatedly removing the first word and appending it at the end of the line. 3. The KWIC index system outputs a listing of all circular shifts of all lines in alphabetical order. Reference: “On the Criteria for Decomposing Systems into Modules,” David Parnas. CACM, 1972 – 42 – CSCE 742 Summer 2017

  43. Case Study: Decomposition in KWIC Parnas used the problem to contrast different criteria for decomposing a system into modules: 1. Functional decomposition with shared access to data representations, and 2. A decomposition that hides design decisions. Examples: permuted index of the Unix man – 43 – CSCE 742 Summer 2017

  44. KWIC: Software Arch. Considerations Changes in processing algorithm Changes in data representation Enhancement to system function Performance: Both space and time. Reuse: To what extent can the components serve as reusable entities. – 44 – CSCE 742 Summer 2017

  45. Architectural Approaches to KWIC Solution 1: Main Program/Subroutine with Shared Data Solution 2: Abstract Data Types Solution 3: Implicit Invocation Solution 4: Pipes and Filters – 45 – CSCE 742 Summer 2017

  46. KWIC: Main Program/Subroutine with Shared Data – 46 – CSCE 742 Summer 2017

  47. KWIC: Abstract Data Types – 47 – CSCE 742 Summer 2017

  48. KWIC: Implicit Invocation – 48 – CSCE 742 Summer 2017

  49. KWIC: Pipes and Filters – 49 – CSCE 742 Summer 2017

  50. KWIC: Comparison – 50 – CSCE 742 Summer 2017

More Related