1 software processes

Upload: cuongtvabc

Post on 03-Jun-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 1 Software Processes

    1/44

  • 8/12/2019 1 Software Processes

    2/44

    Topics covered

    concepts of software processes and software

    process models;

    three generic software process models and when

    they might be used;

    fundamental process activities of software

    requirements engineering, software

    development, testing, and evolution; coping with changes in the software

    requirements and design;

    2

  • 8/12/2019 1 Software Processes

    3/44

    The software process

    A structured set of activities required to develop asoftware system.

    Many different software processes but all involve:

    Specificationdefining what the system should do;

    Design and implementationdefining the organization of thesystem and implementing the system;

    Validationchecking that it does what the customer wants;

    Evolutionchanging the system in response to changingcustomer needs.

    A software process model is an abstract representation of aprocess. It presents a description of a process from someparticular perspective.

    3

  • 8/12/2019 1 Software Processes

    4/44

    Software process descriptions

    When we describe and discuss processes, weusually talk about the activities in these processessuch as specifying a data model, designing a userinterface, etc. and the ordering of these activities.

    Process descriptions may also include: Products, which are the outcomes of a process

    activity;

    Roles, which reflect the responsibilities of the people

    involved in the process; Pre- and post-conditions, which are statements that

    are true before and after a process activity has beenenacted or a product produced.

    4

  • 8/12/2019 1 Software Processes

    5/44

  • 8/12/2019 1 Software Processes

    6/44

    Software process models

    A software process model is an abstract representation of aprocess. It presents a description of a process from some particularperspective.

    The waterfall model

    Plan-driven model. Separate and distinct phases of specification anddevelopment.

    Incremental development

    Specification, development and validation are interleaved. May beplan-driven or agile.

    Reuse-oriented software engineering

    The system is assembled from existing components. May be plan-driven or agile.

    In practice, most large systems are developed using a process thatincorporates elements from all of these models.

    6

  • 8/12/2019 1 Software Processes

    7/44

    The waterfall model

    7

  • 8/12/2019 1 Software Processes

    8/44

  • 8/12/2019 1 Software Processes

    9/44

    Waterfall model problems

    Inflexible partitioning of the project into distinctstages makes it difficult to respond to changingcustomer requirements.

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

    fairly limitedduring the design process.

    Few business systems have stable requirements.

    The waterfall model is mostly used for large

    systems engineering projects where a system isdeveloped at several sites.

    In those circumstances, the plan-driven nature of thewaterfall model helps coordinate the work.

    9

  • 8/12/2019 1 Software Processes

    10/44

    Incremental development

    10

  • 8/12/2019 1 Software Processes

    11/44

    Incremental development benefits

    The cost of accommodating changing customerrequirements is reduced.

    The amount of analysis and documentation that has to beredone is much less than is required with the waterfall model.

    It is easier to get customer feedback on the development

    work that has been done. Customers can comment on demonstrations of the software

    and see how much has been implemented.

    More rapid delivery and deployment of useful software tothe customer is possible.

    Customers are able to use and gain value from the softwareearlier than is possible with a waterfall process.

    11

  • 8/12/2019 1 Software Processes

    12/44

    Incremental development problems

    The process is not visible. Managers need regular deliverables to measure

    progress. If systems are developed quickly, it is notcost-effective to produce documents that reflect every

    version of the system. System structure tends to degrade as new

    increments are added.

    Unless time and money is spent on refactoring toimprove the software, regular change tends to corruptits structure. Incorporating further software changesbecomes increasingly difficult and costly.

    12

  • 8/12/2019 1 Software Processes

    13/44

    Reuse-oriented software engineering

    Based on systematic reuse where systems are integratedfrom existing components or COTS (Commercial-off-the-shelf) systems.

    Process stages

    Requirement specification;

    Component analysis;

    Requirements modification;

    System design with reuse;

    Development and integration;

    Validation.

    Reuse is now the standard approach for building manytypes of business system

    13

  • 8/12/2019 1 Software Processes

    14/44

    Types of software component

    Stand-alone software systems (COTS) that areconfigured for use in a particular environment.

    Collections of objects that are developed as a

    package to be integrated with a componentframework such as .NET or J2EE.

    Web services that are developed according to

    service standards and which are available forremote invocation.

    14

  • 8/12/2019 1 Software Processes

    15/44

  • 8/12/2019 1 Software Processes

    16/44

  • 8/12/2019 1 Software Processes

    17/44

  • 8/12/2019 1 Software Processes

    18/44

    Software design and implementation

    The process of converting the systemspecification into an executable system.

    Software design

    Design a software structure that realises thespecification;

    Implementation

    Translate this structure into an executable program;

    The activities of design and implementation are

    closely related and may be inter-leaved.

    18

  • 8/12/2019 1 Software Processes

    19/44

    A general model of the design process

    19

  • 8/12/2019 1 Software Processes

    20/44

    Design activities

    Architectural design,where you identify the overallstructure of the system, the principal components(sometimes called sub-systems or modules), theirrelationships and how they are distributed.

    Interface design,where you define the interfacesbetween system components.

    Component design, where you take each systemcomponent and design how it will operate.

    Database design, where you design the system datastructures and how these are to be represented in adatabase.

    20

  • 8/12/2019 1 Software Processes

    21/44

    Software validation

    Verification and validation (V & V) is intended toshow that a system conforms to its specificationand meets the requirements of the systemcustomer.

    Involves checking and review processes andsystem testing.

    System testing involves executing the system with

    test cases that are derived from the specificationof the real data to be processed by the system.

    Testing is the most commonly used V & V activity.

    21

  • 8/12/2019 1 Software Processes

    22/44

    Stages of testing

    22

  • 8/12/2019 1 Software Processes

    23/44

    Testing stages

    Development or component testing Individual components are tested independently;

    Components may be functions or objects or coherentgroupings of these entities.

    System testing

    Testing of the system as a whole. Testing of emergentproperties is particularly important.

    Acceptance testing

    Testing with customer data to check that the systemmeets the customers needs.

    23

  • 8/12/2019 1 Software Processes

    24/44

  • 8/12/2019 1 Software Processes

    25/44

    Software evolution

    Software is inherently flexible and can change.

    As requirements change through changing

    business circumstances, the software that

    supports the business must also evolve andchange.

    Although there has been a demarcation

    between development and evolution(maintenance) this is increasingly irrelevant as

    fewer and fewer systems are completely new.

    25

  • 8/12/2019 1 Software Processes

    26/44

    System evolution

    26

  • 8/12/2019 1 Software Processes

    27/44

    Key points up to now

    Software processes are the activities involvedin producing a software system. Software

    process models are abstract representations

    of these processes.

    General process models describe the

    organization of software processes. Examples

    of these general models include the waterfallmodel, incremental development, and reuse-

    oriented development.

    27

  • 8/12/2019 1 Software Processes

    28/44

    Key points up to now

    Requirements engineering is the process of developinga software specification.

    Design and implementation processes are concernedwith transforming a requirements specification into an

    executable software system. Software validation is the process of checking that the

    system conforms to its specification and that it meetsthe real needs of the users of the system.

    Software evolution takes place when you changeexisting software systems to meet new requirements.The software must evolve to remain useful.

    28

  • 8/12/2019 1 Software Processes

    29/44

    d h f k

  • 8/12/2019 1 Software Processes

    30/44

    Reducing the costs of rework

    Change avoidance, where the software process

    includes activities that can anticipate possible changesbefore significant rework is required.

    For example, a prototype system may be developed toshow some key features of the system to customers.

    Change tolerance, where the process is designed sothat changes can be accommodated at relatively lowcost.

    This normally involves some form of incrementaldevelopment. Proposed changes may be implemented in

    increments that have not yet been developed. If this isimpossible, then only a single increment (a small part ofthe system) may have be altered to incorporate thechange.

    30

    f i

  • 8/12/2019 1 Software Processes

    31/44

    Software prototyping

    A prototype is an initial version of a systemused to demonstrate concepts and try out

    design options.

    A prototype can be used in: The requirements engineering process to help

    with requirements elicitation and validation

    In design processes to explore options anddevelop a UI design

    31

    fi f i

  • 8/12/2019 1 Software Processes

    32/44

    Benefits of prototyping

    Improved system usability A closer match to users real needs

    Improved design quality

    32

  • 8/12/2019 1 Software Processes

    33/44

  • 8/12/2019 1 Software Processes

    34/44

    Th

  • 8/12/2019 1 Software Processes

    35/44

    Throw-away prototypes

    Prototypes should be discarded afterdevelopment as they are not a good basis for aproduction system:

    It may be impossible to tune the system to meet

    non-functional requirements;

    Prototypes are normally undocumented;

    The prototype structure is usually degraded

    through rapid change; The prototype probably will not meet normal

    organisational quality standards.

    35

    I t l d li

  • 8/12/2019 1 Software Processes

    36/44

    Incremental delivery

    Rather than deliver the system as a singledelivery, the development and delivery is brokendown into increments with each incrementdelivering part of the required functionality.

    User requirements are prioritised and the highestpriority requirements are included in earlyincrements.

    Once the development of an increment is started,the requirements are frozen though requirementsfor later increments can continue to evolve.

    36

    I t l d li

  • 8/12/2019 1 Software Processes

    37/44

    Incremental delivery

    37

    I t l d li d t

  • 8/12/2019 1 Software Processes

    38/44

    Incremental delivery advantages

    Customer value can be delivered with eachincrement so system functionality is available

    earlier.

    Early increments act as a prototype to helpelicit requirements for later increments.

    Lower risk of overall project failure.

    The highest priority system services tend to

    receive the most testing.

    38

  • 8/12/2019 1 Software Processes

    39/44

    S i l d l f th ft

  • 8/12/2019 1 Software Processes

    40/44

    Spiral model of the software process

    40

  • 8/12/2019 1 Software Processes

    41/44

    S i l d l

  • 8/12/2019 1 Software Processes

    42/44

    Spiral model usage

    Spiral model has been very influential inhelping people think about iteration in

    software processes and introducing the risk-

    driven approach to development.

    In practice, however, the model is rarely used

    as published for practical software

    development.

    42

    Key points

  • 8/12/2019 1 Software Processes

    43/44

    Key points

    Processes should include activities to copewith change. This may involve a prototyping

    phase that helps avoid poor decisions on

    requirements and design.

    Processes may be structured for iterative

    development and delivery so that changes

    may be made without disrupting the system

    as a whole.

    43

  • 8/12/2019 1 Software Processes

    44/44