You are on page 1of 11

SIKKIM MANIPAL UNIVERSITY, DE

Registration No: Course: MCA


Student Name: Abhishek Yadav
Subject Name: ASE Subject Code: MCA5020

Q1. List any ten major principles of agile software.

Ans: The major principles of agile software are:

Satisfying the customers with early and continuous delivery of valuable software is
agile softwares major priority.
Welcoming varying requirements, even during the later phases of development .
Agile processes also support change for the customers competitive benefit.
Delivering working software often, with a shorter timescale is preferred.
Involving business people and developers in development of agile process and
making them work together everyday during the project.
Developing projects around motivated individuals and also providing those
individuals the environment and the support they require, and trusting them to get
the work done.
Considering face-to-face conversation as the most proficient and useful way of
conveying information to a development team.
Considering working software as the major measure of progress.
Supporting sustainable growth by ensuring that the sponsors, developers, and
customers maintain a steady pace indefinitely.
Providing constant attention to technical excellence and improving agility with good
design.
Simplifying, which is the art of maximizing the amount of work performed, is very
crucial.
Formulating best architectures, requirements, and designs from self- organizing
teams.
Planning done by the team at regular intervals on how to become more productive,
then tuning and modifying its behavior accordingly.

1
SIKKIM MANIPAL UNIVERSITY, DE

Q2. What do you mean by product life cycle? Explain the seven stages of product
life cycle.

Ans: A series of steps is required to manufacture a product.The product developed


should satisfy the customer. The series of steps involved in developing the product is
called the product life cycle. The seven stages in a product life cycle are:

Analysis stage
Design stage
Development stage
Testing stage
Implementation stage
Maintenance stage
End of life stage

Analysis stage In this stage, the development team analyzes the problem in an
existing application or finds new ideas for an application. After identifying the idea, the
development team needs to determine the scope of the problem. After identifying the
scope, the development team can easily identify the essential components necessary
for the product development. The important thing for software development is the
system requirement. The system requirement differs based on the software product.
The development team should carefully analyze the requirements needed for the
product development.

Design stage This is an important stage in the product life cycle. In this stage, the
development team designs the individual components and creates the blue prints. The
analysis done in the analysis stage helps to create the design documents. Designs such
as database design, functional specification design, and document design take place in
this stage. The design needs to be done carefully because the development stage
depends upon the design created during the design stage. If the design prepared is well
structured, it reduces the time taken in the upcoming stages of the product life cycle.

Development stage In this stage, the actual development of the product takes place
according to the blue print created in the design stage. The team members start writing
code for the product. The product is divided into different modules and each member is
allotted a separate module to develop the product. The code is written based on the
chosen technology. Generation of code takes place after the code is developed. The
code is executed after it is generated.

Testing stage It is essential to test each and every product before it is launched in the
market. The quality assurance cannot be given to a product if it is not tested.

2
SIKKIM MANIPAL UNIVERSITY, DE

We must test the developed product to ensure that it meets the specifications stated in
the design stage. In this stage, the developed product is tested and reports are
prepared. The report describes the errors in the developed products. There are different
methods for testing the developed product. Unit testing and system testing methods are
used for testing the product. After this stage, the life cycle again moves to the
development stage to correct the errors identified in this stage. After correcting the
errors, the product is again tested. This process continues till the product is found to be
error-free. There are some tools available to test the developed product. We can use
these tools to test a product and identify the defects. These tools are used to make the
testing easy and to get an error-free product.

The test scenarios are written by the testers to check the testing needs of software
application. The test scenario drives the test cases which are related to the
requirements and designs. Depending upon the type of requirement and design, the test
scenarios are addressed as functional and structural. The test scenario should be
feasible, clear, complete, and cover all requirements. The test scenario and the test
case should be prioritized as per the requirements.

After completing product testing, versions of completed product are supplied to the
clients for testing onsite. The first version is the alpha release and the corrected version
is the beta release. Usually the final version is the beta release.

Implementation stage This is known as First Customer Ship (FCS) in software


industry. After the development and testing stage the product moves to the
implementation stage. In this stage the product is taken to the end users.

