Home
About Us
Site Map
Products
Services
PMP® Certification
PM Tips & Tricks
PM Tools & Techniques
Links
Contact Us
BLOG

 

 

Software Prototypes

Prototypes are used to test or prove a wide variety of products. The classic example is the car prototype which automakers use to test acceptance of various design innovations on the car buying public. While automakers use prototypes to test marketability, many prototypes are used to test design feasibility and learn things about building them that will help the manufacture process should they wish to produce the prototype. Software prototypes can be used to prove both marketability and feasibility, although the market the prototype is tested on is normally restricted to groups within the organization.

Don’t confuse a prototype with a pilot project. Prototypes are used to prove a concept, usually a technical or commercial one, while pilots are used to prove the delivery method. The concept cars auto makers show at car shows are a good example of prototypes, while the 10 Apollo missions which preceded the successful moon landing of Apollo 11 are good examples of pilot projects. Pilot projects can be used to prove a project approach and a technical concept but there is no direct connection between the two.

A software development project that includes a prototype as a deliverable will have plans for how that prototype is to be used and the building of the prototype will be a part of the design phase, or implementation phase of the project. User feedback will be used to refine the design of the final application or system before the actual build phase of the project.

Prototypes can be a great way to improve software development project results on two fronts: they can prove a software concept or improve on it, and they can teach the team valuable lessons about the best ways to develop the software system. Not all software development projects will be helped by producing a prototype however. The first step in determining whether to build a prototype or not is to determine how it would help the project.

Determining the Need

Software development projects which deliver new, custom, systems are prime candidates for prototypes. Let’s take the example of an automated order entry system which will replace an existing paper based system. The order entry clerks will use the system to enter orders into the system via a PC and the new systems order entry screens. Order takers downstream will be taking the orders from the system using PCs and their order processing screens. Your team has gathered all the requirements for the system, including the speed at which the clerks enter the order and the speed at which the order takers process the order in the system. This set of requirements will tell you the information that must be captured on the order entry and order processing screens and the information that is to be displayed to the order processors. These requirements are clear but what isn’t clear is the graphics that should display the information and how the information should be arranged on the screens. A prototype which will capture information from the order entry screen, display it on the order processing screen, and accept the keystrokes which will process the order can help the team determine the best layouts and graphics.

You are only interested in the effectiveness of the screens that your two groups of users will see in the example above. Screens don’t need to be functional to ascertain their effectiveness (beyond inputting data). This will allow the project to restrict development activity to a few screens and functionality to capturing and storing the data that is input and still obtain all the information they need to develop a system that will meet the project’s goals and objectives and be accepted by the user community.

Prototypes may also help development teams to determine the most efficient techniques and tools to use in development. Let’s stick with our order entry and processing example. This time, instead of creating an automated system to replace a paper based one, we’re leaving the screens in place and replacing the database and platform the system runs on. The current system supports a variety of orderable products which require different information to be captured and processed, depending on the product. A prototype will be useful for proving functionality can be reproduced efficiently on the new platform and learning the best development and testing techniques. This prototype should take a vertical slice of the functionality and reproduce it on the new platform, say taking the order for one product and processing that order.

The system won’t appear any different to your user community so engaging them for the prototype isn’t necessary. Your prototype must prove that the team can create the required functionality on the new platform and that the functionality is at least as responsive as the system being replaced. Your prototype should also provide you with information on the best techniques to use for development.

Prototypes can be useful for learning about new user interfaces, new systems, new software platforms, or new functions. Avoid using prototypes where you wish to learn the best approach to take to development or in projects that add to an existing system.

Designing the Prototype

Your prototype should be designed to meet a specific set of goals and objectives. Defining the screens or functions it should contain is not sufficient. Goals and objectives should include:

 

  • Measuring user acceptance (screen layouts, etc.)

  • Identification of required changes to interfaces or functionality

  • Identification of best practices for design, build, and test

  • Performance measurements to prove/disprove software approaches

Training for any new technologies or tools used. The training referred to is in-house training, not vendor training

The above list is not meant to be a complete menu of goals and objectives and you probably won’t need to meet every one of these in every project.

Choose the best set of screens to include in your prototype so that you get the maximum benefit from user testing. For example, where logging in is required across a wide selection of screens, include at least one with that function. The goal here is to produce a system with the fewest surprises for your user community. You may also want to choose screens that implement the most complex concepts.

Decide on whether you need to prove build methods or performance, or both, in your prototype. Proof that the new system can handle the transaction volume required and perform at the required speeds may be a priority, in which case the functions you choose need to demonstrate this. Choose the most commonly used functions in this case. Choose the simplest, least complex functions when you need to determine the best development approach and tool set. This is particularly important if you are dealing with a team with no practical experience working with a new platform. Choose the most complex and difficult functions for the prototype in the case where you are looking to learn the best practices for development and have an experienced team.

The prototype must be carefully chosen to fit the system architecture where that prototype will be used in the final product. This may mean that the prototype must deliver the core functionality upon which the rest will be built (e.g. transaction processing, messaging, etc.). Consult with the architect for the new system on the decision. They should be able to direct you to a core set of functionality that can stand alone, meet the goals and objectives set for the prototype, and be re-usable.

