Assignment: 2 Date: 12.10.2021: Software Engineering
Assignment: 2 Date: 12.10.2021: Software Engineering
2
: SOFTWARE ENGINEERING
Date: 12.10.2021
Questions:
1. Make your own customer story (being a customer) for software
requirements in Extreme Programming and then break it into a number of
tasks.
2. Discuss the advantages and disadvantages of this approach to the
requirements description.
3. Explain by example, what improvements would be possible in a code as a
result of Refactoring.
4. Explain the idea of Test-First development and highlight possible
problems that may arise as a result of Test-First development.
Solution:
1. Make your own customer story (being a customer) for software
requirements in Extreme Programming and then break it into a
number of tasks.
Answer:
Customer
The role of the customer in the testing process is to help develop
acceptance tests for the stories that are to be implemented in the
next release of the system.
The customer who is part of the team writes tests as development
proceeds. All new code is therefore validated to ensure that it is
what the customer needs.
However, people adopting the customer role have limited time
available and so cannot work full-time with the development team.
They may feel that providing the requirements was enough of a
contribution and so may be reluctant to get involved in the testing
process.
As an agile methodology, Extreme programming was designed to
help solve the business challenges and problems that arise during a
software building process.
The final product will have to be approved by the customer, so
instead of waiting until then, Extreme programming incorporates the
customer into the entire process.
An on-site customer is critical in all the stages of a software
building process. He/she should be accessed easily not only to help
the software development team but also be a part of the whole
process.
Responsibilities of a Customer in XP
User stories
Write user stories and ensure the software’s intended functionality is
covered by those stories.
He/she will be responsible for the provision of the system
requirements and will liaise with the developers, who will help
him/her project the estimate in variables such as time.
Liaise with external stakeholders
In the entire process, a customer will be required to be the link
between the project funders and the development team.
He/she will be the link to the clients as well as the end users of the
software.
The primary concern for the customer is to create and maintain a
budding relationship and also instill confidence in all the parties
involved, more so the developers.
Prioritize
Be a key determinant in the release planning discussions.
The customer will need to prioritize the stories and then determine
which one is of more importance and that needs to be completed
first.
The customer’s role stretches even further as he/she will need to
negotiate on the timing of the release and also select a user.
Set the bar for acceptance testing
The customer will need to provide the requirements of the system as
per the business that will need to be complied with for the project to
be acceptable.
This helps the team of developers assess the product to see whether
it’s ready for delivery.
Provide sufficient information to help finish a programming task
The customer will need to be always in contact with the
development team to provide enough details and help decide which
components are to be postponed in case of an overbooked project
velocity for a given iteration.
All the above-stated roles of a customer, in an extreme programming
process, point out to the fact that they will always carry a huge
responsibility in ensuring that the project is a success.
They should be willing and be able to commit lots of time to the
project, from when it’s conceived to the very end.
2. Discuss the advantages and disadvantages of this approach to the
requirements description.
Answer:
Extreme programming (XP) is perhaps the best known and most widely
used of the agile method. The name was coined by Beck because the
approach was developed by pushing recognized good practice
In Extreme programming, requirements are expressed as scenarios which are
implemented directly as a series of tasks. This program involves a number of
practices through Incremental planning, Small releases, Simple design, Test-
first development, Refactoring, Pair programming, Collective ownership,
Sustainable pace, on-site customer.
The use of user stories is not unique to Extreme Programming - user stories
are widely-used in Agile especially Scrum. They are not necessarily written
down on cards - for example, many times, an online Agile Project
Management tool is used to store user stories online.
A user story is considered a “placeholder for conversation” - it is intended
only to be a short and succinct description of the user need and it is expected
that the developer(s) responsible for implementing the user story will further
elaborate the details based on direct communication with the user.
Advantages and Disadvantages of Extreme Programming user
requirements:
Advantages
1. We don’t discuss details of stories (approximately) unless we are
almost certainly going to build the corresponding parts of the system,
so we don’t over-invest in exploring and defining features.
2. The primary advantage of a user story is that it is short and concise and
it expresses the requirement from the perspective of what the user
business need is rather than attempting to tell a developer how to
satisfy that need.
3. Scenarios cope with most of common operation. It is easy to identify
what type of operation that is required in the user’s stories.
4. Customer focus in the scenario card increase the chance that the
software produced will actually meet the needs of the users.
Disadvantages
1. We can’t describe far in advance and in detail the work that we intend
to do. We can describe it far in advance, but not in detail; we can
describe it in detail, but not far in advance.
2. Using scenarios on a card can bring to a function overlooked or
omission which can be a time-consuming process to complete the
system.
3. Two different scenarios can lead to the same function as it will be
conflicted each other. Crossing out redundant scenarios can be a
cumber some tasks.
4. It relies on direct communications to further elaborate the details of the
requirement and some developers may not be very skilled in doing that.
3. Explain by example, what improvements would be possible in a code as a
result of Refactoring.
Answer:
Refactoring - a change made to the internal structure of software to make it
easier to understand and cheaper to modify without changing its observable
behavior.
1. Add a test.
2. Run all tests and see if any new test fails.
3. Write some code.
4. Run tests and Refactor code.
5. Repeat.
As can be seen from the table, slippage from Unit to Function test and from
Function to System test was reduced. Lower result in first case can be explained
by fact that one feature in Unit test was not fully following the new approach
(due to the specific test environment it was tested off-site) causing the higher
fault slippage than expected. Our future goal is further enhancing the TDD
practice in a away to include explicit estimation of the probability that the
software system performs according to its requirements. Some productivity
impact of such approach will also be examined.