Maintenance stage The software maintenance stage is the longest stage in the
software life cycle. This stage is distinguished in terms of costs. About 90% of the total
life cycle cost of the software is consumed in the maintenance stage. The software
maintenance activity is classified into four types. They are perfective, adaptive,
corrective and preventive. The maintenance of the software is not performed by the
person who creates the product. In this stage, the problems raised by the customers
after releasing the product are rectified. The testing team tests the product again and
rectifies the errors that are raised by the customers.

End-of-life stage/Retirement stage The final stage of the life cycle is the retirement
stage. This stage is reached after many years of service. In this stage, the product is
replaced with a newer version that has enhanced features. Thus, the old products life
cycle comes to an end. This is the end stage for the old product.

There are many instances in which the current version is replaced with new version.
The true retirement occurs when a product has outgrown its usefulness. The
functionality of the product is removed from the computer.

3
SIKKIM MANIPAL UNIVERSITY, DE

Q3. List the four developer practices of XP. Explain briefly about Adopt test-driven
development.

Ans: The four developer practices of XP are:

Adopt test-driven development


Practice pair programming
Adopt collective ownership
Integrate continually

Adopt test-driven development

The main reason for adopting test-driven development practice is to prove that the code
developed works based on the requirement. XP emphasizes the need for testing every
code as and when it is developed. You must test the code to check if the code actually
does what it is intended to do and if anything can make the code to behave erratically.
Usually traditional testing is carried out by writing test cases to check the conditions
under which the software fails. But XP also writes test cases to find out if the software
passes the test.

In XP, the development of a feature is said to be finished only when it passes the test.
Therefore, test your code or feature whenever you get an opportunity to run a test. This
gives the developer the confidence about the code. Also, you must run a test before and
after refactoring your code. You must remember that finding a bug in few lines of code is
easy, but finding the bug in a code with hundreds of lines is difficult.

Many automated testing tools or frameworks are available for testing. Using a good
testing framework helps to save lot of time and resources. It also gives an accurate
feedback about the status of the project any time. Manual testing may fail to identify or
overlook certain bugs, but it does not happen in automated testing.

A good test must try to explore one issue at a time. When a code fails the test, you must
have sufficient information to track the test to identify and debug the software.
Therefore, you must use simple tests as they enable easy debugging when compared
to complex tests.

Usually tests are of two types:

Unit test - This test is carried out to find out the behavior of the individual pieces
or functions of the software.
Acceptance test - This test is carried out to verify that the software features
match the business requirements and expectations of the customer.

4
SIKKIM MANIPAL UNIVERSITY, DE

Every unique piece of code requires its own test case. The test case probes the limits of
expected and unexpected use of the codes. It also serves as a guide for any future
changes. Usually a well written unit test also tells you how to use the code.

The acceptance test case is written based on the customers requirements. You must
work with the customer to write automated acceptance tests to prove to the customer
that all the requirements are met successfully. Only when the software passes the
acceptance test, the development is complete.

Test-driven development supports refactoring to improve the software efficiency. It helps


developers to ensure that the system is kept in good condition during every release. It
also serves as a benchmark for future development.

Any test-driven development method requires positive peer pressure to help developers
to overcome the initial setbacks of test-driven development method and continue testing
even if it seems difficult. At the same time, it is also essential to clearly communicate
with the customer and obtain the test cases from the customer for acceptance tests.

5
SIKKIM MANIPAL UNIVERSITY, DE

Q4. Briefly explain about tracker and coach in XP.

Ans: Tracker: A tracker is a person who keeps track of the schedule. A tracker can be a
manager or a trusted developer. XP keeps track of certain metrics that include team
velocity. This is the ratio of ideal time estimated for accomplishing a task to the actual
time spent implementing them. The tracker also includes other data such as change in
velocity, overtime worked, and the ratio of passing tests to failing tests.

It is the responsibility of the tracker to prepare good estimates of the tasks. Preparing
good estimates is a matter of practice and feedback. The tracker has to make estimates
to a great extent and notice how reality conforms to the estimates. Giving feedback is
essential because the team can work on the feedback and improve their performance.

