Today's software products are complex and constantly evolving throughout the entire product cycle. That makes it harder than ever to keep everyone on the same page.
Software engineering is the practice of using selected process techniques to improve the quality of a software development effort. This is based on the assumption, subject to endless debate and supported by patient experience, that a methodical approach to software development results in fewer defects and, therefore, ultimately provides shorter delivery times and better value.
Why are fast and easy templates for use cases, test plans, and other software engineering documents needed now more than ever? Because schedules are shorter and teamwork is more critical.
Agile methods reduce overhead, but increase risk by removing process steps that are key to managing larger projects.
The solution is not to abandon time-tested processes and documents. The solution is to make the creation and maintenance of software engineering documents dramatically faster and more effective.
Most agile methods attempt to minimize risk by developing software in short time boxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities.
Agile methods emphasize real-time communication, preferably face-to-face, over written documents. Most agile teams are located in a bullpen and include all the people necessary to finish software. At a minimum, this includes programmers and their "customers." (Customers are the people who define the product. They may be product managers, business analysts, or actual customers.) The bullpen may also include testers, interaction designers, technical writers, and managers.
Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods.
At AIS we use agile development (called "light-weight methodologies").