Software Architecture  BY Syed Salman Qadri
Introduction
Software Engineering What is Software? Software is not just a program; many things other than the program are also included in software .   Program:  The program or code itself is definitely included in the software. Data:   The data on which the program operates is also considered as part of the software. Documentation:   Another very important thing that most of us forget is documentation . All the documents related to the software are also considered as part of the software.
Engineering  “ The process of productive use of scientific knowledge is called engineering.”
Difference between Computer Science and Software Engineering  The science concerned with putting scientific knowledge to practical use. Webster’s Dictionary This is the process of utilizing knowledge of computer science in effective production of software systems.”
Software Engineering as defined by IEEE: “ The application of a systematic, disciplined, quantifiable approach to the development,operation, and maintenance of software; that is, the application of engineering to software.”
Software Engineering By Ian Sommerville All aspects of software production’ Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production”.
Well-Engineered Software It is reliable It has good user-interface It has acceptable performance It is of good quality It is cost-effective
Law of Diminishing Returns benefit
Software Background Caper Jones Famous practitioner and researcher in the filed of Software Engineering  Fred is also a renowned software engineer, he wrote a great book related to software engineering named “ A Mythical Man Month ”
Importance for Software Engineering Project Management Requirement Engineering Design Coding Testing Software Quality Assurance Software Configuration Management Software Integration and Rest of the activitiesFred Brooks
The Balancing Act! Potentially conflicting requirements Cost vs. Efficiency Cost vs. Reliability Efficiency vs. User-interface Challenge is to balance these requirements.
Software Architecture  Software design Code etc. Software Architecture Requirements
Software architecture Software architecture is what software architects do Software architecture (Formal Definition) Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution
Architecture defined A software system architecture comprises A collection of software and system components, connections, and constraints  A collection of system stakeholders' need statements A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders' need statements(Boehm et.al) A set of architectural (or design) elements that have a particular form(Perry & Wolf)
Requirements  Something required, something wanted or needed Webster’s dictionary There is a huge difference between  wanted  and  needed  and it should be kept in mind all the time
Thanks Any Question???
References ‘ Requirements Engineering: Processes and Techniques’ by G. Kotonya and I. Sommerville, John Wiley & Sons, 1998 Software Requirements: Objects, Functions, and States by A. Davis, PH, 1993   Software Engineering 6 th  Edition, by I. Sommerville, 2000 Software Engineering 5 th  Edition, by R. Pressman

Software architecture First Lecture

  • 1.
    Software Architecture BY Syed Salman Qadri
  • 2.
  • 3.
    Software Engineering Whatis Software? Software is not just a program; many things other than the program are also included in software . Program: The program or code itself is definitely included in the software. Data: The data on which the program operates is also considered as part of the software. Documentation: Another very important thing that most of us forget is documentation . All the documents related to the software are also considered as part of the software.
  • 4.
    Engineering “The process of productive use of scientific knowledge is called engineering.”
  • 5.
    Difference between ComputerScience and Software Engineering The science concerned with putting scientific knowledge to practical use. Webster’s Dictionary This is the process of utilizing knowledge of computer science in effective production of software systems.”
  • 6.
    Software Engineering asdefined by IEEE: “ The application of a systematic, disciplined, quantifiable approach to the development,operation, and maintenance of software; that is, the application of engineering to software.”
  • 7.
    Software Engineering ByIan Sommerville All aspects of software production’ Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production”.
  • 8.
    Well-Engineered Software Itis reliable It has good user-interface It has acceptable performance It is of good quality It is cost-effective
  • 9.
    Law of DiminishingReturns benefit
  • 10.
    Software Background CaperJones Famous practitioner and researcher in the filed of Software Engineering Fred is also a renowned software engineer, he wrote a great book related to software engineering named “ A Mythical Man Month ”
  • 11.
    Importance for SoftwareEngineering Project Management Requirement Engineering Design Coding Testing Software Quality Assurance Software Configuration Management Software Integration and Rest of the activitiesFred Brooks
  • 12.
    The Balancing Act!Potentially conflicting requirements Cost vs. Efficiency Cost vs. Reliability Efficiency vs. User-interface Challenge is to balance these requirements.
  • 13.
    Software Architecture Software design Code etc. Software Architecture Requirements
  • 14.
    Software architecture Softwarearchitecture is what software architects do Software architecture (Formal Definition) Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution
  • 15.
    Architecture defined Asoftware system architecture comprises A collection of software and system components, connections, and constraints A collection of system stakeholders' need statements A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders' need statements(Boehm et.al) A set of architectural (or design) elements that have a particular form(Perry & Wolf)
  • 16.
    Requirements Somethingrequired, something wanted or needed Webster’s dictionary There is a huge difference between wanted and needed and it should be kept in mind all the time
  • 17.
  • 18.
    References ‘ RequirementsEngineering: Processes and Techniques’ by G. Kotonya and I. Sommerville, John Wiley & Sons, 1998 Software Requirements: Objects, Functions, and States by A. Davis, PH, 1993 Software Engineering 6 th Edition, by I. Sommerville, 2000 Software Engineering 5 th Edition, by R. Pressman

Editor's Notes

  • #14 Architecture and Agility June 2008 Philippe Kruchten