Develop Software Iteratively
Iterative development means analyzing, designing, and implementing incremental subsets of the system over the project lifecycle. The project team plans, develops, and tests an identified subset of system functionality for each iteration. The team develops the next increment, integrates it with the first iteration, and so on. Each iteration results in either an internal or external release and moves you closer to the goal of delivering a product that meets its requirements.
Developing iteratively helps you:
1.Make your project more predictable.
2.Collect feedback early.
3.Identify and eliminate risks early in the project.
4.Test continuously throughout the project liftcycle.
Manage Requirements
A requirement is one criterion for a project's success. Your project requiremetns answer question like "What do customers want?" and "What new features must we absolutely ship in the next version?" Most software development teams work with requirements. On smaller, less formal projects, requirements might be kept in text files or e-mail message. Other projects can use more formal ways of recording and maintaining requirements.
Managing requirements means that you understand how changing requirements affect your project and you can effectively communicate requirements to all team members and to stakeholders. Effective requirements management helps your organization ensure that ist products meets their stated goals.
Use Component-Based Architectures
Software architecture is the fundamental framework on which you construct a software project. When you define an architecture, you design a system's structural elements and their behavior, and you decide hwo these elements fit into progressively larger subsystems.
A component is a nontrivial, independent, and replaceable part of a system that combines data and functions to fulfill a clear purpose. You can build components from scratch, reuse components you previously built, or even purchase components from other companies.
Designing a component-based architecture helps you reduce the size and complexity of your application and enhance maintainability and extensibility so your systems are more robust and resilient.
Model Software Visually
Visual modeling helps you manage software design complexity. At its simplest level, visual modeling means creating a graphical blueprint of your system's architecture. Visual models can also help you detect inconsistencies between requirements, designs, and implementation. They help you evaluate your system's architecture, ensuring sound design.
Visual models also improve communication across your entire team because they concisely convey a lot of infomation.
Continuously Verify Quality
Verifying product quality means that you perform activities such as testing to ensure quality of the code, documentation, and any product-related training.Testing includes verifying that the system delivers required functionality, reliability, and the ability to perform under load. It also means that there are effective user support materials.
An important benifit of iterative development is that you can begin testing early in the development process. Testing every iteration helps you discover problems early and expose inconsistencies between requirements, designs, and implementations.
Manage Change
It is important to manage change in a trackable, rpeatable, and predicatable way. Change management includes facilitating parallel development, tracking and handling enhancement and change requests, defining repeatable development processes, and reliably reproducing software builds.
As change propagates throughout a project, clealy defined and repeatable change process guidelines help facilitate clear communication about progress. Making team members aware of change helps you control helps you control risks associated with unmanaged change.