1 / 64

CS 411 - Software Architecture Design Roots, D efinitions and Rationale

CS 411 - Software Architecture Design Roots, D efinitions and Rationale. Bedir Tekinerdogan Billkent University, Dep artment of Computer Engineering e:mail - bedir@cs.bilkent.edu.tr http://www.cs.bilkent.edu.tr/~bedir/ Phone : (290)12 5 8 Room: EA50 6. Table of Contents.

brosh
Download Presentation

CS 411 - Software Architecture Design Roots, D efinitions and Rationale

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. CS 411 - Software Architecture DesignRoots, Definitions and Rationale Bedir TekinerdoganBillkent University, Department of Computer Engineeringe:mail - bedir@cs.bilkent.edu.tr http://www.cs.bilkent.edu.tr/~bedir/Phone: (290)1258Room:EA506

  2. Table of Contents • History of Structure in Software Engineering • Definitions of Software Architecture • Architecture in Software Development Life cycle • Rationale for Software Architecture Design

  3. Part I – History of Structure in Software Engineering Software Crisis Software Engineering Evolution of Structure concept in SE

  4. Architecture is ... • The underlying structure of things: • Buildings • Vehicles • Computers • ... • Software

  5. Early Computers • Evolved during the Second World War. • Basically needed for mathematical calculations and code breaking. • Setting switches and plugging cables into sockets. • Von Neumann Architecture: program: set of instructions, stored in memory www.computerhistory.org

  6. First Programming Languages 1951-1960 • Machine language (written in binary), machine specific • Assembly languages, symbolic instructions • Use of a translator to translate the assembly language into machine language. • Problem Concern: Computing and algorithms • Solution Concern: Basic applications include calculations; calculations are based on algorithms; algorithm is a step-by-step process that manipulates data.

  7. Fortran, ALGOL and LISP FORTRAN (FORmula TRANslator), 1957 • high-level language • introduced variables, procedures, statement labels etc ALGOL 60 (ALGOrithmic Language), 1958 • Block structure, recursion, and a formal definition. • ancestor of most contemporary languages LISP (LIST Processor), 1960 • symbolic processing for AI • symbolic differentiation, integration and theorem verification

  8. Evolution of applications • More powerful computers • transistor • IC • High Level Programming Languages • ‘Normal’ business started to use computer • Need for data processing applications in business • COBOL – COmmon Business Oriented Language, 1960 • elaborate datastructures • record type introduced for the first time

  9. Abstract Data Types / Objects • Simula 67 • An extension of Algol 60 for simulation of concurrent processes. • Introduced the concept of classes and encapsulation; forerunner of Smalltalk and C++.

  10. ‘Direct’ mapping of problem to solution, No systematic method Problems are simple, algorithmic Early history of computing... • 1940s: First computers • Problems: Numerical/algorithmic applications • Method: • Programming languages, Machine Languages, Assembly Language • 1950s: First programming languages • Algol, Fortran, LISP, COBOL. • 1960s: • Problems got more complex: data intensive business applications…

  11. Over Budget • Low Quality Software Crisis Software • Late

  12. Software Engineering Software Development should be based on ENGINEERING! 1968: NATO Conference on Software Engineering

  13. Dijkstra & Parnas: Structure Matters • Dijkstra, 1968: • ‘’...Correct arrangement of the structure of software systems before simple programming...‘’ • Parnas, 1972: • ‘’...selected criteria for the decomposition of the system impact the structure of the programs and several design principles must be followed to provide a good structure...’’ Edsger Dijkstra 1930-2002 Focused on Structure of Programming...

  14. Dijkstra - Layered Structures 1968 • Operating Systems • Layered Structure • Programs are grouped into layers • Programs in one layer can only communicate with programs in adjoining layers • Conceptual integrity • Each layer has its own goal • with easier development and maintenance E.W. Dijkstra, The structure of "THE"-multiprogramming system. Comm. ACM 11, 5 (May 1968), 341-346.

  15. Parnas – Design principles • Information-hiding modules (1972) • Identify design decisions that are likely to change • Isolate these in separate modules (separation of concerns) • Different design decisions might require different decompositions. • Software Structures (1974) • Hierarchical structures (stepwise refinement) in programs • Program Families (1975) • ‘’A program family is a set of programs for which it is profitable or useful to consider as a group. ‘’ D. Parnas, "On the Criteria to Be Used in Decomposing Systems into Modules.“, Comm. ACM 15, 12 (December 1972), 1053-1058. 1972. • D. Parnas, “On a ‘Buzzword’: Hierarchical Structure” IFIP Congress ‘74. North Holland Publishing Company, 1974 pp. 336-339 • D. Parnas, “On the design and development of program families” • IEEE Trans. On SE., vol. SE-2, pp.1-9, Mar. 1976

  16. Structured Design Methods • Aimed to develop structured programs • By applying design principles • Information hiding • Modularization • Stepwise refinement • Etc…

  17. Object-Orientation • In the beginning software was written without any structure… • … data and procedures were separated • … data and procedures that belonged together were put into subsystems (modules) • … these subsystems were layered • and finally objects encapsulated data for the sake of structure.

  18. Structure in Software • 1960s - Structured Programming • Adopted into programming languages because it’s a better way to think about programming • 1970s - Structured Design • Methodology/guidelines for dividing programs into subroutines. • 1980s – Modular programming languages • Modular (object-based) programming • Grouping of sub-routines into modules with data. • 1990s – Towards Software Architectures • Object-Oriented Analysis/Design/Programming started being commonly used • Software Architecture Design

  19. Structure in Software APPROACH PROBLEMS SOLVED 2010 Programming in-the-world - software architecture Mega programs 2000 Programming in-the-large - object-oriented design - CASE tools - libraries Large, complex, distributed 1990 1980 Data intensive, business applications 1970 Programming in-the-small - information hiding, modularization 1960 Programming any-which-way Simple, algorithmic 1950

  20. Summary on Structure in History • Increased consciousness on structure of software • Structure idea did not stop at programming level but moved up to design methods. • This has finally culminated in Software Architecture • Successfully applied in industry which have specific architecture design teams/divisions. • Software Architecture is a logical step in the evolution of structure concept. • Is one of the most fundamental concepts in software engineering.

  21. Very intuitive notion of software architecture • Software Architecture represents the gross level structure of a software system. • Design : Implementation = • Software Architecture : Design

  22. <<Concept>> Database Accesses Applies to <<Concept>> Database Manager <<Concept>> Ontology Uses Uses Uses Adapts <<Concept>> Query Manager <<Concept>> User Manager <<Concept>> Submission Manager Adapts Connects Connects Connects <<Concept>> Network Manager <<Concept>> Editor Uses Software Architecture - Example Software Architecture Design for Multi-User Biological Pathway Knowledge Acquisition and Inquiry Environment Fatih Akgul, Caglar Gunel, Erhan Giral

  23. Software Architecture - Example Software Architecture Design for Distributed Newsgroup System Ali Çakmak Duygu Uçar Eren Aydın Tankut Barış Aktemur

  24. Part II - Definitions What is a Software Architecture?

  25. What is Software Architecture? • Evolution of Software Architecture concept • Resulted in different definitions in the history

  26. Booch 1991 • ”The Logical and physical structure of a system, forged by all the strategic and tactical design decisions applied during development” • Architecture is high level structure of software system

  27. Perry and Wolf 92 • We distinguish three different classes of architectural elements: processing elements; data elements; and connection elements. The processing elements are those components that supply the transformation on the data elements; the data elements are those that contain the information that is used and transformed; the connecting elements (which at times may be either processing or data elements, or both) are the glue that holds the different pieces of the architecture together. • explicitly considers the interpretation on the elements of software architecture

  28. Garlan and Shaw 1993 • ...beyond the algorithms and data structures of the computation; designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organization and global control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance; and selection among design alternatives. This is the software architecture level of design. • This definition provides additional specializations of the structural issues.

  29. Garlan 1995 • The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time. • design information in the architectural specification

  30. Bass et al 98 • The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them. • more than one structure and includes the behavior of the components as part of the architecture. The term component here is used as an abstraction of varying components.

  31. abstractions concept General definition Architecture: Abstractions and their relations, which form a concept. & relations Architectures must have a well defined structure.

  32. What is a concept? Concept: A well-established definition within a given domain. A concept is an essential abstraction, usable, andgenerally corresponds to an inherently complexstructure and/or behavior. An abstraction of an architecture can also be an architecture (concept) thereby allowing hierarchicalarchitectural structures.

  33. Summary on Definitions • Definition of Software Architecture Design has evolved together with technical developments • Gross Structure • Specialization on definition of components • Different structures • Different definitions but a common agreement on • Architecture is structure • including components • and connections among these components • Concept of software architecture is important

  34. Part III – Architecture in the Software Development Life Cycle Problem Solving Architecture design and implementation

  35. Solution Engineering as Problem Solving Problem Software engineering

  36. Requirements Analysis What? (client) Analysis What? (domain) Design How? (Detailed) Do Implementation Test Testing Solution Software Engineering=Problem Solving Phases Problem

  37. Application: Student Registration System University consists of several departments. If students fulfill the requirements, students can enroll in the university. Every student can register/withdraw for/from a course. Example: Student Registration System

  38. Student Use Case Diagram register for course withdraw from course enroll in university

  39. Student Registration Class Diagram

  40. Apply [ Must be accepted first ] Enrolled Registered Graduate [ All courses must be completed ] States of a Student EnrollInClass ( Add a Transcript ) AddCourse Withdraw

  41. aStudent theRegistrar aSection theTranscript getSectionsFor: return sections enrollInSection: takenCourse: prerequisite takenCourse: prerequisite state of prereq have prereq addStudent: enrolled enrolled Sequence Diagram: Registering for Course

  42. Example – Java Implementation public class Student { private String name; private int id; public String getName () { return name; } public void setName (String str) { name = str; } public int getId() { return id; } public void setId(int i) { id = i; } }

  43. Where is Architecture Design? Software Architecture

  44. Requirements Analysis Software Architecture What? (client) What? (domain, gross-level) Analysis What? (domain, arch. comp) Design How? (Detailed) Do Implementation Test Testing Solution Software Architecture Design Phase Phases Problem

  45. Design Evaluate (Test) Realize (Implement) Design, Realize and Test Architecture Requirements Analysis Software Architecture Design Analysis & Design

  46. aStudent theRegistrar aSection theTranscript getSectionsFor: return sections enrollInSection: takenCourse: prerequisite state of prereq takenCourse: prerequisite have prereq addStudent: enrolled enrolled Design, Realize and Test Architecture Requirements Analysis ....... ....... ....... ....... Software Architecture Design Analysis & Design Implementation public class Student {private String name; private int id; public String getName () return name} public void setName (String str){ name = str;} public int getId() {return id; } public void setId(int i) {id = i; } }

  47. Software Architecture • Architecture is at a higher abstraction level of software development than analysis and design. • To comprehend the gross level structure of the system it is necessary to design the architecture • Realizing architecture implies mapping it to detailed design.

  48. Part IV – Rationale for Software Architecture

  49. Design the software for a conveyor sorting line system (CLSS) which sorts boxes moving along a conveyor line. Each box is identified by a bar code and is sorted into one of six bins at the end of the line. The boxes pass by a sorting station that contains a bar code reader and a PC. The sorting station PC is connected to a shunting mechanism that sorts the boxes into the bins. Example – Conveyor Line Sorting System

  50. Conveyor/Assembly Line 11000 1100011 1110011 0101111 Shunt Sorting Station

More Related