Database Reference
In-Depth Information
development that involves a larger team in building large software. Large problems can be
broken down into smaller units, and then parts of the team are responsible for developing
particular components in an agile manner. System made of components can scale and be
extended easily by defi ning additional components or by extending the scope of existing
components. Agile Development Processes produce high-quality software through constant
unit and functional testing. Using pre-tested COTS components can further increase the
quality of the safety-critical software.
CONCLUSIONS
In the past several years, Extreme Programming (XP) and other Agile Methodologies
(AMs) have started to gain considerable interest in the IT community. A number of processes
claiming to be “agile” have been proposed. The leading agile methodologists have formed
the Agile Alliance and published the Agile Manifesto. AMs are focused on communication
among project stakeholders, frequent delivery of software releases and an effective coding
practice. The role of modeling, design up-front and documentation is signifi cantly mini-
mized. One of the main assumptions in software development is that the requirements and
conditions from the environment are in constant change. The focus of Agile Development
is on effective mechanisms to adopt changes through iterative and incremental cycles, small
releases, frequent testing, and the constant feedback from the customer. The quality of soft-
ware solution is maintained through refactoring, pair programming, using coding standards
and continuous integration of software releases. Although agile methodologies differ in their
characteristics, mechanisms, scope and focus, they share similar concepts, principles and
practices that challenge many of the common assumptions in software development and
initiatives such as Model-Driven Development. While both Agile Development and Model
Driven Development claim to address the challenges of high change rates, short time-to-
market, increased return-on-investment and high quality software, their proposed solutions
are actually very dissimilar.
This chapter presents the state-of-the-art agile methodologies through their important
characteristics, main features and identifi ed shortcomings. Agile methodologies are further
analyzed and compared through the set of criteria, from their applicability through the aspects
of development practice. Special attention is made for highlighting the nature and kind of
the support to modeling and architectural activities found in the selected set of methodolo-
gies. Finally, the chapter presents how component concepts used at the level of modeling,
architectural design and implementation can effectively support the main principles and
practices of agile development. Modeling and specifying components as the main building
blocks of simple architecture design at a particular level of details can provide a bridge
between traditional model-driven and agile development. Using components can help in
overcoming certain limitations of agile methodologies in relation with the type and nature
of the project, such as reusability, outsourcing, large teams and building large safety-critical
software systems. On the other hand, using agile values, principles and practices in current
model-driven, rather heavyweight methodologies, such as RUP (Jacobson et al., 1999) and
Catalysis (D'Souza & Wills, 1999) can help in more fl exible processes and solutions, as
well as shorter time-to-market and products that better fulfi ll business needs. Integrating
certain aspects and principles of agile and model-driven development around the component
concept can lead to a new, highly fl exible and agile, service-oriented software development
Search WWH ::




Custom Search