SlideShare a Scribd company logo
Software Engineering
                   (LECT 1)




        Dr. M. Sarma




                              1
Organization of this Lecture:
• What is Software Engineering?
• Programs vs. Software Products
• Evolution of Software Engineering
• Notable Changes In Software
  Development Practices
• Introduction to Life Cycle Models
• Summary

                                      2
What is Software Engineering?

• Engineering approach to develop
  software.
  –Building Construction Analogy.
• Systematic collection of past
  experience:
  –techniques,
  –methodologies,
  –guidelines.

                                    3
Engineering Practice

  Heavy use of past experience:
    Past experience is systematically
    arranged.
  Theoretical basis and quantitative
  techniques provided.
  Many are just thumb rules.
  Tradeoff between alternatives
  Pragmatic approach to cost-
  effectiveness                         4
Technology Development Pattern

                                      Engineering


Technology

                    Craft
    Esoteric                       Systematic Use of Past
    Past                           Experience and Scientific
    Experience                     Basis
                 Unorganized Use
                 of
     Art         Past Experience
                     Time




                                                               5
Why Study Software Engineering? (1)

• To acquire skills to develop large
  programs.
  – Exponential growth in complexity and
    difficulty level with size.
  – The ad hoc approach breaks down when
    size of software increases



                                           6
Why Study Software Engineering? (2)

• Ability to solve complex programming
  problems:
  – How to break large projects into smaller and
    manageable parts?
• Learn techniques of:
  – specification, design, interface
    development, testing, project
    management, etc.

                                                   7
Why Study Software Engineering? (3)


• To acquire skills to be a
  better programmer:
    • Higher Productivity
    • Better Quality Programs




                                        8
Software Crisis
• Software products:
  –fail to meet user requirements.
  –frequently crash.
  –expensive.
  –difficult to alter, debug, and enhance.
  –often delivered late.
  –use resources non-optimally.



                                             9
Software Crisis (cont.)


Hw cost
Sw cost




  1960                  Year                      1999
         Relative Cost of Hardware and Software



                                                         10
Factors contributing to the software crisis


 • Larger problems,
 • Lack of adequate training in
   software engineering,
 • Increasing skill shortage,
 • Low productivity improvements.


                                              11
Programs versus Software Products

• Usually small in size    •   Large
• Author himself is sole   •   Large number of users
  user                     •   Team of developers
• Single developer         •   Well-designed interface
• Lacks proper user        •   Well documented &
  interface                    user-manual prepared
• Lacks proper             • Systematic development
  documentation
• Ad hoc development.

                                                         12
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.

                                      13
Early Computer Programming (50s)

• Every programmer developed his
  own style of writing programs:
  –according to his intuition
   (exploratory programming).




                                   14
High-Level Language
Programming (Early 60s)

   High-level languages such as
      FORTRAN, ALGOL, and
     COBOL were introduced:
     This reduced software
     development efforts greatly.


                                    15
High-Level Language
Programming (Early 60s)


    Software development style
        was still exploratory.
     Typical program sizes were limited to a few thousands of lines of
     source code.




                                                                         16
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.

                                            17
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.'’

                                                 18
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.


                                             19
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.

                                         20
Control Flow-Based Design
                                 (Late 60s)




• A program having a messy
  flow chart representation:
 –difficult to understand and
  debug.


                  111                         21
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.

                                          22
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.

                                            23
Control-flow Based Design (Late 60s)

• At that time, Dijkstra published his
  article:
  –“Goto Statement Considered
   Harmful” Comm. of ACM, 1969.
• Many programmers were unhappy
  to read his article.

                                          24
Control Flow-Based Design (Late 60s)


• They published several counter
  articles:
 –highlighting the advantages and
  inevitability of GO TO statements.



                                         25
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;)


                                                  26
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.

                                            27
Structured programs

  Unstructured control flows
  are avoided.
  Consist of a neat set of modules.
  Use single-entry, single-exit
  program constructs.


                                  28
Structured Programming

  A program is called structured
   when it uses only the following
   types of constructs:
     sequence,
     selection,
     iteration

                                   29
