July 26, 2008

Randy Pausch's Last Lecture: Achieving Your Childhood Dreams

"It's not about how to achieve your dreams, it's about how to lead your life.  If you lead your life the right way, the karma will take care of itself, the dreams will come to you."
Randy Pausch (1960 - 2008)

This is one of the most inspiring presentations I have ever seen; please don't miss it.  Thank you, Randy.
http://video.google.com/videoplay?docid=-8201478015841155798&q=randy+pausch&ei=vuuJSMe9FaCCqgOkv_2hCA

A computer-science professor from Carnegie Mellon University, Randy died Friday at age 47 of pancreatic cancer.

July 12, 2008

Perfection in software design

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away."
Antoine de Saint Exupéry

If your software design, requirements diagram/document, or project plan has become too complicated, consider what items can be removed.  What can you take out and still achieve the fundamental purpose of your product or project?  What are the essentials you need to meet to deliver your solution?  You may want to get customer/stakeholder feedback on your 1.0 version before you start adding those nice-to-have features.

Technorati Profile

May 31, 2008

Improving Agile Requirements Management

The Seilevel.com blog has a great article on "Four Ways To Improve Agile Requirements Management."  This posting cites effective ways to manage requirements with project agility in mind. 

Communication is quite possibly the most important aspect of both Agile projects and the Requirements Management process.  Rather than taking a waterfall approach, where almost all requirements gathering happens up front, agile requirements management involves frequent communication and recording of necessary information to keep project requirements on track.  Instead of relying on email, more collaborative tools are needed.

EdgeRM aids in agile requirements management by providing a central location for immediate access to all requirements.  Email is no longer needed to route documentation; users can simply go to EdgeRM to view the latest requirements.  With one place for all project requirements, you can be confident that you have all the facts, and need not worry that a crucial item is buried in someone’s inbox.  EdgeRM was designed for ease of use, providing a short learning curve to encourage users to adopt this tool over email.  The benefits of EdgeRM far outweigh the bloated inbox where requirements can fall through the cracks.

EdgeRM also simplifies the process of breaking up your requirements, rather than storing them in one large document.  Requirements can be easily divided into use cases, user stories, or features.  Tracking lists are completely customizable, so you can save requirements in any format you choose.  Integrated search simplifies the process of finding specific requirements. 

EdgeRM is also affordably priced versus other RM tools, making it an attractive and logical alternative to traditional means.

Article link:
http://requirements.seilevel.com/blog/2008/05/four-ways-to-improve-agile-requirements.html

February 05, 2008

Scrum and Agile Development at Yahoo!

Redmond Developer News has a fantastic article on Yahoo's success with Scrum. If you are at all curious about Scrum, this is an informative look at a successful company's real world experience. Gabrielle Benefield, Yahoo's senior director of methods and practices, and a certified Scrummaster, discusses the benefits of these project management practices and how they fit into the Yahoo! culture.

As a small startup, Yahoo! was used to getting things done with plenty of communication among team members. With rapid growth, the organization looked to adopt more structured practices, but the waterfall approach didn't cut it. Scrum was the answer, and the proof is in Yahoo's success in continually improving their product offerings.

I've emphasized Scrum quite a bit on this blog, specifically because Agile practices and organized Requirements Management are the foundation for many of today's successful software projects. Our goal as an organization is to provide you with the tools you need to ship the products your customers want on time.

"Lessons From a Yahoo Scrum Rollout"
http://reddevnews.com/news/article.aspx?editorialsid=9498

December 08, 2007

Self-Organizing Teams in Scrum

Another important principle of the Scrum agile software development methodology is the use of self-organizing teams.  Once the development team and project stakeholders agree on the functionality to be completed during an iteration, it is then up to the developers to determine the best way to meet their goals. The development team is empowered to determine how they will get it done and optimize their processes though continuous improvement.

As an iterative development process, a Scrum software project will be divided into multiple 30-day development iterations.  At the start of each iteration, business stakeholders, project managers and developers come to an agreement on what functionality will be delivered in the next four weeks.  By limiting the development to a four week period, the project team is better able to estimate and manage what can be accomplished. At the end of the iteration the result is a set of functionality suitable for presentation to stakeholders in order to obtain their feedback.