Building the Prototype

Start by choosing the right software development methodology for building the prototype. If your prototype will only consist of a few screens without functionality it won’t matter what methodology you choose because the build time and effort will be negligible. Choosing the right methodology becomes important when the build will require significant time and effort. Building the prototype will be a different activity from building the production system so doesn’t necessarily have to use the same methodology as that chosen for building the production system. There are 2 methodologies that lend themselves to developing prototypes because of their focus on rapid delivery and learning from the build: Srum and RAD (Rapid Application Development).

Scrum relies on an iterative approach to development, where the iterations are called "sprints”. Scrum also has no place for a project manager so you can hand the responsibility off to a senior developer or analyst who is called the Scrum master.

RAD is particularly suited to developing prototypes because the methodology is based on using a prototype. RAD is based on prototyping and modeling replacing an intensive requirements gathering phase. RAD works best where the development teams are relatively small. Since you won’t have the entire development team on board at this point, RAD is particularly well suited for the purpose.

Quality Assurance should be a part of the prototype build. Building a prototype which cannot be manipulated by the user community will add unnecessary time and effort to the project, frustrate the user community, and end up prejudicing the stakeholders against the project. Developer testing and system testing should utilize the tools and techniques established for the project. You may acquire a testing resource or two from your QA group or assign the QA function to a developer on the prototype team. Test cases should simulate the way the user community uses the system and exercise all the screens, fields, and functions in the prototype.

The prototype should be delivered to schedule. If building the prototype exceeds the schedule a root cause analysis should be performed to determine the reasons for the delay. Reasons may indicate a different approach to development, or that original estimates for the effort are inadequate. The reasons will trigger changes to the project plan in either case.

There are companies that specialize in building prototypes to order. Prototyping is a core competency for these companies so you may want to investigate outsourcing the build of the prototype to a company that specializes in building prototypes on the software platform you are using for your project. Your "build or buy” decision should be made using the best Procurement Management processes described in the PMBOK® Fourth Edition. Learn about these best practices by taking a PMP® Course or other PMP® Exam Prep training, then passing your PMP® Exam for your certification.

Prototype Delivery

The prototype should be subjected to User Acceptance Testing, or QA testing, or both. QA testing should precede User Acceptance Testing where both are indicated. User Acceptance Testing should provide a feedback vehicle and narrative type feedback, including suggestions for improvement, likes and dislikes. QA testing should be done using the test suites and test cases designed for the prototype during the build phase. These tests should include performance tests which will measure the prototypes ability to perform at the benchmarks established for it. This testing may require special tools or environments to be available for load, stress, and performance testing.

User feedback should be collated by screen and function (where a screen is shared by more than one functional group) to help with analysis. Systems analysts should exam the feedback and make changes to the screens as appropriate. The feedback should also be evaluated for its implications for screens not in the prototype. Common functions such as the login feature may need to be altered on other screens as the result of user feedback on the prototype. You may want to conduct a second iteration of testing to prove the changes. Don’t plan for more than 2 iterations of UAT.

Use the projects issue tracking/bug reporting system to capture test results from the QA team. A failure of a test exercising prototype functionality should be corrected and the test re-executed. A failure of a test for performance, stress, or load should be analyzed for its implications. The fix to correct the failure may be simple, in which case it should be made and the fix tested. On the other hand, the fix may be very complex, or even impossible. There are companies that offer UAT services for prototypes. You may wish to outsource UAT to a company specializing in that area if you have difficulty rounding up actual users or you are prototyping a commercial web site.

The implications should be examined in this case. Can the fix be implemented in the prototype and still allow the project to finish on budget? Is there another way of building the system which would avoid the problem? Does the problem have any implications for the functionality not delivered by the prototype? The answers to these questions will have a bearing on whether the project is to proceed to the next phase.

The issues, problems, and learning derived from building the prototype should be gathered and analyzed by your systems analysts for their impact on the development phase. The results of the analysis should be an input into the planning process for the implementation phase of the project. Look for indications that additional tools need to be purchased or existing ones replaced. Examine the results for their impact on effort estimates for the rest of the development and testing tasks in the project. Learning from the prototype may indicate that building the system is indeed feasible but the cost will now exceed the benefits so rewrite the business case based on any implications for project costs.

Your prototype has gone through QA testing and may have also gone through UAT. You need to ensure that work isn’t duplicated so will need to indicate the software has been tested before archiving it, if your prototype will now become part of the new system. You’re now ready for your "go/no go” decision on whether to proceed to the implementation phase of your software development project.

The tips and tricks described in this article implement some of the best practices promoted by the PMI (Project Management Institute). These are taught in most PMP® courses and other PMP® exam preparation training products. If you haven't been certified as a PMP® (Project Management Professional) by the PMI and would like to learn more about certification, visit the three O Project Solutions website at: http://threeo.ca/pmpcertifications29.php. three O Project Solutions also offers a downloadable software based training tool that has prepared project managers around the world to pass their certification exams. For more information about this product, AceIt, visit the three O website at: http://threeo.ca/aceit-features-c1288.php.