Department of CSE, MIT, Manipal SOFTWARE ENGINEERING By Prakash Kalingrao Aithal.

Slides:



Advertisements
Similar presentations
Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Advertisements

SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Computers Are Your Future
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
Chapter 1 Principles of Programming and Software Engineering.
Testing an individual module
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
Chapter 8: Introduction to High-Level Language Programming Invitation to Computer Science, C++ Version, Fourth Edition.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
An Introduction to Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 System and Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
1 Chapter-01 Introduction to Computers and C++ Programming.
Language Evaluation Criteria
Programming Languages CPS120: Introduction to Computer Science Lecture 5.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
2-Oct-15 Introduction to SWE1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts.
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
GOTO CONSIDERED HARMFUL Tarana Yar. The publishing of the paper entitled “Go To Statement Considered Harmful”, written by Edsger W. Dijkstra in 1968,
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
Computing System Fundamentals 3.1 Language Translators.
Software Engineering (LECT 1)
CS 3050 Object-Oriented Analysis and Design. Objectives What is “Object-Oriented?” Object-Oriented Approach Vs. Structured Approach How Has the Object-Oriented.
How Are Computers Programmed? CPS120: Introduction to Computer Science Lecture 5.
FOUNDATION IN INFORMATION TECHNOLOGY (CS-T-101) TOPIC : INFORMATION SYSTEM – SOFTWARE.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
An Introduction to Software Engineering. Software engineering is concerned with theories, methods and tools for professional software development Software.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Department of CSE, MIT, Manipal SOFTWARE ENGINEERING By Prakash Kalingrao Aithal.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
L ECTURE 1 Introduction Getting started with software engineering.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
Advanced Software Engineering Dr. Cheng
Principles of Programming & Software Engineering
Structured Programming The Basics
Software Engineering.
Chapter3:Software Processes
Software Testing.
Software Engineering (LECT 1)
Principles of Programming and Software Engineering
CS701 SOFTWARE ENGINEERING
Software Engineering PPT By :Dr. R. Mall.
Software Maintenance PPT By :Dr. R. Mall.
Software Processes.
Software Engineering INTRODUCTION
What Is Good Software(Program)?
Top-Down Design & JSP Skill Area Part D
Programming Languages, Preliminaries, History & Evolution
What is Software Engineering?
Presentation transcript:

Department of CSE, MIT, Manipal SOFTWARE ENGINEERING By Prakash Kalingrao Aithal

Department of CSE, MIT, Manipal Programs versus Software Products Usually small in size Author himself is sole user Single developer Lacks proper user interface Lacks proper documentation Ad hoc development. Large Large number of users Team of developers Well-designed interface Well documented & user-manual prepared Systematic development

Department of CSE, MIT, Manipal System Engineering Integration and Testing Hardware Software Partitioning Hardware Development Software Development Feasibility Study Requirements Analysis and Specification Project Management

Department of CSE, MIT, Manipal Emergence of Software Engineering Early Computer Programming (1950s): –Programs were being written in assembly language. –Programs were limited to about a few hundreds of lines of assembly code.

Department of CSE, MIT, Manipal Early Computer Programming (50s) Every programmer developed his own style of writing programs: –According to his intuition (exploratory programming).

Department of CSE, MIT, Manipal ●High-level languages such as FORTRAN, ALGOL, and COBOL were introduced: – This reduced software development efforts greatly. High-Level Language Programming (Early 60s)

Department of CSE, MIT, Manipal ●Software development style was still exploratory. – Typical program sizes were limited to a few thousands of lines of source code. High-Level Language Programming (Early 60s)

Department of CSE, MIT, Manipal Control Flow-Based Design (late 60s) Size and complexity of programs increased further: –Exploratory programming style proved to be insufficient. Programmers found: –Very difficult to write cost-effective and correct programs.

Department of CSE, MIT, Manipal Control Flow-Based Design (late 60s) Programmers found: –programs written by others very difficult to understand and maintain. To cope up with this problem, experienced programmers advised: ``Pay particular attention to the design of the program's control structure. '’

Department of CSE, MIT, Manipal Control Flow-Based Design (late 60s) A program's control structure indicates: – The sequence in which the program's instructions are executed. To help design programs having good control structure: –Flow charting technique was developed.

Department of CSE, MIT, Manipal Control Flow-Based Design (late 60s) Using flow charting technique: –One can represent and design a program's control structure. –Usually one understands a program: By mentally simulating the program's execution sequence.

Department of CSE, MIT, Manipal Control Flow-Based Design (Late 60s) A program having a messy flow chart representation: –Difficult to understand and debug.

