An Introduction to Software Engineering-Stu

Embed Size (px)

Citation preview

  • 8/8/2019 An Introduction to Software Engineering-Stu

    1/82

    An Introduction to Software

    Engineering

  • 8/8/2019 An Introduction to Software Engineering-Stu

    2/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    3/82

    What is Software?

    software is engineered

    software doesnt wear out

    software is complex

  • 8/8/2019 An Introduction to Software Engineering-Stu

    4/82

    What are the attributes of good software?

    The software should deliver the required functionality andperformance to the user and should be maintainable,dependable and acceptable.

    Maintainability Software must evolve to meet changing needs;

    Dependability Software must be trustworthy;

    Efficiency

    Software sh

    ould not make wasteful use of system resources; Acceptability

    Software must accepted by the users for which it was designed.This means it must be understandable, usable and compatiblewith other systems.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    5/82

    Softwares Dual Role

    Software is a product

    Delivers computing potential

    Produces, manages, acquires, modifies, displays, or transmits

    information

    Software is a vehicle for delivering a product

    Supports or directly provides system functionality

    Controls other programs (e.g., an operating system)

    Effects communications (e.g., networking software)

    Helps build other software (e.g., software tools)

  • 8/8/2019 An Introduction to Software Engineering-Stu

    6/82

    The Changing Nature of Software

    System Software. Operating Systems, Compilers

    Application Software. Railway Reservation

    Engineering / Scientific Software. CAD, Mat-Lab Embedded Software. Key Stroke - Character

    Product - Line Software. Ms.Office, Editors , Games

    WebApps (Web applications Browser). Yahoo

    Artificial Intelligence software: Robotics , Expert Systems

    Ubiquitous Computing. Present every where

    Netsourcing. Downloading using Internet

  • 8/8/2019 An Introduction to Software Engineering-Stu

    7/82

    Legacy Software

    software must be adapted to meet the needs

    of new computing environments or

    technology. software must be enhanced to implement

    new business requirements.

    software must be extended to make it

    interoperable with other more modern

    systems or databases.

    software must be re-architected to make it

    viable within a network environment.

    Why must it change?

  • 8/8/2019 An Introduction to Software Engineering-Stu

    8/82

    Software Myths

    If I decide to out source the software project to the third party,

    I can just relax and let that firm build it.

    Manage & Control

    If we get behind Schedule, we can add more programmers

    and catch up.

    People can be added but only in a planned and

    well coordinated manner Once we write the program and get it to work, our job is done

    Software should be modify (changes) at any time

  • 8/8/2019 An Introduction to Software Engineering-Stu

    9/82

    Chapter 2

    Process: A Generic View

    A Process defines who is doing what, when, and how to reach the goal

  • 8/8/2019 An Introduction to Software Engineering-Stu

    10/82

    A Layered Technology

    Software Engineering

    a quality focusa quality focus

    process modelprocess model

    methodsmethods

    toolstools

  • 8/8/2019 An Introduction to Software Engineering-Stu

    11/82

    A Process Framework

    Process frameworkProcess framework

    Framework activitiesFramework activities

    work taskswork tasks

    work productswork products

    milestones & deliverablesmilestones & deliverables

    QA checkpointsQA checkpoints

    Umbrella ActivitiesUmbrella Activities

  • 8/8/2019 An Introduction to Software Engineering-Stu

    12/82

    Framework Activities

    Communication

    Planning

    Modeling

    Analysis of requirements Design

    Construction Code generation

    Testing Deployment

  • 8/8/2019 An Introduction to Software Engineering-Stu

    13/82

    Umbrella Activities

    Software project management

    Formal technical reviews

    Software quality assurance

    Software configuration management Work product preparation and production

    Reusability management

    Measurement

    Risk management

  • 8/8/2019 An Introduction to Software Engineering-Stu

    14/82

    Generic process frame work used as a basics

    for the description of process models.

    1. Communication

    2. Planning

    3. Modeling

    4. Construction

    5. Deployment

  • 8/8/2019 An Introduction to Software Engineering-Stu

    15/82

    THE CAPABILITY MATURITY MODELINTERATION

    (CMMI)

  • 8/8/2019 An Introduction to Software Engineering-Stu

    16/82

    The CMMI

    The CMMI defines each process area in terms of

    specific goals and the specific practices required

    to achieve these goals.

    Specific goals [SG]establish the characteristicsthat must exist if the activities implied by a process

    area are to be effective.

    Specific practices [SP]refine a goal into a set of

    process-related activities.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    17/82

    SG1 : Establish Estimates

    SP1.1. Estimate the scope of the project.

    SP1.2. Establish estimates of work product

    and task attributes.

    SP1.3. Define Project life Cycle.SP1.4. Determine estimates of effort and cost.

    For Example: PROJECT PLANNING

  • 8/8/2019 An Introduction to Software Engineering-Stu

    18/82

    SG2 : Develop a project Plan

    SP2.1. Establish the budget and schedule.SP2.2. Identify project risks

    SP2.3. Plan for the data management

    SP2.4. Plan for the project Resources

    SP2.5. Plan for needed knowledge and skills

    SP2.6. Plan stakeholder involvement

    SP2.7. Establish the project plan

    For Example: PROJECT PLANNING

  • 8/8/2019 An Introduction to Software Engineering-Stu

    19/82

    SG3 : Obtain commitment to the plan

    SP3.1. Review plans that affect the project.

    SP3.2. Reconcile work and resource levels.

    SP3.3. Obtain plan commitment

    For Example: PROJECT PLANNING

  • 8/8/2019 An Introduction to Software Engineering-Stu

    20/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    21/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    22/82

    Prescriptive Models

    The Water Fall Model.

    Incremental Process Model.

    The RAD( Rapid Application Development)Model.

    Evolutionary Process Models.

    Prototyping

    Th

    e Spiral Model The Concurrent Development Model.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    23/82

    1. The Water Fall Model.

    2. Incremental Process Model.3. The RAD( Rapid Application Development)

    Model.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    24/82

    Water Fall Model

    The Waterfall Model sometimes called as

    Classic life cycle, suggests a systematic

    sequential approach

    to softwaredevelopment that begins with customer

    specification of requirements and

    progresses through planning ,modeling,

    construction and deployment.

    The Waterfall model is the oldest paradigm

    for software engineering.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    25/82

    The Waterfall Model

    Communication

    PlanningModeling

    ConstructionDeployment

    analysis

    designcode

    test

    project initiat ionrequirement gathering estimating

    scheduling

    tracking

    delivery

    support

    feedback

  • 8/8/2019 An Introduction to Software Engineering-Stu

    26/82

    Waterfall model phases

    Requirements analysis and definition

    System and software design

    Implementation and unit testing

    Integration and system testing

    Operation and maintenance

    The main drawback of the waterfall model is thedifficulty of accommodating change after the

    process is underway. One phase has to becomplete before moving onto the next phase.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    27/82

    Waterfall model problems

    Inflexible partitioning of the project into distinct stages

    makes it difficult to respond to changing customer

    requirements.

    Therefore, this model is only appropriate when therequirements are well-understood and changes will be

    fairly limited during the design process.

    Few business systems have stable requirements.

    Th

    e waterfall model is mostly used for large systemsengineering projects where a system is developed at

    several sites.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    28/82

    Problems occurred in waterfall model

    Real projects rarely follow the sequential flow. As

    the result, changes can cause confusion as the

    project team proceeds.

    It is often difficult for the customer to state all

    requirements explicitly.

    The customer must have the patience.

    A working version of th

    e program (s) will not beavailable until late in the project time span.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    29/82

    The Incremental Model

    C o m m u ni c a t i o n

    P l a n n i n g

    M o d e l i n g

    C o n s t r u c t i o n

    D e p l o y m e n t

    d e l i v e r y

    f e e d b a c k

    anal

    de

    n code

    t e

    t

    ncrement #

    ncrement #

    del

    er

    o

    t

    ncrement

    del

    er

    o

    nd

    ncrement

    del

    er

    o

    nt h increment

    increment #n

    project calendar t ime

    C o m m u ni c a t i o n

    P l a n n i n g

    M o d e l i n g

    C o ns t r u c t i o n

    D e p l o y m e n t

    d e l i v e r y

    f e e d b a c k

    analys is

    des ign code

    t e s t

    C o m m un i c a t i o n

    P l a n n i n g

    M o d e l i n g

    C o ns t r u c t i o n

    D e p l o y m e n t

    d e l i v e r y

    f e e d b a c k

    analysis

    designcode

    te s t

  • 8/8/2019 An Introduction to Software Engineering-Stu

    30/82

    Incremental Process Model

    The incremental model applies linear

    sequences in a fashion as calendar time

    progress.

    Each linear sequence produces deliverable

    increments of the software.

    Example: To develop the Word Processing Software.

    i. File Management , Editing & Document productionfunctions. (Core product)

    ii. Spelling & Grammar checking.

    iii. Page Layout.

    iv.Advance page Layout

  • 8/8/2019 An Introduction to Software Engineering-Stu

    31/82

    Incremental Process Model

    The delivery date of the project is uncertain.

    Early increments can be implemented with

    fewer people. If the core product is well

    received, additional staff (if required) can be

    added to implement the next increment.

    It might be possible to plan early increments in

    a way that avoids the use ofhardware, therebyenabling partial functionality to be delivered to

    end-users

  • 8/8/2019 An Introduction to Software Engineering-Stu

    32/82

    The RAD Model

    Communicat ion

    Planning

    Model ing

    business modeling

    data modeling

    process modeling

    Const ruct ioncomponent reuse

    automat ic codegenerat ion

    t est ing

    D epl oyment

    6 0 - 9 0 d a ys

    Team 1

    Mode l ingbusiness modeling

    data model ing

    process modeling

    Const ruc t ioncomponent reuse

    automatic code

    generation

    tes t ing

    Modelingb u s i n e s s m o d e l in g

    d a t a m o d e l in g

    p r o c e s s m o d e l in g

    Constructionc o m p o n e n t r e u s e

    a u t o m a t i c c o d e

    g e n e r a t i o n

    t e s t i n g

    Team 2

    Team n

    integrat ion

    delivery

    feedback

  • 8/8/2019 An Introduction to Software Engineering-Stu

    33/82

    RAD Model

    RAD is the incremental software process modelthat emphasizes a short development cycle.The RAD model is a high - speed adaptation

    of the water fall model, in which rapiddevelopment is achieved by using a componentbased construction approach.

    If requirements are well understood and the

    project scope is well constrained , the RADprocess enables a development team to createa fully functional system within a short periodof time.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    34/82

    RAD Model

    The RAD approach maps into the generic frame

    work activities.

    C

    ommunication works understand thebusiness problems and information

    characteristics that the software must

    accommodate.

    Planning is essential because multiple

    software teams work in parallel on

    different system functions.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    35/82

    RAD Model

    Modeling encompasses 3 major phases:

    Business Modeling.

    Data Modeling.

    Process Modeling.

    Construction emphasizes the use of pre

    existing software components and theapplication of automatic code generation.

    Deployment establishes a basis for

    subse uent iterations, if re uired.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    36/82

    Problems occurred in RAD model

    1. For large , but scalable projects , RAD requires

    sufficient human resources to create the right

    number of RAD teams.

    2. If developers and customers are not committed

    total the system will fail.

    3. RAD may not be appropriate when technical

    risks are high( e.g ., when a new application

    makes heavy use of new technology).

  • 8/8/2019 An Introduction to Software Engineering-Stu

    37/82

    Evolutionary Process Models

    1. Prototyping

    2. Th

    e Spiral Model3. The Concurrent Development Model.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    38/82

    Prototyping

    Co m m u n ic at io n

    Q u ic k

    la n

    Co n st ru ct io n

    o f

    ro t o t e

    M o d e l in g

    Q u i ck d e s i g n

    D e li e r

    e e d b a c k

    ploy nt

    communication

    Quickplan

    ModelingQuick design

    Construction

    of prototype

    Deploymentdelivery &feedback

  • 8/8/2019 An Introduction to Software Engineering-Stu

    39/82

    Prototyping

    A Prototyping can be used as a standalone

    process model, it is more commonly used a

    technique that can be implemented within the

    context of anyone of the process models.

    The prototyping paradigm assists the software

    engineer and the customer to better understand

    what is to be built when requirements are fuzzy.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    40/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    41/82

    Evolutionary Models: Concurrent

    nder revie

    aselined

    one

    nder

    revision

    aitin

    chan

    es

    nder

    develo

    ent

    none

    Modelin

    activity

    reresents the state

    of a soft!

    are en"

    ineerin"

    activity or tas#

  • 8/8/2019 An Introduction to Software Engineering-Stu

    42/82

    Still Other Process Models

    Component based development Commercial -off -the -Shelf (

    COTS) software components ,developed by vendors who offerthem as products , can be usedwhen software is built.

    The process to apply when reuseis a development objective

  • 8/8/2019 An Introduction to Software Engineering-Stu

    43/82

    Still Other Process Models

    Formal Methods Models1. Formal Methods enable a software

    engineer to specify , develop andverify a computer based system byapplying a rigorous , mathematicalnotation.

    2.Emphasizes the mathematicalspecification of requirements

  • 8/8/2019 An Introduction to Software Engineering-Stu

    44/82

    Still Other Process Models

    AOSD (Aspect Oriented SoftwareDevelopment) provides a process andmethodological approach for defining,

    specifying, designing, and constructingaspects

    Unified Processa use-case driven,architecture-centric, iterative and

    incremental software process closelyaligned with the Unified ModelingLanguage (UML)

  • 8/8/2019 An Introduction to Software Engineering-Stu

    45/82

    inceptioninception

    The Unified Process (UP)

    soft ware increment

    Release

    Inception

    Elaboration

    construction

    transition

    production

    inception

    elaboration

  • 8/8/2019 An Introduction to Software Engineering-Stu

    46/82

    UP Phases

    I e t i la rat i st r t i ra sit i Pr t i

    UP P ases

    Workflows

    e ire e ts

    al sis

    esi

    I le e tati

    est

    It r ti n #1 #2 #n-1 #n

    Support

  • 8/8/2019 An Introduction to Software Engineering-Stu

    47/82

    Inception Phase

    1. Vision Document

    2. Initial use case model

    3. Initial project glossary

    4. Initial business case

    5. Initial risk assessment

    6. Project Plan

    Phases and Iterations

    7. Business Model

    If necessary

    One or more prototypes

  • 8/8/2019 An Introduction to Software Engineering-Stu

    48/82

    Elaboration Phase

    1. Use case Model

    2. Supplementary

    requirements including non

    - functional

    3. Analysis Model

    4. Software Architecture

    description

    5. Executable architecturalprototype

    6. Preliminary design

    7. Revised risk list

  • 8/8/2019 An Introduction to Software Engineering-Stu

    49/82

    Elaboration Phase

    8. Project Planning including

    Iteration plan

    Adapted workflow , milestones

    Technical work products

    Preliminary user manual

  • 8/8/2019 An Introduction to Software Engineering-Stu

    50/82

    Construction Phase

    1. Design Model

    2. Software components

    3. Integrated software

    increment

    4. Test plan and procedure

    5. Test cases

    6. Support documentation

    user manuals

    Installation manuals

    description of current

    increment

  • 8/8/2019 An Introduction to Software Engineering-Stu

    51/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    52/82

    Software Requirements

  • 8/8/2019 An Introduction to Software Engineering-Stu

    53/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    54/82

    What is a requirement?

    The requirements for a system are the description of

    the services provides by the system and its operational

    constraints.

    These reflect the needs of customers for a system thathelps solve some problems such as controlling a

    device, placing an order of finding information.

    The process of finding out, analysing, documenting and

    checking these services and constraints is calledrequirements engineering (RE)

  • 8/8/2019 An Introduction to Software Engineering-Stu

    55/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    56/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    57/82

    User requirement definition

    1. LIBSYS (Library Information System )shall keep

    track of all data required by copyright licensing

    agencies in the country and elsewhere.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    58/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    59/82

    Functional requirements

    Describe functionality or system services.

    Functional user requirements may be high-level statementsof what the system should do

    These requirements depend on the type of software beingdeveloped, the expected users of the software and thegeneral approach taken by the organisation when writing therequirements.

    The requirements are usually describe in a fair abstract way.

    Statements of services the system shouldprovide, how the system should react toparticular inputs and how the system shouldbehave in particular situations.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    60/82

    Requirements completeness and consistency

    In principle, requirements should be both complete and

    consistent.

    Complete

    They should include descriptions of all facilitiesrequired.

    Consistent

    There should be no conflicts or contradictions in the

    descriptions of the system facilities.

    In practice, it is impossible to produce a complete and

    consistent requirements document.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    61/82

    Non-functional requirements

    1. It is related to emergent system properties such as

    reliability , response time and store occupancy.

    2. However , failing to meet a non functionalrequirement can mean that the whole system is

    unusable.

    For Example : if an air craft system does not meet its

    reliability requirements, it will not be certified as safefor operation; if a real time control system fails to meet

    its performance requirements, the control functions wil

    not operate correctly.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    62/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    63/82

    Non-functional requirement types

    Non - Functional

    Requirements

    Product

    Requirements

    Organizational

    Requirements

    External

    Requirements

  • 8/8/2019 An Introduction to Software Engineering-Stu

    64/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    65/82

    Organizational Requirement types

    Organizational

    Requirements

    Delivery

    Requirements

    Implementation

    Requirements

    Standards

    Requirements

  • 8/8/2019 An Introduction to Software Engineering-Stu

    66/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    67/82

    SYSTEM GOAL

    The system should be easy to

    use by experienced controllers

    and should be organised in

    such a way that user errors are

    minimised.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    68/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    69/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    70/82

    Domain requirements problems

    Understandability

    Requirements are expressed in the language of the

    application domain;

    This is often not understood by software engineersdeveloping the system.

    Implicitness

    Domain specialists understand the area so well that

    they do not t

    hink of making t

    he domain requirementsexplicit.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    71/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    72/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    73/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    74/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    75/82

    Users of a requirements document

    System Maintenance Engineers

    Use the requirements to understand the system and

    the relationships between its parts.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    76/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    77/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    78/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    79/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    80/82

  • 8/8/2019 An Introduction to Software Engineering-Stu

    81/82

    Key points

    Requirements set out what the system should do and

    define constraints on its operation and implementation.

    Functional requirements set out services the system

    sh

    ould provide. Non-functional requirements constrain the system being

    developed or the development process.

    User requirements are high-level statements of what the

    system should do. User requirements should be written

    using natural language, tables and diagrams.

  • 8/8/2019 An Introduction to Software Engineering-Stu

    82/82