Structured programs

  However, violations to this
  feature are permitted:
   due to practical considerations
   such as:
     premature loop exit to support
     exception handling.

                                      30
Structured programs

  Structured programs are:
   Easier to read and understand,
   easier to maintain,
   require less effort and time for
   development.


                                  31
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.                       32
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.

                                         33
Data Structure-Oriented
Design (Early 70s)

  Techniques which
  emphasize designing the
  data structure:
   derive program structure from
   it:
      are called data
      structure-oriented
                                   34
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.
                                   35
Data Structure Oriented
Design (Early 70s)

 JSP technique:
    program code structure
   should correspond to the
   data structure.


                              36
Data Structure Oriented
Design (Early 70s)

  Several other data structure-
  oriented Methodologies also
  exist:
   e.g., Warnier-Orr
   Methodology.


                                  37
Data Flow-Oriented Design            (Late

70s)



       Data flow-oriented
       techniques advocate:
        the data items input to a system
        must first be identified,
        processing required on the data
        items to produce the required
        outputs should be determined.
                                             38
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.
                                        39
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.
                                               40
Data Flow Model of a Car
Assembly Unit
  Engine Store           Door Store


               Chassis        Partly
               with Engine    Assembled
       Fit             Fit    Car          Fit               Paint and   Car
      Engine          Doors               Wheels Assembled    Test
                                                 Car



    Chassis                   Wheel Store
    Store




                                                                               41
Object-Oriented Design         (80s)


  Object-oriented technique:
   an intuitively appealing design
   approach:
   natural objects (such as
   employees, pay-roll-register, etc.)
   occurring in a problem are first
   identified.
                                         42
Object-Oriented Design         (80s)


  Relationships among objects:
   such as composition, reference,
   and inheritance are determined.
  Each object essentially acts as
   a data hiding (or data abstraction)
   entity.

                                       43
Object-Oriented Design   (80s)


  Object-Oriented Techniques
  have gained wide acceptance:
   Simplicity
   Reuse possibilities
   Lower development time and cost
   More robust code
   Easy maintenance



                                     44
Evolution of Design
Techniques
                                   Object-Oriented

                           Data flow-based

              Data structure-
              based

       Control flow-
       based


  Ad hoc




                                                     45
Evolution of Other Software
Engineering Techniques

  The improvements to the
  software design methodologies
   are indeed very conspicuous.
  In additions to the software
  design techniques:
   several other techniques evolved.

                                       46
Evolution of Other Software
Engineering Techniques
   specification techniques,
   project management techniques,
   testing techniques,
   debugging techniques,
   quality assurance techniques,
   software measurement
   techniques,
   CASE tools, etc.

                                    47
Differences between the exploratory
style and modern software
development practices

   Use of Life Cycle Models
   Software is developed through
   several well-defined stages:
     requirements analysis and
     specification,
     design,
     coding,
     testing, etc.
                                      48
Differences between the exploratory
style and modern software
development practices

   Emphasis has shifted
      from error correction to error
     prevention.
   Modern practices emphasize:
     detection of errors as close to
     their point of introduction as
     possible.
                                       49
Differences between the exploratory
style and modern software
development practices (CONT.)

   In exploratory style,
     errors are detected only during
     testing,
   Now,
      focus is on detecting as many
     errors as possible in each
     phase of development.
                                      50
Differences between the exploratory
style and modern software
development practices (CONT.)

   In exploratory style,
     coding is synonymous with
     program development.
   Now,
     coding is considered only a
     small part of program
     development effort.
                                      51
Differences between the exploratory
style and modern software
development practices (CONT.)

   A lot of effort and attention is now
   being paid to:
     requirements specification.
   Also, now there is a distinct design
   phase:
     standard design techniques are being
     used.

                                            52
Differences between the exploratory
style and modern software
development practices (CONT.)
   During all stages of
   development process:
     Periodic reviews are being carried
     out
   Software testing has become
   systematic:
     standard testing techniques are
     available.
                                          53
