A9R58F4.Tmp

Embed Size (px)

Citation preview

  • 7/26/2019 A9R58F4.Tmp

    1/22

    SoftwareRequirementsAnalysisandSpecification

    Chapter3

    Topicsincludes

    REQUIREMENTSDEFINED

    REQUIREMENTCATEGORIES

    GATHERINGREQUIREMENTS

    REFININGREQUIREMENTS

    RECORDINGREQUIREMENTS

    VALIDATIONANDVERIFICATION

    CHANGINGREQUIREMENTS

    REQUIREMENTSDEFINED

    Requirements are the features that your application must provide. Atthe beginning of the project, you gather requirements from the customers to

    figure out what you need to build. Throughout development, you use the

    requirements to guide development and ensure that youre heading in the

    right direction. At the end of the project, you use the requirements to verify

    that the finished application actually does what its supposed to do.

    Depending on the projects scope and complexity, you might need only a few

    requirements, or you might need hundreds of pages of requirements. The

    number and type of requirements can also depend on the level of formality

    the customers want.

    REQUIREMENTSDEFINEDcont

    Properties of Requirement

    Clear

    Unambiguous

    Consistent

    Prioritized

    Verifiable

    Words to Avoid

    ComparativesWords like faster, better, more, and shinier. How

    much faster? Define better. How much more?

    Imprecise adjectivesWords like fast, robust, userfriendly, efficient,

    flexible, and glorious. Vague commandsWords like minimize, maximize, improve, and

    optimize.

  • 7/26/2019 A9R58F4.Tmp

    2/22

    REQUIREMENTCATEGORIES

    In general, requirements tell what an application is

    supposed to do. Good requirements share certaincharacteristics (theyre clear, unambiguous, consistent,

    prioritized, and verifiable), but there are several kinds

    of requirements that are aimed at different audiences

    or that focus on different aspects of the application. For

    example, business requirements focus on a projects

    highlevel objectives and functional requirements give

    the developers more detailed lists of goals toaccomplish.

    REQUIREMENTCATEGORIEScont

    AudienceOriented Requirements. These categories focus on

    different audiences and the different points of view that each audience has.They use a somewhat businessoriented perspective to classify requirements

    according to the people who care the most about them.

    Types:

    Business Requirements. Business requirements lay out the projects highlevel

    goals. They explain what the customer hopes to achieve with the project.

    User Requirements. User requirements (which are also called stakeholder

    requirements by managers who like to use the word stakeholder), describe how

    the project will be used by the eventual end users. Functional Requirements. Functional requirements are detailed statements of the

    projects desired capabilities. Theyre similar to the user requirements but they

    may also include things that the users wont see directly.

    REQUIREMENTCATEGORIEScont

    Types cont

    Nonfunctional Requirements. Nonfunctional requirements are statements about

    the quality of the applications behavior or constraints on how it produces a

    desired result. They specify things such as the applications performance,reliability, and security characteristics.

    Implementation Requirements. Implementation requirements are temporary

    features that are needed to transition to using the new system but that will be

    later discarded. For example, suppose youre designing an invoicetracking system

    to replace an existing system. After you finish testing the system and are ready to

    use it full time, you need a method to copy any pending invoices from the old

    database into the new one. That method is an implementation requirement.

    REQUIREMENTCATEGORIEScont

    FURPS. FURPS is an acronym for this systems requirement categories:functionality, usability, reliability, performance, and scalability. It was

    developed by HewlettPackard.

    Categories:

    FunctionalityWhat the application should do.

    UsabilityWhat the program should look like.

    ReliabilityHow reliable the system should be.

    PerformanceHow efficient the system should be.

    SupportabilityHow easy it is to support the application.

  • 7/26/2019 A9R58F4.Tmp

    3/22

    REQUIREMENTCATEGORIEScont

    FURPS+. FURPS was extended into FURPS+ to add a few requirements

    categories that software engineers thought were missing.

    Categories:

    Design constraintsThese are constraints on the design that are driven

    by other factors such as the hardware platform, software platform,

    network characteristics, or database.

    Implementation requirementsThese are constraints on the way the

    software is built.

    Interface requirementsThese are constraints on the systems interfaceswith other systems.

    Physical requirementsThese are constraints on the hardware and

    physical devices that the system will use.

    GATHERINGREQUIREMENTS

    Listen to Customers (and Users). Learn as much as you can about

    the problem they are trying to address and any ideas they may have abouthow the application might solve that problem. Initially, focus as much as

    possible on the problem, not on the customers suggested solutions, so you

    can keep the requirements flexible.

    Use the Five Ws (and One H). Sometimes customers have troublearticulating their needs. You can help by using the five Ws (who, what, when,

    where, and why) and one H (how).

    Study Users. Interviewing customers (and users) can get you a lot ofinformation, but often customers (and users) wont tell you everything they

    do or need to do. They often take for granted details that they consider trivial

    but that maybe important to the development team

    GATHERINGREQUIREMENTScont

    Who? Ask who will be using the software and get to know as much asyou can about those people. Find out if the users and the customers are

    the same and learn as much about the users as you can.

    What? Figure out what the customers need the application to do. Focuson the goals as much as possible rather than the customers ideas about

    how the solution should work.

    When?Find out when the application is needed. If the application willbe rolled out in phases, find out which features are needed when.

    Where? Find out where the application will be used.

    Why? Ask why the customers need the application

    How? Consider customer ideas.

    REFININGREQUIREMENTS

    Copy Existing Systems. If youre building a system to replace anexisting system or a manual process, you can often use many of the behaviors

    of the existing system as requirements for the new one. If the old system

    sends customers emails on their birthdays, you can require that the new

    system does that too.

    Clairvoyance. This technique is particularly effective if the project leadhas previously built a similar system. In that case, the lead already knows

    more or less what the application needs to do, which things will be easy and

    which will be hard, how much time everything requires, and which kinds of

    donuts motivate the programmers the best.

  • 7/26/2019 A9R58F4.Tmp

    4/22

  • 7/26/2019 A9R58F4.Tmp

    5/22

    RECORDINGREQUIREMENTScont

    Prototypes. A prototype is a mockup of some or all of the application.

    The idea is to give the customers a more intuitive hands

    on feel for what thefinished application will look like and how it will behave than you can get

    from text descriptions such as user stories and use cases.

    Requirements Specification. These typically list major categoriesof requirements such as user documentation, user interface design, and

    interfaces with other systems.

    VALIDATIONANDVERIFICATION

    Requirement validation is the process of making sure that the

    requirements say the right things. Someone, often the customers or users,need to work through all the requirements and make sure that they: (1)

    Describe things the application should do. (2) Describe everything the

    application should do.

    Requirement verification is the process of checking that thefinished application actually satisfies the requirements.

    Validation Are we doing the right things?

    VerificationAre we doing the things right?

    CHANGINGREQUIREMENTS

    In many projects, requirements evolve over time. As work

    proceeds, you may discover that something you thought would

    be easy is hard. Or you may stumble across a technique that lets

    you add a highvalue feature with little extra work. Often

    changes are driven by the customers. After they start to see

    working pieces of the application, they may think of other items

    that they hadnt thought of before.

    You can help control the number of changes by creating a

    change control board. Customers (and others) can submit

    change requests to this board (which might actually be a single

    person) for approval. The board decides whether a changeshould be implemented or deferred to a later release.

    EndofChapter3

  • 7/26/2019 A9R58F4.Tmp

    6/22

    SoftwareProjectPlanning

    Chapter4

    Topicsincludes

    ProcessPlanning

    EffortEstimation

    ProjectSchedulingandStaffing

    SoftwareConfigurationManagementPlan

    ProcessPlanning

    After the finalization of SRS, we would like to estimate size,

    cost and development time of the project. Also, in many

    cases, customer may like to know the cost and development

    time even prior to finalization of the SRS

    In order to conduct a successful software project, we must

    understand:

    1. Scope of work to be done

    2. Software Project Planning

    3. The risk to be incurred

    4. The resources required

    5. The task to be accomplished6. The cost to be expended

    7. The schedule to be followed

    ProcessPlanningcont

    Goodprojectmanagementandgoodengineeringare

    essential.

    Projectmanagement

    activities

    can

    be

    viewed

    as

    havingthreemajorphases:1. Projectplanning,

    2. Projectmonitoringandcontrol,and

    3. Projecttermination

  • 7/26/2019 A9R58F4.Tmp

    7/22

    ProcessPlanningcont

    Importance of Planning

    Without a proper plan, no real monitoring or controlling of the project ispossible.

    1. Often projects are rushed toward implementation with not enough timeand effort spent on planning.

    2. No amount of technical effort later can compensate for lack of carefulplanning.

    3. Lack of proper planning is a sure ticket to failure for a large softwareproject.

    The basic goal of planning is to look into the future, identify the activities thatneed to be done to complete the project successfully, and plan the schedulingand resources.

    The inputs to the planning activity are the requirements specification andthe architecture description.

    ProcessPlanningcont

    Majorissuesprojectplanningaddress

    Processplanning

    Effortestimation

    ScheduleandResourceEstimation

    Qualityplans

    Configurationmanagementplans

    Riskmanagement

    Projectmonitoringplans

    ProcessPlanningcont

    Process Planning A key activity is to plan and specify the process that should be used

    in the project.

    specifying the various stages in the process,

    the entry criteria for each stage,

    the exit criteria,

    and the verification activities that will be done at the end of the stage.

    The process planning activity mostly entails selecting a standardprocess and tailoring it for the project. The common tailoringactions are modify a step, omit a step, add a step, or change theformality with which a step is done.

    ProcessPlanningcont

    Process specification for the project

    This process guides rest of the planning, particularly

    detailed scheduling where detailed tasks to be donein the project are defined and assigned to people to

    execute them.

    Goback

  • 7/26/2019 A9R58F4.Tmp

    8/22

    EffortEstimation

    For a given set of requirements it is desirable to

    know how much it will cost to develop the software,and how much time the development will take.

    The primary reason for cost and schedule estimationis costbenefit analysis, and project monitoring andcontrol.

    A more practical use of these estimates is in biddingfor software projects, where cost estimates must be

    given to a potential client for the developmentcontract.

    EffortEstimationcont

    The bulk of the cost of software development is due

    to the human resources needed, and therefore mostcost estimation procedures focus on estimating

    effort in terms of personmonths (PM).

    By properly including the "overheads" (i.e., the cost

    of hardware, software, office space, etc.) in the cost

    of a personmonth, effort estimates can be

    converted into cost.

    EffortEstimationcont

    1. Uncertainties in Effort Estimation

    As the effort of the project depends on the nature and

    characteristics of the project, at any point, the accuracy

    of the estimate will depend on the amount of reliable

    information we have about the final product.

    Specifications with uncertainty represent a range of

    possible final products, not one precisely defined

    product.

    Hence, the effort estimation based on this type of

    information cannot be accurate.

    Estimates at this phase of the project can be off by asmuch as a factor of four from the actual final effort

    EffortEstimationcont

    Accuracy of effort estimation

  • 7/26/2019 A9R58F4.Tmp

    9/22

    EffortEstimationcont

    2. Building Effort Estimation Models

    An estimation model can be viewed as a "function" that

    outputs the effort estimate, clearly this estimation

    function will need inputs about the project, from which it

    can produce the estimate.

    The basic idea of having a model or procedure for

    estimation is that it reduces the problem of estimation to

    estimating or determining the value of the "key

    parameters" that characterize the project, based on

    which the effort can be estimated.

    EffortEstimationcont

    2. Building Effort Estimation Models cont

    One common approach therefore for estimating effort is

    to make it a function ofproject size, and the equation of

    effort is considered as EFFORT = a*SIZEb, where a and b

    are constants, and project size is generally in KLOC or

    function points. Values for these constants for a

    particular process are determined through regression

    analysis, which is applied to data about the projects that

    has been performed in the past.

    EffortEstimationcont

    Static,SingleVariableModels

    EffortEstimationcont

    Static,MultivariableModels

  • 7/26/2019 A9R58F4.Tmp

    10/22

    EffortEstimationcont

    Example 1

    Compare the Walston

    Felix model with the SEL model on asoftware development expected to involve 8 personyears

    of effort.

    1. Calculate the number of lines of source code that can be

    produced.

    2. Calculate the duration of the development.

    3. Calculate the productivity in LOC/PY4. Calculate the average manning

    EffortEstimationcont

    EffortEstimationcont EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    11/22

    EffortEstimationcont

    Topdown approach

    Often, however, simple productivity may be used todetermine the overall estimate from the size. That is, ifproductivity is P KLOC/PM, then effort estimate for theproject may be SIZE/P personmonths. This approach willwork if the size and type of the project are similar to theset of projects from which the productivity P wasobtained.

    This approach of determining total effort from the totalsize is what we refer to as the topdown approach, as

    overall effort is first determined and then from this theeffort for different parts are obtained.

    EffortEstimationcont

    Bottomup approach

    A somewhat different approach for effort estimation is

    thebottomup approach.In this approach, the project is

    first divided into tasks and then estimates for thedifferent tasks of the project are first obtained. This typeof approach is also called activitybased estimation.

    The bottomup approach lends itself to direct estimationof effort; once the project is partitioned into smallertasks, it is possible to directly estimate the effortrequired for them, specially if tasks are relatively small. Arisk of bottomup methods is that one may omit some

    important activities in the list of tasks.

    EffortEstimationcont

    3. A BottomUp Estimation Approach The procedure for estimation can be summarized as the following

    sequence of steps:1. Identify modules in the system and classify them as simple, medium,

    or complex.2. Determine the average coding effort for simple/medium/complex

    modules.

    3. Get the total coding effort using the coding effort of different types ofmodules and the counts for them.

    4. Using the effort distribution for similar projects, estimate the effort forother tasks and the total effort.

    Refine the estimates based on projectspecific factors.

    Note that this method of classifying programs into a fewcategories and using an average coding effort for eachcategory is used only for effort estimation.

    EffortEstimationcont

    4. COCOMO Model Constructive COst MOdel (COCOMO) developed by Boehm,

    This model also estimates the total effort in terms of personmonths.

    The basic steps in this model are:

    1. Obtain an initial estimate of the development effort from theestimate of thousands of delivered lines of source code (KLOC).

    2. Determine a set of 15 multiplying factors from differentattributes of the project.

    3. Adjust the effort estimate by multiplying the initial estimate withall the multiplying factors.

  • 7/26/2019 A9R58F4.Tmp

    12/22

    EffortEstimationcont EffortEstimationcont

    EffortEstimationcont EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    13/22

    EffortEstimationcont EffortEstimationcont

    Example2

    EffortEstimationcont EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    14/22

    EffortEstimationcont

    Example3

    EffortEstimationcont

    EffortEstimationcont EffortEstimationcont

    5.IntermediateModel

  • 7/26/2019 A9R58F4.Tmp

    15/22

    EffortEstimationcont

    5.IntermediateModelcont

    EffortEstimationcont

    EffortEstimationcont EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    16/22

    EffortEstimationcont EffortEstimationcont

    EffortEstimationcont EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    17/22

    EffortEstimationcont EffortEstimationcont

    EffortEstimationcont

    Example 4

    A new project with estimated 400 KLOC embedded system has to

    be developed. Project manager has a choice of hiring from twopools of developers: Very highly capable with very little

    experience in the programming language being used

    Or

    Developers of low quality but a lot of experience with the

    programming language. What is the impact of hiring all

    developers from one or the other pool ?

    EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    18/22

    EffortEstimationcont EffortEstimationcont

    Example5

    EffortEstimationcont EffortEstimationcont

  • 7/26/2019 A9R58F4.Tmp

    19/22

    EffortEstimationcont EffortEstimationcont

    Goback

    ProjectSchedulingandStaffing

    1. Overall Scheduling

    One method to determine the normal (or nominal)

    overall schedule is to determine it as a function ofeffort. Any such function has to be determinedfrom data from completed projects using statisticaltechniques like fitting a regression curve throughthe scatter plot obtained by plotting the effort andschedule of past projects. This curve is generallynonlinear because the schedule does not growlinearly with effort.

    ProjectSchedulingandStaffingcont

    Manpower rampup in a

    typical project. The percentage of the schedule

    consumed in the design and testingphases exceeds their effortpercentages.

    The exact schedule depends on theplanned manpower rampup, and howmany resources can be used effectivelyin a phase on that project.

    Generally speaking, design requiresabout a quarter of the schedule, buildconsumes about half, and integrationand system testing consume the

    remaining quarter. COCOMO gives 19% for design, 62% for

    programming, and 18% for integration.

  • 7/26/2019 A9R58F4.Tmp

    20/22

    ProjectSchedulingandStaffingcont

    2. Detailed Scheduling

    The major tasks fixed while planning the milestonesare broken into small schedulable activities in a

    hierarchical manner.

    The detailed design phase can be broken into tasks for

    developing the detailed design for each module, review of

    each detailed design, fixing of defects found, and so on.

    For each detailed task, the project manager estimates the

    time required to complete it and assigns a suitable resource

    so that the overall schedule is met.

    ProjectSchedulingandStaffingcont

    2. Detailed Scheduling cont The project manager determines the effort for the overall

    task from the detailed schedule and checks it against theeffort estimates.

    Activities related to tasks such as project management,coordination, database management, and configurationmanagement may also be listed in the schedule, eventhough these activities have less direct effect ondetermining the schedule because they are ongoing tasksrather than schedulable activities.

    A detailed project schedule is never static. Changes may be

    needed because the actual progress in the project may bedifferent from what was planned, because newer tasks areadded in response to change requests, or because of otherunforeseen situations.

    ProjectSchedulingandStaffingcont

    3a. An Example.Highlevel schedule for the project

    ProjectSchedulingandStaffingcont

    3b. An Example.Portion of the detailed schedule

  • 7/26/2019 A9R58F4.Tmp

    21/22

    ProjectSchedulingandStaffingcont4. Team Structure Detailed scheduling is done only after actual assignment of

    people has been done, as task assignment needsinformation about the capabilities of the team members.

    In this hierarchical organization, the project manager isresponsible for all major technical decisions of the project.He does most of the design and assigns coding of thedifferent parts of the design to the programmers.

    The team typically consists of programmers, testers, aconfiguration controller, and possibly a librarian fordocumentation.

    There may be other roles like database manager, networkmanager, backup project manager, or a backupconfiguration controller.

    It should be noted that these are all logical roles and oneperson may do multiple such roles.

    ProjectSchedulingandStaffingcont

    Egoless teamsTeam Structure.

    A different team organization is the egoless team :Egoless teams consist of ten or fewer programmers.

    The goals of the group are set by consensus, and

    input from every member is taken for major

    decisions.

    Group leadership rotates among the group

    members. Due to their nature, egoless teams aresometimes calleddemocratic teams.

    ProjectSchedulingandStaffingcont

    Software development Management related,

    Development related, and Testing related.

    Inthisstructure,consequently,thereisanoverallunitmanager,

    under

    whom

    there

    are

    three

    small

    hierarchicorganizationsforprogrammanagement,fordevelopment,andfortesting. Theprimaryjobofdevelopersistowritecodeandtheywork

    underadevelopmentmanager.

    Theresponsibilityofthetestersistotestthecodeandtheyworkunderatestmanager.

    Theprogrammanagersprovidesthespecificationsforwhatisbeingbuilt,andensurethatdevelopmentandtestingare

    properlycoordinated.

    Goback

    SoftwareConfigurationManagement

    Plan

    The SCM plan, like other plans, has to

    identify the activities that must be

    performed, give guidelines for performingthe activities, and allocate resources for

    them.

    Planning for configuration management

    involves identifying the configuration items

    and specifying the procedures to be used for

    controlling and implementing changes to

    them.

  • 7/26/2019 A9R58F4.Tmp

    22/22

    SoftwareConfigurationManagement

    Plancont

    Configuration Management

    To summarize, the configuration controller does the CM planning whenthe project has been initiated and the operating environment andrequirements specifications are known. The activities in this stageinclude the following: Identify configuration items, including customersupplied and purchased items.

    Define a naming scheme for configuration items.

    Define the directory structure needed for CM.

    Define version management procedures, and methods for tracking changes toconfiguration items.

    Define access restrictions.

    Define change control procedures.

    Identify and define the responsibility of the CC.

    Identify points at which baselines will be created.

    Define a backup procedure and a reconciliation procedure, if needed.

    Define a release procedure.

    EndofChapter4