During an iteration, also known as a Sprint, it is up to the development team to determine how they will complete their work to deliver the functionality they have committed to.  Task assignments and collaboration methods are determined by the development team.  Business stakeholders and project managers must resist the traditional urge to assign tasks to specific developers.  This requires a certain level of trust.

The key benefit here is that the development team, having committed to meeting a specific body of work, will find incremental ways to increase their productivity through the process of continuous improvement.  Through collaboration and team decisions on development methods and task assignments, the developers can incrementally improve their development processes and eliminate inefficiencies they identify.  Tool selection, code libraries, unit testing, peer code reviews, and joint design sessions are just some of the options available. 

While this approach may sound radical to you, it is based on the proven success of manufacturing industries in applying empirical process control theory, in which processes are regularly modified to meet the changing conditions of complex problems.  For more information on empirical process control, check out Agile Project Management with Scrum by Ken Schwaber.

Certainly not everything goes according to the project plan, and tasks and requirements may change.  These changes should be kept to a minimum to not disrupt team productivity.  By listening in on the Daily Scrum, project stakeholders will be able to hear how things are progressing during the iteration. At the end of four weeks, the development team will sit down with the business stakeholders and present to them what they have completed.  Short iterations and regular feedback are crucial to keeping the project on track.  After 30 days, the process starts over again, and the team will find new ways to improve their processes and become more efficient in meeting their goals.

October 24, 2007

Scrum and the power of three simple questions

My next few blog postings will be on the topic of Scrum.  I have been using Scrum for almost two years now, and have found it to be indispensable.  In many ways the rules of Scrum are quite simple, yet the payoff is huge.  The overall purpose of these postings is to convey my experiences using Scrum and encourage readers to learn more.

Scrum is an agile and iterative software development methodology.  Rather than providing a rigorous methodology, it is instead based on a set of helpful practices.  One of the central practices is the Daily Scrum meeting, where developers meet each morning.  At first glance this sounds like a productivity killer, but this is not the case.  The Daily Scrum has a set of specific rules to make sure these meetings are effective.  Here are two of them:

  • Standing meeting lasting no more that 20 minutes - you are not allowed to sit and get comfy during the Scrum.  You stand in a circle, and the meeting is limited to 20 minutes.
  • Each developer will answer the 3 questions - no going off topic on tangents here; you only answer the three questions.  Non-developers are allowed to listen in.

What are the three questions?  Again, they are quite simple.

  1. What did you work on yesterday?
  2. What will you work on today?
  3. Are there any roadblocks impeding your progress?

If you decided to start daily meetings with your development team today, you would be able to see results quickly, based on the effectiveness of these three questions. 
How is this possible?  While they are simple questions, they do a great deal to make team collaboration and communication effective. 

One developer may have run into a coding problem that another developer has already faced.  Instead of the developer spending two hours alone finding a solution, they can both take the conversation offline and fix the issue quickly.  In some cases the solution comes to light during the meeting.

As a developer, understanding where you fit into the big picture on your project is also crucial.  If you do not know what other team members are working on, it makes it difficult to gauge team progress and how you are contributing.  It also raises the risk of duplication of effort, even if developers are working on separate tasks.  With the Daily Scrum, collaboration can be more effective, with improvements in knowledge sharing and teamwork. 

By knowing who is working on what and how far along you are each day, you can be more confident about reaching your goals.  You are able to accurately gauge progress as different tasks are picked up and completed.  If the project is falling behind, it will come to light sooner when adjustments can be made.

By answering the question of roadblocks, you give the developers a chance to bring up anything getting in the way of completing their assigned tasks.  Hopefully another developer may have a quick fix, but if not, it is up to the Scrum Master, who is responsible for running the Daily Scrum, to help them overcome this obstacle.  Once again you have another opportunity to save time and be more productive.

Three misleadingly simple questions, yet answering each one will provide a great deal of information.  By getting your development team meeting each day for only twenty minutes, you can realize substantial gains in productivity.  That’s the power of Scrum.

