software engineerig- introduction

Upload: alaalaker

Post on 30-May-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Software Engineerig- Introduction

    1/58

  • 8/14/2019 Software Engineerig- Introduction

    2/58

    2

    OutlineNature of software projectsEngineering approaches

    Software processA process step

    Characteristics of a good process

    Waterfall model for development

    Other models

    Project planning

  • 8/14/2019 Software Engineerig- Introduction

    3/58

    3

    Software SystemsUbiquitous, used in variety ofapplications

    Business, engineering, scientificapplications

    Simple to complex, internal to public,single function to enterprise-wide, one

    location to distributed, batch or real-time, informational to mission-critical,.

  • 8/14/2019 Software Engineerig- Introduction

    4/58

    4

    Challenge in large projectsDeveloping large/complex softwareapplication 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-timeprograms where author and user are

    same !

  • 8/14/2019 Software Engineerig- Introduction

    5/58

    5

    Successful software systemSoftware development projects havenot always been successful

    When do we consider a softwareapplication successful? Development completed

    It is useful

    It is usable, and It is used

    Cost-effectiveness, maintainabilityimplied

  • 8/14/2019 Software Engineerig- Introduction

    6/58

    6

    Reasons for failureSchedule slippage

    Cost over-runs

    Does not solve users problemPoor quality of software

    Poor maintainability

  • 8/14/2019 Software Engineerig- Introduction

    7/587

    Reasons for failure .Ad hoc software development resultsin 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/14/2019 Software Engineerig- Introduction

    8/588

    Engineering: other disciplinesLarge projects common andsuccessfully done

    Buildings bridges, dams Power plants

    Aircrafts, missiles,

    engineering a solution:

    To design, develop (build, fabricate) anartifact that meets specificationsefficiently, cost-effectively and ensuringquality

    Using scientific principles.

  • 8/14/2019 Software Engineerig- Introduction

    9/589

    Engineering Requires well-defined approach :repeatable, predictable

    Large projects requires managing theproject 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 : relatesto failures, efficiency, usability, .

    People willing to pay for quality !

  • 8/14/2019 Software Engineerig- Introduction

    10/5810

    Large Projects

    Involve different types of people Large building : architect, civil engineer,

    electrical engineer, workers (masons,carpenters), .

    Continuous supervision for qualityassurance

    On site supervisors (check cement/steelquality, ensuring proper mix of sand &cement, .)

  • 8/14/2019 Software Engineerig- Introduction

    11/5811

    Large projects Many deliverables : architecture plan,model, structure diagrams, electricalcabling layouts,

    Standards, regulations, conventionsneed to be followed

    Steps, milestones defined and reviews

    are carried out; progress is visibleProject planning and projectmanagement essential

  • 8/14/2019 Software Engineerig- Introduction

    12/5812

    Software projects

    Software is different from otherproducts

    Cost of production concentrated indevelopment

    Maintenance consists of makingcorrections and enhancing or adding

    functions

    Progress in development is difficult tomeasure

  • 8/14/2019 Software Engineerig- Introduction

    13/58

    13

    Apply Engineering ApproachHence planning and control even moreimportant 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

  • 8/14/2019 Software Engineerig- Introduction

    14/58

    14

    Job of Software Developer is

    difficultDealing with users

    Ill-defined requirements

    Concern with ease-of-use and response time

    Dealing with technical people

    Concerned with coding, databases, filestructures, etc.

    Dealing with management

    Concerned with return on their investment

    Cost-benefit analysis

    Schedule

  • 8/14/2019 Software Engineerig- Introduction

    15/58

    15

    Software ProcessProcess consists of activities/steps tobe carried out in a particular order

    Software process deals with bothtechnical 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

  • 8/14/2019 Software Engineerig- Introduction

    16/58

    16

    Process Types Process for managing the project

    defines project planning and control

    effort estimations made and scheduleprepared

    resources are provided

    feedback taken for quality assurance

    monitoring done.

  • 8/14/2019 Software Engineerig- Introduction

    17/58

    17

    Process Types Process for change and configurationmgmt.

    Resolving requests for changes

    Defining versions, their compositions Release control

    Process for managing the aboveprocesses themselves

    Improving the processes based on newtechniques, tools, etc.

    Standardizations and certifications (ISO,CMM)

  • 8/14/2019 Software Engineerig- Introduction

    18/58

    18

    Multiple processes A large software development

    company may have multipledevelopment processesA. For client-server based conventional

    applications (sales processing, payroll)

    B. For enterprise-level (ERP) projects based onpackages and customization

    C. For web-based e-commerce typeD. For data-warehousing/decision-support type

    The company may have manyprojects in each category

  • 8/14/2019 Software Engineerig- Introduction

    19/58

    19

    Step in a ProcessEach step has a well-definedobjective

    Requires people with specific skillsTakes specific inputs and produceswell-defined outputs

    Step defines when it may begin

    (entry criteria) and when it ends (exitcriteria)

    Uses specific techniques, tools,

    guidelines, conventions.

  • 8/14/2019 Software Engineerig- Introduction

    20/58

    20

    Process step

    Step must be executed as per project planthat gives duration, effort, resources,constraints, etc.

    It must produce information formanagement so that corrective actionscan be taken

    E.g., adding more resources

    A step ends in a review (V&V) Verification: check consistency of outputs

    with inputs (of the step)

    Validation: check consistency with user needs

  • 8/14/2019 Software Engineerig- Introduction

    21/58

  • 8/14/2019 Software Engineerig- Introduction

    22/58

  • 8/14/2019 Software Engineerig- Introduction

    23/58

    23

    A Good Process

    Predictable for quality: with respect to number andtype of defects, performance,

    Predictable process is said to be understatistical 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 prototypeand product

  • 8/14/2019 Software Engineerig- Introduction

    24/58

  • 8/14/2019 Software Engineerig- Introduction

    25/58

    25

    Waterfall Model for

    DevelopmentHere, steps (phases) are arranged inlinear 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 obviousand appears natural

  • 8/14/2019 Software Engineerig- Introduction

    26/58

    26

    Waterfall Model

    Produces many intermediatedeliverables, usually documents

    Standard formats defined

    Act as baseline used as reference (forcontractual obligations, formaintenance)

    Important for quality assurance, project

    management, etc.

    It is widely used (with minorvariations) when requirements are

    well understood

  • 8/14/2019 Software Engineerig- Introduction

    27/58

    27

    Waterfall Modelsystem

    engineering

    AnalysisProject planning

    design

    code

    testing &integration

    Installation &

    maintenance

    -software part of some larger system-establish requirements for all elements of the system; assign some

    to software

    -understand information domain, functions, performance

    and interfacing. Project plans made

    -translate requirements into s/w architecture, data structures

    and procedural details. A detailed design step can be

    added

    -programming

    -test logic and function interfaces

    -deployment; make changes for

    -Errors, performance-changes in requirement

  • 8/14/2019 Software Engineerig- Introduction

    28/58

    28

    Deliverables in Waterfall

    ModelProject plan and feasibility reportRequirements document (SRS :Software Requirement Specifications)

    System design documentDetailed design document

    Test plans and test reports

    Source codeSoftware manuals (user manual,installation manual)

    Review reports

  • 8/14/2019 Software Engineerig- Introduction

    29/58

    29

    Cost/Effort Distribution

    Accumulated cost increases dramatically asprogrammers, operators, technical writers andcomputer time is committed.

    Cost of discovering and fixing errors also increases with

    steps

    Problemdefinitio

    n

    Feasibility study

    Analysis Systemdesign

    Detaileddesign

    Implemen-

    tation

    Mainten-

    ance

    Total accumulatedcost

  • 8/14/2019 Software Engineerig- Introduction

    30/58

    30

    Shortcomings of Waterfall

    ModelRequirements may not be clearlyknown, especially for applications nothaving existing (manual) counterpart

    Railway reservation: manual systemexistes, so SRS can be defined

    On-line container management for

    railways - new Knowledge management for a central

    bank new

  • 8/14/2019 Software Engineerig- Introduction

    31/58

    31

    Shortcomings Requirements change with timeduring project life cycle itself

    Users may find solution of little use

    Better to develop in parts in smallerincrements; this is common forpackages, system software

    Considered documentation-heavy: so

    much documentation may not berequired for all types of projects.

  • 8/14/2019 Software Engineerig- Introduction

    32/58

    32

    Prototyping Model

    When customer or developer is notsure

    Of requirements (inputs, outputs)

    Of algorithms, efficiency, human-machineinteraction

    A throwaway prototype built from

    currently known user needsWorking or even paper prototype

  • 8/14/2019 Software Engineerig- Introduction

    33/58

    33

    Prototyping

    Quick design focuses on aspectsvisible to user; features clearly

    understood need not be implementedPrototype is tuned to satisfy customerneeds

    Many iterations may be required toincorporate changes and newrequirements

    Final product follows usual define-design-build-test life cycle

  • 8/14/2019 Software Engineerig- Introduction

    34/58

    34

    Prototyping

    Requirementsgathering

    Quick

    design buildprototype

    evaluate &refine

    Engineerproduct

  • 8/14/2019 Software Engineerig- Introduction

    35/58

  • 8/14/2019 Software Engineerig- Introduction

    36/58

    36

    Iterative Development

    Useful for product development wheredevelopers define scope, features toserve many customers

    Early version with limited featureimportant to establish market and getcustomer feedback

    Initial version may follow any method

    A list of features for future versionsmaintained

    Each version is analyzed to decide

    feature list for next iteration

  • 8/14/2019 Software Engineerig- Introduction

    37/58

    37

    Evolutionary Development model [SE-7, Fig4.2]

    ValidationFinalversion

    DevelopmentIntermediate

    versions

    Specification Initialversion

    Outline

    description

    Concurr ent

    activities

  • 8/14/2019 Software Engineerig- Introduction

    38/58

    38

    Evolutionary Development.. Main characteristics:

    The phases of the software construction areinterleaved

    Feedback from the user is used throughout theentire process

    The software product is refined through manyversions

    Types of evolutionary development: Exploratory development

    Throw-away prototyping

  • 8/14/2019 Software Engineerig- Introduction

    39/58

    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 bydocumentation

    The systems structure can be corrupted bycontinuous change

  • 8/14/2019 Software Engineerig- Introduction

    40/58

    40

    Evolutionary Development

    Disadvantages [contd]: Special tools and techniques may be

    necessary

    The client may have the impression the firstversion is very close to the final product andthus be less patient

    Applicability: When requirements are not well understood

    When the client and the developer agree ona rapid prototype that will be thrown away

    Good for small and medium-sized softwaresystems

  • 8/14/2019 Software Engineerig- Introduction

    41/58

    41

    Component-based Software

    Engineering

    Requirementsspecification Componentanalysis

    Developmentandintegration

    Systemdesignwithreuse

    Requirementsmodification

    Systemvalidation

  • 8/14/2019 Software Engineerig- Introduction

    42/58

    42

    Component-based Software

    Engineering..

    Main characteristics:

    Makes intensive use of existing reusable

    componentsThe focus is on integrating the

    components rather than on creatingthem from the scratch

  • 8/14/2019 Software Engineerig- Introduction

    43/58

  • 8/14/2019 Software Engineerig- Introduction

    44/58

    44

    Component-based Software

    Engineering Disadvantages:

    Compromises in requirements are needed

    Less control over the systems evolution

    Applicability:

    When there is a pool of existingcomponents that could satisfy therequirements of the new product

    Emerging trend: integration of webservices from a range of suppliers

  • 8/14/2019 Software Engineerig- Introduction

    45/58

    45

    Spiral ModelActivities are organized in a spiral having

    many cycles

    Four quadrants in each cycle

    1. Determine objectives,Alternatives, constraints

    2. Evaluate alternatives,identify and handle risks

    4. Plan next step 3. Develop the software

  • 8/14/2019 Software Engineerig- Introduction

    46/58

  • 8/14/2019 Software Engineerig- Introduction

    47/58

    47

    The Spiral Model

  • 8/14/2019 Software Engineerig- Introduction

    48/58

    48

    Spiral Model

    Main characteristics:

    Also a hybrid model that support processiteration

    The process is represented as a spiral, eachloop in the spiral representing a process phase

    Four sectors per loop: objective setting, riskassessment and reduction, development and

    validation, planning Risk is explicitly taken into consideration

  • 8/14/2019 Software Engineerig- Introduction

    49/58

    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

  • 8/14/2019 Software Engineerig- Introduction

    50/58

    50

    The Rational Unified Process

    P h as e i te rat i o n

    In cep t i o n E l ab o ra t i o n C o n s t ru c t i o n Tran s i t i o n

  • 8/14/2019 Software Engineerig- Introduction

    51/58

    51

    Major work products in UP phases

    Inception phase Vision doc, early use cases, feasibility, project

    plans

    Elaboration phase

    Detailed use cases, analysis, architecturedesign, detailed plan, preliminary user manual

    Construction phase Detailed design, components, test plans/cases,

    implementation, detailed manuals

    Transition phase Delivery, beta/acceptance, user feedback

  • 8/14/2019 Software Engineerig- Introduction

    52/58

    52

    What is CASE (Computer-Aided

    Software Engineering)

    Software systems that are intended toprovide automated support for softwareprocess activities.

    CASE systems are often used for methodsupport.

    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.

  • 8/14/2019 Software Engineerig- Introduction

    53/58

    53

    Classification of CASE technology [SE-7, Fig 4.14]

    Single-methodworkbenches

    General-purposeworkbenches

    Multi-methodworkbenches

    Language-specificworkbenches

    Programming TestingAnalysis anddesign

    Integratedenvironments

    Process-centredenvironments

    Filecomparators

    CompilersEditors

    EnvironmentsWorkbenchesTools

    CASEtechnology

  • 8/14/2019 Software Engineerig- Introduction

    54/58

    54

    Project Management Process

    Runs in parallel to development process

    Project planning, monitoring and controlare the basic goals

    Project plan indicates how project will beexecuted successfully

    Without plan, there is no management

    Without measurement, not much planningpossible

    Plan allows progress to be measured

    Plan produced before development beginsand constantly updated

  • 8/14/2019 Software Engineerig- Introduction

    55/58

  • 8/14/2019 Software Engineerig- Introduction

    56/58

    56

    Project Monitoring and

    ControlPlan defines various activities: manyways to represent: Gantt chart, time

    bar chart, PERT/CPM project activitynetwork

    Show activities, expected durations,resources allocated

    Critical paths can be identified

  • 8/14/2019 Software Engineerig- Introduction

    57/58

    57

    Project monitoring

    Each development step givesinformation for tracking progress for

    identifying delays, bottlenecks, etc. Allows corrective action: add more

    resources reduce scope, re-negotiatecost/schedule, etc.

  • 8/14/2019 Software Engineerig- Introduction

    58/58

    SummaryChallenges in software development andneed for engineering approach

    Step-by-step methodology with specificdeliverables

    Types of software processes For development, for project management,

    Precise definition of a step

    Waterfall model : natural, widely followed

    in spite of its limitationsProject management for planning,monitoring and control