Content by Category
.NET 1.x
.NET 2.0
.NET 3.0
.NET 3.5
.NET 4.0
.NET 4.5
.NET Assemblies
.NET Framework
.NET Getting Started
Accessibility
ADO.NET
Advertorials
Agile Development
AJAX
Amazon Web Services
Analysis Services
Android
Architecture
Arduino
ASP .NET Web API
ASP.NET
ASP.NET MVC
ASP.NET WebForms
Azure
B2B (Business Integration)
BDD
Big Data
Bing
BizTalk
Book Excerpts
Build and Deploy
Business Intelligence
C#
C++
ClickOnce
Cloud Computing
Code Contracts
CODE Framework Info - non Technical
CODE on the Road!
COM+
Community
Conferences
Continuous Integration
Crystal Reports
CSLA.NET
CSS
Data
Debugger
Design Patterns
Development Process
Display Technologies
Distributed Computing
Document Database
DotNetNuke
DSL
Dynamic Languages
Dynamic Programming
Editorials
Enterprise Services ("COM+")
Entity Framework
Events
Expression Blend
F#
Fox to Fox
Frameworks
Functional Programming
Git
Graphics
HTML 5
Internet Explorer 8.0
Interviews
IOS
iPhone
Iron Ruby
Java
Java Script
JavaScript
jQuery
JSON
Lightswitch
LINQ
Linux
LUA
Mac OS X
MDX
Messaging
Metro
Microsoft Application Blocks
Microsoft Business Rules Framework
Microsoft Dynamics
Microsoft Expression
Microsoft Office
Mobile Development
Mobile PC
Mono
MsBuild
MVVM
MySQL
Network
NHibernate
node.js
NOSQL
Nuget
Object Oriented Development
Objective C
Odata
OLAP
Open Source
Opinion
Opinions
Oracle
ORM
Other Languages
Parallel Programming
Patterns
PHP
Podcasts
Post Mortem
PowerPoint
Print/Output
Prism
Product News
Product Reviews
Project Management
Prolog
Python
Q&A
Rails
Rake
Razor
Reporting Services
REST
RIA Services
Ruby
Ruby on Rails
Scheme
Search
Security
Services
SharePoint
SignalR
Silverlight
SOA
Social Networks
Software & Law
Software Business
Source Control
Speech-Enabled Applications
SQL Server
SQL Server 2000
SQL Server 2005
SQL Server 2008
SQL Server 2012
SQL Server CE/AnyWhere/Mobile/Compact
SSIS
Subversion
Sync Framework
Tablet PC
TDD
Team System
Techniques
Testing and Quality Control
TFS
Tips
TypeScript
UI Design
UML
User Groups
VB Script
VB.NET
Version Control
VFP and .NET
VFP and SQL Server
Virtual Earth
Vista
Visual Basic
Visual Basic 6 (and older)
Visual FoxPro
Visual Studio .NET
Visual Studio 11
Visual Studio 2005
Visual Studio 2008
Visual Studio 2010
Visual Studio 2011
Visual Studio 2012
Visual Studio Tools for Office
VSX
WCF
Web Development (general)
Web Services
WebMatrix
WF
Whitepapers
Windows 7
Windows 8
Windows Azure
Windows Live
Windows Phone 7
Windows Phone SDK
Windows Server
Windows Vista
WinForms
WinRT
Workflow
WPF
XAML
Xiine Documentation
XML
XNA
XSLT



LearnNow


XAMALOT
 


SSWUG

Reader rating:
Click here to read 8 comments about this article.
Article source: CoDe (2001 - Issue 2)


Article Pages:  1  2 3 4 - Next >


Introduction to Gathering Requirements and Creating Use Cases

Studies indicate that between 40% and 60% of all defects found in software projects can be traced back to errors made while gathering requirements. This is huge! Finding problems while they are just in the planning stages is MUCH easier to deal with than finding them after the code has been written. So, how can developers avoid these errors and create a solid design for their software? This article will describe various methods for gathering software requirements and writing Use Cases - the first two steps in the software development process.

Imagine you are about to build a house...