Department of CSE, MIT, Manipal Control Flow-Based Design (Late 60s) It was found: –GO TO statements makes control structure of a program messy. –GO TO statements alter the flow of control arbitrarily. –The need to restrict use of GO TO statements was recognized.

Department of CSE, MIT, Manipal Control Flow-Based Design (Late 60s) Many programmers had extensively used assembly languages. –JUMP instructions are frequently used for program branching in assembly languages. –Programmers considered use of GO TO statements inevitable.

Department of CSE, MIT, Manipal Control-flow Based Design (Late 60s) At that time, Dijkstra published his article: –“Goto Statement Considered Harmful” Comm. of ACM, Many programmers were unhappy to read his article.

Department of CSE, MIT, Manipal Control Flow-Based Design (Late 60s) They published several counter articles: –Highlighting the advantages and inevitability of GO TO statements.

Department of CSE, MIT, Manipal Control Flow-Based Design (Late 60s) But, soon it was conclusively proved: –Only three programming constructs are sufficient to express any programming logic: sequence (e.g. a=0;b=5;) selection ( e.g. if(c=true) k=5 else m=5;) iteration (e.g. while(k>0) k=j-k;)

Department of CSE, MIT, Manipal Control-flow Based Design (Late 60s) Everyone accepted: –It is possible to solve any programming problem without using GO TO statements. –This formed the basis of Structured Programming methodology.

Department of CSE, MIT, Manipal Structured Programming A program is called structured –When it uses only the following types of constructs: sequence, selection, iteration

Department of CSE, MIT, Manipal Structured Programs Unstructured control flows are avoided. Consist of a neat set of modules. Use single-entry, single-exit program constructs.

Department of CSE, MIT, Manipal ●However, violations to this feature are permitted: – Due to practical considerations such as: ●Premature loop exit to support exception handling. Structured Programs

Department of CSE, MIT, Manipal Structured programs Structured programs are: –Easier to read and understand, –Easier to maintain, –Require less effort and time for development.

Department of CSE, MIT, Manipal Structured Programming Research experience shows: –Programmers commit less number of errors: While using structured if-then-else and do-while statements. Compared to test-and-branch constructs.

Department of CSE, MIT, Manipal Data Structure-Oriented Design (Early 70s) Soon it was discovered: –It is important to pay more attention to the design of data structures of a program Than to the design of its control structure.

Department of CSE, MIT, Manipal Data Structure-Oriented Design (Early 70s) Techniques which emphasize designing the data structure: –Derive program structure from it: data structure- oriented design techniques.Are called data structure- oriented design techniques.

Department of CSE, MIT, Manipal Data Structure Oriented Design (Early 70s) Example of data structure-oriented design technique: –Jackson's Structured Programming(JSP) methodology Developed by Michael Jackson in 1970s.

Department of CSE, MIT, Manipal ●JSP technique: – Program code structure should correspond to the data structure. Data Structure Oriented Design (Early 70s)

Department of CSE, MIT, Manipal ●In JSP methodology: – A program's data structures are first designed using notations for ●sequence, selection, and iteration. – Then data structure design is used : ●To derive the program structure. Data Structure Oriented Design (Early 70s)

Department of CSE, MIT, Manipal ●Several other data structure- oriented Methodologies also exist: – e.g., Warnier-Orr Methodology. Data Structure Oriented Design (Early 70s)

Department of CSE, MIT, Manipal Data Flow-Oriented Design (Late 70s) Data flow technique identifies: –Different processing stations (functions) in a system. –The items (data) that flow between processing stations.

Department of CSE, MIT, Manipal Data Flow-Oriented Design (Late 70s) Data flow technique is a generic technique: –Can be used to model the working of any system. not just software systems. A major advantage of the data flow technique is its simplicity.

Department of CSE, MIT, Manipal Data Flow Model of a Car Assembly Unit Fit Engine Paint and Test Fit Wheels Fit Doors Chassis Store Door Store Wheel Store Engine Store Car Partly Assembled Car Assembled Car Chassis with Engine

Department of CSE, MIT, Manipal Object Oriented Programming Reuse Real life objects Data centric

Department of CSE, MIT, Manipal Evolution of Design Techniques Object-Oriented Ad hoc Data flow-based Data structure- based Control flow- based

Department of CSE, MIT, Manipal Differences between exploratory style and SE practices!!!!! Error correction V/s Error Prevention Coding Only V/s Other activities No review V/S Periodic reviews No visibility V/S better Visibility No plan V/S cost estimation resource scheduling.

Department of CSE, MIT, Manipal References Fundamentals of Software Engineering 2 nd Edition by Rajib Mall Software Engineering a practitioners Approach by Pressman R. S. Software Engineering Theory and Practice by Pfleeger S. L. and Joanne M. Atlee An Integrated Approach to Software Engineering by Pankaj Jalote