Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Software Engineering Principles in System           Software Design                    1                                  ...
Agenda                                 2 Introduction Definition of Software Engineering Principles of Software Enginee...
Introduction                                        3 The development of software engineering tools and methods began in ...
Software Engineering: Definition                                  4 A collection of techniques, methodologies, and tools ...
Principles of Software Engineering                           5 Rigor and formality Separation of concerns Modularity A...
Rigor and Formality                                  6 Rigor means strict precision     Rigor helps to produce products ...
Separation of concerns                                  7 To dominate complexity, separate the issues to concentrate on  ...
Modularity                                  8 A complex system may be divided into simpler pieces called  modules A syst...
Cohesion and coupling                                  9 Each module should be highly cohesive.     Module understandabl...
A visual representation                          10      (a)                           (b)      High coupling            L...
Abstraction                                 11 Identify the important aspects of a phenomenon and ignore its  details. S...
Anticipation of change                                    12 Ability to support software evolution requires anticipating ...
Generality                                   13 While solving a problem, try to discover if it is an instance of a  more ...
Incrementality                                      14 Process proceeds in a stepwise fashion (increments) Examples (pro...
Example -Compiler                                       15Rigor and Formality: Compiler Compilers are critical products  ...
Separation of Concerns: Compiler                                         16 Correctness is primary concern Other concern...
Modularity: Compiler                                        17 Compilers are modularized into phases Each phase has prec...
Abstraction: Compiler                                        18 Abstract syntax to neglect syntactic details such as begi...
Abstraction: Compiler                                19                        Code Generation    Intermediate Code       ...
Anticipation of Change: Compiler Case Study                                   20 Typical changes     New versions of pro...
Incrementality :Compiler Case Study                                  21 Language can be extended incrementally Compiler ...
Software Development Process                                      22 In the water fall model, the software development ef...
Software Development Process                                23Requirement Analysis• The focus of this stage is on the need...
Software Development Process contd..                                       24System Specification• The goal of this stage ...
Software Development Process contd..                                        25System Design  •   This stage begins to addr...
Software Development Process contd..                                         26System testing• This phase is usually the m...
System Specifications -Assembler                                27Types of specifications •   Input specifications      L...
System Specifications contd..                              28 •   Output specifications      Current location      Objec...
System design- Procedural System Design                        29Data flow diagram                                    Obje...
Modularized Assembler Design                                                  30                                          ...
System Testing                                       31 A large software System, composed of many thousands of lines of S...
Levels of Testing                                32 Unit Testing Black box testing White box testing Integration Testi...
Sequences for Testing                        33 Bottom–Up Testing Top-down Testing                             9/3/2012
Conclusion                                  34Thus System Software also has the principles for its design.Software Enginee...
Reference                                35• Leland L . Beck , System software-An introduction to System  Programming.• ht...
36Thank You            9/3/2012
Upcoming SlideShare
Loading in …5
×

Software engineering principles in system software design

8,330 views

Published on

Published in: Technology

Software engineering principles in system software design

  1. 1. Software Engineering Principles in System Software Design 1 9/3/2012
  2. 2. Agenda 2 Introduction Definition of Software Engineering Principles of Software Engineering Example –Compiler Software Development Process Example –Assembler Conclusion 9/3/2012
  3. 3. Introduction 3 The development of software engineering tools and methods began in the late 1960’s. The problems in managing a large development project led to increases in development costs and decreases in productivity. Software Engineering evolved gradually in response to the problems of cost, productivity and reliability created by large and complex software systems. These principles are not only applicable to application software but also for the system software. 9/3/2012
  4. 4. Software Engineering: Definition 4 A collection of techniques, methodologies, and tools that help with the production of  a high quality software system  with a given budget  before a given deadline 9/3/2012
  5. 5. Principles of Software Engineering 5 Rigor and formality Separation of concerns Modularity Abstraction Anticipation of change Generality Incrementality 9/3/2012
  6. 6. Rigor and Formality 6 Rigor means strict precision  Rigor helps to produce products with higher reliability, greater quality while controlling costs and meeting expectations.  Various degrees of rigor can be achieved Formality is the highest degree of rigor  Formality enables tool support Degree of rigor depends on application 9/3/2012
  7. 7. Separation of concerns 7 To dominate complexity, separate the issues to concentrate on one at a time. Divide & conquer. Supports parallelization of efforts and separation of responsibilities. 9/3/2012
  8. 8. Modularity 8 A complex system may be divided into simpler pieces called modules A system that is composed of modules is called modular Supports application of separation of concerns  when dealing with a module we can ignore details of other modules 9/3/2012
  9. 9. Cohesion and coupling 9 Each module should be highly cohesive.  Module understandable as a meaningful unit  Components of a module are closely related to one another Modules should exhibit low coupling.  Modules have low interactions with others  Understandable separately 9/3/2012
  10. 10. A visual representation 10 (a) (b) High coupling Low coupling 9/3/2012
  11. 11. Abstraction 11 Identify the important aspects of a phenomenon and ignore its details. Special case of separation of concerns. The type of abstraction to apply depends on purpose. 9/3/2012
  12. 12. Anticipation of change 12 Ability to support software evolution requires anticipating potential future changes. It is the basis for software evolvability. 9/3/2012
  13. 13. Generality 13 While solving a problem, try to discover if it is an instance of a more general problem whose solution can be reused in other cases. Carefully balance generality against performance and cost. Sometimes a general problem is easier to solve than a special case . 9/3/2012
  14. 14. Incrementality 14 Process proceeds in a stepwise fashion (increments) Examples (process)  Deliver subsets of a system early to get early feedback from expected users, then add new features incrementally.  Deal first with functionality, then turn to performance.  Deliver a first prototype and then incrementally add effort to turn prototype into product. 9/3/2012
  15. 15. Example -Compiler 15Rigor and Formality: Compiler Compilers are critical products  Errors are multiplied on a mass scale Very high degree of formalization  regular expressions, grammars Formalization enables tool support  Scanner generators (lex)  Parser generators (yacc) 9/3/2012
  16. 16. Separation of Concerns: Compiler 16 Correctness is primary concern Other concerns  Efficiency of compiler and of generated code  User friendliness (helpful warnings, etc.) Example for interdependencies: runtime diagnostics and efficient code  Example: runtime assertion checking  Diagnostics simplify testing, but create overhead  Typical solution: option to disable checks 9/3/2012
  17. 17. Modularity: Compiler 17 Compilers are modularized into phases Each phase has precisely defined input and output  High cohesion: common functionality in each phase  Low coupling: pipe-and-filter architecture, symbol table Symbol TableSource code object code Semantic Code Lexical Analysis Parsing Analysis Generation 9/3/2012
  18. 18. Abstraction: Compiler 18 Abstract syntax to neglect syntactic details such as begin…end vs. {…} to bracket statement sequences. Abstract syntax  Abstract while loop syntax: while( BoolExpr Stmt )  Concrete Pascal syntax WHILE BoolExpr DO Stmt ;  Concrete Java syntax: while ( BoolExpr ) Stmt 9/3/2012
  19. 19. Abstraction: Compiler 19 Code Generation Intermediate Code Co Assembler Code Optimization Generation Generation 9/3/2012
  20. 20. Anticipation of Change: Compiler Case Study 20 Typical changes  New versions of processors and operating systems .  New target machines .  Language and library extensions (e.g., standards) . 9/3/2012
  21. 21. Incrementality :Compiler Case Study 21 Language can be extended incrementally Compiler can be enhanced incrementally  Supported language subset  Runtime diagnostics  Optimizations 9/3/2012
  22. 22. Software Development Process 22 In the water fall model, the software development effort is pictured as flowing through a sequence of different stages as given below Requirement Analysis System Specification System Design Implementation System Testing Maintenance 9/3/2012
  23. 23. Software Development Process 23Requirement Analysis• The focus of this stage is on the needs of the users of the system .• The requirements specify what the system must do, but not how it will be done.• The result of the this stage is a requirement document. 9/3/2012
  24. 24. Software Development Process contd.. 24System Specification• The goal of this stage is to formulate a precise description of the desired system.• The requirements analysis step looks at the system from the point of view of the end user.• The system specifications are written from the point of view of system developers and programmers. 9/3/2012
  25. 25. Software Development Process contd.. 25System Design • This stage begins to address the solution itself. • The system design document outlines the most significant characteristics of the software to be developed.Implementation• In this stage of the development process ,the individual modules or objects described by the design process are coded and preliminary testing is done. 9/3/2012
  26. 26. Software Development Process contd.. 26System testing• This phase is usually the most expensive and time consuming part of the software development process.• Several different levels of testing are involved.Maintenance• This is the last phase of the Software life-cycle model.• Maintenance can be made much easier and less costly by the presence of good documentation.• The document created during the system development should be kept throughout the lifetime of the system. 9/3/2012
  27. 27. System Specifications -Assembler 27Types of specifications • Input specifications  Label  Operation field  An instruction operand  Source program 9/3/2012
  28. 28. System Specifications contd.. 28 • Output specifications  Current location  Object program • Quality specifications  Processing time 9/3/2012
  29. 29. System design- Procedural System Design 29Data flow diagram Object program Source Assemble program program Assembly listing 9/3/2012
  30. 30. Modularized Assembler Design 30 Assembler Pass _1 Pass_2 P1_assign_ Access_int P2_assemb P2_write_P1_read_src P1_assign_loc P2_write_list sym _file le_inst obj Access_symtab P2_search_optab 9/3/2012
  31. 31. System Testing 31 A large software System, composed of many thousands of lines of Source code. These are almost too complex to be debugged effectively all at once , when error occur there are too many places to look for them. Most of systems are tested in a series of stages. In each stage the amount of code being debugged is kept small. So it can be tested thoroughly and efficiently. 9/3/2012
  32. 32. Levels of Testing 32 Unit Testing Black box testing White box testing Integration Testing System Testing - Alpha testing - Beta testing Acceptance Testing 9/3/2012
  33. 33. Sequences for Testing 33 Bottom–Up Testing Top-down Testing 9/3/2012
  34. 34. Conclusion 34Thus System Software also has the principles for its design.Software Engineering Principles are not only applicable tocompilers and assemblers but also for other System softwarelike operating system , linker and loader . 9/3/2012
  35. 35. Reference 35• Leland L . Beck , System software-An introduction to System Programming.• http://www.d.umn.edu/~gshute/softeng/principles.html 9/3/2012
  36. 36. 36Thank You 9/3/2012

×