You're not sure exactly what you want to build, but you know you want a "nice" house, a "big" house, and you know that you have a budget of $200,000. So, the first thing you do is go to the lumberyard and purchase various materials - lumber, windows, doors, drywall, roofing and cement blocks. You get the materials delivered and you grab the first 2x4 and start building the house. Blueprints? Who needs them? Heck, you know what you are doing and you've been inside a lot of houses right? This notion, of course, seems absurd, but that's exactly the way most software applications are built today. Developers talk to the client for a few minutes, get a general idea of what the client needs, and then sit down at the computer and start to code...

Wait a minute! There are better ways to do this! You may want to say, "But I don't have time to figure all these things out, I've got to get this done! The deadlines are tight on this project!" Before you do, take a moment to consider how much quicker it is to fix a problem early in the process, rather than later. The earlier you discover the problems, the less time is wasted and the fewer things are affected. If we take a look back at the house example, think about this: how much quicker and cheaper would it be to change the blueprint and build a two-story house rather than to build a one-story house and then rip off the roof to add the second story? The typical outcome of incomplete requirements is a huge gap between what the developers think they are supposed to build and what the users think they will get. This, of course, makes the software take longer to build and drives the cost up.

So, let's take a look at what exactly software requirements are and what techniques we can use to collect them.

Requirements

There are basically two types of software requirements - Functional and Non-Functional. As the name implies, Functional requirements describe the functionality of the product. They describe exactly what tasks the software must perform. Functional requirements define the scope of the system, the product boundaries, and its connections to adjacent systems. Functional requirements also define the business rules. Business rules are the rules that the system must conform to, based on the individual business. This includes defining the data that must be tracked. The business rules are the most important type of functional requirements and most of your requirements will be of this type.

Non-Functional requirements describe the look and feel of the system. This includes the visual properties of the system, its usability, and the performance requirements - how big, how fast, etc. Non-Functional requirements also include the product's intended operating environment and any maintainability, portability and security issues. Non-Functional requirements also include cultural and political issues as well as legal requirements that the software must conform to.

It's important to point out that various sources, such as books and web sites, describe the different types of software requirements using other categories, often with contradictory terminology. The important part, however, is not which category the requirements fall into, but that all the requirements in the business process have been identified and documented.

So, now that we know what types of information we should be collecting, let's take a look at the characteristics of good requirements. Good requirements have the following attributes. They are:

  • Complete - they very thoroughly describe the criteria
  • Correct - they are accurate and true
  • Feasible - they can be accomplished and individual requirements do not contradict each other.
  • Necessary - they are truly needed for the system to function properly and they are really what the client wants.
  • Prioritized - in the case that not all parts of the system can be implemented at the same time, it's important to be able to distinguish "absolutely necessary" from "nice to have".
  • Unambiguous - they are clear and cannot be misinterpreted
  • Verifiable - once implemented, it can be confirmed that the system has met the requirement through observation and testing
&

By: Ellen Whitney

Ellen Whitney, Vice President

Ellen Whitney is Vice President of EPS Software Corporation, as well as a senior developer specializing in the design and implementation of object-oriented software systems. Ellen’s thorough knowledge of the development process has benefited many clients as well as having made her a lecturer and international author. She is also Managing Editor of CODE Magazine and has been architecting software since 1989. In her current role she works extensively with the Sales and Marketing Departments and is responsible for setting the overall goals and direction of the company.

ellen@eps-software.com

Fast Facts

Gathering good system requirements and creating Use Cases are vital, yet often overlooked, parts of today's software applications. This article will discuss techniques for gathering good Requirements and creating Use Cases.



Article Pages:  1  2 3 4 - Next Page: 'Requirements (con't)' >>

Page 1: Introduction to Gathering Requirements and Creating Use Cases
Page 2: Requirements (con't)
Page 3: Use Cases
Page 4: Use Cases (con't)

How would you rate the quality of this article?
1 2 3 4 5
Poor      Outstanding

Tell us why you rated the content this way. (optional)

Average rating:
4.0 out of 5

39 people have rated this article.

Instantly Search Terabytes Of Text
“Lightning Fast”
– Redmond Mag
“Covers all data
sources” – eWeek
25+ fielded & full-text search options
dtSearch’s own document filters highlight hits in popular file types
Web Spider supports static & dynamic data
APIs for .NET, Java, C++, SQL, etc.
Win / Linux (64-bit & 32-bit)
www.dtSearch.com
 

      LearnNow

 

SSWUG