The tracker should also be able to keep an eye on the final outcome. Halfway through
an iteration, the tracker should be able to tell the team whether they will accomplish the
task if they follow the current schedule or if they need to modify it. After a couple of
iterations into a commitment schedule, the tracker should also be able to tell the team
whether they are going to make the next release without making big changes.

The tracker acts as a team historian. The tracker keeps a record of the functional test
scores and the defects reported. It is the job of the tracker to keep track of who
accepted responsibility for each task, and what test cases were added on each defects.

The data presented by the tracker helps in calculating the progress and finding the rate
of progress. They help in ascertaining if the project is on schedule for iteration. They can
also show behavioral changes that may affect the schedule.

In order to measure velocity within the iteration, the tracker needs to ask each
developer about the tasks accomplished by them every day or two. This has to be done
in an informal and comfortable way as possible. The developers need to be honest
while giving out their work details and at the same time the tracker needs to be non-
judgemental. The XP team adjusts to the flow of work when there is regular tracking of
progress.

Coach :A coach is a person who is highly respected and has experience in guiding and
mentoring the team. Having a coach can be helpful when adopting XP.

It could be difficult to apply XP consistently. An XP team requires certain skills that may
take some time to develop. Also there are certain occasional obstacles and subtleties
that need the guidance of a master. Thus, a coach's main quality is experience.

6
SIKKIM MANIPAL UNIVERSITY, DE

The coach helps the XP team to understand the XP practices and software
development methodologies either by teaching the team, working along with the team or
by being an intermediary. It is the responsibility of the coach to make suggestions with
reference to how a practice is implemented, offer ideas to solve technical problems, or
act as a mediator between the team

and management. The responsibility of the coach is also to ensure that the team works
smoothly and harmoniously towards achieving their goal.

Coaching is mainly focused on the technical execution of the process. An ideal coach
should be a good communicator, technically skilled and confident. A coach can be a
person who has worked on other projects as a lead developer or system architect. The
role of a coach is not to make decisions, but instead it is to help everybody else make
good decisions.

The coach is not expected to take responsibility of all the development tasks, instead
they are expected to take up the following job responsibilities:

Act as a development partner, especially for new developers or for technical tasks
that are difficult.
Encourage small scale refactoring by looking into long term refactoring to address
parts of these goals.
Assist developers with tasks such as testing, formatting, and refactoring.
Give details of the process to the top level managers.
Ensure that the project stays Extreme by mentoring the team efficiently.
Formulate a vision of the goal and convey it to other developers, for them to work
towards it.
Select methodologies that are suitable and adapt it in the business.
Keep the team on track with respect to XP.
Act as a mediator between the XP developer and the management. Therefore, we
can conclude that the role of a coach is very essential for an XP team.

7
SIKKIM MANIPAL UNIVERSITY, DE

Q5. Explain XP prerequisites.

Ans: XP prerequisites :

The following are the prerequisites for adopting XP:

Team agreement
A collocated team
On-site customers
The right team size
Use all XP practices

Team agreement:

The teams agreement to use XP is as important as management support. If team


members do not want to use XP, its not likely to work. XP assumes that each team
members willingness to adopt it. It is not a good practice to force the process on
somebody who is resisting it.

A collocated team:

XP relies on high-frequency and high-speed communication for most of its practices. To


achieve that communication, the team members must sit together in the same room.
The figure 11.1 represents the seating arrangement of a collocated team.

The seating arrangement of a collocated team is based on a caves and commons


approach. The objective of this approach is to provide people access to commons
where they can interact together, and caves where they can work alone.

On-site customers:

8
SIKKIM MANIPAL UNIVERSITY, DE

On-site customers are essential to the success of an XP team. They, led by the product
manager, decide which features the team will develop. These decisions impact the
value of the software. Therefore, the customer is part of the development environment.
Having an on-site customer is the best way to get immediate feedback. When the
customers are on-site they can answer queries immediately. When both customer and
developers are guided by a reflective mode of thinking, they can improve their
understanding of the software or application being developed. For example, when after
some problem is corrected, the customer and the developers can reflect on their current
understanding of the software or application and compare it with the understanding that
preceded it.