Recommended Reading

Schwaber, Ken Agile Project Management with Scrum, Microsoft Press, 2004
Larman, Craig Agile and Iterative Development: A Manager's Guide, Addison-Wesley, 2003

July 18, 2007

Getting Started With Use Cases

Many software project team members are unfamiliar with, or intimidated by, the task of documenting requirements.  I have to admit that I was one of them years ago.  The idea of writing pages of requirements - instead of writing code - was not a pleasant one.

What team members don’t realize is that requirements do not have to be difficult or voluminous. There are simple steps you can take to start documenting requirements, and the benefits are significant.  For those who are new to the subject and need to write requirements, I recommend starting with use cases.

What is a Use Case?

A use case can be defined as a user’s end-to-end interaction with a system to achieve a specific goal.  A good example of a use case is: "Customer buys a soda."  We say end-to-end because we will outline one specific and complete interaction with our system. It will have a beginning and an end, as well as a specific goal.

Use Case Briefs

How do you get started without having to write pages of documentation at the outset?  You start by writing use case briefs.  A use case brief is a one line statement of the use case.  "Customer buys a soda" is a simple and effective example of a use case brief.  You can choose to include both a title and description.  Below is the list of use case briefs that were created while developing EdgeRM’s Attachments functionality:

  • Add an Attachment to an Entry
  • Delete an Attachment
  • View the list of Attachments for an Entry
  • Download an Attachment from the Attachments list

Creating this list enabled me to think through and determine the different ways a user would interact with EdgeRM when working with file attachments.  Each brief represents a separate and complete interaction with the application being developed.  This first step - coming up with a list of use case briefs - will improve your understanding of the scope of your system. You may come back to your briefs later to add to or revise your list as your requirements evolve.

Once you have a list of briefs you are comfortable with, you will then be ready to add more detail by writing your use cases. 

First Use Case

The level of detail you choose to include in your use cases will be based upon the needs of your project.  The following format is a satisfactory starting point. You may customize it according to your needs, as you become more comfortable with writing use cases.

Title: Add an Attachment to an Entry

Description: Allow users with appropriate rights to add a file attachment to any specific requirement or other list entry.

Primary Actor: EdgeRM User

Who is interacting with our system? This is usually an end user.  We could also be more specific by specifying a job title or user type (ie: Business Analyst or Administrator)

Success Guarantee: Attachment is added to the attachments list for this entry

The success guarantee outlines conditions that must be met for the user to consider this use case to be completed successfully.

Preconditions: User must have Edit access to the List or the Project

Preconditions define the conditions that must be in place before this use case starts.  In this example, only users with Edit access will be permitted to add an attachment.  If users do not have Edit access they will not even see the Add Attachment button.

Triggers: User creates a document or file related to the requirement

What event causes the use case to take place?  For an order processing system, the trigger for a use case titled Ship a widget could be User has submitted a widget order through the web site.

Main Success Scenario:
1.    User browses to a Project List and views a specific Entry
2.    User clicks the Attachments tab
3.    User clicks Add Attachment button
4.    User selects a file, enters an optional description and uploads it.
5.    File is uploaded and saved
6.    User will now see an updated Attachments list

Here we list the specific steps that take place to complete the use case.  You could also call this the "happy path." These are the steps a user takes if everything goes according to plan with our scenario.

Extensions:
3a. User does not have Edit access and does not see the Add Attachment button

Here we list any deviations from the main success scenario.  Our goal here is to document how the system will handle user or system errors, such as a user filling in a submission form improperly, or alternative scenarios such as a user not having the required access rights.

Notes:

Add any miscellaneous notes that will aid in understanding, or business rules that apply, such as the formula for a financial calculation.

That completes our first use case. Remember that use cases may have as much or as little detail as you choose based on the needs of your team or project.

After writing your first set of requirements, you should review them as a whole and identify any inconsistencies or areas where more detail or clarification is needed.  At this point you are concerned with analyzing and revising your current set of use cases.  Be sure to do so before you start documenting the next set of functionality.

