Software engineering principles in system software design
Tech_MX
11,750 views
36 slides
Sep 03, 2012
Slide 1 of 36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
About This Presentation
No description available for this slideshow.
Size: 165.32 KB
Language: en
Added: Sep 03, 2012
Slides: 36 pages
Slide Content
Software Engineering Principles in System Software Design 9/1/2012 1
Agenda Introduction Definition of Software Engineering Principles of Software Engineering Example –Compiler Software Development Process Example –Assembler Conclusion 9/1/2012 2
Introduction 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/1/2012 3
Software Engineering: Definition 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/1/2012 4
Principles of Software Engineering Rigor and formality Separation of concerns Modularity Abstraction Anticipation of change Generality Incrementality 9/1/2012 5
Rigor and Formality 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/1/2012 6
Separation of concerns To dominate complexity, separate the issues to concentrate on one at a time. Divide & conquer. Supports parallelization of efforts and separation of responsibilities. 9/1/2012 7
Modularity 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/1/2012 8
Cohesion and coupling 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/1/2012 9
A visual representation High coupling Low coupling 9/1/2012 10
Abstraction 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/1/2012 11
Anticipation of change 12 Ability to support software evolution requires anticipating potential future changes. It is the basis for software evolvability. 9/1/2012
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/1/2012
Incrementality 14 Process proceeds in a stepwise fashion ( increments ) Examples (process) D eliver subsets of a system early to get early feedback from expected users, then add new features incrementally. D eal first with functionality, then turn to performance. D eliver a first prototype and then incrementally add effort to turn prototype into product. 9/1/2012
Example -Compiler Rigor 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/1/2012 15
Separation of Concerns: Compiler 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/1/2012 16
Modularity: Compiler 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 Source code object code Symbol Table Lexical Analysis Parsing Semantic Analysis Code Generation 9/1/2012 17
Abstraction: Compiler 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/1/2012 18
Anticipation of Change: Compiler Case Study Typical changes New versions of processors and operating systems . New target machines . Language and library extensions (e.g., standards) . 9/1/2012 20
Incrementality :Compiler Case Study Language can be extended incrementally Compiler can be enhanced incrementally Supported language subset Runtime diagnostics Optimizations 9/1/2012 21
Software Development Process 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/1/2012 22
Software Development Process Requirement 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/1/2012 23
Software Development Process contd.. System 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/1/2012 24
Software Development Process contd.. System 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/1/2012 25
Software Development Process contd.. System 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/1/2012 26
System Specifications -Assembler Types of specifications Input specifications Label Operation field An instruction operand Source program 9/1/2012 27
System Specifications contd.. Output specifications Current location Object program Quality specifications Processing time 9/1/2012 28
System design- Procedural System Design Data flow diagram Assemble program Source program Object program Assembly listing 9/1/2012 29
System Testing 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/1/2012 31
Levels of Testing Unit Testing Black box testing White box testing Integration Testing System Testing - Alpha testing - Beta testing Acceptance Testing 9/1/2012 32
Sequences for Testing Bottom–Up Testing Top-down Testing 9/1/2012 33
Conclusion Thus System Software also has the principles for its design. Software Engineering Principles are not only applicable to compilers and assemblers but also for other System software like operating system , linker and loader . 9/1/2012 34
Reference Leland L . Beck , System software-An introduction to System Programming. http://www.d.umn.edu/~gshute/softeng/principles.html 9/1/2012 35