XP encourages short release cycles. Consider the problems when the customer only
sees new releases of the software every few months. If there is considerable time in
between feature releases, the customers cannot give real-time feedback to the
programming team. Months of hard work may go waste if customers change their
minds, or if the programmers do not deliver what is expected by the customer.

The right team size :

According to the proponents of XP, certain factors make some projects well suited for
this methodology. The first major issue is the size of the team. In general, XP is most
effective in cases where small teams, of usually two to 12 programmers, are involved.
Small teams are more flexible, and better able to adapt to changes than 50 or 100-
person programming giant teams.

An XP team cannot just have one member. It needs an even number of programmers
due to the XP concept of pair programming. To use this approach, pair the team. Each
pair must share a single computer and each person in the pair must focus on a different
angle of the problem. While one developer types and actually applies and implements
the code, the second developer must check for syntax and spelling errors. The other
developer must understand how the current module that is being developed fits into the
whole work. The two developers in the pair alternate their roles as required and
brainstorm on the best approach a particular problem.

Teams with less than four programmers may not have the intellectual diversity needed.
They will also have difficulty using pair programming, which is a significant support
mechanism in XP. However, large teams face challenges of coordination. Although
experienced teams can handle those challenges efficiently, a new XP team may
experience difficulties in the beginning.

Use all XP practices:

9
SIKKIM MANIPAL UNIVERSITY, DE

XP utilizes all the resources of the project efficiently. It also ensures that every practice
directly contributes to the development of valuable software.

Q6. List and explain any five basic principles of DSDM.

Ans: The Principles of DSDM

DSDM consists of nine basic principles. These principles form the cornerstones of
development using DSDM and direct how development progresses. Ignoring any one of
them will break with the frameworks philosophy and significantly increases project risks.
The principles are as follows:

Active user involvement is imperative.


Teams must be authorized to make decisions.
Focus on frequent delivery.
Fitness for business objective is the key criterion for acceptance of deliverables.
Iterative and incremental development is mandatory.
Ability to reverse all the changes made during development.
Baseline high-level requirements.
Integrate testing throughout the life-cycle.
Collaborative and cooperative approach.

Active user involvement is imperative User involvement is the main key in running a
well-organized and successful project. Both users and developers share a common
workplace, so that the decisions are made collaboratively and quickly.

Teams must be authorized to make decisions Ensure that the members of the team are
authorized to take decisions that are important for the progress of the project, on behalf
of those they represent without waiting for sophisticated approval.

Focus on frequent delivery DSDM focuses on frequent delivery with the assumption that
to deliver something satisfactory, earlier is better than to deliver everything perfectly in
the end. The product is rested and reviewed if the product is delivered frequently from
an early stage of the project. The test record and review document is then taken into
account at the next iteration or phase.

Fitness for business objective is the key criterion for acceptance of deliverables The
main criterion for acceptance of deliverables in DSDM is on delivering a system that
deals with the current business needs. It is not so greatly focused at delivering a perfect
system addressing all possible business needs, but focuses its efforts on critical
functionality.

10
SIKKIM MANIPAL UNIVERSITY, DE

Iterative and incremental development is mandatory DSDM allows systems to expand


incrementally. The development is iterative and incremental, driven by users feedback
to run an effective business solution.

Ability to reverse all the changes made during development To control the evolution of
all products, everything must be in a known situation at all times. This is exclusive within
the agile approaches and necessitates a strong source control system.

Baseline high-level requirements Ensures control and allows flexibility. This provides the
DSDM team a better idea about the requirements and scope of the system at each
level.

Integrate testing throughout the life-cycle Integrated testing is crucial for the success
and quality of the project. As the development proceeds incrementally, users and
developers incrementally do the testing to check that the development is going in the
right business and is technically correct.

Collaborative and cooperative approach There must be a collaborative and cooperative


approach between all the stakeholders.

11

You might also like