Dividing your application into functional areas, such as attachments, user account management, or content search will help you develop your use cases.  Breaking up the task of writing requirements will make it more manageable.  Throughout this process you want to make sure that you don’t fall into the trap of trying to write too much at one time.

An Iterative Process

Writing requirements should be an iterative process, allowing you to take time to step away from the areas you have been analyzing.  This will enable you to revisit your writing with a fresh perspective.  It is also an opportunity to perform preliminary design tasks, or solicit feedback from other team members.

If you come across areas of confusion - resulting in lengthy one-on-one or group discussion with other team members - you should clarify your use case.  Don’t rely on memory of prior conversations or prior email correspondence to guide the development of your application. You’ll want this new information documented for current and future team members in the event that you must revisit a piece of functionality months later and answer the often asked question: "Why did we build it this way?"

Benefits

The advantages of good requirements practices for software project teams cannot be ignored.  Requirements that are well documented and organized will put you on the path towards improved development efficiency and product quality.  The development team will gain a more in-depth understanding of what they are creating and the challenges that they may encounter during the process. By documenting the functionality, the entire team is able to work collaboratively and as a result more effectively.  Of equal importance is the improved communication with business stakeholders, project stakeholders and end-users.

Summary

  • Do not be intimidated by requirements or use cases - break up the task of documenting requirements into manageable areas of functionality
  • Start small and simple: write briefs and then a handful of use cases
  • Take time away from use cases to perform design tasks or solicit feedback
  • Good requirements promote clarity and minimize rework

With any software development project there exists the possibility that requirements will change, as a result of requests from business stakeholders, feedback from customers, development constraints, or other factors.  While use cases allow you to manage the requirements, Agile software project management practices such as Scrum enable you to react to change.

I will be posting my thoughts regarding Scrum and its value in the development process at a later date, so be sure to subscribe to the RSS feed for this blog.

Recommended Reading

May 24, 2007

Eric Sink on Requirements

Eric Sink recently posted a great article regarding his thoughts on software requirements.  I’ve always found Eric’s writing insightful, and this posting is no exception.

http://software.ericsink.com/articles/Requirements.html

One topic Eric discusses is the comparison of a document vs. database centric approach to requirements. The method I have found that covers both is to keep a list of your use cases as briefs, with just a title and a short description as needed. This is your database, and tracking/status info can also be included (ex: priority, difficulty, status, and category.) These briefs are each tied to the full use cases, which are more document centric.  This approach is supported out of the box with EdgeRM, where use cases and other requirements are listed in a tabular format allowing users to click through to the actual document. 

For more information on use cases and requirements management, I recommend the following texts:

Software Requirements, Second Edition by Karl E. Wiegers

Writing Effective Use Cases by Alistair Cockburn

For those individuals new to use cases, who need to write requirements, I suggest starting small and simple. Start out writing a list of briefs, and then write a use case or two. Just the briefs alone will help you flesh out the functionality required for your project. If you hate writing documentation do not let yourself feel overwhelmed; do this in small bites.  The trap people fall into is the feeling they have to write as much as they can at once.   One way to avoid this is to divide your work into areas of functionality (ex: file attachments, user management.)

The upside is that use cases are a great way to flesh out your product and communicate better with other stakeholders. If you are a developer, good requirements are your friend by promoting understanding and eliminating rework. The often asked question you want to be able to answer: "What are we building?" You may want to be involved in the requirements process if you are not currently.

I plan on releasing a white paper shortly, fleshing out more fully my thoughts on getting started with use cases.  I’ll be posting links here, so be sure to subscribe to our RSS feed for the latest news.

May 03, 2007

Now available: EdgeRM 1.0

I'm very happy to announce that EdgeRM™ 1.0 is now available!

EdgeRM 1.0 was officially released on April 30th.  I'm looking forward to empowering customers with the ability to keep track of their requirements in a simple and intuitive web application. 

I've always found writing and tracking requirements, and the collaboration involved, to be a challenging part of any serious application.  The need to get everyone on the same wavelength in terms of what you are building is critical.  This includes both business analysts and developers.  Communication is key, and a tool such as EdgeRM that facilitates such discussion is critical.

