Introduction to Software Engineering - PowerPoint PPT Presentation

1 / 58
About This Presentation
Title:

Introduction to Software Engineering

Description:

Business, engineering, scientific applications ... building : architect, civil engineer, electrical engineer, workers (masons, carpenters) ... – PowerPoint PPT presentation

Number of Views:143
Avg rating:3.0/5.0
Slides: 59
Provided by: ARU52
Category:

less

Transcript and Presenter's Notes

Title: Introduction to Software Engineering


1
Introduction to Software Engineering
  • N. L. Sarda
  • I.I.T. Bombay

2
Outline
  • Nature of software projects
  • Engineering approaches
  • Software process
  • A process step
  • Characteristics of a good process
  • Waterfall model for development
  • Other models
  • Project planning

3
Software Systems
  • Ubiquitous, used in variety of applications
  • Business, engineering, scientific applications
  • Simple to complex, internal to public, single
    function to enterprise-wide, one location to
    distributed, batch or real-time, informational to
    mission-critical, .

4
Challenge in large projects
  • Developing large/complex software application is
    very challenging
  • Effort intensive
  • High cost
  • Long development time
  • Changing needs for users
  • High risk of failure, user acceptance,
    performance, maintainability,
  • Quite different from one-time programs where
    author and user are same !

5
Successful software system
  • Software development projects have not always
    been successful
  • When do we consider a software application
    successful?
  • Development completed
  • It is useful
  • It is usable, and
  • It is used
  • Cost-effectiveness, maintainability implied

6
Reasons for failure
  • Schedule slippage
  • Cost over-runs
  • Does not solve users problem
  • Poor quality of software
  • Poor maintainability

7
Reasons for failure .
  • Ad hoc software development results in such
    problems
  • No planning of development work (e.g. no
    milestones defined)
  • Deliverables to user not identified
  • Poor understanding of user requirements
  • No control or review
  • Technical incompetence of developers
  • Poor understanding of cost and effort by both
    developer and user

8
Engineering other disciplines
  • Large projects common and successfully done
  • Buildings bridges, dams
  • Power plants
  • Aircrafts, missiles,
  • engineering a solution
  • To design, develop (build, fabricate) an artifact
    that meets specifications efficiently,
    cost-effectively and ensuring quality
  • Using scientific principles.

9
Engineering
  • Requires well-defined approach repeatable,
    predictable
  • Large projects requires managing the project
    itself
  • Manage people, money (cost), equipment, schedule
  • Scale makes big difference compare building a
    hut, 2storeyed house, or 50-storeyed apartment
    building
  • Quality extremely important relates to
    failures, efficiency, usability, .
  • People willing to pay for quality !

10
Large Projects
  • Involve different types of people
  • Large building architect, civil engineer,
    electrical engineer, workers (masons,
    carpenters), .
  • Continuous supervision for quality assurance
  • On site supervisors (check cement/steel quality,
    ensuring proper mix of sand cement, .)

11
Large projects
  • Many deliverables architecture plan, model,
    structure diagrams, electrical cabling layouts,
  • Standards, regulations, conventions need to be
    followed
  • Steps, milestones defined and reviews are carried
    out progress is visible
  • Project planning and project management essential

12
Software projects
  • Software is different from other products
  • Cost of production concentrated in development
  • Maintenance consists of making corrections and
    enhancing or adding functions
  • Progress in development is difficult to measure

13
Apply Engineering Approach
  • Hence planning and control even more important in
    software development ? engineering approach
  • Attempt to estimate cost/effort
  • Plan and schedule work
  • Involve user in defining requirements
  • Identify stages in development
  • Define clear milestones so that progress can be
    measured
  • Schedule reviews both for control and quality
  • Define deliverables
  • Plan extensive testing

14
Job of Software Developer is difficult
  • Dealing with users
  • Ill-defined requirements
  • Concern with ease-of-use and response time
  • Dealing with technical people
  • Concerned with coding, databases, file
    structures, etc.
  • Dealing with management
  • Concerned with return on their investment
  • Cost-benefit analysis
  • Schedule

15
Software Process
  • Process consists of activities/steps to be
    carried out in a particular order
  • Software process deals with both technical and
    management issues
  • Consists of different types of process
  • Process for software development produces
    software as end-result
  • multiple such processes may exist
  • a project follows a particular process

16
Process Types
  • Process for managing the project
  • defines project planning and control
  • effort estimations made and schedule prepared
  • resources are provided
  • feedback taken for quality assurance
  • monitoring done.

17
Process Types
  • Process for change and configuration mgmt.
  • Resolving requests for changes
  • Defining versions, their compositions
  • Release control
  • Process for managing the above processes
    themselves
  • Improving the processes based on new techniques,
    tools, etc.
  • Standardizations and certifications (ISO, CMM)

