Process Related Questions

Process Related Questions


What are the key processes to implement for software development?


Ultimately, one of the most important processes to implement for software development is one of process management. This is not circular reasoning. The most successful software development organizations have an organizational focus on development processes and their constant improvement. Other key processes, as defined in Chapter 10, include:

  • requirements management

  • configuration management

  • peer code reviews

  • training processes

  • production acceptance


How would you establish a Test/QA environment?


Before the complete answer, a quick reminder from Chapter 6. While we certainly recommend a QA environment, we never recommend a unique QA function or department. QA is every developers responsibility and having a separate QA function just tends to relieve developers of their daily responsibility for quality assurance.

We generally recommend at least three completely separate environments for an application:

  • the development environment

  • the QA environment

  • the production environment

  • and perhaps even a fourth separate test environment

By environment we mean at least a separate version of the operating system, application, database, and disk storage. Some application vendors , such as SAP, specifically require customers to implement separate environments for development, QA, and production. SAP does customers a big favor by not supporting anyone who does not. While it is tempting to save costs by mixing development environments with QA or production, it is definitely not a good idea. It is simply too easy for one function to have an impact on another when they are intermixed within the same environment. There are, however, ways to save costs without deploying three copies of every hardware component. Consider some of these approaches.
  • Not every environment needs to be sized the same. QA, for instance, may require much fewer hardware resources than production.

  • Remember that each environment is likely to have time-phased requirements. For instance, the full production environment is not needed on day one of development. However, avoid the mistake of assuming your development hardware will simply transition to production once an application is ready to deploy. For starters, some development hardware is typically required for ongoing application maintenance. Secondly, especially on projects lasting a year or more, development hardware may very well be outdated by the time the application is ready for deployment.

  • Consider using a hardware environment with dynamic system domains, such as Sun's Enterprise 10000 server. Dynamic system domains allow system resources to be dynamically reallocated among development, QA, and production environments on the fly, allowing you to size for the maximum concurrent usage of all environments. This will always be less costly than sizing for the sum of the maximum usage of all environments as peak loads on each environment will be time- staggered .


How would you handle stress testing in this world of networked computing?


Stress testing of web-centric applications is much more difficult than for traditional stand-alone or client-server applications. The only real way to completely stress test a web-centric application is to use an end-to-end application performance testing tool such as Pegasus from Ganymede Software. This tool and others are described in Chapter 15, Software Development Tools.


I just ran the program yesterday and it worked fine, why can't I get it to work today?


Processes that ensure a repeatable test environment and a stable production environment are crucial to the success of any software development project. If program results are different, then either the program changed, the program inputs changed, or the environment changed. A well run test or production environment will prevent a program from being updated without properly notifying any affected parties. Change logs will ensure any changes are easy to track and back-out if necessary. Program inputs, especially from user inputs are more subjective and subject to non- repeatability unless some sort of input event capture and scripting is done. The most difficult condition to keep non-variable in a complex test or production system is the environment. Environmental conditions outside of the user's control or notice, such as network load or CPU load may produce different results if the software has not taken the possibility of these environmental variables into account during program design.


My new software project is starting next month. I have budgeted for a headcount of 25 developers. Should I bring them all aboard the first month?


Absolutely not. The most important part of any software project is the system design phase. Before you have any developers writing code, you want to have your system design and software architecture firmly in place. This is the task of your software architects. Even the largest software development projects rarely call for more than three software architects and throwing more people at the problem early on will only hamper the effort by making communication more difficult. Of course this is not to say that in an iterative development environment you won't have one group of developers writing prototype code while the architects design the final system.

Software Development. Building Reliable Systems
Software Development: Building Reliable Systems
ISBN: 0130812463
EAN: 2147483647
Year: 1998
Pages: 193
Authors: Marc Hamilton © 2008-2017.
If you may any questions please contact us: