Presentation
Members:
Jorge Javier Santos 118-4052
Jam Carlos Pimentel 116-3636
Scarlet Lebrón Ramos 219-5184
Milton Vicente 117-4653
Yamilka Peguero Ortiz 218-4616
Subject:
Software Engineering
Theme:
Agile Development
Professor:
Gregorio De La Rosa
Introduction
As we know, there are different software development methodologies, the
the same ones used according to the product requirements that are being
carrying out. These methodologies allow for following a set of steps that bring closer
increasingly aiming to deliver fully functional software on time.
The agile development methodology seeks to develop custom software on time.
the established deadline, for this the necessary activities are carried out; the
the most important characteristic of an agile process is that if the requirements
they change at any point of development where the project is, the team
you must be prepared and adapt the software to these new requirements.
What is agility.
Agility can be applied to any software process. However, for
Achieving this is essential that it be designed in a way that allows the project team
adapt the tasks and make them direct, execute the planning in such a way that
understand the fluidity of an agile approach to development, eliminate all products
of the work except for the most essential and keep them slim, and put the emphasis on
an incremental delivery strategy that makes the software work as fast
as possible for the customer, depending on the type of product and the environment of
operation.
The development of agile software requires a cultural shift in many companies.
because it focuses on the clean delivery of individual pieces or parts of the software and
not in the full application.
The basic principles on which agile development is based
there are three.
Individuals and processes: first of all, human capital takes precedence over processes.
and tools. Therefore, the entire development process revolves around the
satisfaction of the specific needs of users.
Client: of course, the client's collaboration at every single stage
that are part of the process is very important. Therefore, the relationship between the
The client and the development team must be based on mutual trust.
Adaptation: another of the basic principles is the ability to adapt. It is
precisely the market of the 21st century one of the most variable and, moreover, the
Changes are occurring at an increasingly rapid pace.
Agile Development Methodologies
For agile development methodologies to be considered as such, it is necessary
requirement that meets these four aspects. On one hand, individuals and the
the interactions they carry out among themselves are more important than the ones themselves
processes and the tools. On the other hand, it is essential that the software is
implemented and working. Furthermore, it is important to pay attention to the
continuous collaboration with the client. And, finally, the response is essential
suitable for change, adapting to the changing needs of both the client
like the market. That is to say, any type of task that is not to be eliminated.
necessary.
Different agile development methodologies can be differentiated, each of them
with its own characteristics and advantages. Depending on the project to be developed and
From the specific needs of the development team, one can opt for a
or another.
Scrum provides a framework for development, delivery and
maintenance of relatively complex programs. It is one of the
most in-demand agile software development methodologies today.
eXtreme Programming: an environment that allows software development
complex and of high quality.
Kanban: Kanban is an information system that controls the development of everything.
the necessary processes in each of the stages involved in the preparation of a
project of this type.
Test-Driven Development assumes a process of
agile development based on repetition during the software testing cycle.
Agility and the cost of change
It is relatively easy to make a change when the software team gathers the
requirements (at the beginning of a project). The use case may have to
modify oneself, the list of functions can be increased, or a specification can be edited
writing.
The costs of making this work are minimal, and the time required is not.
It will harm the outcome of the project. But what happens once some time has passed?
months? The team is halfway through the validation tests (something that happens
when the project is relatively advanced) and an important participant
requests that a large functional change be made. The change requires modifying the
software architecture design, the design and construction of three
new components, make changes to five other components, design new ones
tests, etc. Costs are increasing rapidly, and there is no shortage of time and the
money required to ensure that the change is made without collateral effects not
intended.
The defenders of agility claim that a well-designed agile process 'flattens'
the cost of the change curve, which allows the software team to do
changes in a late phase of a software project without any effect
notable in cost and time.
The reader already knows that the agile process includes incremental delivery. When this is
couples with other agile practices, such as continuous unit testing and the
pair programming (which is studied later in this chapter), the cost
making a change decreases. Although there is debate about the extent to which it
the cost curve flattens, there is evidence suggesting that it is possible to achieve a
significant cost reduction.
If the organizational change were implemented with an agile spirit, it would be a different
history. One of the goals in traditional companies is to seek savings of
money, which is why new methods are being sought, without seeing that reinforcing the processes
in the areas it can hinder people's daily work, this affects from
direct way in productivity.
Agility to reduce costs or switch to any other framework is not the
solution to have effective employees, increase the profitability of a company
and gain market share. These practices inherited from an industrial era are increasingly being
more obsolete day. Currently, companies are relying more on a
intellectual work, and less manual work. For this reason, it cannot be
apply the same techniques to increase the performance or productivity of the
employees.
What is an agile process?
Any agile software process is characterized by the way it approaches
certain key assumptions about most projects of
software
1. It is difficult to predict which software requirements will persist and which
They will change. It is also difficult to predict how the priorities will change.
client as the project progresses.
For many types of software, design and construction are intertwined. It is
to say, both activities must be carried out simultaneously, so that the
design models are tested as they are created. It is difficult to predict how much
Design is needed before construction is used to test the design.
3. The analysis, design, construction, and testing are not as predictable as
we would like (from a planning perspective).
Given these three assumptions, an important question arises: how to create a
process that can handle the unpredictable? The answer, as already mentioned, is in
the adaptability of the process (to the rapid change of the project and to the conditions
techniques). Therefore, an agile process must be adaptable.
But continuous adaptation achieves very little if there is no progress. So, a
The agile software process must adapt incrementally. To achieve the
incremental adaptation, an agile team requires feedback from the client
(so that it is possible to make the appropriate adaptations). An effective catalyst
for feedback with the client it is an operational prototype or a portion of
an operating system. Thus, an incremental development strategy must be instituted.
Executable software increments (running prototypes or portions) must be delivered
an operating system) in short periods of time, so that adaptation
go at the pace of change (unpredictable). This iterative approach allows for
The client should regularly assess the software increase and provide feedback.
necessary for the software team and influences the adaptations of the process that is
they are made to take advantage of the feedback.
Principles of agility
The Agile Alliance defines 12 principles of agility for those who want it.
reach
The highest priority is to satisfy the customer through prompt delivery and
valuable software continues.
Changing requirements are welcome, even at a late stage of
development. Agile processes dominate change for the benefit of the advantage
customer competitiveness.
3. Deliver working software frequently, from every two weeks to a couple of months.
months, preferably as soon as possible.
4. Business people and developers must work together, daily and
throughout the project.
5. Projects must be developed with motivated individuals. They should be given
the environment and support they need, and trust that they will do the job.
6. The most efficient and effective method to convey information to the members of
a development team, and among them, it is face-to-face conversation.
The primary measure of progress is working software.
8. Agile processes promote sustainable development. The sponsors,
developers and users must be able to maintain a steady pace in shape
undefined.
9. Continuous attention to technical excellence and good design improves agility.
10. Simplicity is essential: the art of maximizing the amount of work not
completed.
11. The best architectures, requirements, and designs come from teams with
own organization.
12. The team reflects at regular intervals on how to be more effective, in order to
after fine-tuning and adjusting their behavior accordingly.
Not every agile process model applies these 12 principles with the same intensity and
some choose to ignore (or at least overlook) the importance of one or more of them.
However, the principles define an agile spirit that is maintained in each one of
the process models presented in this chapter.
Human factors
Proponents of agile software development emphasize the importance of
personal factors. As Cockburn and Highsmith say: the process adapts to
the needs of the people and the team.
List some of the characteristics that members of the group should have.
software team that will develop the features applied to the creation of the
software.
Competence. The "ability" includes innate talent, specific skills of
software and general knowledge of the process that the team has chosen to use. The
skills and knowledge of the processes can and should be considered by
all members of an agile team.
Common approach. Agile team members perform different tasks and contribute.
different skills to the project, everyone must be focused on the same
objetivo: brindar productividad al cliente dentro del marco de tiempo prometido.
To achieve this, the team will also focus on continuous adaptation to
ensure that the process meets the team's needs.
Collaboration. Software development involves evaluation, analysis, and use.
from the information provided to the development team; create information that
help all participants understand the group's work; and generate
information that adds business value to customers. To carry out these tasks,
Team members must collaborate with each other and with all participants.
Ability to make decisions. Any good development team must be
free to direct your own destiny. This means that autonomy is granted to the team:
the power to make decisions about engineering and design issues.
Ability to solve fuzzy problems. Software managers must
be aware that agile teams often face uncertainty
and will constantly feel overwhelmed by change. In some cases, the team
you have to accept that the problem you are solving now may not be the
problem that they will have to solve tomorrow.
The XP process
Extreme programming uses an object-oriented approach (see appendix 2)
as the preferred development paradigm, and encompasses a set of rules and
practices that occur in the context of four structural activities:
planning, design, coding, and testing. Figure 3.2 illustrates the XP process and
highlight some of the key ideas and tasks associated with each activity
structural.
The following paragraphs summarize the key XP activities. Planning.
actividad de planeación (también llamada juego de planeación) comienza
listening - an activity to gather requirements that allows members
XP team technicians understand the business context for the software and
acquire the output sensitivity and main characteristics and functionality
what is required.
Listening leads to the creation of some 'stories' (also called stories of the
user) that describes the necessary output, characteristics, and functionality of the
software that will be developed. Each story (similar to the use cases described in
Chapter 5) is written by the client and placed on an index card.
The client assigns a value (that is, a priority) to the story based on the value
general characteristic or function for the business.
Design
The XP design rigorously follows the MS principle (keep it simple).
A simple design is always preferred over a more complex representation.
In addition, the design guides the implementation of a story as it is written:
nothing more and nothing less. The design of additional functionality is discouraged because
the developer assumes that it will be required later.
Since XP design virtually does not use notation and generates few, if any,
products of work that are not CRC cards and cutting-edge solutions, the design is
seen as a transitioning artifact that can and should be continuously modified
as construction progresses. The goal of the redesign is to control these
modifications, suggesting small changes in the design that 'are capable of
improve it radically
However, it should be noted that the effort required for redesign increases in
notable shape with the size of the application.
A central concept in XP is that design happens both before and after
let the coding begin.
Redesign means that the design is done continuously as we
construye el sistema. En realidad, la actividad de construcción en sí misma dará al
XP team a guide to improve design.
Coding. After the stories have been developed and that has been
after completing the preliminary design work, the team does not start coding, but instead
develop a series of unit tests for each of the stories that are going to be
include in the ongoing delivery (software increment).8 Once the test is created
unitary, the developer is better equipped to focus on what they need to
be implemented to pass the test. Nothing strange is added (MS). Once that
the code is finished, a unit test is immediately applied, which
instant feedback is obtained for developers.
Dynamic Systems Development Method (DSDM)
The dynamic systems development method (DSDM) is an approach to
agile software development that "provides a framework for building and providing
maintenance of systems that meet tight time constraints through
the realization of incremental prototypes in a controlled environment of
projects.
The MDSD philosophy is derived from a modified version of the Pareto rule:
80 percent of an application can be delivered in 20 percent of the time that
I would take it delivered complete (100 percent).
MDSD is an iterative software process in which each iteration follows the
80 percent rule. That is to say, only sufficient work is required for each
increase in order to facilitate the passage to the next one. The remaining details are
they finish later, when the business requirements are known and have been
order and made changes.
Principles of DSDM
There are eight principles of DSDM:
1- Focus on the business need: To successfully apply this
the principle of all project decisions, the DSDM team must
understand business professionals and commit to delivering to
minus the minimum usable subset. A valid business case must be
created before the project begins, and continuously supported.
2- Deliver on time: To ensure that the project is delivered on time,
The DSDM team is dividing the work into increments, prioritizing
the project requirements and protecting the deadlines. The objectives of
long-term project is delivered on time through timely delivery of
each increment, or Timebox.
3- Collaborate: DSDM teams improve performance through a
successful collaboration with the right stakeholders. To ensure a
effective work, each team member must be empowered to take
decisions within their areas of expertise.
4- Never compromise on quality: The desired quality of the products of
the project is agreed upon at the beginning of the project through the definition of the
acceptance criteria. Continuous testing, reviews, and documentation
are crucial to ensure an acceptable level of quality.
5- Build gradually from a solid foundation: Before dedicating
meaningful resources for project delivery, DSDM builds a
solid understanding of the project requirements and the proposed solution.
After each project increment, or Timebox, it is delivered, the
project priorities and feasibility are reassessed.
6- It develops iteratively: The development process is divided into
iterations, or time boxes. A crucial part of each iteration is the
demonstration of results and business feedback. This
approach allows the DSDM team to adapt to changes in the
business needs.
7 - Communicate continuously and clearly: the DSDM methodology encourages
informal communication. The communication needs of the project are
they are satisfied with the meetings and daily workshops. The prototypes of
solutions are shared with stakeholders as soon as possible for
benefit from feedback.
8- Demonstrate control: To ensure that the project remains under the
project director control, planning and monitoring of the
Progress is crucial.
Prerequisites for the use of DSDM:
Interactivity, users, and Development heads.
Motivation and participation among the (human) parties that make up the team.
Exchange of ideas or necessary functionalities.
Situations Not Applicable for DSDM
There is no acceptance from management and other employees.
It consists of a lack of motivation and participation.
Little skill on the part of the team members.
If there is no support between client and supplier.
Advantages of DSDM
. The quality of the product is enhanced through the participation of the
users throughout the project lifecycle and the iterative nature of
development.
. DSDM ensures rapid developments.
. Reduce project costs through the mentioned advantages.
previously
. Allows for easy changes.
. It allows the reuse of application through existing modules.
Disadvantages of DSDM
. A high participation of users in the development is needed to avoid
that developers assume criteria that are not true.
. It is not a common development methodology. The process is somewhat difficult to
understand
Conclusion
Within the development of a software project, there are several events that
can occur, one of these is that the functional requirements that are
they initially defined for the product to change, this brings with it costs
unexpected events in the project and loss of time.
Agile development methodologies aim to deliver custom software in the
time or established period regardless of whether the requirements change in
any stage of the project since it uses the principle of agility which is the
effective response to change.
Bibliography
A good part of the book 'Software Engineering: A Practical Approach 7th edition'
editing
- [Link]
- what is the
agility-really-a-software-topic/
- Development of
agile software
- [Link]
Software development
agile software, according to
need for the project.