18
Multiple processes
  • A large software development company may have
    multiple development processes
  • For client-server based conventional applications
    (sales processing, payroll)
  • For enterprise-level (ERP) projects based on
    packages and customization
  • For web-based e-commerce type
  • For data-warehousing/decision-support type
  • The company may have many projects in each
    category

19
Step in a Process
  • Each step has a well-defined objective
  • Requires people with specific skills
  • Takes specific inputs and produces well-defined
    outputs
  • Step defines when it may begin (entry criteria)
    and when it ends (exit criteria)
  • Uses specific techniques, tools, guidelines,
    conventions.

20
Process step
  • Step must be executed as per project plan that
    gives duration, effort, resources, constraints,
    etc.
  • It must produce information for management so
    that corrective actions can be taken
  • E.g., adding more resources
  • A step ends in a review (VV)
  • Verification check consistency of outputs with
    inputs (of the step)
  • Validation check consistency with user needs

21
Process step
22
Characteristics of a Good Process
  • Should be precisely defined no ambiguity about
    what is to be done, when, how, etc.
  • It must be predictable can be repeated in other
    projects with confidence about its outcome
  • Predictable with respect to effort, cost
  • Project A Web-based library applications done
    by 3 persons in 4 months
  • ? another project B (guest house bookings),
    similar in complexity should also take about 12
    person months.

23
A Good Process
  • Predictable for quality with respect to number
    and type of defects, performance,
  • Predictable process is said to be under
    statistical control , where actual values are
    close to expected values
  • It supports testing and maintainability
  • Maintenance by third party
  • Follow standards, provide necessary documentation
  • This characteristic differentiates between
    prototype and product

24
A Good Process
  • Facilitates early detection of and removal of
    defects
  • Defects add to project cost
  • Late detection/correction is costly
  • It should facilitate monitoring and improvement
  • Based on feedback
  • Permit use of new tools, technologies
  • Permit measurements

25
Waterfall Model for Development
  • Here, steps (phases) are arranged in linear order
  • A step take inputs from previous step, gives
    output to next step (if any)
  • Exit criteria of a step must match with entry
    criteria of the succeeding step
  • It follows specify, design, build sequence that
    is intuitively obvious and appears natural

26
Waterfall Model
  • Produces many intermediate deliverables, usually
    documents
  • Standard formats defined
  • Act as baseline used as reference (for
    contractual obligations, for maintenance)
  • Important for quality assurance, project
    management, etc.
  • It is widely used (with minor variations) when
    requirements are well understood

27
Waterfall Model
  • deployment make changes for
  • Errors, performance
  • changes in requirement

28
Deliverables in Waterfall Model
  • Project plan and feasibility report
  • Requirements document (SRS Software Requirement
    Specifications)
  • System design document
  • Detailed design document
  • Test plans and test reports
  • Source code
  • Software manuals (user manual, installation
    manual)
  • Review reports

29
Cost/Effort Distribution
  • Accumulated cost increases dramatically as
    programmers, operators, technical writers and
    computer time is committed.
  • Cost of discovering and fixing errors also
    increases with steps

30
Shortcomings of Waterfall Model
  • Requirements may not be clearly known, especially
    for applications not having existing (manual)
    counterpart
  • Railway reservation manual system existes, so
    SRS can be defined
  • On-line container management for railways - new
  • Knowledge management for a central bank new

31
Shortcomings
  • Requirements change with time during project life
    cycle itself
  • Users may find solution of little use
  • Better to develop in parts in smaller increments
    this is common for packages, system software
  • Considered documentation-heavy so much
    documentation may not be required for all types
    of projects.

32
Prototyping Model
  • When customer or developer is not sure
  • Of requirements (inputs, outputs)
  • Of algorithms, efficiency, human-machine
    interaction
  • A throwaway prototype built from currently known
    user needs
  • Working or even paper prototype

33
Prototyping
  • Quick design focuses on aspects visible to user
    features clearly understood need not be
    implemented
  • Prototype is tuned to satisfy customer needs
  • Many iterations may be required to incorporate
    changes and new requirements
  • Final product follows usual define-design-build-te
    st life cycle

34
Prototyping
35
Limitations of Prototyping
  • Customer may want prototype itself !
  • Developer may continue with implementation
    choices made during prototyping
  • may not give required quality, performance, .
  • Good tools need to be acquired for quick
    development
  • May increase project cost

36
Iterative Development
  • Useful for product development where developers
    define scope, features to serve many customers
  • Early version with limited feature important to
    establish market and get customer feedback
  • Initial version may follow any method
  • A list of features for future versions maintained
  • Each version is analyzed to decide feature list
    for next iteration

37
  • Evolutionary Development model SE-7, Fig 4.2

38
Evolutionary Development..
  • Main characteristics
  • The phases of the software construction are
    interleaved
  • Feedback from the user is used throughout the
    entire process
  • The software product is refined through many
    versions
  • Types of evolutionary development
  • Exploratory development
  • Throw-away prototyping

