| Software Requirement cliff notes |
| Written by Edvin Eshagh | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Software Requirements (ISBN: 978-0-735-69145-2) An important ingrediant of software process improvements. Software Requirements Ch1 Stakeholders include: customers, users, requirement analyst, developers, testers, documenter, project manager, legal, manufacture, sales/marketing/support, etc. (p4) Requirement (p7):1) solve user problem, 2) satisfy a condition/capability, 3) Document step 1 & 2 Software requirement includes: Business requirement, User requirement, Functional requirement (p8) Business requirement – A high level objective in vision and scope, supported by project charter (p9) User requirement – describes goals & task to perform.It includes use case, scenario, event/repose table (p9) Functional Requirement – satisfy business requirement and behavior requirement (p10) Behavior Requirement is described in the traditional “shall” language.i.e. “The system shall email..” Software requirement specification – Fully expected behavior of software.It is used in development, testing, quality assurance, project management (p10) Non functional requirement include: performance goals, quality attributes (usability, portability, integrity, efficiency), external constraints (p11) Product “features” enable satisfaction of business needs (bookmark, spell check), but they are not same as “task needed” (p11) Requirement specification exclude:design details, project plan, testing information. Requirement Engineering components (p13): 1) Requirement Development:Elicitation, Analysis, Specification, Validation 2) Requirement Management Requirement development is an iterative process, and it should be planned for multiple cycles of requirement refinement (p14) Requirement management maintains agreement between customer and software project(p14) Requirement management includes (p14): 1) create a base line 2) review/evaluate changes 3) Approve changes in requirement 4) maintain project plan with changes 5) negotiate new estimates 6) trace requirement to their corresponding activities (design, code, test,e etc) 7) Track status The hardest part of requirement gathering is discovering the requirement (p16) Periodically ask and document:“what are we assuming” Re-work account 30-50% of development costs (p17) Requirement errors account for 70-805% of rework Requirement risks include (p17): 1) Insufficient user involvement 2) Creep user requirement 3) Ambiguous requirement – forces developer to fill blanks, requirement can lead to different specification 4) Gold plating – Developer adding features that users will “love” (but user don't really care about it or asked for it) 5) Minimal specification 6) Overlook user classes 7) Inaccurate planning Manage scope creep by (p18): 1) Define business objective, vision, scope, source of criteria, expected usage 2) evaluate all changes against step 1 3) Include a change process which includes: impact on stake holders, effect on resources, and trade offs Avoid falling into trap of “here is my idea...how long do you think it'll take” (p20) Benefits of high quality requirement (p20-21): 1) less rework 2) reduce development work 3) fewer unnecessary features 4) lower cost 5) faster development 6) fewer miscommunication 7) reduced scope creep 8) better deliverables 9) buy-in and excitement of users and stakeholder 10) minimize change control It is a good idea to have several stakeholders review the software requirement specification (p22) Every requirement should originate from a source that has the authority to specify requirement.Trace to use case. (p23) Prioritize use cases and functional requirements (p23) Create a glossy, and define all specialized terms in requirement documenter (p23) Make sure the requirement is verifiable. Requirement specification should be modifiable (p24):
Requirement specification should be tractable (p24): avoid lumping multiple requirements.Each requirement must link back to different design and code as well as statement. Ch2Business requirement is NOT enough for software development (p30) User requirement tell the developers what task is needed There can be conflict between business requirement and user requirements; but, at least everyone can know and resolve this in the planning stages (p30). Sign-off establishes a base line.There should be room for review & adjustments with recognition that schedule & cost will be effected. For a table of customer responsibility and expectations see table on p32 Requirements bill of rights for customers that can expect from business analyst: 1. Speak customer language, provide business glossary 2. Learn about customer business & system objectives; uses & understands existing systems 3. Structure the information presented by customer into written software specification 4. Explain all the work products created from requirement process (diagrams, etc) 5. Analyst & developers are respectful & professional during the whole process 6. Provide ideas & alternatives to requirements & specification 7. Describe characteristics of the product that will make it easy & enjoyable to use. Quality characteristics lead to user friendly, robust, and efficient application. 8. Adjust requirements to permit use of existing software components 9. provide good-faith estimates of costs, impacts, & trade-offs during change requirement 10. Receive a system that meets functional & quality needs that have been communicated to the developer & agreed upon.For effective communications, state assumptions, expectations, and constraints. Requirement bill of rights for software customers that business analyst can expect: 1. Educate analyst & developer about business & define business jargons 2.Spend the time required to provide requirements, & clarify them iteratively via iterative workshops, brainstorm sessions, interviews, etc 3.Be specific & precises when providing input about the system's requirements.Instead f “to-be-determined”, use proto-typing 4.Make timely decisions about requirements of the cost & feasibility 5.Respect developer's assessment of cost & feasibility requirement 6.Set priorities with functional requirements, system features, or use cases 7.Review requirements document & evaluate prototypes 8. Communicate changes to the requirements as soon as they become known 9.Follow the development organization's process for requesting requirements & changes.Implement & utilize change process 10.Respect the process the analyst uses for requirements engineering. Lack of customer involvement greatly increases the risk of building the wrong product (p33) Use sign of as a project milestone, with a clear shared understanding of the activities that lead to sign-off & its implications for future changes.Don't use it as a weapon (p39). Benefit of shared understanding of baseline requirement include (p40):
Ch3Recall from chapter 1, requirement engineering involves: 2. Requirement management Requirement engineering best practices (p45) 1) Require development a) Elicitation
b) Analysis Draw context diagrams with in environment & interface
c) Specification
d) validation
2) Requirement responsibility management (p44) a) Knowledge
b) Requirement Management
c) Project management
Software requirement overview with all stakeholders can be an effective team building activity (p46) Functional requirement is traced to user requirement, which is traced to business requirement, which includes non-functional requirement (p47) Requirement analysis involves refinement of the requirement enough to do realistic projections for customer and schedule (p50) Use multiple views, because only one view isn't enough (text, graph, diagrams, etc) Business requirement involves vision & scope document(p52) User requirement includes use cases, event response table Software requirement specification includes functional & non-functional requirement Writing test cases from the requirements often reveals ambiguities & vagueness (p53) Implementing Requirement Engineering Good practices (p58) High Impact a) High Difficulty · Define requirement development process · Base plans on requirement · Renegotiate commitments b) Medium Difficulty · Identify use cases · Specify quality attributes · Prioritize requirements · Adopt SRS template · Define change-control processing · Establish CCB · Inspect Requirements documents · Allocate requirements to subsystems · Record business rules c) Low Difficulty · Train developers in application domain · Define vision and scope · Identify user classes · Draw context diagrams · Identify sources of requirement · Baseline and control version of requirement Medium Impact a) High Difficulty · Educate user reps & managers about requirement · Model the requirements · Manage requirement risks · Use a requirements management tool · Create requirements traceability matrix · Hold facilitated elicitation workshops b) Medium Difficulty · Train requirements analysts · Select product champions · Establish focus groups · Create prototypes · Define acceptance criteria · Perform change impact analysis · Select appropriate life cycle c) Low Difficulty · Analyze feasibility · create glossary · Create a data dictionary · Observe users performing their jobs · Identify system events & responses · Uniquely label each requirement · Test the requirement · Track requirements status · Review past lessons learned Low Impact a) High Difficulty · Reuse requirement · Apply Quality Function Deployment · Measure requirement b) Medium Difficulty · Maintain change history · Track requirements effort c) Low Difficulty · Examine problem reports
Requirement development process is an iterative process (p59)
Goto step 3, or goto step 1
Goto step 3, or step 2, or step 1 Suggested requirement development process (including quality control feedback cycles & incremental implementation based on use-case priorities)
Repeat above steps for incremental development as needed.
Ch4Requirement analyst (p63) = System analyst =requirement engineer = requirement manager, = requirement analyst - educates, questions, listens, organizes, translates, & maps what customer needs with what's needed and manages stakeholders. Sample job description:www.processimpact.com/goodies.shtml Experienced analyst can reduce cost by 1/3 compared to an inexperienced analyst (p65) Analyst tasks are (p65-67): 2) Identify project stakeholders & user classes
3) Elicit requirement by performing:
* Users naturally talk about functional requirement; therefore, analyst should strive to steer conversation to quality attributes like performance goals, business rules, constraints, interfaces, etc. 4) Analyze requirement to find vague requirement that will lead to ambiguity. 5) Write requirement specification using a template 6) Model the requirement.If appropriate create amodel using tables, math models, story boards, prototypes 7) Lead requirement validation – Validate system based on requirement.Analyst should be part of: design review, code review and test cases 8) Priorities requirements 9) Manage requirements – requirement analyst is involved through out the software development cycle.He helps create, review, and execute project plan.After establishing base line, analyst focus on verification and product satisfaction.And finally, manages change-control process with the corresponding tools. Essential skills of system analyst include (p68-70):
Essential Analyst knowledge: Analyst can prevent issues from a program by possessing project management skills, risk management, Quality engineering, product management Analyst application domain knowledge is a powerful thing.It helps detect unspoken assumption and addresses miscommunication.Also, makes for a better detection of gold plating. Analysts with different backgrounds include: former users, developers, subject matter experts.Each have different strength and weakness (p71) Ralph Young (2001) recommends that analyst be an application domain expert or a subject matter expert, and have them work with the developer/architect. (p73) Ch5Business request is a top level abstraction requirement, which defines vision& scope (p77)
Project vision & scope help with
Some companies print a poster of the vision+scope and bring it to every meeting Vision aligns stake holders and defines the ultimate goal. (p78) Scope describes what portion of vision will be implemented. For iterative enhancement, you can reference existing vision & scope. (p78) Major new projects must have their own complete vision, scope and Software Requirement Specification. For example:Consider a 5 year project with a primary vision & scope that has 15 sub-project; each sub-project should have its own scope and vision that aligns with the primary vision/scope. Stakeholders have different needs, and can lead to conflicting requirements. (p80) Resolve conflict and focus on fundamental that deliver maximum business value. Application breath – includes business tasks (use cases) that enable application application depth. (p81) Application depth – is a level to which each use case is implemented. Business requirement influence implementation priorities for use-cases & functional requirements Vision & scope = project charter or business case documenter (p81) Commercial software often create Market Requirement Document (MRD), which in addition to vision and scope, it includes more detail about the target market segments & the issues that pertain to commercial success. (p81) Use the following template for Vision & Scope (p82 - p88)
· Backgrounds · Business opportunity – same as market opportunity or business solution, or business process to improve.It should evaluate current solution & problems, as well as alternatives · Business objectives & success criteria – Make sure you also state factors that have greatest impact on the success that are within or outside the organization's control. · Customer/Market needs – Describes problem that current product does not solve, and an example of how a customer will use the solution at a high level (critical interfaces and performance measurements) · Business risks – Competition, Timing, user acceptance, implementation issues, possible negative impact, likelihood of occurrence plus its impact, risk mitigation
· Vision statement – It is a realistic long term intent.The vision statement should contain the following keyword template a) For – Target customer b) Who – statement of the need or opportunity c) The – product name d) Is – a product category e) That – Key benefit, compelling reason to buy or use f) Unlike – primary competition, current system or current business process g) Our product – statement of primary differentiation & advantages · Major features – distinguishing or unique features.They should have a label (not bullet points) · Assumptions & Dependancies – Because stakeholders may not share the same assumptions, it is important to define assumptions to align efforts.
· Scope of initial release – To maintain a reasonable deliverable schedule, avoid temptation to include all features in version 1.0 · Scope of subsequent release – You can schedule additional features for iterative release with corresponding use-cases, system improvement, performance, reliability, & other quality factors. · Limitation & Exclusions – List capability that stakeholder may expect that will not be implemented.
· Stakeholder profiles – You don't need to include every stakeholder.Include the influential, actively involved and effected stakeholders. · Project priorities - · Operating Environment – includes the availability, reliability, performance, and integrity requirement; it is often the most important element in design step. Part of the vision & scope document might seem repetitive, but they should interlock in a sensible way. Business requirement describes the solution benefits to the stakeholder(p83) Examples of Financial & Nonfinancial Business Objectives and Success Criteria (p84)
Stake holder profiles should include (p88)
o improved productivity o reduced rework o cost savings o streamlined business processing automation of previously manual tasks o Ability to perform entirely new tasks o Compliance with pertinent standards or regulations o improved usability compared to current products.
To have an effective decision making process, stake holders must agree on project priorities (p89) Use 5 dimensions of software project to help set priorities
Each on of the above dimensions must consider
Thus, changes can be implemented according above guideline.For example:
Context Diagram - a graphical illustration of boundary of the scope.It shows terminal interfaces to the outside system, data, control, and material flow between terminators. (p90) The entire system is depicted in a circle without showing system internal (processes, data, hardware/software).The terminators are rectangles (includes user classes, organizations, other systems, hardware/software, devices, or physical items). Maintaining focus – and avoiding focus creep (p92)
Consequence of scope creep is that completed activities must be reworked to accommodate for changes. Documented business requirement make it easier to manage legitimate scope growth. Ch6To have successful project, you want to get customer’s voice to the developer’s ears (with minimal layers in between) p95 Source of requirements (p96): · Users · Documents – Stake holders & legal docs, competitive product reviews · System Requirement Specification – from high level system requirement of system · Marketing survey & questionnaire · Observing Users at work – can identify new processes & validate requirement · Scenario Analysis · Even& responses that must be meet Stake holders -> Product Customers -> Product User Classes:
Favored user class:Effects your delivery; he can accept/reject it. (p98) Disfavored user class: Should not use the product (i.e. legal or safety reasons) Non-human user class: interface to other dardware/software 1st Brainstorm user class, 2nd group classes with similar needs; do not exceed 15 user classes (p99) For each user class document characteristics, responsibility, location, relative size, transition, etc to help prioritize and assess impact (p100) Create persona for each user class (p101) User representative should be involved throughout the development life cycle, not just in isolated requirement phase at the beginning.Each user class needs to be represented. (p101) One study showed that highly successful project used more kinds of communication links and more direct links between developers and customers than did less successful projects. (p102) Recognize the risk that you assume when you use surrogate (subject matter expert, marketing, product manager, etc) for actual voice of the customer. (p103) Product champions collect requirement from other members of their class; and I ideally they are part of the user class. Product champions have clear vision of the system and are enthusiastic about what it will offer.They understand application domain and system environment very well.They are in high demand with other activities; therefore, consider providing incentives and public recognition to obtain them. (p103) Product champions should have binding decisions for their user classes; they should also be in contact with their peers (p104) You may consider getting external product champions by soliciting their services, providing discounts, etc. (p104) Watch out for product champions that are no longer current with real users Product champion responsibilities include (p105):
You can create a hierarchy of product champion for complex projects. Careful with lead users: The product champion Rebeca was power user, but 90% of users weren’t; thus, the project suffered. Product champion makes decision at the user level requirements.The management sponsor retains the authority to make decisions that affect the product vision, project scope, schedule, and cost.Document & negotiating product champion’s role and responsibilities give candidate champions a comfort level about what they’re being asked to do. (p108) Insufficient user involvement is well established as a leading cause of software project failures (p108) Keys to watch out for:
You may get conflicting requirements from different user classes.Every group should select an appropriate “decision rule” – an agreed-upon way to arrive at a decision. (p109) For example:
Typically, custmer should override developer/customer conflicts; but not always. Customer isn’t always right.Decide before hand, if the developer or marketing, or whoever, will make the final decision (p111) Ch7 Project plan elicitation should include:
Focus on domain “verbs” instead of computer jargon (p115) Create domain glossary & don’t assume anyone understands any of the terms Probe around exceptions and document the reason for process.Ask:
Instead of simply transcribing, a good analysts makes suggestions during requirement gathering (p116) Understand why user wants something, can lead to realization that a process that is obsolete (p116) Shortly after interview, document your findings and send to users to review in order to identify errors & uncertainties. Link user and developer in elicitation workshops (p117) Have an outside facilitator lead the workshop instead of the analyst, so that the analyst can focus on requirement gathering (p117) Elicitation workshop ground rules (p117-118)
Staying in scope - The facilitator will have to reel in the elicitation participants periodically to keep them on topic. Use parking lot for writing down ideas Use time box – allocate fixed period of time to each discussion on topic (say 30 minutes); discussion might need to be completed later. Classify the voice of customer into following categories (p121)
You can create use cases by asking users describe their business workflow, or by asking users to state their goals (p121) Functional requirements describe observable behavior the system will exhibit under certain conditions an d the actions the system will let the users take (p122) Business rules is NOT functional requirement In your requirement statements replace “should” with “shall”.Make it clear that the item is required. (p122) Listen for ambiguous terms that need to be quantified and explained: fast, easy, intuitive, user-friendly, robust, reliable, secure, efficient. (p122) Record rational behind each constraint.Is it truly a restrictive limitation, or is it desirable goal. (p123) Weak words like “identically”, “consistent” need to be clarified and the real constraint stated precisely enough for developers to act on the information. Ask why the constraint exists, verify its validity, and record the rational for including the constraint as a requirement (p124) Data definitions sometimes lead to functional requirements (for example 6 digit field may not roll-over) Embedding a solution idea in a requirement imposes a design constraint on that requirement (i.e. drop down list of my xxx).Make sure the constraint is there for a good reason. When the scope is too large, then you have possibly collected more data than is needed to deliver adequate business & customer value (p125) Requirements are about what the system has to do, Regard the models and screens generated during requirements developments as conceptual suggestion to facilitate effective communications, not as constraints on the options available to the designer.Make it clear to users that these screens and prototypes are illustrative only. (p126) If your project requires extensive research, use an incremental development approach to explore the requirements in small, low-risk portions. (p126) Decompose high level requirements until it reveals what is needed for implementations (p126) Imprecise, fuzzy terms to avoid include: support, enable, permit, process, and manage (p127) Have use cases for all the user classes Create CRUD matrix f or a rigorous way to search for missing requirements.Sometimes L is add to make CRUDL = Create, Read, Update, Delete, List (p128)
Possible signals that you might be finishing with requirements:
in life of product Checklist of common functional areas: Errors, Logs, Backup/Restore, Security, Reporting, Printing, Preview, Configure User preferences (p129) Ch8 Scenario is a description of a single instance of usage of the system. (p132) The objective of the use-case approach is to describe all tasks that users will need to perform with the system.(p133) In Use case diagram, the ellipse bubble is the “use case”, the stick figure is the actor, and the bounding box is system (p134) Use case is a collection of related usage scenarios, and scenarios is a specific instance of a use case. (p134) Essential elements of use-case include: A unique identifier
Use case will typically outlines the normal flow of a scenario, followed by secondary (alternative) paths of scenario (p135). You can define a separate use case that contains the shared functionality and indicate that the other use cases include that sub use case. (p136) Exceptions are sometimes regarded as a type of alternative course (p137) You must implement the exceptions that can prevent the scenarios (p137) Preconditions and post conditions define the boundaries of the individual use cases that can be chained together to perform a larger task. (p137) To identify use cases, , Find actor then business process for each case. Some requirements do not trace to use cases; thus, determine if they are really needed. (p138) Prior to beginning the workshop, each analyst asks the users to think of tasks that they would need to perform with the new system.Each these tasks are candidates to use cases. (p138) Essential use case – focus should be on the goal the user is trying to accomplish and the system’s responsibility in meeting the goal.These are higher level abstractions of concrete use cases. (p139) Concrete use case – discuss specific actions the user takes to interact with the system (p139) Essential use cases are more reusable than concrete use cases. Preconditions and post conditions are boundaries of use cases. Estimating the frequency of use provides an early indicator of concurrent usage and capacity requirements. (p139) Fully and Casually dressed use-case template (p143) Fully dressed use-cases are valuable when:
You can use two column representation for use-case; where the left column maybe user activity, and the right column the system responses (p143) Your use-cases need to be enough to enable developer, not simply create extra work (p144) Give use-case description to your attendees before next workshop for them to review. During the final elicitation workshop, participants that walk through test cases that they’ve agreed upon, usually find additional errors in both requirements and use-cases. (p145) Use-cases & functional requirements don’t contain all the information that a developers needs to write a software (i.e. communication protocol with bank) Transition from user’s view of the requirements to the developer’s view is one of the many ways the requirements analyss adds value to the project (p146) Cross-reference functional requirements that appear in multiple use cases.In some instances, the use-case includes relationships. (p146) The use-case description for the functional requirements, provide traceability between use-cases and corresponding functional requirements. (p146) The use case approach leads to functional requirements that will allow the user to perform certain known tasks.This helps prevent “orphan functionality” (those that seem good idea during elicitation, but no one uses because they don’t relate directly to the user task) – p147 Use Case guidelines (p148-149)
Event-response table are particularly appropriate for real-time control systems.For example: Actor, sensory, device, external database, time event. (p150) Event response table records information at the user-requirement level. Ch9Business rules include (p155):
Write your business rules at the atomic level (cannot be decomposed any more), rather than combining many details into a single rule.
Commercial rule-management tools become valuable if your rules catalog outgrows a word processor or spreadsheet solution. (p160) As you identify new rules while working on an application, add them to your catalog rather than embedding them in the documentation for specific application (p160) Templates describe patterns of keywords and clauses that structure the rules in a consistent fashion.They also facilitate storing the rule in a database.
You discover business rules by asking questions from different perspectives (p162):
Linking business rule and functional requirement (P163):
Rules are external statements of policy that must be enforced in software, thereby driving system functionality (p163). Don’t duplicate rules from your business rules catalog in the SRS.Instead the SRS should refer back to the specific rules as the source of, say, algorithms from income tax withholding (p164). Rules that make sense in isolation might not be so sensible when viewed inan operation context with other requirements. (p164) Once you begin actively looking for, recording, and applying business rules, the rationale behind your application development choices will become clearer to all stakeholders (p164). Ch10 Structured natural language, augmented with graphical models, remains the most practical way for most software projects to document their requirement. (p165) The requirements can be stored in a database, such as a commercial requirement management tool.They are only as good as the quality of the information they hold. (p166) Software requirement specification (p166) Several audience rely on SRS: Customers, project managers, developers, testing group, maintenance and support, document writers, education materials, legal staff, subcontractors base their work on, and can be legally held to SRS. (p167) As the ultimate repository of the product requirement, the SRS must be comprehensive (p167). You don’t have to build requirement for the entire product before beginning development, but you do need to capture requirements for each increment before building that increment. (p167) Every project should baseline an agreement before the team begins implementation. Baselining is the process of transitioning a SRS under development into one that has been reviewed and approved. Use hyperlinks to let the reader jump to related sections in SRS. (p168) Every functional requirement must be uniquely and persistently indentified (p168) Hierarchical numbering (3.2.1.4) indicate level of detail, but are not persistent labels (when deleted). Hierarchical Textual text “Print.ConfirmCopies” drawback that they are bulkier than numeric labels. (p169) Use notation TBD (to be determined) to flag knowledge gaps. (p169) Record who is responsible for resolving each TBD issue, how, and by when.Number TBDs to help track them to closure. (p170) Screen layouts don’t replace user and functional requirements (p170) A sensible balance is to include conceptual images – sketches, etc, without demanding that the implementation precisely follow those models. (p170) For SRS template see IEEE 1998b, or appendix D (p171) If section heading does not apply, leave the section heading in place but indicate that it isn’t applicable.This will keep the reader from wondering whether something important was omitted inadvertently. (p171) In SRS, include date of a change, who made the change, and the reason for the change. Requirement “purpose” should include the revision or release number (p172) In Project scope, related the software to user or corporate goals and to business objectives and strategies. (p173) For new or next product version, include context and the origin of the product. (p173) List the major features of the product in 2.2, and then the details in section 3 (p174) Identify the favored user classes.User classes represent a subset of the stake holders (p174) Operating environment include hardware platform, operating system (and version), geographical locations of users, servers, databases.List any other software components or applicatons with with the system must peacefully coexist. (p174) Under design constraints specified specific technologies to use or avoid (p174) List the user documentation components that will be delivered along with the executable software.Identify any required documentation delivery formats. (p175) Under assumption, identify any dependencies the project has on external factors outside its control (p175) System features can be organized by: functional requirements, use case, mode of operation, user class, stimulus, response, object class, or functional hierarchy (IEEE 1998b) In requirement management tool define a requirement attribute of priority (p176) In functional requirements, describe how the product should respond to anticipated error conditions and to invalid inputs and actions. Uniquely label each functional requirement (p176) A complex system with multiple subcomponents should use a separate interface specification or system architecture specification (p176) For performance requirement – explain rationale to guide the developers in making appropriate design choices. (p178) Safety requirements – Is a software rule that ensures safe system for environment or users or system. Software quality attributes – are quantitative, verifiable.They should include relative priorities to other attributes. Other requirements to include: currency, date formatting, language, international regulation, cultural & political issues, legal requirement, operations, administration, maintenance. (p180) Create appendix A for Glossary - all your acronyms (p180) Employ use terminology, instead of computer jargon (p181) Ambiguous terms to avoid: acceptable, adequate, as much as practicable, at least, at a minimum, not more than, not to exceed, between, depends on, efficient, fast, rapid, flexible, improved, better, faster, superior, including, including but not limited to, and so on, etc, such as, maximize, minimize, optimize, normally, ideally, optionally, reasonable, when necessary, where appropriate, robus, seamless, transparent, graceful, several, shouldn’t, state-of-the-art, sufficient, support, enable, user-friendly, simple, easy (p183-184) Provide enough detail in the requirement to reduce the risk of misunderstanding to acceptable level based on the development team’s knowledge and experience. (p184) A helpful guideline is to write individually testable requirements.If you can think of a small number of related test cases to verify that a requirement was correctly implemented, it’s probably at an appropriate level of detail. (p184) Testable requirements have been proposed as a metric for software product size (p184) Avoid long narrative paragraphs that contain multiple requirements with words like: “and”, “or”, “also” Never use “and/or” in a requirement; it leaves the interpretation up to the reader. Cross-reference related items in the SRS to help keep them synchronized when making changes (p184) Think about the most effective way to represent each requirement; see if there is a pattern in a table. High quality requirement is: complete, correct, feasible, necessary, prioritized, unambiguous, verifiable. (p185) Data dictionary – a shared repository that defines the meaning, data type, length, format, necessary precision, and allowed range or list of values for all data elements or attributes used in the application. (p190) Begin collecting data definition as you encounter them during requirement. I you set up the data dictionary manually, consider using hypertext approach. Data dictionary notations: Primitive – defined with a comment, which is a text between two asterisks: Composition – a data structure; optional items are enclosed in parentheses: Iteration – If multiple instances of an item can appear in data structure, they are enclosed in curly braces Selection – enumerated primitive Note: each data item is also declared in dictionary Ch11 An early goal of structured system analysis was to replace entirely the classical functional specification with graphical diagrams and notations more than narrative text (p194) Visual requirements include: Data Flow Diagrams (DFD), Entity-Relations-Diagrams (ERD), State-Transition Diagrams (STD) Diagrams let you model the problem domain or create conceptual representation of the system. (p194) During design, models represent specifically how you intent do implement the system: the actual database you plan to create, the object classes you’ll instantiate, and the code modules you’ll develop. (p195) Don’t assume that developers can simply translate analysis models into code without going through a design process.Because both types of diagrams use the same notations, clearly label each one as an analysis model (the concepts) or a design model (what you intend to build) Case tools know the rules for each modeling method they support.They can identify syntax errors and inconsistencies that people who review the diagrams might not see. (p195) Focus your modeling on the most complex and riskiest portions of the system and on those portions most subject to ambiguity or uncertainty. For example:security, safety, mission critical system (p195) Relate customer’s voice to analysis model: (p196)
For example:A chemist (noun) or a member of the chemical stockroom staff (noun) can place(verb) a request (nount)…. Data Flow diagram is the basic tool for structured analysis (p197) DataFlow diagram identifies:
Make sure you explain the purposeand notations of each model to your product champions and ask them to review the diagrams.Don’t assume they understand it (p197) Context Diagram is the highest level of abstraction of Data Flow Diagram (p197-8)
Each process that appear as a separate bubble (circle) on the level 0 diagram can be further expanded into a separate DFD to reveal more details. Data Flow Diagram guidelines:
An analysis of Entity Relation Diagram (ERD) help you understand and communicate the data components of the database.In contrast, when you create ERD during system design, you’re defining the logical or physical structure of the system’s database. (p200) Entities are named as a Singular noun in a rectangle.
State change can take place only when well-defined criteria are satisfied, such as receiving a specific input stimulus under certain conditions. (p203) System elements that involve a set of states and changes between them can be regarded as finit-state machines (p203) State transition diagram (STD) provides a concise, complete, and unambiguous representation of a finite-state machine. STD contains three types of elements: (p203)
STD doesn’t show the details of the processing (p204) STD makes it easier to step back from the detailed level and see the big picture; however, it does not provide the details that a developer needs. (p206) User interface can be regarded as finite state machine (p206) Many user interfaces can be modeled with a form of state-transition diagram called dialog map. Dialog map represents a user interface design at a high level of abstraction.It doesn’t show the detailed screen design (p206). Dialog maps are related to system story boards (p207) Just as in an ordinary state-transition diagrams, the dialog map shows each dialog elements as a state and each allowed navigation option as a transition (arrow).The condition that triggers a user interface navigation is shown as a text labeled on the transition arrow. Dialog map triggers for UI include: (p207)
A flowchart explicitly shows the processing steps and decision points; Think of dialog map as a negative image or a complement to a flow chart To simplify dialog map, omit global functions such as pressing the F1 key to bring up a help display from every dialog element. Omit the transitions that reverse the flow of a page(p207) Users get annoyed if they are forced to complete a task even though they change their minds partway through it.The dialog map lets you enhance usability by designing in those back-out and cancel options at strategic points (p208) Don’t try to pin down all the user interface design details at the requirement stage.Instead, use models to help the project stakeholders reach a common understanding of the system’s intended functionality. A class diagram is a graphical way to depict the classes identified during object-oriented analysis and the relationships among them. (p210) Use decision tables and decision tress when complex logic an decisions come into play.(p212) The factors can be shown either as statements with possible conditions of true and false or questions with possible answers of yes and no.You can also have decision tables with more than two possible values (p212) Sample decision table:
If you create an ERD and data dictionary, you might not want to create a class diagram (or vice versa). P214 Ch12 Meeting nonfunctional requirements are often more important than meeting the functional requirements (p216) If you don’t explore the customers’ quality expectations during requirements elicitation, your just lucky if the product satisfies them (p216) Customers generally don’t present their quality expectations explicitly.The trick is to pin down just what the users are thinking when they say the software must be user-friendly, fast, reliable, or robust. (p217) A way to classify quality attributes is by classifying them as runtime from those that aren’t. Software quality attributes to consider: (p217)
Document any global quality goals in section 5.4 of the SRS template presented in chapter 10. (p218) Rank each attribute on scale of 1 (don’t give it another thought) to 5 (critically important. Craft specific measurable, verifiable requirements for each attribute.(p218) IEEE standards for a software quality metrics methodology presents an approach for defining software quality requirements in the context of an overall quality metrics framework. (p218) Consider asking users what would constitute unacceptable performance, usability, integrity, or reliability. (p218) Availability is a measure of the planned up time. (p219) Some authors view availability as encompassing reliability, maintainability, and integrity (p219) Efficiency is a measure of how well the system utilizes processor capacity, disk space, memory, or communication bandwidth.Efficiency is related to performance, another class of nonfunctional requirement. (p220) To allow engineers margins for unanticipated conditions and future growth, you might specify something like the following:EF-1. At least 25% of the processor capacity and RAM availability to the application shall be unused at the planned peak load conditions. (p220) Flexibility = extensibility = augmentability = extendibility = expandability (p221) Integrity – encompasses security – Integrity has no tolerance for error.Examples include: user identity verification, user privilege levels, access restriction ) p222 Interoperability indicates how easily the system can exchange data or services with other systems. You could also state this requirement as an external interface requirement and define the standard file formats (p222) Reliability – the probability of the software execution without failure for a specified period of time. The average length of time the system runs before failing. (p223) Robustness is sometimes considered an aspect of reliability. Systems that require high reliability should also be designed for high testability to make it easier to find defect that could compromise reliability (p223) Robustness – is the degree to which a system containues to function properly when confronted with invalid inputs, defects in connected software or hardware components (recovers gracefully).It is a function of fault tolerance. (p223) Usability (human engineering) measures the effort t required to prepare input for, operate, and interpret the output of the product. (p224) Maintainability indicates how easy it is to correct a defect or modify the software. You can measure maintability in terms of the average time required to fix a problem and the percentage of fixes that are made correctly (p225) Portability – the effort required to migrate a piece of software from one operating environment to another.Some practitioners include the abilityto internationalize and localize a product under the heading of portability. (p226) Portability goals should identify those portions of the product that must be movable to other environments and describe those target environment. (p226) Reusability – software that must be modular, well documented, independent of a specific application and operating environment, and somewhat generic in capability.Reusability goals are hard to quantify (p226) Testability = Verifiability; ease of which product can be test. Cyclomatic complexity is a measure of the number of logic branches in a source code module. Performance requirement encompass speed (database response times, for instance), throughput (transactions per second), capacity (concurrent usage loads), and timing (hard real-time demands) Performance requirements should also address hos the system’s performance will degrade in an overloaded situation. (p227) Unverifiable quality requirements are no better than unverifiable functional requirements. (p228) Planguage – a planning language with a rich set of keywords that permits precise statements of quality attributes and other project goals (95% of catalog database queries shall be completed within 3 seconds on a single-user 1.1-GHz Intel Pentium 4 PC running MS windows XP with at least 60% of the system resources free). (p228) TAG – Performance.QueryResponseTime AMBITION – Fast response time to database queries on base user platform SCALE – Seconds of elapsed time between pressing the Enter key or clicking OK to submit a query and the beginning of the display of query result. METER – Stopwatch testing performed on 250 test queries that represent a defined usage operational profile MUST - No more than 10 seconds for 98% of queries ß Field support manger PLAN – No more than 3 seconds for category one queries, 8 seconds for all queries WISH – No more than 2 seconds for all queries Base user platform DEFIND – 1.1-GHz Intel Pentium 4 processor, 128 MB RAM, MS windows XP, QueryGen 3.3 running, single user, at least 60% of system resources free, no other application running. Each requirement receives a unique tag, or label.(p228-229) Planguage provides a powerful ability to specify unambiguous quality attribute and performance requirements. (p229) Determine conflict goals so that you can commit accordingly.
Translating quality attributes into Technical Specification (p232)
Ch13Software prototype is a partial or possible implementation of a proposed new product. (p234)
Primary reason for creating a prototype is to resolve uncertainties early in development process (p234) Horizontal prototype = Behavioral prototype = mock-up – doesn’t dive into all layers of an architecture; it depicts a portion of the user interface; the goal is the refining requirements (p234) Vertical prototype = structural prototype = proof of concept – works like the real system Throwaway Prototypes = exploratory prototypes – resolve uncertainties, and improve requirements quality.It emphasizes quick implementation and modification over robustness, reliability, performance, and long-term maintainability. Thus, don’t allow such low-quality code from a throwaway prototype to migrate into a production system. Each use-case description includes a sequence of actor actions and system responses, which you can model using a dialog map to depict a possible user interface architecture. When users evaluate the prototype, their feedback might lead to changes in the use-case description or to changes in the dialog map (p237) Evolutionary prototype (contrast to throwaway) – provides solid architectural foundation for building the product incrementally as the requirements become clear over time.
Paper prototypes help you test whether users and developers hold a shared understanding of the requirements; it is similar to storyboard. (p240) No matter how efficient your prototyping tools are, sketching displays on paper is faster (p241) Paper prototyping is an excellent technique for refining the requirements prior to designing detailed user interfaces, constructing an evolutionary prototype, or undertaking traditional design and construction activities. (p241) To improve the evaluation of horizontal prototypes, create scripts that guide the user through a series of steps and ask specific questions to elicit the information you need.(p242)
During prototype evaluation include both experienced and inexperienced user class representatives (p242) You’ll learn more by watching users work with prototype than by just asking them to tell you what they think of it. If the prototype evaluation led to some user interface design decision or to the selection of specific interaction techniques, record those conclusions and how you arrived at them. (p243) Look for any conflicts between the SRS and the prototype. (p243) The biggest risk is that a stakeholder will see a running prototype and conclude that the product is nearly complete. (p243) Make it clear to those who see the prototype that you will not release it as production software. Another risk of prototyping is that users become fixated on how the user interface will look than how it will operate. Prototype success factors (p245)
Ch14Prioritization helps the project manager resolve conflicts, plan for staged deliveries, and make the necessary trade-offs. (p248) Prioritization is critical for timeboxed or incremental development with tight, immovable release schedules.(p248) Contributing to requirement prioritization is one of the customer’s responsibilities, which help clarify customer expectation (p249) Customers and developers both should provide input to requirement prioritization.(p249) Rapid descoping phase – when nonessential features are jettisoned to ensure that the critical capabilities ship on schedule. (p250) If left to their own, customers will establish 85% of requirement as high priority, 10% as medium, and 5% as low.If nearly all requirements are truly are of top priority, then the project has a high risk of not being successful. (p250) Questions to ask in order to determine task priorities (p250):
Common prioritization scale groups into three categories of low, medium, and high (regardless of labeling); which is subjective and imprecise. Use two dimensional matrix for prioritization (p251):
Include the priority of each requirement in the use-case description, the SRS, or the requirement database (p251) Set priority convention for weather high requirements are result of inheriting low level requirements, or each functional requirement has its own requirement (p251) With many requirements, choose an appropriate level of abstraction for prioritization – features, use cases, or functional requirements (p252) You may decide to do an initial prioritization at the feature level and then to prioritize the functional requirements within certain features separately.This will help to distinguish the core functionality from refinements to schedule for later releases.Document even the low-priority requirements. (p252) Quality Function Deployment (QFD) – a comprehensive method for relating customer value to proposed product features. (p252) Total Quality Management (TQM) – rates each requirement against several weighted project success criteria and computes a score to rank the priority of the requirements. (p252) Use a spreadsheet model from http://www.processimpact.com/goodies.shtml
Prioritization participants include: project manager, customer representatives, development representative (p253) During prioritization, keep items in the same level of abstractions.Don’t mix functional requirement with product features. In your prioritization matrix include driving features (you’ld implement B only if A is implemented) Prioritization questions to ask (p255)
Accuracy of prioritization estimate is limited to the team’s ability to estimate benefit, penalty, cost, and risk for each item.Customer and development representatives should review the completed prioritization matrix (p257) Don’t over interpret small differences in calculated priority numbers.Look for groups of requirements that have similar priority numbers. Ch15Research shows that it costs approximately 100 times more to correct a customer-reported requirement defect than to correct an error found during requirement development.Another study found it took 30 minutes to fix an error discovered during the requirement phase, where as it took 5-17 hours to correct a defect during system testing. (p260). If you start your testing planning and test-case development early, you’ll detect many errors shortly after they’re introduced.This prevents them from doing further damage and reduces your testin and maintenance costs (p260).
Conceptual test case (implementation-independent) based on requirement will reveal errors, ambiguities, and omissions in SRS analysis model long before the team writes any code. Requirement validation purpose:
Some validations activities (like incremental reviews of SRS) are threaded throughout the elicitation, analysis, and specifications processes.Other activities, such as formal SRS inspection, provide final quality gate prior to baseline the SRS.Include requirements validation activities as discrete tasks in your project plan. (p261) Intuitively, it seems that inserting time into the schedule to improve requirements quality would delay planned ship date; in actuality, the investment can actually shorten the delivery schedule by reducing the rework required and by accelerating system integration and testing Quantify each requirement so that you can think of a way to measure how well a proposed solution satisfies it (p262). Peer review occurs when ever someone other than the author reviews the artifact. Informal review process includes: peer deskcheck (colleague to look over), pass-around, walkthrough (author describes deliverable and solicits comments). Formal review produces a report that identifies the material, the reviewers, and the review team’s judgment as to whether the product is acceptable.The principal deliverable is a summary of the defects found and the issues raised. (p263) If your serous about maximizing software quality, your team will inspect every requirement document it creates. If you don’t have time, use risk analysis to differentiate those requirements that demand inspection.Begin inspections when SRS is only 10% done (263). Any software work product can be inspected, including requirements, design documents, source code, test documentations, and project plan. (p264) Inspections provide a quality gate through which documents must pass before they are baselined. Sample peer review and defect checklist can be found at http://www.prodcessimpact.com/goodies.shtml. Participants in an inspection should include four representatives: author & peers of the author, people that will interface with the product, group that will work on the item being inspected, author of any predecessor work.Try to limit the team to six or fewer inspectors (p265). Inspection roles include author, moderator, reader and recorder. Inspection entry criteria keeps the team from spending time on issues that should have been resolved prior to inspection. (p266) Inspection entry criteria checklist includes: (p266)
The author and moderator plan the inspections together, who should participate, what materials the inspectors will need, how many inspection meetings. Two to four pages per hour is a practical guideline (p267). During inspection meeting, author describes the background of the material to be reviewed, and assumptions made.(p268) Prior to inspection meeting, each inspector examinees the product using a checklist of typical defect. Don’t proceed with inspection meeting if the participants haven’t already examined the work product on their own.Ineffective meetings can lead to the erroneous conclusions that inspections are waste of time (p268) Ask developers to review the SRS to rate each requirement as to how well they understand on scale of 1 to 5 (p268) During inspection, reader leads the other inspectors through the SRS, describing one requirement at a time in his own words.Recorder captures the issues that become action items; identifying as much defects as possible in the 2-4 hour meeting (p268) During meeting conclusion, the team 1) accepts the requirement with minor revisions, or 2) indicate a major revision is needed (may indicate problem with the requirement development process; consider holding a retrospective to explore how the process can be improved). (p269) Meetings can reveal additional defects that no inspectors found during their individual preparation.Make a risk-based decision as to how much energy to devote to improving requirement quality. (p269) Moderator insures that the author corrects the errors properly; and determines if the inspections’ exit criteria have been satisfied. (p269) Possible exit criteria include (p269-270):
Develop a defect checklist for each type of requirement type for you organization. Check list (p270-271):
Organization and completeness o Are all internal cross-references to other requirements correct o Are all requirements written at a consistent and appropriate level of details o Do the requirements provide an adequate basis for design o Is the implementation priority of each requirement included o Are all external hardware, software, and communication interfaces defined o Are algorithms intrinsic to the functional requirements defined o Does the SRS include all the known customer or system needs o Is any necessary information missing from a requirement? If so, is it identified as a TBD? o Is the expected behavior documented for all anticipated error conditions Correctness o Do any requirements conflict with or duplicate other requirements o Is each requirement written in clear concise, and unambiguous language o Is each requirement verifiable by testing, demonstrating, review, or analysis o Is each requirement in scope of the project o Is each requirement free from content and grammatical errors o Can all requirements be implemented within known constraints o Are all specified error messages unique and meaningful Quality attributes o Are all performance objectives properly specified o Are all security and safety considerations properly specified o Are other pertinent quality attribute goals explicitly documented and quantified, with the acceptable trade-offs specified Traceability o Is each requirement uniquely and correctly identified o Is each software functional requirement traced to a higher-level requirement (for example, system requirement or use cases) Special issues o Are all requirements actually requirements, not design or implementation details o Are time-critical functions identified and their timing criteria specified o Have internationalization issues been adequately addressed Asking colleagues to tell you what’s wrong with your work is a learned – not instinctive-behavior (p272) To avoid overwhelming the inspection teams with a large requirement (several hundred pages), perform incremental reviews. Identify the high-risk areas that need a careful look, and use informal reviews for less risk material.Ask specific inspectors to start at different locations in the document to make certain that fresh eyes have looked at every page. (p272) Inspection elements to keep in mind (p273)
If you choose not to hold an inspection meeting, recognize that this can reduce the inspection’s effectiveness by perhaps 25 percent, but it also reduces the cost of the inspection Watch out for tester who claim that they can’t begin their work until the requirements are done and for testers who claim that they don’t need requirements to test the software.Testing and requirements have synergistic relationship because they represent complementary views of they system. (p274) Writing black box (functional) test cases crystallizes your vision of how the system should behave under certain conditions.Vague and ambiguous requirements will jump out at you because you won’t be able to describe the expected system response. Ideally, an analyst write the functional requirements and a tester will write the test cases from a common starting point, the user requirements (p275). Trace the execution path for every test case on a dialog map with a highlighter pen; thus, you can find incorrect or missing requirements, correct errors in the dialog map, and refine the test cases. (p279) Analyst and the tester combined requirements, analysis models, and test cases to detect missing, erroneous, or unnecessary requirements long before any code was written.Conceptual testing of software requirements is a powerful technique for controlling a project’s cost and schedule. (p279) Acceptance criteria - acceptance testing – should evaluate whether the product satisfies its documented requirements. User acceptance testing does not replace comprehensive requirements-based system testing, which cover both normal and exception paths and a wide variety of data combinations. (p280) Have customers develop acceptance criteria. During requirement elicitation ask: What do you need to do with the system?How would you judge whether the system satisfies your needs? Acceptance test planning, informal reviews, SRS inspections, and requirements testing techniques will help to build higher quality systems faster and more inexpensively. (p281) Ch16 Maintenance = continuing engineering = ongoing development – software in operations (p283) Reverse-engineering = software archaeology (p284) One useful technique to finding missing information, is to draw a dialog map for the new screens you have to add, showing the navigation connections to and from existing display elements.Other modeling techniques such as class and interaction diagrams, and entity-relationship diagrams are also useful.A context diagram or use-case diagram depicts the external entities. Including portions of systems within requirement achieve the following
If you have to perform software surgery (i.e. satisfy revised government requirements), begin listing the business rules that affect the system (p285) When you implement a change, take the time to document what you discovered (p285) Sometimes it makes sense write SRS for an existing system when it will be used and improved upon in future (p286) Maintenance projects provide an opportunity to try new requirement engineering methods in a small-scale and low risk way.It’s tempting to claim that a small enhancement doesn’t warrant writing any requirements.Enhancement projects let you tackle the learning curve in bite-sized chunks.Explore the new feature from use-case perspective, discussing with the requester the tasks that users will perform with that feature (p287). Requirements traceability data will help the maintenance programmer determine which components he might have to modify because of a change in a specific requirement. Inspection participants should represent: 1) author of the requirements, 2) representative who can ensure that the new requirements accurately describe the needed change, 3) people whose work product is effected, 4) developer, tester who will do the work (p288) Obsolete requirements and design documents aren’t helpful; there is widespread fear in the software industry that writing documentation will consume too much time; What’s the cost if you don’t update requirements and a future maintainer has to regenerate that information? (p288) Requirements can help evaluate the candidates to identify the most appropriate package for your needs (p288) Evaluate off the shelf products by: (1) rate requirements 1-10, (2) Rate each package how it satisfies requirement between 0 to 1, (3) rate non-function requirement, performance, suability, etc, (4) evaluate cost, vendor viability, support, external interface for extension (p289) Focus the requirements for COTS acquisition at the user requirements level.There is no need for detailed functional requirements for COTS. (p289) The use cases permit a gap analysis, so you can see the places where customization or extension will be needed to meet your needs (p290) Prioritize the use cases and reports.Distinguish capabilities that must be available on day one from those that can wait for future extensions and those that your users can live without. When evaluating COTS, determine: Define quality requirements for your COTS selection: performance, usability, flexibility (to extend the package), interoperability (integrate with other packages), Integrity (safety) Demand high quality written requirements for outsourcing Outsourcing check list (p292-3): 1) provide details 2) avoid ambiguity (words), 3) arrange touch points with the supplier 4) Define a mutually acceptable change control process. 5) plan time for multiple cycles and reviews of requirement.Consider communication delays when dealing with geographical barriers. 6) Define acceptance criteria Emergent projects are characterized by uncertain requirements and frequent changes.They demand iterative, incremental, and adaptive approaches to both requirements development and software development; in such cases, you may need to base development on vague, and high-level statements of business objectives (p293) The agile methodologies take a lean approach to requirements.Requirements are described in terms of product features or in the form of user stories, which are similar to the casual use cases described. Agile methodology – extreme programming – advocates recording requirements in the form of simple user stories written on index card.It demands that the customers understand their requirements (p294) Every project should represent its requirements in forms that can be shared among the stakeholders, be updated and be managed through the project.Someone needs to be responsible for this documenting and updating. (p295) Streamline your change process so that the minimum number of people can make decisions about requested changes as quickly as possible for emerging projects. (p296) Ch17Software requirement class training can stress the importance to all stakeholders, share understanding of business objectives and expose all team members to requirement terminology, concepts, and practices. (p297)
As illustrated above, requirements define the project’s intended outcomes. However, the most important project outcome is a system that meets its business objectives, not necessarily the one that implements all the initial requirements according to the original project plan. (p298) Projects business success will be problematic if you don’t update your plans to align with evolving objectives and realities. Past small projects used 12-15% for requirements engineering; however, it depends on complexity In banks, most successful project spent 28% in requirements engineering: 11% requirements elicitation 10% modeling 7% validation and verification Average project spent 15.7% of effort and 38.6% of schedule to requirements engineering (p299) Not all requirements development efforts should be allocated to the beginning of the project. First step in project estimation is to assess size of the software project. Base size estimates on: 1. Textual requirements 2. Analysis models 3. Prototypes 4. User interface designs (p300) Frequently used metrics: 1. Testable requirements 2. Function & feature points 3. Number, type and complexity 4. Lines of code 5. Count of object classes Estimate variables include developer skill, project complexity, and team experience. Also, estimates need to be compared to actual project results to improve estimating ability. For frequent changes in scope, project should be deferred until customer needs are clearer. Estimates should be justified based on a well-though-out process and historical data.For schedule conflicts, project’s business objectives should dictate whether to reduce scope, add resources, or compromise on quality. (p301) Requirements uncertainty is unavoidable early in the project; contingency buffers should be included in schedule and budget. Extensive requirements growth indicates that many requirements were missed during elicitation. Select appropriate size metrics for projects. Complex, nonlinear relationships exist between product size, effort, development time, productivity, and staff buildup time. (p302) Right-to-left scheduling: a delivery date is cast in concrete and then the product’s requirements are defined. A design-to-schedule strategy can work, if the project manager can negotiate what portion of the desired functionality can fit within the schedule constraints. For complex systems where software is only part of the final product, high-level schedules are generally established after developing the product-level (system) requirements and a preliminary architecture. Projects that have uncertain requirements benefit from an incremental development life cycle. Effective project planning requires the following elements: 1. Estimated product size 2. Productivity of the development team (based on historical performance) 3. List of tasks needed to completely implement and verify a feature or use case 4. Reasonably stable requirements 5. Experience (p303) Specification should not contain inadvertent design, or needless or unintended restrictions on the final design.Studying a proposed architecture provides a different perspective that helps to verify the requirements and time their precision, as does prototyping. Architecture is especially critical for systems that include both software and hardware components and for complex software-only systems. An essential requirements analysis step is to allocate the high-level system requirements to the various subsystems and components. (p304) Allocation of system capabilities to subsystems and components must be done from top down. If you leap directly from requirements into code, you end up designing the whole software on the fly. Although you come up with a design, it is not an excellent design – more likely resulting in poorly structured software. Although refactoring the code can improve the design, an ounce of up-front design is worth a pound of post-release refactoring. (p305) As with requirements, excellent designs are the result of iteration. Shortcomings in design lead to products that are difficult to maintain and extend and that don’t satisfy the customer’s performance, usability, and reliability objectives. Although you don’t need t o develop a complete, detailed design for the entire product before you begin implementation, you should design each component before you code it. (p306) All projects will benefit from: 1. Develop a solid architecture 2. Identify the key object classes or functional modules – defining their interfaces, responsibilities 3. For parallel-processing systems, understand the planned execution threads 4. Define each code unit’s intended functionality, following design principles of strong cohesion, loose coupling and information hiding 5. Ensure design accommodates all functional requirements and does not contain unnecessary functionality 6. Ensure that design accommodates exceptional conditions 7. Ensure that design achieves performance, robustness, reliability If an issue is not resolved immediately, any assumptions, guesses, or interpretations that a developer makes should be documented and reviewed with customer representatives. Testing and requirements engineering have a synergistic relationship. Product should be tested against what it was intended to do as recorded in the requirements document, not against design or code. System testing that based on code can become a self-fulfilling prophecy. (p307) Requirements are the ultimate reference for system and user acceptance testing. Analyst should incorporate the legitimate implied requirements and their origins into the SRS to make future testing more effective. Project tester methods include: 1. Testing 2. Inspection 3. Demonstration 4. Analysis Analytical techniques should be used to derive test bases based on the logic described in the requirement. This reveals ambiguities. Every functional requirement should trace to at least one test case. Measure testing progress by tracking percentage of the requirements that have passed their tests. (p308) Specification-based testing applies several test design strategies: action driven, data-driven, logic-driven and state-driven. It is possible to generate test cases automatically. Testing against requirements must be performed at every level of software construction, not just the end-user level. Much of the code in an application isn’t directly accessed by users but is needed for infrastructure operations. Testing the system against user requirements is a necessary strategy for system testing. The prospect of trying to understand a huge volume of even excellent requirements is certainly daunting, but ignoring them is a decisive step toward project failure. A requirement that didn’t’ satisfy its test criteria was counted as an error. (p309) Without a project plan, software designs and system tests on a foundation of high-quality requirements. (p310) Ch18Requirement management activities include (p314):
You can respond to requirement changes by: staff, schedule, quality, overtime, reprioritize (p314) Requirement baseline is the set of functional and nonfunctional requirements that the development team has committed to implement in a specific release; which is set under configuration management. Subsequent changes can only be made through the project’s defined change control process. (p315) Document methods for (p316) :
Ensure that someone owns the requirement management activities.Project’s requirement analyst typically has the lead responsibility for requirements management. Requirement management includes: Storage, requirement attributes, coordination (status, updates, tractability), reports, change activities. To minimize confusion, conflict, and miscommunication, permit only designated individuals to update the requirements, and make sure that the version identifier changes whenever a requirement changes (p317). Consider appending a version number to each indiviudal requirement label, which you can increment whenever the requirement is modified, such as Print.Confirmatio-Copies-1 (p318) When you baseline a document marked up (i.e. word version tracking), first archive a marked-up version, then accept all the revisions, and then store the now-clean version as the new baseline file, ready for the next round of changes; thus, you can always trace the source and rational for changes. (p318) Requirement attributes establish a context and background for each requirement that goes well beyond the description of intended functionality (p319). Consider specifying the following requirements attributes: An example of requirement reason can be: because it is in competitor’s product (p320) Avoid spending time dragging requirement from one SRS to another.One way to handle this is to store the requirements in a requirements management took, and define a release number attribute.Simply updating the release number shifts the requirement into a different baseline. Defining and updating requirement attributes is part of the cost of requirement management, but that investment can yield a significant payback. (p321) Tracking the status of each functional requirement throughout development provides a more accurate gauge of project progress (p321). Some practitioners add the Status Designed (design elements that address functional requirements have been created and reviewed) and Delivered (handed to user, beta testing). Classifying reuqirements into several status categories is more meaningful than trying to monitor the precent completion of each requirement (p322) Certain status changes also lead to updating requirements traceability data to indicate which design, code, and test elements addressed the requirements (p322) Suggested requirement status (322-3):
A body of work is done when all the allocated requirements have a status of either Verified (implemented as intended) or Deleted (removed from baseline) Track how much effort you spend on requirements management; thus, you can evaluate whether that was too little, about right, or too much and adjust your processes and future planning accordingly (p324). Measuring actual development and project management effort requires a culture change, and individual discipline to record daily work activity Note that work effort is not same as elapsed calendar time. Total effort for a task, in units of labor hours, doesn’t necessarily change, but duration increases. (p324) Failing to manage requirements increases the project’s risk from controlled changes (p324) Requirement activities to track:
Effective requirement management can reduce the expectation gap by keeping all project stakeholders informed (p324) Ch 19 Organizations serious about managing its software projects must ensure that: · Proposed requirements changes are carefully evaluated · Appropriate individuals make informed business decisions · Approved changes are communicated to all participants · Project incorporates requirements changes in a consistent fashion Software change isn’t a bad thing. Even rejected change request consumes the resources needed to submit, evaluate, and decide to reject it. The closer you get to the release date, the more you should resist changing that release because the consequences of making changes become more severe. If a change is needed to be made, start at the highest level of abstraction that the change touches and cascade the impact of the change through the related systems components. (p328) Late changes have an big impact on work already performed. A small modification here, an unexpected enhancement there, and soon the project has no hope of delivering what the customers expect on schedule and with the acceptable quality. The first step in managing scope creep is to document the vision, scope and limitations of the new system as part of the business requirements. Next, evaluate every proposed requirement or feature against the business objectives, product vision, and project scope. (p329) Prototyping is an effective technique for controlling scope creep. Prototype provides a preview of possible implementation. Using short development cycles to release a system incrementally provides frequent opportunities for adjustments when requirements are highly uncertain or rapidly changing. Also, using words such as “not now” is more palatable than a simple rejection. Customers aren’t always right, but they do always have a point. Stifling change prematurely ignores the realities that customers aren’t always sure what they need. (p330) Change-control process lets you track that status of all proposed changes and helps ensure that suggested changes aren’t lost of overlooked. It’s a funneling and filtering mechanism to ensure that the project incorporates the most appropriate changes. If you ask stakeholders to follow a new change-control process that ineffective, cumbersome, or too complicated, people will find ways to bypass the process. (p331) Helpful change-control policy statements: (Change-Control Policy Guideline) · All requirements changes shall follow the process. If the process isn’t followed, the proposed change will not be considered. · No design or implementation work other than feasibility exploration shall be performed on unapproved changes. · Simply requesting a change doesn’t guarantee that it will be made. Projects change control board will decide which changes to implement. · Contents of the change database will be visible to all project stakeholders · Original text of a change request shall not be modified or deleted · Impact analysis shall be performed for every change · Every incorporated requirement change shall be traceable to an approved change request · Rationale behind every approval or rejection of a change request shall be recorded. No change affecting more than one individual’s work should bypass your change-control process. Process should include a “fast path” to expedite low-risk, low-investment change requests in a compressed decision cycle. (p332) Download a sample change-control process description from processimpact.com Four components in all procedures and process descriptions: · Entry criteria: Condition that must be satisfied before executing the process or procedure · Various tasks involved; project role responsible for each task · Steps to verify that the tasks were completed correctly · Exit Criteria (p333) Change-Control Process 1. Introduction: Provides purpose, scope and definitions. 2. Roles and Responsibilities: list the project team members by role, not name. 3. Change request status – defined life cycle of proposed change (p334) 4. Entry Criteria – Assign a unique identification tag to every change request and route them all to a single point of contact, the request receiver (p335) 5. Tasks – evaluate request for technical feasibility, cost and alignment with the project’s business requirements; perform impact analysis, risk analysis, hazard analysis, or other assessments 6. Verification – requirements changes are typically verified through a peer review and use traceability information; verification of changes made in downstream work products through testing or review. 7. Exit Criteria: status of request is rejected, closed or canceled; modified products are installed into the correct locations; CCB or other relevant project participants are notified of the change details; requirements traceability matrix has been updated (p336) 8. Change-control status reporting – charts typically show the number of change requests in each status category as a function of time and describe the procedures for producing the charts and reports. Appendix: Suggested Change-Request Data Items · Change origin: Functional area that requested the change · Change-request ID: identification tag or sequence number assigned to the request · Change type: type of change request such as requirement change, proposed enhancement, or defect report · Date Submitted: date originator submitted change request · Date updated: date change request was most recently updated · Description: free-form text description of the change being requested · Implementation priority: relative importance of making the change as determined by the CCB · Modifier: individual primarily responsible for implementing the change · Originator: individual who submitted change request · Originator priority: relative importance of making change from the originator’s point of view · Planned release: product release or build number for which an approved change is scheduled · Project: name of project in which a change is being requested · Response: free-form text of responses made to change requests · Status: current status of the change request · Title: one-line summary of proposed change · Verifier: individual who is responsible for determining if change was made correctly (p337) Change Control Board (CCB) has been identified as a best practice for software development. A CCB reviews and approves changes to any baseline work. Large projects or programs might have several levels of CCBs. An effective CCB will consider all proposed changes promptly and will make timely decisions. (p338) CCB membership should represent all groups who need to participate in making decisions. To ensure that the CCB has adequate technical and business information, invite other individuals to a CCB meeting when specific proposals are being discussed that relate to those individuals’ expertise. CCB charter describes the propose, score of authority, membership, operating procedures, and decision-making process. A template for a CCB charter is available from processimpact.com (p339). Charter should state the frequency of regularly scheduled CCB meetings and the conditions that trigger a special meeting. Scope of the CCB’s authority indicates which decisions it can make and which ones it must pass on to a high-level CCB or a manager. Decision-making process description should indicate the following: · Number of CCB members or the key roles that constitutes a quorum for making decisions · Whether voting, consensus, consultative decision making, or some other decision rule is used · Whether the CCB chair may overrule the CCB’s collective design · Whether the higher level of CCB or someone else must ratify the decision CCB balances the anticipated benefits against the estimated impact of accepting a proposed change. If the estimated cost or schedule impact exceeds the established thresholds for this level of CCB, refer the change to management or to a higher-level CCB. (p340) Before accepting a significant requirement change, renegotiate commitments with management and customers to accommodate the change. Change-control tools help the change-control process operate more efficiently. Look for the following features in a tool: · Define the data items included in a change request · Define a state-transition model · Enforces the state-transition model so that only authorized users can make permitted status changes · Records identity and date of every status change · Defines who receives automatic email notifications · Produces both standard and custom reports and charts (p341) Measuring change activity should be motivated by the questions you or your managers are trying to answer and should be used to assess the stability of the requirements. Track the following aspects of requirements change activities: · Number of change requests received, currently open and closed · Cumulative number of changes made · Number of change requests that originated from each source · Number of changes proposed and made in each requirement since it was baselined · Total effort devoted to processing and implementing change requests · Number of cycles through the change process that it took to correctly implement each approved change (p342) However, don’t count changes before baselining. Once you’ve baselined requirements, all proposed changes should follow your change-control process. Also begin to track the frequency of change (requirements volatility). This change frequency chart should trend toward zero as the project approaches its ship date. A sustained high frequency of changes implies a risk of failing to meet your schedule commitments. It also indicates that the original baselined requirements were incomplete. (p343) Impact analysis is a key aspect of responsible requirements management. The analysis examines the proposed change to identify components that might have to be created, modified, or discarded and to estimate the effort associated with implementing the change. Impact Analysis Procedure has three aspects: 1. Understand the possible implications of making the change. 2. Identify all the files, models, and documents that might have to be modified 3. Identify the tasks required to implement the change, and estimate the effort needed to complete those tasks. (p345) Many estimation problems arise because the estimator doesn’t think of all the work required to complete an activity. Therefore, this impact analysis approach emphasizes comprehensive task identification. For substantial changes, use a small team, not just one developer. (p347) Ch 20Change impactanalysis is easier if you have a road map that shows where each requirement or business rule was implemented in the software. (p353) Traceability links allow you to follow the life of a requirement both forward and backward, from origin through implementation. To permit traceability, each requirement must be uniquely and persistently labeled so that you can refer to it unambiguously throughout the project.(p354) If testing results something not in requirements, then requirements need to be updated, or it is an instance of gold planting. Traceability links can help you sort out these kinds of situations and build a more complete picture of how the pieces of your system fit together. They also help you keep track of parentage, interconnections, and dependencies among individual requirements. In some instances, you only need to trace system tests back to functional requirements or use cases. (p355) Requirements tracing provides a way to demonstrate compliance with a contract, specification or regulation. It can improve the quality of your products, reduce maintenance costs, and facilitate reuse. However, tracing requirements is a manually intensive task that requires organizational commitment. One of the benefits of implementing requirements traceability is for maintenance. A table that shows where each applicable business rule was implemented in the functional requirements, designs, and code makes it easier to make the necessary changes properly.(p357) Although difficult to quantify, the investment will pay dividends anytime you have to modify, extend, or replace the product. Defining traceability links is not much work if you collect the information as development proceeds. (p358) Fill in the information as the work gets done, not as it gets planned. For example, only when the code in the function has been written, has passed its unit tests, and has been integrated into the source code baseline for the product should it be added to the traceability matrix. This way, individuals know that populated cells in the requirements traceability matrix indicate work that’s been completed. (p359) Another way to represent traceability information is through a set of matrices that define links between pairs of system elements, such as: · Requirement to other requirements of that same type · Requirement to requirement of another type · Requirement to test cases. The matrices above can be used to define various relationships that are possible. (p361) For those individuals who are required to supply each type of traceability information for your project, explain to them what requirements tracing is, why it adds value, and why they’re being asked to contribute to the process. Gathering and managing requirements traceability date must be made the explicit responsibility of certain individuals or it won’t happen. (p362) It’s impossible to perform requirements tracking manually for any but very small applications. You can use a spreadsheet to maintain traceability data for up to a couple hundred requirements, however, larger systems demand a more robust system. Requirements tracking can’t be fully automated since the knowledge of the links originates in the development team member’s minds. (p363) Consider the following sequence of steps when you begin to implement requirements traceability on a specific project: 1. Select the link relationships you want to define 2. Choose the type of traceability matrix you want to use 3. Identify the parts of the product for which you want to maintain traceability information. Start with the critical core functions and the high-risk portions. 4. Modify your development procedures and checklists to remind developers to update the links after implementing a requirement or an approved change. 5. Define the tagging conventions so that they can be linked together. Write scripts that will parse the system files to construct and update the traceability matrices. 6. Identify the individuals who will supply each type of link information and the individual who will coordinate the traceability activities and manage the data 7. Educate the team about the concepts and importance of requirements tracing 8. Have each participant provide the requested traceability information as they complete small bodies of work 9. Audit the traceability information periodically. If a requirement is reported as implemented and verified yet its traceability data is incomplete or inaccurate, your requirements tracing process isn’t working. (p364) The next time any enhancements or modifications are made, write down what is discovered about connections between code, tests, designs and requirements. (p365) Ch 21 · Manage versions and changes · Store requirements and attributes (using a release number attribute) (p370) · Facilitate impact analysis (trace each functional requirement back to its origin or parent so that you know where every requirement came from) · Track requirements status · Control access · Communicate with stakeholders · Reuse requirements (p371) Consider how you would publish a baseline set of requirements into a version control tool and how you would define traceability links between functional requirements and specific design or code elements. Also, don’t base a project’s success on a tool you’re using for the first time. Gain some experience working with the tool on a pilot project before you employ it on a high-stakes project.(p374) Buying a tool is easy; changing your corporate culture and processes to accept the tool and take best advantage of it is much harder. (p375) Consider the following cultural and process issues as you strive to maximize your return on investment form a commercial requirements management tool: · Don’t even pilot the use of a tool until your organization can create a reasonable software requirements specification on paper · Don’t try to capture requirements directly in the tool during the early elicitation workshops · Use the tool asgroupware support aid to facilitate communication with project stakeholders · Think carefully about the various requirement types that you define (p376) · Define an owner for each requirement type, who will have the primary responsibility for managing the database contents of that type · Use business, not IT, terminology when defining new data fields or requirements attributes · Don’t define traceability links until all the requirements stabilize · Set a date after which the tool’s database will be regarded as the definite repository of the projects requirements · Instead of expecting to freeze the requirements early in the project, get in the habit of baselining a set of requirements for a particular release.(p377) For the smoothest transition for making requirements management tools work for you, assign a tool advocate, or a local enthusiast who learns the tool’s ins and outs, mentors other users, and sees that it gets employed as intended. Begin with a pilot application and remember that a tool can’t overcome process deficiencies. Once you’ve made a requirements database work for you, you’ll never go back to plain paper. (p 378) Ch 22Requirement documentation has a relationship with (p382): · Project Planning Process · Project Tracking and Control Process · Change Control Process · System Testing Process · Construction process of software · User documentation process Project planning process can lead to reductions in the project scope or to the selection of an incremental or staged-release approach to deliver functionality in phases. Project tracking and control includes monitoring the status of each requirement. For change control, after a set of requirements have been baselined, all subsequent changes should be made through a defined change-control process. This process helps ensure that: · The impact of a proposed change is understood · The appropriate people make informed decisions to accept changes · All people who are affected by a change are made aware of it · Resources and commitments are adjusted as needed · The requirements documentation is kept current and accurate (p383) Explain to your contact people in each functional area the information and contributions you need from them if the product development effort is to succeed. Agree on the form and content of keep communication interfaces between development and other functional areas such as a system requirements specification or a market requirements document. (p384) Ask the other organizations what they need form the development group to make their jobs easier. To reduce the fear, communicate your process improvement rationale and intentions to your counterparts in other areas. When seeking collaboration on process improvement, begin from this viewpoint? “here are the problems we’ve all experienced. We think that these process changes will help solve those problems.” Some forms of resistance that you might encounter are: · A change-control process might be viewed as a barrier, although in reality it is a structure, not a barrier. However, the software team is responsible for ensuring that the change process really does work · Developers view writing and reviewing requirements documents as bureaucratic – however, by explaining the high cost of continually rewriting the code while the team tries to figure out whatthe system should do, developers and managers will better appreciate the need for good requirements · If customer-support costs aren’t linked to the development process, development team might not be motivated to change how they work because they don’t suffer the consequences of poor product quality. (p385) · If one objective of improved requirements processes is to reduce support costs by creating higher-quality products, the support manager might feel threatened. · Busy customers claim they do no have time to spend working on requirements. Remind them of earlier projects that delivered unsatisfactory systems and the high cost of responding to customer input after delivery. Four principles of software process improvement: 1. Process improvement should be evolutionary, continuous and cyclical: Instead of aiming for perfection, develop a few improved templates and procedures and get started with implementation. 2. People and organizations change only when they have an incentive to do so. (p386) a. Project missed deadlines because requirements were more extensive and complicated than expected b. Developers worked a lot of overtime because misunderstood or ambiguous requirements were addressed late in development c. System test effort was wasted because the testers didn’t understand what the product was supposed to do d. The right functionality was present, but users were dissatisfied because of sluggish performance, poor usability, or other quality shortcomings e. Organization experienced high maintenance costs because customers requested many enhancements that should have been identified during requirements elicitation. f. Development organization acquired a reputation for delivering software that customers don’t want. 3. Process changes should be goal-oriented: a roadmap that defines pathways to your business objectives greatly improves your chances of successful process improvement. 4. Treat your improvement activities as miniprojects.(p387) All team members have the opportunity – and the responsibility – to actively improve how they do their work. However, a broad process improvement effort can succeed only if management is motivated to commit resources, set expectations, and hold team members accountable for their contributions to the change initiative.(p388) The process improvement cycle reflects the importance of knowing where you are before you take off for someplace else, the need to chart your course, and the value of learning from your experiences as part of a continuous process improvement. Step one of any improvement activity is to access the practices currently being used in an organization and to identify their strengths and shortcomings. (p389) Step two involves planning improvement actions. Each action plan should state the goals of the improvement activities. Include no more than ten items in each action plan. Assign each action item to a specific individual owner who is responsible for seeing that the team is completed. Don’t assign “the team” as an action item owner. Teams don’t do work; individuals do. (p391) Step three involves creating, piloting and implementing new processes. Many approaches that seem like a good idea in the abstract turn out to be less pragmatic or less effective than anticipated. Plan a process pilot for most new procedures. Keep the following suggestions in mind for the process pilots you conduct: · Select pilot participants who will give the new approaches a fair try and provide helpful feedback · Make the outcome easy to interpret, quantify the criteria the team will use to evaluate the pilot · Identify the stakeholders who need to be kept informed of what the pilot is about and why it is being performed · Consider piloting portions of the new process on different projects · As part of the evaluation,ask pilot participants how they would feel if they had to go back to their former ways of working. Step four involves evaluating results. Asses how smoothly the pilots ran and how effective they were in resolving the uncertainties about the new process. (p393) Give the new approaches adequate time to work, and select measures that will demonstrate the success of each process change. Also accept the reality of the learning curve – that is, the productivity drop that takes place as practitioners take time to assimilate new ways of working. (p394)
High performance projects have effective processes for all of the requirements engineering components; elicitation, analysis, specification, validation, and management. To facilitate the performance of these processes, every organization needs a collection of process assets. A process encompasses the actions you take and the deliverables you product; process assets help the team members perform processes consistently and effectively. (p395) Requirement development process assets describe how to identify stakeholders, user classes and product champions in your domain. (p 396) Allocating high-level product requirements to specific subsystems is necessary. Allocation takes place after the system-level requirements are specified and the system architecture has been defined. To sensibly reduce scope, a requirements prioritization procedure should be followed. The software requirement specification template provides a structured, consistent way to organize the products functional and nonfunctional requirements. Consider adopting more than one template to accommodate the different types or sizes of projects your organization undertakes. This can reduce the frustration that arises when a “one size fits all” template or procedure isn’t suitable for your project. (p397) The requirements management process describes the actions a project team takes to deal with changes, distinguish versions of the requirements documentation, track and report on requirements status, and accumulate traceability information. It also describes the steps required to approve the SRS and establish the requirements baseline. The change-control process can reduce the chaos inflicted by endless, uncontrolled requirement changes.(p398) Estimating the cost and other impacts of a proposed requirement change is a key step in determining whether to approve the change. An accompanying worksheet provides a simple way to estimate the labor for the tasks. The requirements traceability matrix lists all the functional requirements, the design components and code modules that address each requirement, and the test cases that verify its correct implementation. The traceability matrix should also identify the parent system requirement, use case, business rule, or other source form which each functional requirement was derived. Rather than just diving in, develop a road map for implementing improved requirements practices in your organization (p399) Ch 23Typicalrequirements risks include misunderstanding the requirements, inadequate user involvement, uncertain or changing project scope and objectives, and continually changing requirements. (p402) Project management is fraught with risks caused by poor estimation, rejection of accurate estimates by managers, insufficient visibility into project status, and staff turnover. (p403) Risk prioritization helps you focus on the most severe risks by assessing the potential risk exposure form each. Risk exposure is a function of both the probability of incurring a loss due to the risk and the potential magnitude of that loss. Risk avoidance is one way to deal with a risk: don’t’ do the risky thing. Risk management planning produces a plan for dealing with each significant risk, including mitigation approaches, contingency plans, owners and timelines. Risk resolution involves executing the plans and finally track your progress toward resolving each risk item through risk monitoring, which should become part of your routine project status tracking. Also, monitor how well your risk mitigation actions are working. Lastly, keep the risk list as a stand-alone document so that it’s easy to update throughout the project’s duration. (p404) Sample risk item tracking template (p405):
Use a condition-consequence format when you document risk statements. State the risk condition that you are concerned about, followed by the potential adverse outcome, or the consequence from that condition. Often, people who suggest risks state only the condition or the consequence. Pull these statements together in to the condition-consequence structure. Don’t try to quantify risks to precisely. Your goal is to differentiate the most threatening risks from those you don’t need to tackle immediately. You might find it easier simply to estimate both probability and impact as high, medium, or low. (p405) Assign every risk that you’re going to control to an individual owner, and set a target date for completing that mitigation action. (p406) A large project should write a separate risk managemet plan that spells out the approach it intends to take to identify, evaluate, document and track risks. Don’t assume that risks are under control just because you identified them and selected mitigation actions. Follow through on the risk management actions. Include enough time for risk management in the project schedule so that you don’t waste your investment in risk planning. Include risk mitigation activities, risk status reporting, and updating of the risk list in our projects task list. Establish a rhythm of periodic risk monitoring. Keep the ten or so risks that have the highest risk exposure highly visible and track the effectiveness of your mitigation approaches regularly.A risk is not necessarily under control simply because the mitigation actions have been completed. You need to judge whether your mitigation approaches have reduced the exposure. (p407) Scope creep is more likely if the stakeholders lack a clear, shared understanding of what the product is supposed to be and do. Early in the project, write a vision and scope document that contains your business requirements.A rough guideline is to spend about 10 to 15 percent of your project effort on requirements development activities. (p408) Devise specific usage scenarios, write test cases from the requirements, and customers develop their acceptance criteria Create prototypes to make the requirements more meaningful for users to elicit specific feedback from them. Query customers about quality characteristics such as performance, usability, integrity and reliability. Determine who the primary customers are. Identify any assumptions the customers might be making. Use open-ended questions to encourage customers to share more of their thoughts, wishes, ideas, information, and concerns that you might otherwise hear. Reverse engineering is an inefficient and incomplete way to discover requirements and no one should be surprised if the new system has some of the same shortcomings as the legacy system. (p409) Analyst must drill down to understand the intent behind a solution the customer has presented. Evaluate the feasibility of each requirement to identify those that might take longer than anticipated to implement. Don’t underestimate the learning curve of getting up to speed with new techniques that are needed to satisfy certain requirements. Identify those high-risk requirements early on, and allow sufficient time for false starts, learning, experimentation and prototyping.Formal inspections of requirements documents by teams that include developers, testers, and customers can mitigate this risk. Models and prototypes that represent the requirements form multiple perspectives will also reveal fuzzy, ambiguous requirements. (p410) Designs that are included in the SRS place unnecessary constraints on the options available to developers. Review the requirements to make sure they emphasize what needs to be done to solve the business problem, rather than stating how it will be solved. Also, perform incremental, informal reviews to find problems as early and cheaply as possible. Invite an experienced inspector from your organization or an outside consultant to observe, and perhaps to moderate, your early inspections to coach the participants. (p411) A requirements change process that includes impact analysis of proposed changes, a change control board to make decisions, and a tool to support the defined procedure is an important starting point. The requirements traceability matrix helps to avoid overlooking any requirements during design, construction, or testing. (p412)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||