Top Banner

of 13

Software Enggniring

Apr 09, 2018

Download

Documents

Sandesh Kumar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/8/2019 Software Enggniring

    1/13

    SOFTWARE ENGGNIRING

    Software Engineering is the technological and managerial disciplineconcerned with systematic production and maintenance of software

    products that are developed and modified on time and within cost

    estimates.

    SOFTWARE = Programs + Documentation required to develop, operate andmaintain programs.

    Documentation is an essential component of software because it is notpossible to understand different aspects of large programs without

    documentation.

    WHAT IS A SOFTWARE PROCESS? A setofactivitieswhose goalisthe developmentorevolutionofsoftware. Genericactivitiesinallsoftwareprocessesare:

    Specification - whatthesystemshould doand its developmentconstraints

    Development - productionofthesoftwaresystem Validation - checking thatthesoftwareiswhatthecustomerwants Evolution - changing thesoftwareinresponsetochanging demands.

    The identification of the software development as an engineering disciplineled to the need of a Software Development Model or Software Life

    Cycle. The detailed model is still the topic of research but it is now clear

    that a number of general models or paradigms of software development

    can be identified.

    SOFTWARE PROCESS MODELS Waterfall model Evolutionary development Component-based software engineering Incremental model Spiral model

  • 8/8/2019 Software Enggniring

    2/13

    SOFTWARE PROCESS ACTIVITIES Specification Design and implementation Validation Evolution

    THE RATIONAL UNIFIED PROCESS COMPUTER-AIDED SOFTWARE ENGINEERING

    SOFTWARE PROCESS MODELS

    Softwareprocess = organized setofactivitiesaimed at building asoftwaresystem

    Softwareprocessmodel = anabstractrepresentationofasoftwareprocess

    Fundamentalsoftwareprocessactivities: Softwarespecification Software design Softwareimplementation Softwarevalidation Softwareevolution

    SOFTWARE PROCESS MODELS

    1. THE WATER-FALL APPROACH:This approach views the software lifecycle as made up of a number of stages such as: requirements specification,

    software design, implementation and so on. After the completion of one

    stage the development proceeds to the next stage.

    2. EXPLORATORYPROGRAMMING:This approach involves developinga working system as quickly as possible and then modifying that system

    until it works in an adequate way. This is used in the de velopment of AI

    systems where the users can not formulate a detailed requirement

  • 8/8/2019 Software Enggniring

    3/13

    specification and where adequacy rather than correctness in the aim of

    designers.

    3. PROTOTYPING:This approach is similar to exploratory programming inthat first phase involves the quick development of a program for users

    experiment. But here the objective is to establish the system requirements.This is developed from an outline specification. The users experiment with

    the prototype to refine and improve the specification. This is followed by

    the re-implementation of the software to produce a production quantity

    system.

    4. FORMAL TRANSFORMATION:This approach involves developing aformal specification of the system and transforming this specification to a

    program using correctness - preserving transformations. Each

    transformation is sufficiently close to the previous description that effort of

    verifying the transformation is not excessive. It can then be guaranteed

    that the developed program is the true implementation of the sp ecification.

    5. SYSTEM ASSEMBLY FROM RE -USABLE COMPONENTS:Thisapproach involves developing software system from the existing

    components. Thus the system development process becomes one of the

    assembly rather than creation.

    The first three of these approaches are all being used for practical

    system development. Some systems have been built using formaltransformation but this is still an untried approach. The re-use-

    oriented model is still not commercially viable because of the lack

    of reusable component libraries.

    1. THEWATERFALLMODELThis model is illustrated in the figure below. Because of the cascade from one

    stage to other this model is called waterfall model. This is also called Classic

    Life-Cycle. This model is the oldestand widely used one.

    REQUIREMENTS ANALYSIS AND DEFINITION:The systems services,

    constraints and goals are established by consultation with the system users.

    They are then defined in a manner which is understandable by the users and

    the development staff.

  • 8/8/2019 Software Enggniring

    4/13

    SYSTEM AND SOFTWARE DESIGN: The system design process

    partitions the requirements either to hardware or to software systems and

    establishes an overall systems structure. The software design involves

    representing the software system functions in such a way that may be

    transformed to one or more executable programs.

    IMPLEMENTATION AND UNI T TESTING:In this stage the software

    design is realised as a set of working programs or program units. The unit -

    testing means verifying each unit that meets its specifications and it is ver ified

    that the defined input produces the desired results.

    INTEGRATION AND SYSTEM TESTING :The individual program units or

    programs are integrated and tested as a whole system to ensure that software

    requirements are met. After testing the system is delivered to the customer.

    OPERATION &MAINTENANCE :Normally (not necessarily) this is the

    longest phase of the life cycle. The system is installed and put into practical

    use. Maintenance involves correcting errors, which were not detected in

    earlier stages of the life cycle, improving the implementation of the system

    units and enhancing the systems services as new requirements are discovered.

    ADVANTAGES: Organized approach, provides robust separation of phases

    Requirementsdefinition

    System and

    software design

    Implementationand unit testing

    Integration andsystem testing

    Operation andmaintenance

  • 8/8/2019 Software Enggniring

    5/13

    Reflects common engineering practice DISADVANTAGES:

    Doesnt cope well with changes required by the client Development teams might wait for each other A working version of the product is available only late

    APPLICABILITY: When requirements are well known and few changes are likely to be

    needed

    Can be used also for parts of larger software systems2. EVOLUTIONARY DEVELOPMENTu

    This is based on the idea of developing an initial implementation, exposing it to

    the user and refining this through many stages until an adequate system has

    been developed

    y This method requires rapid development of the system & rapidincorporation of the modifications. To accomplish thus:

    y A very high-level programming language such as LISP or PROLOG isrequired.

    y Powerful dedicated hardware is required.y Integrated set of tools for the development of software is required.y Its main difference from the other approaches is in the verification &

    validation:

    y Without a specification verification is impossible because for this purposethe program is composed of its specifications.

    y The notion of correctness is replaced by the notion of adequacy.y It has been mostly used to develop AI systems & has been little used in the

    development of large, long life systems because :

    y It is not economical to produce a great deal of documentation as thesystem goes on changing regularly.

    y This results in a system whose structure is not well defined and if there isany it gets deteriorated.

  • 8/8/2019 Software Enggniring

    6/13

    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 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 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:

    ValidationFinal

    version

    DevelopmentIntermediate

    versions

    SpecificationInitial

    version

    Outlinedescription

    Concurrentactivities

  • 8/8/2019 Software Enggniring

    7/13

    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 systems3. COMPONENT-BASED

    SOFTWARE ENGINEERINGu

    MAIN CHARACTERISTICS:

    Makes intensive use of existing reusable components The focus is on integrating the components rather than on creating them

    from the scratch

    ADVANTAGES:y Reduces considerably the software to be developed in-housey Allows faster deliveryy In principle, more reliable systems, due to using previously tested

    components

    DISADVANTAGES:y Compromises in requirements are neededy Less control over the systems evolution APPLICABILITY:y When there is a pool of existing components that could satisfy the

    requirements of the new product

    y Emerging trend: integration of web services from a range of suppliers

    Requirementsspecification

    Componentanalysis

    Development

    and integration

    System design

    with reuse

    Requirementsmodification

    Systemvalidation

  • 8/8/2019 Software Enggniring

    8/13

    4. INCREMENTALDEVELOPMENTu

    MAIN CHARACTERISTICS :

    y Hybrid model that combines elements of the waterfall and evolutionaryparadigms

    y The specification, design, and implementation phases are broken in smallerincrements

    Advantages:y Provides better support for process iterationy Reduces rework in the software construction processy Some decisions on requirements may be delayedy Allows early delivery of parts of the systemy Supports easier integration of sub-systemsy Lower risk of project failurey Delivery priorities can be more easily setDISADVANTAGES:

    y Increments need be relatively smally Mapping requirements to increments may not be easyy Common software facilities may be difficult to identify

    Applicability:

    Validateincrement

    Develop systemincrement

    Design systemarchitecture

    Integrateincrement

    Validatesystem

    Define outlinerequirements

    Assign requirementsto increments

    System incomplete

    Finalsystem

  • 8/8/2019 Software Enggniring

    9/13

    y When it is possible to deliver the system part-by-partBOEHMS SPIRAL MODEL

    Main characteristics:y Also a hybrid model that support process iterationy The process is represented as a spiral, each loop in the spiral representing a

    process phase

    y Four sectors per loop: objective setting, risk assessment and reduction,development and validation, planning

    y Risk is explicitly taken into consideration

    Advantages:y Risk reduction mechanisms are in placey Supports iteration and reflects real-world practicesy Systematic approach Disadvantages:y Requires expertise in risk evaluation and reduction

    Risk

    analysis

    Risk

    analysis

    Risk

    analysis

    Riskanalysis Proto-

    type 1

    Prototype 2

    Prototype 3Opera-

    tionalprotoype

    Concept of

    Operation

    Simulations, models, benchmarks

    S/Wrequirements

    Requirement

    validation

    DesignV&V

    Productdesign Detailed

    design

    Code

    Unit test

    Integrationtest

    AcceptancetestService Develop, verify

    next-level product

    Evaluate alternatives

    identify, resolve risks

    Determine objectivesalternatives and

    constraints

    Plan next phase

    Integrationand test plan

    Developmentplan

    Requirements planLife-cycle plan

    REVIEW

  • 8/8/2019 Software Enggniring

    10/13

    y Complex, relatively difficult to follow strictlyy Applicable only to large systems Applicability:y Internal development of large systems

    PROCESS ACTIVITIES1.SPECIFICATION

    2.DESIGN& IMPLEMENTATION

    3. TESTING..

    The debugging process

    The testing process

    Feasibilitystudy

    Requirementselicitation and

    analysisRequirementsspecification

    Requirementsvalidation

    Feasibilityreport

    Systemmodels

    User and system

    requirements

    Requirementsdocument

    hitecturaldesign

    Abstractspecification

    Interfacedesign

    Componentdesign

    Datastructuredesign

    Algorithmdesign

    ystemhitecture

    Softwarespecification

    Interfacespecification

    Componentspecification

    Datastructure

    specification

    Algorithmspecification

    Requirementsspecification

    Designactivities

    Designproducts

    Locate

    error

    Design

    error repair

    Repair

    error

    Re-test

    program

  • 8/8/2019 Software Enggniring

    11/13

    Testing phases

    System evolution

    THE RATIONAL UNIFIED PROCESSRUP PHASES

    Assess existing

    systems

    Define system

    requirements

    Propose system

    changes

    Modify

    systems

    New

    system

    Existing

    systems

  • 8/8/2019 Software Enggniring

    12/13

    CLASSIFICATION OF CASE TECHNOLOGY

  • 8/8/2019 Software Enggniring

    13/13

    Single-methodworkbenches

    General-purposeworkbenches

    Multi-methodworkbenches

    Language-specificworkbenches

    Programming TestingAnalysis and

    design

    Integratedenvironments

    Process-centredenvironments

    Filecomparators

    CompilersEditors

    EnvironmentsWorkbenchesTools

    CASEtechnology