Tag | requirements

15 Areas to Think About When Writing Non-Functional Requirements

Jan 13th, 2010View Comments

Server room cabling by someone who cares

Non-functional requirements should be defined when you are also creating and writing functional requirements. These are requirements that detail the constraints and quality standards that the system you are building should adhere to. You can find out what these non-functional requirements should be by your experience, interviews, and industry standards. Also, you can use functional use cases to try and discover what non-functional requirements should be.

Here are some areas that you should have in your non-functional requirements document:

  1. Reliability - Reliability is the chance that the system processes work correctly without being aborted. Some of the potential resulting losses that you should consider are:
    • Complete or partial loss of the ability to perform a mission-critical function
    • Loss or corruption of data Loss of user productivity
    • Time between failures
  2. Recoverability - Recoverability is the ability to restore function and data in the event of a disaster, either natural or man-made. Recoverability ensures that if any kind of system failure occurs, regardless of the reason, the system will operate with minimal interruption. You should think about:
    • Where backup copies of the system and data held within it will be stored
    • Discuss plans to have a Continuity of Operations Plan (COOP) and procedures for the system
    • How soon after a failure is detected must function be restored
    • How soon after corruption is detected must function be restored
  3. Data Backup/Restore – Data Backup/Restore is a measure of how frequently data is backed up and the speed of data restore from backup. You should think about:
    • If the hardware, data, and onsite backup are destroyed, how soon must the application be restored
    • Do you have another site that has a full backup of the data?
    • How many backups do you have?
    • If one server goes down, how many backup servers do you have?
  4. Availability – System availability is the time when the application must be available for use. Required system availability is used in determining when maintenance may be performed. Definitely think about time zones, schedules, and user location.
  5. System Maintenance – There should always be regular system maintenance.  You should think about how much time you need to do maintenance, and how and when you will notify users.
  6. Performance – Performance details the way the system will perform for users. Think about:
    • What is the response time for reports, queries, and updates?
    • What is the total number of user sessions open for the entire application?
    • What is the total number of concurrent sessions that can be opened by a single user?
    • What is the total amount of idle time before the user session is forced to terminate?
  7. Usability – Usability is the system support of the execution of user tasks (i.e., presentation of information and management of user interaction). Think about:
    • How easy it is for user to learn the system
    • How easy it is for user to memorize steps
    • How efficient is the system
  8. Visibility – Visibility discusses how the system looks to user.  Is it easy for them to see the font, screens, reports, etc.
  9. Data Retention - Data Retention details the length of time that various data will be retained in the system.
  10. Fault Tolerance – Fault Tolerance is a measure of how well the system can maintain normal operations when defects are encountered. Think about:
    • How every threat will be identified
    • How will you warn the user
    • Will you disable the feature
    • Will you remove the feature
  11. Maintainability – Maintainability is a measure of how easy it is to correct defects in the software.
  12. Interoperability – Interoperability is a measure of how easy it is to integrate the software with other systems.
  13. Error Handling – Error Handling will be in place to respond to reports of security flaws in the system. Reported vulnerabilities must be tracked throughout the process to ensure they are triaged, corrected, and tested. When a security flaw is discovered in an application deployed in a production environment, notification to users must take place as quickly as possible.
  14. Threat Modeling – Threat Modeling is the process of identifying potential threats to the application, risk ranking these threats, and selecting appropriate countermeasures or mitigations for the threats. Threat modeling is a critical step in securing an application from attack. The threat model will be reviewed for each application release and updated as required to reflect the changes in application design and functionality. As potential threats are discovered and the implementation details of the application become known, the threat model will be updated.
  15. Reusability – You should think about having a system that parts of it can be easily reused in other systems.  This will save the company them and money in future projects.

What are some of the non-functional requirements you think about when designing a system?

Reblog this post [with Zemanta]

Three Don’ts When Taking Part in a Peer Review

Dec 9th, 2009View Comments

Argument Three Donts When Taking Part in a Peer Review

I have participated in many peer reviews, be it for gap analysis, requirements, or proposals.  I have seen a few them go awry for numerous reasons.  Here are a few tips that I picked up while attending these peer reviews:

1. Leave the egos at home – There was one gap analysis that was four of us in one room for three months hashing out the best and worst of three complex financial management systems.  It was already a tedious and stressful job trying to figure out which features to place in the new system.  The process became ten times as hard because of two individuals who though his system was the best, and that he was the only expert.  Honestly, leave the egos at home.  When you are thinking about how great you are or the system you represent, you are not being open enough to take in other people’s suggestions, which can be detrimental to designing a new system.

2. Don’t continuously interrupt - Sometimes allowing people to ask questions during someone introducing a topic is the worst thing to do.  You usually get sidetracked with other conversations that you really don’t address the discussed topic.  I found it best to allow someone to say his/her part, and then ask any questions you have afterwards.  It gives them time to touch on everything that he/she wants to talk about, and you are able to have useful questions at the end.

3.  Don’t belittle others’ ideas or questions - I’ve been around some people who will smirk or say some sarcastic comment if a person says something that they deem “stupid.” Peer reviews are usually times to brainstorm ideas.  Therefore, this is one of the only times that I will agree that no question (or idea) is stupid.


Reblog this post [with Zemanta]

How to Write an Effective Functional Use Case

Nov 17th, 2009View Comments
3993827024 d89b6c55fa How to Write an Effective Functional Use Case

I’ve been spending my days creating and analyzing business use cases for a project that I’m on. It is tedious work but it’s necessary, so the design team can go in there and create a stable and useful system.

Use cases are an analysis of a particular business process. It explains the functional step to go through a process. You shouldn’t get involved in how the system will work and how to improve it. This is just to further understand what steps users are currently going through.

Here is the look of a usual use case

1.  Use Case Title – Create a useful title for your use case

2. Use Case Description - Think of a quick and thorough description for your use case.  The first sentence should be the objective.

3. Assumptions – Write the assumptions you have before writing the use case.  For instance, “this use case does not deal with classified data.  This will be handled in another system.”

4. Actors – Who are the users for this use case.  A description should accompany each user group to describe what they are trying to get out of the process.

5. Preconditions – What has to happen before the use case can occur

6. Basic Flow of Events - What are the main steps that users have to take in order to complete the use case.

7. Alternative Flow of Events – Alternative steps that users have to take for a process with a little difference.  For example, the main steps can be to go to the bank and get cash.  The alternative flow of events can be to go to the bank and get a cashier’s check

8. Subflows - These steps are part of the basic flow of events but in more detail, if needed

9. Key Scenarios - An example of the use case.  It’s also useful to create a use case diagram, which usually looks like a flowchart with a stick figure (representing the user).

10. Postconditions - What will happen after the use case is complete? For instance, the customer will successfully get his/her cash

Optional Sections:

You can have requirements for the use case listed here as well. These can be security, nonfunctional, data, etc.

I hope this will help you take the right steps to writing a use case.


Photo Detail: The Monument Steps, originally uploaded by plbmak.

Reblog this post [with Zemanta]

How to Gather Requirements and the Documentation to Help You Do It

Oct 2nd, 2009View Comments

Requirements gathering can be tedious and frustrating, but if done successfully, you can ensure that the solution or product that you are building is a success.  Here is a video I created about the things I am learning while assisting a company gather requirements for a proposed system that they are going to build that will replace a system compiled of legacy systems (made out of Access..eeeek) and spreadsheets.