39
Evolutionary Development
  • Advantages
  • Deals constantly with changes
  • Provides quickly an initial version of the system
  • Involves all development teams
  • Disadvantages
  • Quick fixes may be involved
  • Invisible process, not well-supported by
    documentation
  • The systems structure can be corrupted by
    continuous change

40
Evolutionary Development
  • Disadvantages contd
  • Special tools and techniques may be necessary
  • The client may have the impression the first
    version is very close to the final product and
    thus be less patient
  • Applicability
  • When requirements are not well understood
  • When the client and the developer agree on a
    rapid prototype that will be thrown away
  • Good for small and medium-sized software systems

41
Component-based Software Engineering
42
Component-based Software Engineering..
  • Main characteristics
  • Makes intensive use of existing reusable
    components
  • The focus is on integrating the components rather
    than on creating them from the scratch

43
Component-based Software Engineering.
  • Advantages
  • Reduces considerably the software to be developed
    in-house
  • Allows faster delivery
  • In principle, more reliable systems, due to using
    previously tested components

44
Component-based Software Engineering
  • Disadvantages
  • Compromises in requirements are needed
  • Less control over the systems evolution
  • Applicability
  • When there is a pool of existing components that
    could satisfy the requirements of the new product
  • Emerging trend integration of web services from
    a range of suppliers

45
Spiral Model
  • Activities are organized in a spiral having many
    cycles
  • Four quadrants in each cycle

46
Spiral Model
  • Prototyping, simulations, benchmarking may be
    done to resolve uncertainties/risks
  • Development step depends on remaining risks
    e.g.,
  • Do prototype for user interface risks
  • Use basic waterfall model when user interface and
    performance issues are understood but only
    development risk remains
  • Risk driven allows us mix of specification-orien
    ted, prototype-oriented, simulation based or any
    other approach.

47
The Spiral Model
48
Spiral Model
  • Main characteristics
  • Also a hybrid model that support process
    iteration
  • The process is represented as a spiral, each loop
    in the spiral representing a process phase
  • Four sectors per loop objective setting, risk
    assessment and reduction, development and
    validation, planning
  • Risk is explicitly taken into consideration

49
Spiral Model
  • Advantages
  • Risk reduction mechanisms are in place
  • Supports iteration and reflects real-world
    practices
  • Systematic approach
  • Disadvantages
  • Requires expertise in risk evaluation and
    reduction
  • Complex, relatively difficult to follow strictly
  • Applicable only to large systems
  • Applicability
  • Internal development of large systems

50
The Rational Unified Process
51
Major work products in UP phases
  • Inception phase
  • Vision doc, early use cases, feasibility, project
    plans
  • Elaboration phase
  • Detailed use cases, analysis, architecture
    design, detailed plan, preliminary user manual
  • Construction phase
  • Detailed design, components, test plans/cases,
    implementation, detailed manuals
  • Transition phase
  • Delivery, beta/acceptance, user feedback

52
What is CASE (Computer-Aided Software Engineering)
  • Software systems that are intended to provide
    automated support for software process
    activities.
  • CASE systems are often used for method support.
  • Upper-CASE
  • Tools to support the early process activities of
    requirements and design
  • Lower-CASE
  • Tools to support later activities such as
    programming, debugging and testing.

53
  • Classification of CASE technology SE-7, Fig
    4.14

54
Project Management Process
  • Runs in parallel to development process
  • Project planning, monitoring and control are the
    basic goals
  • Project plan indicates how project will be
    executed successfully
  • Without plan, there is no management
  • Without measurement, not much planning possible
  • Plan allows progress to be measured
  • Plan produced before development begins and
    constantly updated

55
Project Planning
  • Prepare cost/effort estimation
  • Based on project complexity, scope, productivity
    levels, other historical data
  • Many models available
  • Select development process, define milestones and
    prepare schedule
  • Know how effort is distributed over phases from
    historical data
  • Decide project staffing
  • Make quality control plans define reviews,
    inspections, testing strategies to detect/remove
    defects

56
Project Monitoring and Control
  • Plan defines various activities many ways to
    represent Gantt chart, time bar chart, PERT/CPM
    project activity network
  • Show activities, expected durations, resources
    allocated
  • Critical paths can be identified

57
Project monitoring
  • Each development step gives information for
    tracking progress for identifying delays,
    bottlenecks, etc.
  • Allows corrective action add more resources
    reduce scope, re-negotiate cost/schedule, etc.

58
Summary
  • Challenges in software development and need for
    engineering approach
  • Step-by-step methodology with specific
    deliverables
  • Types of software processes
  • For development, for project management,
  • Precise definition of a step
  • Waterfall model natural, widely followed in
    spite of its limitations
  • Project management for planning, monitoring and
    control
Write a Comment
User Comments (0)
About PowerShow.com