Thursday, February 23, 2012

Good Practices for Requirements Engineering (2)


Requirements Management
        Once you have the initial requirements for a body of work in hand, you must cope with the inevitable changes during development.
        Effective change management demands a process for proposing changes and evaluating their potential cost and impact on the project.
        Tracking the status of each requirement as it moves through development and system testing provides insight into overall project status.

  Good practices for requirements management include:
        Define a requirements change-control process. 
        Establish a change control board (team). 
        Perform requirements-change impact analysis. 
        Establish a baseline and control versions of requirements documents.
        Maintain a history of requirements changes.
        Track the status of each requirement. (e.g. proposed, approved, implemented, or verified),
        Measure requirements volatility. (e.g. the number of proposed and approved changes (additions, modifications, deletions)
        Use a requirements management tool.  Create a requirements traceability matrix.


Wednesday, February 22, 2012

Good Practices for Requirements Engineering (2)


Requirements Analysis :
        Requirements analysis involves refining the requirements to ensure that all stakeholders understand them and scrutinizing them for errors, omissions, and other deficiencies.
        Analysis includes decomposing high-level requirements into details, building prototypes, evaluating feasibility, and negotiating priorities.
        The goal is to develop requirements of sufficient quality and detail that managers can construct realistic project estimates and technical staff can proceed with design, construction, and testing.
        It is helpful to represent some of the requirements in multiple ways—for example, in both textual and graphical forms.
        Multiple views also help all stakeholders arrive at a common understanding—a shared vision—of what they will have when the product is delivered.

Tuesday, February 21, 2012

Good Practices for Requirements Engineering (1)


Overview

        The notion of best practices is debatable: who decides what is "best" and on what basis?
§  One approach is to convene a body of industry experts or researchers to analyze projects from many different organizations
        These experts look for practices whose effective performance is associated with successful projects and which are performed poorly or not at all on failed projects.
        The experts reach consensus on the activities that consistently yield superior results.
        Such activities are called best practices.
§  They represent highly effective ways for software professionals to increase the chance of success on certain kinds of projects and in certain situations.

Monday, February 20, 2012

The Essential Software Requirement-Chapter 1 part 4

Requirements Development

Requirements development are subdivided into elicitation, analysis, specification, and validation. They are done iteratively and  including the following:
§Identifying the product's expected user classes
§Eliciting needs from individuals who represent each user class
§Understanding user tasks and goals and the business objectives with which those tasks align
§Analyzing the information received from users to distinguish their task goals from functional requirements, nonfunctional requirements, business rules, suggested solutions, and extraneous information
§Allocating portions of the top-level requirements to software components defined in the system architecture
§Understanding the relative importance of quality attributes
§Negotiating implementation priorities
§Translating the collected user needs into written requirements specifications and models
§Reviewing the documented requirements to ensure a common understanding of the users' stated requirements and to correct any problems before the development group accepts them.

Sunday, February 19, 2012

The Essential Software Requirement-Chapter 1 part 3

Software Requirements Defined :
A requirement is "anything that drives design choices“, (Lawrence 1997).
The IEEE Standard Glossary of Software Engineering Terminology (1990) defines a requirement as:
§A condition or capability needed by a user to solve a problem or achieve an objective.
§A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document.
§A documented representation of a condition or capability as in 1 or 2.
This definition encompasses both the user's view of the requirements (the external behavior of the system) and the developer's view (some under-the-hood characteristics).
The following definition acknowledges the diversity of requirements types (Sommerville and Sawyer 1997):
§Requirements are…a specification of what should be implemented. They are descriptions of how the system should behave, or of a system property or attribute. They may be a constraint on the development process of the system.



The Essential Software Requirement-Chapter 1 part 2

Statistics form NIST :

NIST (National Institute of Standards and Technology) has published a comprehensive (309 pages) and very interesting report on project statistics and experiences based on data from a large number of software projects1
§70% of the defects are introduced in the specification phase
§30% are introduced later in the technical solution process
§Only 5% of the specification inadequacies are corrected in the specification phase
§95% are detected later in the project or after delivery where the cost for correction on average is 22 times higher compared to a correction directly during the specification effort
§The NIST report concludes that extensive testing is essential, however testing detects the dominating specification errors late in the process.

______________________________________________________
Why Focus on Requirements ?

The Essential Software Requirement-Chapter 1 part 1

  This chapter will help you to :

Understand some key terms used in software requirements engineering.
Distinguish requirements development from requirements management.
Be alert to some requirements-related problems that can arise.
Learn several characteristics of excellent requirements.
----------------------------------------------------------------------------------------------------------------------------------
Start of Some Realities :