Differences between the exploratory
style and modern software
development practices (CONT.)

   There is better visibility of design and
   code:
     visibility means production of good quality,
     consistent and standard documents.
     In the past, very little attention was being
     given to producing good quality and
     consistent documents.
     We will see later that increased visibility
     makes software project management easier.

                                                54
Differences between the exploratory
style and modern software
development practices (CONT.)

   Because of good documentation:
     fault diagnosis and maintenance are
     smoother now.
   Several metrics are being used:
     help in software project management,
     quality assurance, etc.



                                            55
Differences between the exploratory
style and modern software
development practices (CONT.)

   Projects are being thoroughly
   planned:
     estimation,
     scheduling,
     monitoring mechanisms.
   Use of CASE tools.


                                      56
Software Life Cycle
  Software life cycle (or software
  process):
    series of identifiable stages
    that a software product
    undergoes during its life time:
      Feasibility study
      requirements analysis and specification,
      design,
      coding,
      testing
                                                 57
Life Cycle Model
  A software life cycle model (or
  process model):
    a descriptive and diagrammatic model
    of software life cycle:
    identifies all the activities required for
    product development,
    establishes a precedence ordering among
    the different activities,
    Divides life cycle into phases.
                                                 58
Why Model Life Cycle ?
  A written description:
    forms a common understanding of
    activities among the software
    developers.
    helps in identifying inconsistencies,
    redundancies, and omissions in the
    development process.
    Helps in tailoring a process model for
    specific projects.
                                             59
Life Cycle Model          (CONT.)




  The development team must
  identify a suitable life cycle model:
    and then adhere to it.
    Primary advantage of adhering to a
    life cycle model:
      helps development of software in a
      systematic and disciplined manner.


                                           60
Life Cycle Model     (CONT.)




  When a program is developed
  by a single programmer ---
   he has the freedom to decide his
   exact steps.




                                      61
Life Cycle Model      (CONT.)




  When a software product is being
  developed by a team:
   there must be a precise understanding
   among team members as to when to
   do what,
   otherwise it would lead to chaos and
   project failure.


                                       62
Life Cycle Model        (CONT.)




   A software project will never
  succeed if:
   one engineer starts writing code,
   another concentrates on writing the
   test document first,
   yet another engineer first defines the
   file structure
   another defines the I/O for his portion
   first.
                                             63
Life Cycle Model         (CONT.)




  A life cycle model:
   defines entry and exit criteria for
   every phase.
   A phase is considered to be
   complete:
     only when all its exit criteria are
     satisfied.


                                           64
Life Cycle Model            (CONT.)




  The phase exit criteria for the software
  requirements specification phase:
    Software Requirements Specification (SRS)
    document is complete, reviewed, and
    approved by the customer.
  A phase can start:
    only if its phase-entry criteria have been
    satisfied.

                                                 65
Life Cycle Model     (CONT.)




  It becomes easier for software
  project managers:
   to monitor the progress of the
   project.




                                    66
Life Cycle Model          (CONT.)




  When a life cycle model is adhered
  to,
   the project manager can at any time
   fairly accurately tell,
     at which stage (e.g., design, code, test,
     etc. ) of the project is.
   Otherwise, it becomes very difficult to
   track the progress of the project
     the project manager would have to
     depend on the guesses of the team           67
Life Cycle Model    (CONT.)




  This usually leads to a problem:
   known as the 99% complete
   syndrome.




                                     68
Life Cycle Model            (CONT.)




  Many life cycle models have been
  proposed.
  We will confine our attention to a few
  important and commonly used models.
    classical waterfall model
    iterative waterfall,
    evolutionary,
    prototyping, and
    spiral model
                                           69
Summary

 Software engineering is:
  systematic collection of decades
  of programming experience
  together with the innovations
  made by researchers.



                                     70
Summary

 A fundamental necessity while
 developing any large software
 product:
  adoption of a life cycle model.




                                    71
Summary
 Adherence to a software life cycle
 model:
  helps to do various development
  activities in a systematic and
  disciplined manner.
  also makes it easier to manage a
  software development effort.


                                      72