I'm also proud to announce that as part of EdgeRM we are shipping the EdgeRM Project Reader.  This application will make it very simple to view the complete list of requirements for your project by downloading one document from the EdgeRM project site.

The EdgeRM Project Reader was built with the latest Microsoft application development technologies, including .NET 3.0, Windows Presentation Foundation, and Expression Blend.  The result of combining these technologies is an interactive user interface that is attractive and at the same time enhances readability of these documents.  This application will be perfect for those times when you simply do not have Internet access, or if you have to share documentation with a colleague.  I will be blogging soon about the advantages of combining Blend and Visual Studio for designing and building user interfaces.  I have big plans for EdgeRM with the help of .NET 3.0.

I'm very excited about the future of Infogenium and EdgeRM, and I'm looking forward to helping you achieve increased success in your projects.

For details, please visit http://infogenium.com/EdgeRM

April 03, 2007

Announcing EdgeRM™

Today I’m pleased to announce the availability of EdgeRM™ 1.0 Release Candidate 1.  This is a pre-release version available via download for public evaluation.

EdgeRM allows software project teams and individual developers to create and organize the requirements for their software development projects, including features, use cases, and operational requirements.  It provides an intuitive web browser interface for easy access to all project-related information.  With EdgeRM, development teams and business stakeholders can collaborate efficiently throughout the development cycle.  EdgeRM makes it easy to see what is being built and where you stand in the development process.  Built-in support for RSS makes it easy to get the latest updates.

Whether you are a project team of 20 or a Micro-ISV proprietor, EdgeRM can help you achieve improved development productivity and product quality.

Product Features

  • Provides a simple and intuitive web interface for team collaboration on project requirements.  Distributed team members can access your system from anywhere in the world through a web browser.
  • Track multiple lists of requirements for each project, including features, use cases, and operational requirements
  • Accurately and completely document requirements by keeping track of such items as priority, difficulty, version, stakeholders and interests, main success scenarios, preconditions, triggers, or custom fields
  • Track the development status of requirements, enabling you to know how close you are to project completion
  • Easily customize requirements lists, allowing complete control over the attributes of each list
  • Track additional project information, including tasks and bugs, as well as sharing favorites, notes, and custom lists
  • Manage requirements lists through custom views, which provide complete control over sorting, filtering, and information displayed
  • Restrict access to projects and specific requirements lists to selected users
  • Provide public read access to share information with external stakeholders and customers
  • Easily locate information through a site-wide, project, or list specific keyword search
  • Add attachments to any requirement for enhanced collaboration and information management
  • RSS and OPML access to all requirements
  • Web services access for integration with your existing applications

EdgeRM is competitively priced and designed for software project teams and individual developers, so that a requirements management system is within your budget.  EdgeRM will be priced at US$189 per user with volume discounts available and a 30 day money back guarantee.  The RTM version is scheduled for release in late April.

System Requirements

Server

  • Windows 2000 Professional, Windows 2000 Server, Windows XP Professional (32-bit only) or Windows Server 2003 (32-bit only)
  • Microsoft IIS 5 or 6 with ASP.NET 2.0
  • Microsoft .NET Framework 2.0
  • SQL Server 2000, SQL Server 2005, or SQL Server 2005 Express Edition

Client

  • Web browser: Internet Explorer 5.0+ or Mozilla FireFox 1.0+

Download Now

http://infogenium.com

EdgeRM Version 1.0 Release Candidate 1 software has an expiration date of June 1st, 2007.

Screenshots

http://infogenium.typepad.com/photos/edgerm_screenshots/

Support & Feedback

Support questions and product feedback can be posted on our forums.
http://support.infogenium.com/forums/

Welcome!

  • The purpose of this blog is to let you know what goes on behind the scenes at Infogenium Software. I'm your host, Andre Oporto, Principal and Founder. I will be posting on various topics, including product design, software development, and industry news. We want to give our customers and partners insight into what we are doing to meet your needs.

    EdgeRM
    Free 45-day Trial Download

    The easiest Requirements Management tool for software project teams

AddThis Social Bookmark Button

Books