Agile Software Development
Agile software development is a conceptual
framework for undertaking software engineering
projects. Its practices are used to improve efficiency,
productivity, and quality. Agile software development
consists of open project-management practices as
well as highly-disciplined development practices.
One open project-management practice is customer
collaboration. Get your customers involved to find out
how to
make your business better! Collective ownership is
another important concept, in which all developers
work on all aspects of the project, and all team
members take ownership for the success of the
project. This builds a sense of community within the
team. Communication is another major factor of open
project-management. Good communication is key not
only amongst team members, but also between the
team
members and the customer. Other open
project-management practices include transparency,
such as big visible charts, and acceptance tests,
which test acceptance criteria for a task to be
considered complete.
Highly-disciplined development practices are also
critical in agile software development. One important
concept is a simple design. Be sure to design for
today's needs, not for the future; the future can
change. In addition, do the simplest thing that can
possibly work. Refactoring improves code readability,
performance, and simplicity. It's supported by tools
and
backed up by unit tests so it is safe. Another practice
is test-driven development. This involves writing tests
first, then writing codes. Continuous integration is
another integral part of development practices.
These key practices involved in Agile can be directly
applied to help solve the problems of the customer,
the engineering manager, and the QA manager. On
the
customer's side, complaints include having little or no
input into the development process and not knowing
what the development team is doing. These can be
solved with customer collaboration, acceptance tests,
and communication. The engineering manager is
often frustrated when the team encounters the same
problem encountered last month, or after a lengthy
requirements and design phase, the business
requirements change drastically, leaving months of
wasted effort in its trail. These problems can be
minimized by simple design, refactoring, small
releases, and test-driven development. The other
issues encountered in a project are often dealt with by
the QA manager. One complaint is that by the time
they get involved, the project is already late and over
budget. Another is that there's not enough staff to test
the basic functionality, much less to do creative or
negative testing. These grievances might be alleviated
by using small releases, collective ownership, and
test-driven development. Using these Agile practices
will undoubtedly improve efficiency, productivity, and
quality.
In summary, Agile has many benefits. It reduces risks,
lowers the total cost of ownership, increases
responsiveness, and improves relationships. Agile
methodologies emphasize people and their
interactions, rather than processes and contracts. It
emphasizes flexibility over planning. eRichards can
help you to utilize the full benefits of Agile software
development.
Let us help you!