More Related Content

PPTX
Lecture 3 software_engineering
PDF
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
PDF
Daniel.dvorak
PPTX
Software process
PPTX
Comp8 unit5 lecture_slides
PPT
Software Engineering Fundamentals Svetlin Nakov
PDF
Software life cycle
DOC
KeithJohnston06212015
Lecture 3 software_engineering
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
Daniel.dvorak
Software process
Comp8 unit5 lecture_slides
Software Engineering Fundamentals Svetlin Nakov
Software life cycle
KeithJohnston06212015

What's hot (13)

PPTX
Software Engineering Methodologies
PPT
Software Development Life Cycle
PPTX
Software development life cycle (sdlc)
PPSX
System development approaches
PPT
Software Development Life Cycle
PPT
Software Development Life Cycle
PPTX
SDLC and Software Process Models
PPT
Software
PPTX
PDF
Space Codesign CMC Microsystems Webinar 20150205 unrolled
PPT
Software development life cycle
PDF
Software Engineering Methodologies
Software Development Life Cycle
Software development life cycle (sdlc)
System development approaches
Software Development Life Cycle
Software Development Life Cycle
SDLC and Software Process Models
Software
Space Codesign CMC Microsystems Webinar 20150205 unrolled
Software development life cycle
Ad

Viewers also liked (20)

PDF
الكتاب المقدس العهد الجديد - انجيل لوقا- Slide share
PDF
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
PDF
库名 外文馆藏期刊题录数据库
PDF
v15preprint44(1)
PDF
Curriculum Vitae - Loutfy H. Madkour
PDF
Chemical industry
ODP
Evaluación 3
PPTX
Los espiritus del bosque
PDF
اسئله الناس البابا شنوده - الجزء السادس
PDF
القس راضى عطاالله. أنا أكون معك دراسه سفر يشوع
PDF
Opinia do rozporzadzenia o halasie w srodowisku
PDF
Spectroscopy letters volume 26 issue 3 1993 [doi 10.1080 00387019308011552] s...
PPTX
Akd motors
PPTX
Sean V. Bradley: The Four P's
PPTX
Ryan Leslie: Reputation Management: Revisited
PPT
Infographics for HP38
PPTX
하루15분 정리의 힘
PDF
Implement Technology People in Mind
PPTX
PDF
Passw
الكتاب المقدس العهد الجديد - انجيل لوقا- Slide share
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
库名 外文馆藏期刊题录数据库
v15preprint44(1)
Curriculum Vitae - Loutfy H. Madkour
Chemical industry
Evaluación 3
Los espiritus del bosque
اسئله الناس البابا شنوده - الجزء السادس
القس راضى عطاالله. أنا أكون معك دراسه سفر يشوع
Opinia do rozporzadzenia o halasie w srodowisku
Spectroscopy letters volume 26 issue 3 1993 [doi 10.1080 00387019308011552] s...
Akd motors
Sean V. Bradley: The Four P's
Ryan Leslie: Reputation Management: Revisited
Infographics for HP38
하루15분 정리의 힘
Implement Technology People in Mind
Passw
Ad

Similar to Software engg lect1 (20)

