While software system analysis is a complex and hard activity, people have now used it for many years, so there should be some patterns and guides. There are a lot of books, some of them are very good, most of them almost useless for agile developers, since they are based on solid Requirements Definition Phase with the specs in the end.
In fact the process can be described with just several steps. All of them are important and in general could not be skipped.
1. Identify System Users
This is the most important question. If you miss with users, you will build the wrong solution. All further analysis will rely on defined user roles, so be very careful with this first step.
- Who will use the system?
2. Define Main Users Goals
Each user in the system has specific goals. One user’s role is just to solve a few problems with minimal system usage, while another user’s role might be using the system for about 2 hours per day and resolving many complex problems. Which user will use this system? What problems will it solve?
- What I (as a user ___) want to achieve with help of the system?
3. Define System Usage Patterns
Every user has some common behavioral patterns. For example, a Manager comes at work and starts checking yesterday results, a frequent flyer wants to optimize travel expenses for the next month, a sales person having a call with an existing unhappy customer, or a Resource Manager handling requests on additional developers for 3 projects simultaneously. All these are typical usage patterns. This is the best starting point for functional solution. You clearly see the real problems, you understand them well, you have all what you need to be creative and invent simple, effective and elegant solution.
- What are the typical user behaviors (daily, specific situations, etc.)?
4. Invent a Functional Solution to Meet User Goals and Usage Patterns
This is just a logical continuation of the previous step, but maybe the most complex step. Here you think how to solve the problem, discuss the solution, jump to steps 5-6, refine the solution, write it down and move to the next usage pattern.
- What is the best way to satisfy usage pattern?
5. Define Main Navigation Paths
This step and the next steps are normally performed together with step 4. Usually it is hard to invent a great solution without tracking user paths and sketching some UI areas. In fact it is better to stay off the UI as far as you can. During your discussions replace all phrases like ” User clicks Leads link in the top menu and sees leads list” with “User sees leads list”. Concentrate on the information that the user needs on each step, not on the links and clicks. A good navigation path looks like this:
- Quickly add new lead into the system
- See leads list
- Find leads added yesterday
- See additional details for each yesterday lead
There is no UI in the list above, just information.
- What functional areas/action should user execute to complete usage pattern?
- How many areas required to complete user goal in specific pattern?
6. Create UI Mockups
UI mockups are great to have a quick look at for possible users/system interaction. Dashboard sketches are perfect. Forget about cool tools like Visio, Dreamweaver or any other UI prototyping tool. Dashboard sketches are the fastest, easiest and the most exciting to work with. You will group around dashboard with markers in hands and discuss where to place system settings link with great enthusiasm. With marker in hand everyone feels that s/he can improve this UI and bring in cool ideas. Here is the place where team spirit rises! Draw UI sketch, make a photo on digital camera and put all the photos in a single shared space.
7. Polish UI Elements
There is always a possibility to make things better, to improve something here and there. It is a good attitude. You should think about UI details of the most important features that will be implemented right after the project start. But be careful, don’t spend much time on UI perfection, likely it will change during development anyway. Never polish UI for features that will be implemented in 3+ months ahead of current date, most probably it will be a waste of time.
- Can we improve UI to reduce clicks, provide better visibility, etc?
After all the steps above you will end up with a solid understanding of the future system, with the most important artifacts in hands and a clear starting point. And yes, you may start development and plan the first iteration!
TargetProcess Company is a provider of software for agile development processes. The company was founded in 2004 with a mission to provide software development teams who want to be flexible with modern project management solutions that would help them adopt agile software development practices and easily transform inefficient development processes into new ones.