PPT
Kelis king - engineering approach to develop software.
PPT
PDF
Manual t(se)
PPT
SE_Module1new.ppt
PPTX
The Software Engineering Discipline and Evolution of S/W Engineering Methodol...
PPTX
Introduction to Software engineering ch03
PPT
want to contact me login to www.stqa.org
PPT
Software testing presentation for engineering students of computer science
PPTX
Software Engineering and Project Management - A Beginner's Guide - Part 3
PPT
Software engineering
DOC
Chapter 4 software design
PPTX
Software engineering.pptx
PPT
Software Prototyping in Software Engineering SE8
PPT
Software Prototyping
PDF
Advanced Systems Design with Java UML and MDA 1st Edition Kevin Lano
PDF
An Introduction to Software Architecture - Summary
PDF
Advanced Systems Design with Java UML and MDA 1st Edition Kevin Lano
PPTX
software design
PPT
Chapter 7 Basic Building of SE Architecture.ppt
Kelis king - engineering approach to develop software.
Manual t(se)
SE_Module1new.ppt
The Software Engineering Discipline and Evolution of S/W Engineering Methodol...
Introduction to Software engineering ch03
want to contact me login to www.stqa.org
Software testing presentation for engineering students of computer science
Software Engineering and Project Management - A Beginner's Guide - Part 3
Software engineering
Chapter 4 software design
Software engineering.pptx
Software Prototyping in Software Engineering SE8
Software Prototyping
Advanced Systems Design with Java UML and MDA 1st Edition Kevin Lano
An Introduction to Software Architecture - Summary
Advanced Systems Design with Java UML and MDA 1st Edition Kevin Lano
software design
Chapter 7 Basic Building of SE Architecture.ppt

Recently uploaded (20)

PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
Institutional Correction lecture only . . .
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PPTX
master seminar digital applications in india
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
Cell Structure & Organelles in detailed.
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
RMMM.pdf make it easy to upload and study
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
O7-L3 Supply Chain Operations - ICLT Program
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Institutional Correction lecture only . . .
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Pharmacology of Heart Failure /Pharmacotherapy of CHF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
master seminar digital applications in india
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Chinmaya Tiranga quiz Grand Finale.pdf
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Cell Structure & Organelles in detailed.
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
RMMM.pdf make it easy to upload and study
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
2.FourierTransform-ShortQuestionswithAnswers.pdf
102 student loan defaulters named and shamed – Is someone you know on the list?
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf

Software engg lect1

  • 1. Software Engineering (LECT 1) Dr. M. Sarma 1
  • 2. Organization of this Lecture: • What is Software Engineering? • Programs vs. Software Products • Evolution of Software Engineering • Notable Changes In Software Development Practices • Introduction to Life Cycle Models • Summary 2
  • 3. What is Software Engineering? • Engineering approach to develop software. –Building Construction Analogy. • Systematic collection of past experience: –techniques, –methodologies, –guidelines. 3
  • 4. Engineering Practice Heavy use of past experience: Past experience is systematically arranged. Theoretical basis and quantitative techniques provided. Many are just thumb rules. Tradeoff between alternatives Pragmatic approach to cost- effectiveness 4
  • 5. Technology Development Pattern Engineering Technology Craft Esoteric Systematic Use of Past Past Experience and Scientific Experience Basis Unorganized Use of Art Past Experience Time 5
  • 6. Why Study Software Engineering? (1) • To acquire skills to develop large programs. – Exponential growth in complexity and difficulty level with size. – The ad hoc approach breaks down when size of software increases 6
  • 7. Why Study Software Engineering? (2) • Ability to solve complex programming problems: – How to break large projects into smaller and manageable parts? • Learn techniques of: – specification, design, interface development, testing, project management, etc. 7
  • 8. Why Study Software Engineering? (3) • To acquire skills to be a better programmer: • Higher Productivity • Better Quality Programs 8
  • 9. Software Crisis • Software products: –fail to meet user requirements. –frequently crash. –expensive. –difficult to alter, debug, and enhance. –often delivered late. –use resources non-optimally. 9
  • 10. Software Crisis (cont.) Hw cost Sw cost 1960 Year 1999 Relative Cost of Hardware and Software 10
  • 11. Factors contributing to the software crisis • Larger problems, • Lack of adequate training in software engineering, • Increasing skill shortage, • Low productivity improvements. 11
  • 12. Programs versus Software Products • Usually small in size • Large • Author himself is sole • Large number of users user • Team of developers • Single developer • Well-designed interface • Lacks proper user • Well documented & interface user-manual prepared • Lacks proper • Systematic development documentation • Ad hoc development. 12
  • 13. 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. 13
  • 14. Early Computer Programming (50s) • Every programmer developed his own style of writing programs: –according to his intuition (exploratory programming). 14
  • 15. High-Level Language Programming (Early 60s) High-level languages such as FORTRAN, ALGOL, and COBOL were introduced: This reduced software development efforts greatly. 15
  • 16. High-Level Language Programming (Early 60s) Software development style was still exploratory. Typical program sizes were limited to a few thousands of lines of source code. 16
  • 17. 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. 17
  • 18. 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.'’ 18
  • 19. 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. 19
  • 20. 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. 20
  • 21. Control Flow-Based Design (Late 60s) • A program having a messy flow chart representation: –difficult to understand and debug. 111 21
  • 22. 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. 22
  • 23. 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. 23
  • 24. Control-flow Based Design (Late 60s) • At that time, Dijkstra published his article: –“Goto Statement Considered Harmful” Comm. of ACM, 1969. • Many programmers were unhappy to read his article. 24
  • 25. Control Flow-Based Design (Late 60s) • They published several counter articles: –highlighting the advantages and inevitability of GO TO statements. 25
  • 26. 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;) 26
  • 27. 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. 27
  • 28. Structured programs Unstructured control flows are avoided. Consist of a neat set of modules. Use single-entry, single-exit program constructs. 28
  • 29. Structured Programming A program is called structured when it uses only the following types of constructs: sequence, selection, iteration 29
  • 30. Structured programs However, violations to this feature are permitted: due to practical considerations such as: premature loop exit to support exception handling. 30
  • 31. Structured programs Structured programs are: Easier to read and understand, easier to maintain, require less effort and time for development. 31
  • 32. 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. 32
  • 33. 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. 33
  • 34. Data Structure-Oriented Design (Early 70s) Techniques which emphasize designing the data structure: derive program structure from it: are called data structure-oriented 34
  • 35. 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. 35
  • 36. Data Structure Oriented Design (Early 70s) JSP technique: program code structure should correspond to the data structure. 36
  • 37. Data Structure Oriented Design (Early 70s) Several other data structure- oriented Methodologies also exist: e.g., Warnier-Orr Methodology. 37
  • 38. Data Flow-Oriented Design (Late 70s) Data flow-oriented techniques advocate: the data items input to a system must first be identified, processing required on the data items to produce the required outputs should be determined. 38
  • 39. 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. 39
  • 40. 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. 40
  • 41. Data Flow Model of a Car Assembly Unit Engine Store Door Store Chassis Partly with Engine Assembled Fit Fit Car Fit Paint and Car Engine Doors Wheels Assembled Test Car Chassis Wheel Store Store 41
  • 42. Object-Oriented Design (80s) Object-oriented technique: an intuitively appealing design approach: natural objects (such as employees, pay-roll-register, etc.) occurring in a problem are first identified. 42
  • 43. Object-Oriented Design (80s) Relationships among objects: such as composition, reference, and inheritance are determined. Each object essentially acts as a data hiding (or data abstraction) entity. 43
  • 44. Object-Oriented Design (80s) Object-Oriented Techniques have gained wide acceptance: Simplicity Reuse possibilities Lower development time and cost More robust code Easy maintenance 44
  • 45. Evolution of Design Techniques Object-Oriented Data flow-based Data structure- based Control flow- based Ad hoc 45
  • 46. Evolution of Other Software Engineering Techniques The improvements to the software design methodologies are indeed very conspicuous. In additions to the software design techniques: several other techniques evolved. 46
  • 47. Evolution of Other Software Engineering Techniques specification techniques, project management techniques, testing techniques, debugging techniques, quality assurance techniques, software measurement techniques, CASE tools, etc. 47
  • 48. Differences between the exploratory style and modern software development practices Use of Life Cycle Models Software is developed through several well-defined stages: requirements analysis and specification, design, coding, testing, etc. 48
  • 49. Differences between the exploratory style and modern software development practices Emphasis has shifted from error correction to error prevention. Modern practices emphasize: detection of errors as close to their point of introduction as possible. 49
  • 50. Differences between the exploratory style and modern software development practices (CONT.) In exploratory style, errors are detected only during testing, Now, focus is on detecting as many errors as possible in each phase of development. 50
  • 51. Differences between the exploratory style and modern software development practices (CONT.) In exploratory style, coding is synonymous with program development. Now, coding is considered only a small part of program development effort. 51
  • 52. Differences between the exploratory style and modern software development practices (CONT.) A lot of effort and attention is now being paid to: requirements specification. Also, now there is a distinct design phase: standard design techniques are being used. 52
  • 53. Differences between the exploratory style and modern software development practices (CONT.) During all stages of development process: Periodic reviews are being carried out Software testing has become systematic: standard testing techniques are available. 53
  • 54. Differences between the exploratory style and modern software development practices (CONT.) There is better visibility of design and code: visibility means production of good quality, consistent and standard documents. In the past, very little attention was being given to producing good quality and consistent documents. We will see later that increased visibility makes software project management easier. 54
  • 55. Differences between the exploratory style and modern software development practices (CONT.) Because of good documentation: fault diagnosis and maintenance are smoother now. Several metrics are being used: help in software project management, quality assurance, etc. 55
  • 56. Differences between the exploratory style and modern software development practices (CONT.) Projects are being thoroughly planned: estimation, scheduling, monitoring mechanisms. Use of CASE tools. 56
  • 57. Software Life Cycle Software life cycle (or software process): series of identifiable stages that a software product undergoes during its life time: Feasibility study requirements analysis and specification, design, coding, testing 57
  • 58. Life Cycle Model A software life cycle model (or process model): a descriptive and diagrammatic model of software life cycle: identifies all the activities required for product development, establishes a precedence ordering among the different activities, Divides life cycle into phases. 58
  • 59. Why Model Life Cycle ? A written description: forms a common understanding of activities among the software developers. helps in identifying inconsistencies, redundancies, and omissions in the development process. Helps in tailoring a process model for specific projects. 59
  • 60. Life Cycle Model (CONT.) The development team must identify a suitable life cycle model: and then adhere to it. Primary advantage of adhering to a life cycle model: helps development of software in a systematic and disciplined manner. 60
  • 61. Life Cycle Model (CONT.) When a program is developed by a single programmer --- he has the freedom to decide his exact steps. 61
  • 62. Life Cycle Model (CONT.) When a software product is being developed by a team: there must be a precise understanding among team members as to when to do what, otherwise it would lead to chaos and project failure. 62
  • 63. Life Cycle Model (CONT.) A software project will never succeed if: one engineer starts writing code, another concentrates on writing the test document first, yet another engineer first defines the file structure another defines the I/O for his portion first. 63
  • 64. Life Cycle Model (CONT.) A life cycle model: defines entry and exit criteria for every phase. A phase is considered to be complete: only when all its exit criteria are satisfied. 64
  • 65. Life Cycle Model (CONT.) The phase exit criteria for the software requirements specification phase: Software Requirements Specification (SRS) document is complete, reviewed, and approved by the customer. A phase can start: only if its phase-entry criteria have been satisfied. 65
  • 66. Life Cycle Model (CONT.) It becomes easier for software project managers: to monitor the progress of the project. 66
  • 67. Life Cycle Model (CONT.) When a life cycle model is adhered to, the project manager can at any time fairly accurately tell, at which stage (e.g., design, code, test, etc. ) of the project is. Otherwise, it becomes very difficult to track the progress of the project the project manager would have to depend on the guesses of the team 67
  • 68. Life Cycle Model (CONT.) This usually leads to a problem: known as the 99% complete syndrome. 68
  • 69. Life Cycle Model (CONT.) Many life cycle models have been proposed. We will confine our attention to a few important and commonly used models. classical waterfall model iterative waterfall, evolutionary, prototyping, and spiral model 69
  • 70. Summary Software engineering is: systematic collection of decades of programming experience together with the innovations made by researchers. 70
  • 71. Summary A fundamental necessity while developing any large software product: adoption of a life cycle model. 71
  • 72. Summary Adherence to a software life cycle model: helps to do various development activities in a systematic and disciplined manner. also makes it easier to manage a software development effort. 72