Software Requirement Specification Project Instructions

ProjectInstructions_v04

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 30

DownloadSoftware Requirement Specification Project Instructions
Open PDF In BrowserView PDF
ETSA02-ADM-INS

Project
Instructions
for
the LU Rumble
Version 0.4

Prepared by Markus Borg
Dept. of Computer Science, Lund University

January 2, 2018

1

Contents
1 Introduction
1.1 Learning goals . . . . . . . . . . .
1.2 Robocode – Build the best, destroy
1.3 Project overview . . . . . . . . . .
1.4 Project grading . . . . . . . . . . .

. . . . .
the rest!
. . . . .
. . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

4
4
5
6
9

2 The project from a bird’s eye view
2.1 Engineering the robot . . . . . . .
2.1.1 Specification . . . . . . . .
2.1.2 Construction . . . . . . . .
2.1.3 Verification . . . . . . . . .
2.2 Monetizing the robot . . . . . . . .
2.3 Strategizing to win the LU Rumble

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

10
10
10
12
14
15
17

3 Project phases
3.1 Project inception
3.2 Process model . .
3.2.1 Sprint 1 .
3.2.2 Sprint 2 .
3.2.3 Sprint 3 .
3.3 Post mortem . .
3.4 LU Rumble . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

19
19
20
20
22
23
24
24

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

4 Inter-group communication
26
4.1 The regulatory body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2 Maintaining supplier-customer relations . . . . . . . . . . . . . . . . . . . 26
4.3 Group conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5 Detailed instructions
5.1 Role assignment . . . . . . . .
5.2 Time reporting and reflections
5.3 Deliverables . . . . . . . . . . .
5.4 Course infrastructure . . . . . .

.
.
.
.

.
.
.
.

6 Week by week instructions

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

27
27
28
28
28
30

2

Revision History
Name
Markus Borg
Markus Borg

Date
2017-12-07
2017-12-27

Markus Borg
Markus Borg

2017-12-31
2018-01-02

Change description
Initial draft.
Complete draft of intro, engineering, monetizing, and strategizing. Sent for external review.
First draft of sprints.
First complete draft.

3

Version
0.1
0.2
0.3
0.4

1 Introduction
This document describes the project in ETSA02 Introduction to Software Engineering –
Methodology. Together with other students, you will work together to engineer a robot
for competition in LU Rumble – a local instance of team battles in Robocode.
In the remainder of this document, we use the term “group” to refer to the students
working together during the project. While the student constellations would better be
described as teams, i.e., groups of people working together toward a common goal, we
reserve the term “team” to robots competing together in Robocode.
This document is organized as follows: TODO.

1.1 Learning goals
The project primarily aims to increase your ability to develop high quality software
systems using established software engineering best practices. Moreover, basic software
business concepts will be introduced as each group will offer their product on a highly
competitive market.
The project complements the theoretical concepts introduced during the lectures by
taking a practical approach to the presentation of fundamental software engineering concepts such as specification, version control, testing, sprints, and releases. By the end
of the course, you will have acquire new skills with essential components of the contemporary software engineering tool chain: the Java programming language, the Eclipse
integrated development environment, the JUnit testing framework, the git configuration
management system, GitHub cloud-based project hosting, the Maven build system, and
the Checkstyle, PMD, and FindBugs automated quality assurance tools.
On top of your skills with traditional software engineering concepts and the tool chain,
you will address aspects of both bespoke and market-driven software engineering. Each
group will practice making critical business and engineering decisions in a controlled
fashion – using the course as an open market. The course introduces several important activities in software business, including analyzing the software ecosystem, finding
a niche market, marketing a product, competitive pricing strategies, and customer negotiations.
More formally, the project is primarily designed to meet the practical requirements of
the ETSA02 course description, i.e., the “Competencies and skills”. However, the project
will also reinforce the theoretical concepts listed under “Knowledge and understanding”
and it contributes to the “Judgment and approach” section.
• Competencies and skills

4

– Be able to develop a project plan, requirements specification and test plan
for a small project.
– Be able to review a project plan, requirements specification and test plan for
a small project.
– Be able to formulate text for project documentation.
• Knowledge and understanding
– Be able to define basic terms and definitions in software engineering.
– Be able to describe the most common software development processes.
– Be able to explain the most important steps in requirements engineering
– Be able to explain how testing is conducted.
– Be able to describe what a software architecture design is.
– Be able to describe the most omportant steps in project planning and project
tracking.
– Be able to describe how an organization plan and manage a series of projects.
• Judgment and approach
– Understand the complexity involved in developing software systems
– Have an understanding of the professional role of the engineer

1.2 Robocode – Build the best, destroy the rest!
The goal of Robocode is to implement the behavior of a robot to compete against other
robots in a battle arena. The contestants have no direct influence on the game, instead
they write the AI of the robot telling it how to behave and react on events occurring in the
battle arena. Battles are running in real-time and on-screen, see Figure 1.1. Robocode
battles, referred to as “rumbles”, are either in the form of duels between individual
robots, free-for-all battles with multiple robots, or battles between robot teams.
From http://robocode.sourceforge.net/docs/ReadMe.html : Robocode offers a complete
development environment, and comes with its own installer, built-in robot editor and
Java compiler. Robocode only pre-requires that a JVM (Java Virtual Machine) to exist
already on the system where Robocode is going to be installed. Hence, everything a
robot developer needs to get started is provided with the main Robocode distribution
file (robocode-xxx-setup.jar). Robocode also supports developing robots using external
IDEs like Eclipse.
Robocode is an Open Source project, which means that all sources are open to everybody. In addition, Robocode is provided under the terms of EPL (Eclipse Public
License). The Robocode game was originally started by Mathew A. Nelson as a personal endeavor in late 2000 and became a professional one when he brought it to IBM
in July 2001. In the beginning of 2005, Mathew convinced IBM to release Robocode as

5

Figure 1.1: Screenshot from the Robocode battle arena. (Image credit: robowiki.net
user MultiplyByZer0)
Open Source on SourceForge. Eventually, Flemming N. Larsen took over the Robocode
project at SourceForge as administrator and developer in July 2006 to continue the
original Robocode game – which now is hosted on GitHub.

1.3 Project overview
Each project team will develop a robot using established software engineering practices.
Furthermore, each team will compose a robot team to compete in a “LU Rumble” at
the final lecture in the course. However, no team is allowed to field their own robot
– instead robots developed by other teams must be purchased on an open market (in
truth a somewhat regulated market). Consequently, each team has two primary goals:
1) maximizing profit by selling a successfully engineered robot on the market and 2)
winning the LU Rumble by composing a competitive Robocode team. Teams pursue the
two goals by completing three main activities that we refer to as strategizing, engineering,
and monetizing, respectively.
Figure 3.1 shows the four main phases of the project. First, during the course inception, the course infrastructure and the project tasks are introduce. More importantly,
teams consisting of six students (preferably!) are established. Second, the backbone
of the course follows: three development sprints mixing engineering, monetizing, and
strategizing. Third, purchasers of robots perform acceptance testing to ensure that the

6

Figure 1.2: The four phases of the project.
delivered robot fulfills the expectations – otherwise purchasers file business claims to
require money back. Fourth, in the last phase of the project, the LU Rumble takes place
followed by an awards ceremony to recognize the both winners – and the most profitable
teams.
Figure 1.3 shows the context of each individual group during the project. Organizationally, your group has three divisions: 1) engineering, 2) purchasing, and 3) sales.
Your group will assign the following roles: 1) project manager, 2) requirements engineer,
3) development lead, 4) test lead, 5) domain expert, and 6) sales engineer. Each role is
described in detail in Section 5.1.
Groups do not exist in isolation, instead they act in a software ecosystem [REF].
During engineering of the robot, each group will be part of two supplier-customer relationships. First, your sales engineer will be responsible for marketing the robot under
development. The domain expert of another team will sign a contract of sale, establishing a formal relationship. Your sales engineer will be the primary communication point
for the purchasing group’s domain expert, i.e., a supplier-customer relationship involving
feedback, feature requests, and negotiations. Second, analogously, your domain expert
will act as the customer in a supplier-customer relationship with another group. Note
that, in some cases, groups might buy from and sell to the same other group – this is
not regulated in the ecosystem.
On top of the two supplier-customer relationships, your group will also communicate
with the regulatory body (represented by your project supervisor). Your group will
hand in various signed contracts to the regulatory body, turn to it if to get support
during supplier-customer negotiations, and to report the results from your acceptance
testing. The regulatory body might also contact you with regulatory changes during
the course of the project. Finally, you will practice one-way communication with the
Robot Market, i.e., the open market where you will sell your Robot. All groups will
complement their teams with additional robots during the last week of the project – and
your sales engineer will be responsible for maximizing sales of your robot.

7

Figure 1.3: The project context. Your group will interact with your supplier’s sales
engineer, your customer’s domain expert, the open Robot Market, and the
regulatory body.

8

1.4 Project grading
The project will be graded as 3, 4, 5 or UG. TODO: Group grading and individual
grades.
The project supervisors’ overall grading guidelines include the following:
• The final release meets the final requirements specification. This is partly indicated
by the customer’s successful acceptance testing.
• The delivered robot is successful and non-trivial.
• All the robots behaviors are covered by the requirements specification.
• The test specification describes a comprehensive verification of the robot. Automated test cases and test reports are provided.
• The team adhered to the process model and met all deadlines.
• All deliverables are of high quality. Appropriate technical language and a consistent
look-and-feel across documents.

9

2 The project from a bird’s eye view
The project consists of three main activities, interconnected as presented in Figure 2.1.
This section presents an overview of the three activities.

2.1 Engineering the robot
Each team will develop a robot (see Figure 2.2) according to established engineering
principles. These principles include product prototyping, integrated requirements engineering, and automated testing. The process model is organized in three development
sprints, further described in Section 3.2. The engineering process is dominated by three
core activities: specification, construction, and verification. In line with agile development methodologies, all sprints consist of a mix of these three activities. Still, the
groups’ focus during the project will progress from specification, through construction,
to verification – also reflected by the order of the lectures.

2.1.1 Specification
Requirements engineering, i.e., a systematic approach to developing a product with
an end-user perspective, will be an integrated activity throughout the project. The
requirements will be captured in a Software Requirements Specification (SRS) adhering
to a template structure provided by the Institute of Electrical and Electronics Engineers
(IEEE). IEEE is the world’s largest technical professional organization, and a natural
resource for software engineers – possibly contented by the Association of Computing
Machinery (ACM). Both organizations support engineers in development of software
products adhering to state-of-practice approaches and provide ethical guidelines.
The IEEE SRS template provides a standard document structure: 1) an introduction
section, 2) an overall description of the product under development, and 3) a list of product features further broken down into detailed requirements. Furthermore, the template
supports engineers to specify quality requirements such as performance, maintainability,
and memory footprint. Groups are recommended to use a combination of traditional
requirements of “shall” format and step-wise use case descriptions. While also user
stories are covered in the lectures, it uses a narrative style that is less appropriate for
development of autonomous robots.
The SRS connects all roles in the student group. While the requirements engineer
is responsible for the SRS, the sales engineer is responsible for developing a marketing
strategy based on its content. The SRS will be public on the Robot Market, i.e., when
other teams consider purchasing your robot, they will critically review your SRS. The
domain expert, having the most chance to predict what features will be valued on the

10

Figure 2.1: Project components.

Figure 2.2: Model of the Robocode robot ( c Klaus Knopper under CC BY-SA 3.0).

11

Robot Market, will provide important input to the SRS – effectively acting as a proxycustomer until the supplier-customer relationship has been established. Finally, the
development lead is responsible for implementing the SRS in source code and the test
lead is responsible for verifying that the developed product fulfills the SRS.
There are several quality attributes that a high-quality SRS should comply with. First,
the SRS should be complete, i.e., if properly implemented, the developed product shall be
a competitive robot. Just as importantly, the robot shall not offer any features that are
not properly captured in the SRS – the customer is not allowed any surprises. Second,
the SRS should constitute a coherent document that is easy to follow. Furthermore,
each individual requirement should be:
Complete All information needed to implement source code to fulfill the requirement
shall be specified. Developers must not be forced to read between the lines.
Consistent There are no contradictions between individual requirements.
Feasible The requirement can be practically implemented by the developers given the
available resources. Also, the requirement will bring value to the end user or
another stakeholder.
Modifiable An SRS is rarely static, thus all requirements must be able to change. Each
requirement should be clearly identifiable.
Unambiguous A requirement shall only be interpretable in one way, i.e., no subjectivity
can exist. Quality requirements should be quantified, not described using vague
adjectives.
Design free Requirements shall specify what the system must or must not do, but not
how the software will ensure the requirement is met – leave that to the construction
phase.
Testable Requirements shall be possible to verifiable, preferably by testing, otherwise
inspection.
As a result from the specification activities, each group shall produce the following
deliverables, further described in Section 3.2:
Sprint 1 SRS v0.5 – Main features captured
Sprint 2 SRS v0.9 – Detailed requirements specified
Sprint 3 SRS v1.0 – A complete Robot specification

2.1.2 Construction
The first two computer labs will help groups set up Robocode development in Eclipse and
source code control in git. Moreover, the second computer lab will initiate automated
unit testing, an activity that overlaps construction and verification.

12

An early construction activity is software design. In this project, the design is limited to object-oriented design – the robot development is too restricted to address any
considerations on the software architecture level and there is also no user interaction
design. Each group will present the Object-Oriented Design (OOD) using a Unified
Modeling Language (UML) class diagram. As the project in inspired by agile development methodologies, there will be no big design activity upfront. Instead, the OOD
will evolve as the construction phase proceeds. The development lead is responsible to
complement the final source code delivery with a class diagram to describe the OOD
after-the-fact. Any group that recognizes a value in using class diagrams in their robot
marketing are of course welcome to do so. Furthermore, the final source code deliverable
shall be complemented by Javadoc documentation.
As most practical construction work will be done outside of scheduled sessions, how
the backbone of the programming will be conducted must be decided by the individual
groups. Still, for this project, we recommend groups to follow a handful of well-known
agile development practices, originally proposed as part of Extreme Programming (XP)
[REF]. Below we list five that we believe are particularly suitable for the process model,
along with their Wikipedia definitions:
Pair programming All code is produced by two people programming on one workstation. One programmer has control over the workstation and is thinking mostly
about the coding in detail. The other programmer is more focused on the big
picture, and is continually reviewing the code that is being produced by the first
programmer. Programmers trade roles after minute to hour periods. The pairs are
not fixed; programmers switch partners frequently, so that everyone knows what
everyone is doing, and everybody remains familiar with the whole system, even
the parts outside their skill set. This way, pair programming also can enhance
team-wide communication and goes hand-in-hand with the concept of Collective
Code Ownership.
Continuous integration The development team should always be working on the latest
version of the software. Since different team members may have versions saved
locally with various changes and improvements, they should try to upload their
current version to the code repository every few hours, or when a significant break
presents itself. Continuous integration will avoid delays later on in the project
cycle, caused by integration problems, aka. “big bang integration”.
Code refactoring Restructuring existing code without changing its external behavior.
Refactoring improves quality attributes of the software, e.g., code readability, performance, maintainability. Refactoring is often initiated when a so called “code
smell” is identified, i.e., structures in the code that indicate violation of fundamental design principles and negatively impact design quality.
Test-driven development Create unit tests before the eventual code is written. This
approach is intended to stimulate the programmer to think about conditions in

13

which his or her code could fail. Test driven development proceeds by quickly cycling through the following steps: 1) write unit tests, 2) run tests, watch them fail,
3) write code, 4) run tests, watch them pass, and 5) refactor the code. Adhering to
test-driven development leads to a large set of test cases that can be automatically
executed, increasing developers’ confidence when e.g. refactoring code.
Collective code ownership Everyone is responsible for all the code; therefore, everybody is allowed to change any part of the code. Collective code ownership is not
only an organizational policy but also an attitude. Pair programming, especially
overlapping pair rotation, contributes to this practice: by working in different
pairs, programmers better understand the system context and contribute to more
areas of the code base. Collective code ownership may accelerate development because a developer who spots an error can fix it immediately, which can reduce bugs
overall. However, programmers may also introduce bugs when changing code that
they do not understand well. Sufficiently well-defined unit tests should mitigate
this problem: if unforeseen dependencies create errors, then when unit tests are
run, they will show failures.
The construction phase involves prototyping to quickly create a working robot. Prototyping supports specification activities by enabling early executable software – truly
beneficial in contexts where the requirements are very unstable. Already at the end of
sprint 1, around the LU Robot Fair, the group shall deliver a first prototype of the robot.
The prototype will help the purchaser to understand your product vision, and enable
better feedback. The second deliverable shall be a Minimum Viable Product (MVP)
inspired by lean software development practices [REF], i.e., a product with just enough
features to satisfy early customers and to stimulate feedback for future robot evolution
throughout Sprint 3.
As a result from the construction activities, each group shall produce the following
deliverables. Each release shall be prepared as two jar-files: 1) one jar-file for customers
and 2) one jar-file with embedded source code for the regulatory body. As previously
stated, the final release to the regulatory body shall be complemented by a class diagram
and Javadoc documentation, as further described in Section 3.2:
Sprint 1 Robot Alpha release (Robot v0.5) – A prototype
Sprint 2 Robot Beta release (Robot v0.9) – An MVP
Sprint 3 Robot Final release (Robot v1.0) – The final robot

2.1.3 Verification
The first two computer exercises will introduce working with the JUnit framework for
automated testing. Groups will work with unit testing as a natural companion to the
programming during development. While JUnit is designed for automated execution
of unit test cases, groups will also use JUnit for system testing of both functional and
non-functional (quality) aspects of the robot under development. Finally, groups will

14

learn to use measure code coverage and use static code analysis tools to support software
quality assurance.
The test lead is responsible for delivering three growing development artifacts during
the projects, as well as a final test report at the final release. First, a suite of automated
unit test cases shall evolve during during the project. At sprint 1, an initial version
shall simply be executable, but at the final release all source code shall be exercised
by unit tests. Second, a suite of automated system test cases shall be developed –
an initial version at sprint 2, and the complete suite with the final release. Third, a
test specification that describes the group’s test and quality activities. At sprint 3, all
requirements in the SRS shall be verified either by automated test cases or targeted by
a convincing argumentation that the requirement has been verified through inspection.
Verification activities are naturally supported by tools. Apart from the JUnit framework, the groups will use Eclipse plugins to measure code coverage and a set of static
analysis tools to automatically analyze the source code from different quality perspectives. TODO: describe the tools to use.
The final robot release shall be accompanied with a test report, signed by the test
lead, showing that all test cases have been executed – and all corresponding test verdicts.
The customer will surely expect that all test cases passed, i.e., that you provide evidence
that the entire SRS has been fulfilled by the final robot. In addition to the test verdicts,
the test report shall contain appendices with extracted report from the code coverage
tool as well as the static code analysis tools.
As a result from the verification activities, each group shall produce the following
deliverables, further described in Section 3.2:
Sprint 1 Test specification v0.5 – Initial unit test suite
Sprint 2 Test specification v0.9 – Initial system test suite
Sprint 3 Test specification v1.0 and a signed test report

2.2 Monetizing the robot
One of the primary goals of the project is to maximize the profit of the group, i.e.,
monetizing the robot. The business aspects of the project involves a combination of
bespoke software engineering and software engineering for an open market. All groups
will offer their robot on a highly competitive market – consisting of the other groups,
each with a e100 budget to invest in a robot team for the LU Rumble.
The groups will market their Robot already at a robot fair already after Sprint 1. At
this early point in time, only an Alpha release of the robot will be available and an initial
version of the SRS – still, the sales engineer is responsible for developing a convincing
marketing concept. All groups will get the chance to pitch their robot at the robot fair,
and also present it online on the Robot Market, complemented by the most recent SRS.
After the robot fair, all groups will submit a “purchase array” to the regulatory body.
The purchase array consists of one element per group, and each element should contain

15

Figure 2.3: Example of seven purchase arrays submitted to the regulatory body.
an integer representing how much your group is willing to pay for the corresponding
robot. You are not allowed to make an offer for your own robot, and you are not allowed
to offer less than e10 for any other robot. The purchase array should be signed by
the domain expert and delivered as a physical copy to the regulatory body through the
mailbox in “grå skåpet”.
Figure 2.3 shows an example of purchase arrays submitted to the regulatory body. The
purchase arrays are never disclosed, the regulatory body matches groups into suppliercustomer relationships. In the example, cells with bold text show winning bids. Group
D, highlighted with a white row, was particularly interested in Robots E, F, and C –
but unfortunately, other teams offer more. Group D instead got to buy Robot B for
e15. Note that the highest bid for a robot can be a tie, such as for Robot A and G. In
the case of Robot A, no group offered more than the minimum e10, which resulted in a
(possibly unexpected) bargain buy.
When all groups have provided their purchase arrays, the regulatory body will commence its work to establish supplier-customer relationships. For each robot, the highest
bidder turns into a customer of the group engineering the corresponding robot. If there
is a tie, the customer relationship will be assigned randomly. In the end, all groups will
1) pre-order a robot from a supplier, and 2) have a customer that offered at least e10
to pre-order a robot (the price of the cheapest basic bot, see TODO). Note that the
decision of the regulatory body cannot be appealed.
Once robots have been pre-ordered, 25% of their costs will be transferred from the
customer to the supplier. This amount will not be refunded in any case – it represents
the risks of purchasing a robot from an external organization. The remainder of the
cost will be transferred at the delivery of the final robot. After the final delivery, the
domain expert of the purchasing group conducts acceptance testing of the robot. If
the acceptance testing shows that delivered robot does not fully comply with the SRS,
the project manager of the purchasing group is entitled to file a business claim to the
regulatory body, further described in Section 4.1.
Each group will also offer the robot under development on the Robot Market. After
Sprint 3, all groups will seek to complement the pre-ordered (by now hopefully delivered)
robot with additional robots to build a competitive robot team for the LU Rumble.

16

Figure 2.4: Example of two groups purchasing robots for their teams.
Throughout Sprints 2 and 3, the sales engineer is responsible for marketing the robot
on Robot Market. Each group will also set a price for its robot – a group must for at
least ask as much as what the bespoke customer has payed. Before the LU Rumble, the
domain expert of each team will sign purchase orders and deliver to the regulatory body
through “grå skåpet”.
Figure 2.4 shows an example of how two groups purchase robots. After the robot fair,
Group A purchases a bespoke robot from Group C. As Robot C was quite costly, Group
A complements it with two cheaper droids from Robot B to create a robot team. On the
other hand, Robot B resulted from bespoke development for Group C – and they liked
the result enough to buy two more at a later stage. Furthermore, Group C complements
the cheap droids by two basic bots: a Basic Leader Bot and a Basic Bot. Both Groups
A and C spend e95 of their budgets.

2.3 Strategizing to win the LU Rumble
The LU Rumble is a customized instance of a RoboCode team rumble. Each group will
compose a team of up to five robots that will compete together against other teams.
Each team must have one leader robot, which can be complemented by normal robots
or droids.
As in any rumble, the goal is to reduce the energy of enemy robots to 0. Team robots
will compete on a battlefield until one team is left. A standard robot starts with 100
energy and is equipped with a radar and a gun turret. Each time the gun is fired, the
robot loses energy according to the payload. If the bullet does not hit any target, the
energy is lost. If the bullet hits another robot, energy is transferred from the hit robot
to the firing robot.

17

Apart from the standard robots, there are two special types of robots. The leader robot
has an additional 100 energy compared the normal robot. Droids have an additional 20
energy, but are not equipped with radars.
At the end of Sprint 1, your group will have established a relationship with a robot
supplier by pre-ordering either a leader robot, a normal robot, or a droid. The supplier
will provide you with a final robot at the end of Sprint 3, but your group will have
a chance to influence the evolution of the robot during Sprints 2 and 3. The domain
expert in your group is responsible for developing a strategy around the robot you have
pre-ordered – to guide your feedback, you will receive two prototypes for evaluation: an
Alpha release after Sprint 1, and a Beta release after Sprint 2.
At the end of Sprint 3, you will complement the robot you have ordered with other
robots from the Robot Market. The goal of your strategizing is to identify and purchase
additional robots that can successfully cooperate with the robot from your supplier. It
is important to keep an eye on the Robot Market during Sprints 2 and 3, both to find
the best robots to purchase, and to understand what type of features you should provide
through your own robot under development. Note that three robots are always available
at fixed prices: 1) BasicLeaderBot e20, 2) BasicBot e15, and 3) BasicDroid e10.
Each team must adhere to three strict constraints:
1. Each team must consist of between one and five robots, including one leader robot.
2. Each team has a budget of e100 to purchase robots.
3. The final team must be submitted as a jar-file to the LU Rumble on Friday morning
before the event.

18

3 Project phases
3.1 Project inception
The first week of the project is referred to as the project inception. The project inception
phase is dominated by group development, i.e., forming groups, assigning roles, and
aligning goals and expectations.
According to a well-known model of group development, proposed by Tuckman in
1965 [REF], four distinct phases are all necessary and inevitable for a group of people to
face up to challenges, collaborate successfully, and to deliver results. Being aware of the
four phases might accelerate the less productive phases and mitigate group conflicts:
1. Forming The group meets and learns about the project and the required activities.
In the beginning, individuals tend to behave quite independently – all trying to
comprehend what is about to happen. Individuals might be motivated and on their
best behavior, but typically the understanding and expectations vary considerably.
In the project, groups will be established already during the break in the first
lecture, i.e., before lunch the very first Monday. The individual group members
are expected to read the project instructions carefully as early as possible.
2. Storming After a while, some disagreements and personality clashes are likely to
emerge within the group. People are people, and people are different. Tolerance
of each group member should be emphasized, otherwise the group will fail or rely
on individual “hero efforts”. This phase can become destructive to the group,
and some teams will never develop past this stage. On the other hand, settling
disagreements within the team can make members stronger, more versatile, and
able to work more effectively together. Note that some groups never enter this
stage at all, i.e., transitions directly from forming to norming are possible.
In the project, the the supervisors and the regulatory body and will be particularly
responsive to questions and clarifications during the first week. Also, the group
communication will be kick-started by two physical meetings at soon after the
formation: two exercise sessions on the Wednesday and Thursday.
3. Norming Resolved disagreements and personality clashes lead to a spirit of co-operation
– this typically happens when the group becomes aware of the external competition
and share a common goal. In this stage, all group members take the responsibility
and agree to work for the success of the common goal. The group members accept
others as they are and make an effort to move on.

19

Figure 3.1: The ETSA02 process model, organized in three sprints.
In the project, the first week concludes with assigning roles within the group, see
Section 5.1. All members of the group will also sign a collaboration contract,
specifying the roles, and the intentions to collaborate successfully. The contract
will be submitted to the regulatory body through “grå skåpet”.
4. Performing When the group norms and roles have been established, focus is shifted
to achieving common goals. However, groups might revert to earlier circumstances
in certain circumstances, e.g., unexpected events, emerging personal conflicts, or
changing leadership. In the project, the goal is of course to remain in the performing stage until the LU Rumble!

3.2 Process model
The process model describing the product development encompasses three sprints, each
with a separate set of deliverables.

3.2.1 Sprint 1
The first sprint overlaps with the project inception as the groups will start working on
robot development already at the first exercise sessions in the first week. The highlevel goals of Sprint 1 are to successfully do: 1) feature scoping, 2) robot prototyping,
and 3) developing a marketing concept. This means that the group will be focused on

20

engineering and monetizing during Sprint 1. Some strategizing will also occur, as the
domain expert will purchase a robot from a supplier after the Robot Fair.
The first steps of the requirements engineering involves analyzing what type of robot
would be in high demand by the other groups. This type of market analysis is no easy
task to conduct, and surely the requirements engineer will discuss intensively with the
domain expert and the sales engineer. Engineering a software product means making a
series of successful technology and business decisions, and already during Sprint 1 the
group needs to set the direction for the engineering department. High-level requirements
are referred to as features, and the task of deciding which features to implement in the
product is called feature scoping. At the end of Sprint 1, SRS v0.5 should specify the
features the group intends to implement in their robot. The features should be promising
enough to generate good offers by other groups, but do not promise too much (aka. “over
scoping”) – if you do not deliver a robot that fulfils the specification in the final release,
your customer will most likely file business claims to the regulatory body! On the other
hand, the SRS v0.5 is not carved in stone. There will be negotiations during Sprints 2
and 3, and if both the customer and the regulatory body accept your change requests,
you can both modify and remove features later – and adding new features is of course
always possible.
A central part of the engineering in Sprint 1 is the robot prototyping, an activity
that serves two main purposes. First, it helps your group experiment with different
candidate features for the robot under development. There is no better way to learn the
Robocode domain than by practically implementing different approaches and evaluating
them. Second, the prototyping will lead to an Alpha version of the Robot. The customer
will obtain the Alpha release, which will enable much richer feedback than an SRS alone.
To ensure that testing is part of the development process from the start, Sprint 1 will
introduce unit testing in the second week.
The marketing concept is the strategy that an organization implements to satisfy
customers needs, increase sales, maximize profit, and beat the competition. The customers’ focus and values are the routes to achieve sales and maximize profits. In the
project, the marketing concept is a customer-centered “sense and responds” philosophy.
Your group’s job is not to find the right customers for your robot, but rather to find
the right robot for your customers – both the bespoke customer and the Robot Market.
At the end of Sprint 1, the course will organize a Robot Fair. Each group will get a
3 minute slot to pitch their product. All groups will also have a webpage on a shared
Google Drive folder.
Sprint 1 shall result in the following deliverables to the following stakeholders. The
responsible role is shown in parentheses.
• SRS v0.5 to the customer and the regulatory body (Requirements engineer)
• Robot Alpha release to the customer (Development lead)
• Test specification v0.5 to the regulatory body(Test lead)
• 3 min sales pitch and website for Robot Market (Sales engineer)

21

• A purchase array to the regulatory body (Domain expert)
To support Sprint 1, the following sessions are scheduled:
• Lecture 1: Robocode, Requirements engineering
• Lab 1: Robot development in Eclipse
• Exercise 1: Requirements engineering
• Lecture 2: Construction, Testing
• Lab 2: Automated robot testing
• Exercise 2:

3.2.2 Sprint 2
In Sprint 2, the group should be up to speed both regarding engineering and monetizing.
Now the monetizing will decrease and the strategizing will increase in its place. The highlevel goals of Sprint 2 is to: 1) evolve the robot, 2) maintain the customer relationship,
and 3) develop a strategy for the LU Rumble.
In Sprint 2, you will have an established customer who has received your Robot
Alpha release. As that group will be keen to win the LU Rumble, you will likely get
feedback that they believe will guide your development to a successful robot. During
the remainder of the project, maintaining a healthy customer relationship is critical.
Your sales engineer is the main point of contact with the customer.
Based on your customer’s feedback, your own vision – and possibly some negotiation
in between – you will evolve the robot during Sprint 2. The features will be broken
down into detailed requirements, and the test specification will be elaborated to also
cover system testing. At the end of Sprint 2, you will deliver Robot Beta release to your
customer, constituting an MVP, i.e., a minimal product that still brings some value. To
be in a good position for the next sprint, the group should try to let the SRS, source
code, test specification, and marketing concept co-evolve – otherwise they might diverge
considerably, increasing the risk of a dissatisfied customer, wasted effort within your
group, and reduced sales on the Robot Market. Make sure that any changes you make
to the SRS are traceable, i.e., make sure there is a “paper trail”, in case the regulatory
body needs to settle business claims from your customer at a later stage. Significant
changes to the SRS must be done in agreement with the customer and documented. If
the supplier organization does not store a chain of evidence, the regulatory body is likely
to side with the customer in legal contentions.
Finally, you will develop a first draft of your Rumble strategy. The cornerstone
of your robot team will be the robot you pre-ordered. Your domain expert will be
responsible for communication with your supplier’s sales engineer. Just like your group
should be responsive to your customer, your supplier should respond to your requests.
Sprint 2 shall result in the following deliverables to the following stakeholders. The
responsible role is shown in parentheses.

22

• SRS v0.9 to the customer and the regulatory body (Requirements engineer)
• Robot Beta release to the customer (Development lead)
• Test specification v0.9 to the regulatory body (Test lead)
To support Sprint 2, the following sessions are scheduled:
• Lecture 3:
•
•

3.2.3 Sprint 3
In Sprint 3, the group shall conclude and tie up all activities. The engineering should
lead to a successful robot, the monetizing should ensure that it is well-received on the
market, and the strategizing shall finalize the Robot team shall be competitive in the
upcoming LU Rumble. The high-level goals of Sprint 3 are to: 1) complete the product,
2) generate high-volume sales, and to 3) optimize the Rumble strategy.
The engineering department will be busy implementing the remaining requirements
and putting the finishing touches to robot. This means completing the product and
preparing the Robot Final release. When the Final Robot is released, it is important
that the SRS, the test specification, and the marketing concept are all aligned. Your
customer will perform acceptance testing of your robot – rest assured that they will
scrutinize your deliverables to identify any discrepancies. The customer will be greatly
motivated to assure that the Robot Final release complies with the SRS – their entire
Robot team for the LU Rumble might rely on it! If the customer is not satisfied, the
regulatory body is likely to receive a business claim based on their acceptance testing.
However, your group will provide the regulatory body with evidence that everything in
the SRS has been verified by providing a complete test report based on Test specification
v1.0.
The sales department will keep active communications with the customer, to make
sure the final engineering efforts adhere to their expectations. Close communication
with the customer will reduce the risks of incoming business claims. However, the sales
engineer will also focus considerable effort on the robot offering on Robot Market – trying
to make the robot as attractive as possible on the open market, i.e., the sales engineer
will maintain the Robot webpage with the intention to generate high-volume sales.
The purchasing department will keep a close eye on the engineering efforts of the
supplier. After all, this is the supplier’s last chance to deliver the robot that has been
specified in the SRS. At the same time, your domain expert will analyze the Robot
Market to make a final decision of your Robot team composition, i.e., optimizing the
Rumble strategy.
Sprint 3 shall result in the following deliverables to the following stakeholders. The
responsible role is shown in parentheses.

23

• SRS v1.0 to the customer and the regulatory body (Requirements engineer)
• Robot Final release to the customer and the regulatory body (Development lead)
• Test specification v1.0 to the regulatory body and the customer (Test lead)
• Test report to the regulatory body and the customer (Test lead)
• A robot team composition to the regulatory body (Domain expert)
To support Sprint 3, the following sessions are scheduled:
• Lecture 4:
•
•

3.3 Post mortem
The phase following the process model is referred to as post mortem. In this phase,
your group will perform acceptance testing of your supplier’s Robot Final release. If the
acceptance testing identifies flaws, you will file business claims to the regulatory body
– possibly deducting from the total payment. Furthermore, after settling the business
claims, the domain expert will submit the final purchase orders to the regulatory body,
i.e., the Robot team composition for the LU Rumble will be finalized.
The post mortem shall result in the following deliverables to the following stakeholders.
The responsible role is shown in parentheses.
• Acceptance test report (Domain expert)
• (Potentially) Business claims (Project manager)
• Purchase orders to the regulatory body (Domain expert)
• A robot team composition to the regulatory body (Domain expert)

3.4 LU Rumble
The final phase consists of one single event: the LU Rumble. The LU Rumble will take
place during the final lecture of the course on May 21, 2018.
Prior to the event, the regulatory body will run a qualification session, inspired by the
format used in Formula one racing. The purpose of the qualification session is twofold.
First, it assures that all robot teams are functional on the Robocode arena. Second, it
will let a number of robot teams get “pole positions”, i.e., seeds for the LU Rumble main
tournament. The qualification session entails a large number of simulations between all
teams. Note that while the qualification session will indicate some Robot teams as

24

favourites, they might be good on average, but have weaknesses against certain team
strategies. No matter the results of the qualification session, all Robot teams can still
win the LU Rumble.
The main tournament, i.e., the playoff, will follow a cup pairing according to single
elimination knockout rules. The four teams performing the best during the qualification
session will be seeded into the tournament bracket. All remaining teams will enter the
bracket at random. Each match in the LU Rumble will be played in best-of-five format,
and displayed live at reasonable speed for the entertainment of the spectators.
Immediately after the LU Rumble, three awards will be given:
• The Strategizer Award goes to the winner of the LU Rumble.
• The Monetizer Award goes to the most profitable group.
• The Engineering Award is a people’s choice with voting during the LU Rumble (or
a jury in the regulatory body?).

25

4 Inter-group communication
4.1 The regulatory body
Formal document templates:
• Contract of sale between supplier and customer
• Purchase order for Robot Market
• Business claims

4.2 Maintaining supplier-customer relations
What to do and what not to...
Guidelines for suppliers:
• The customer is always right
• Do not sacrifice the chance to succeed on the open market
• Be open to new ideas from the customer.
• Embrace change – it is inevitable anyway.
• Negotiate nicely.
Guidelines for customers:
• Accept what you’ve pre-booked.
• Do not provide feedback that deviates from the original vision of the robot.
• Be open to alternative solutions proposed by the supplier.
• Negotiate nicely.

4.3 Group conflicts

26

5 Detailed instructions
This section presents some aspects of the course in detail: 1) the roles you should assign
within the group, 2) expectations on the deliverables, and 3) the course infrastructure.

5.1 Role assignment
During the course, all students are expected to contribute to all activities. The purpose
of the roles is not to isolate work tasks that could be individually completed. Software
engineering is a collaborative effort, and completing work tasks in isolation is not part of
a scalable methodology. Instead, we stress the value of “collective ownership” during the
project, not only for the source code as described in Section 2.1.2, but for all artifacts
produced.
The purpose of assigning roles in the project is to comply with the ETSA02 course
description regarding “judgment and approach”, i.e., understanding that software engineering is a complex endeavor involving several different roles, and that working as a
software engineer might result in a variety of roles in an organization. Second, all roles
with be responsible for some deliverables. The regulatory body will use the group member with the corresponding role as the primary point of contact in case any deliverable
is missing or critically incomplete.
As the project progresses through phases and sprints, different roles with have different expectations. The group will track the variation through weekly time reporting,
submitted by the project manager to the regulatory body. The reported figures should
be complemented by a qualitative analysis of the causes, and the project manager is
responsible for balancing the workload to make sure the contributions are comparable,
see 5.2 for further information.
Project manager Coordination, time reporting, communication with the regulatory
body. Identify a group member with leadership skills willing to shoulder overall responsibilities. – Weekly time reports with reflections, business claims (based
on failed acceptance test)
Development lead Design, implementation, source code quality. Assign a group member comfortable with the art and science of programming. – jar v0.5, jar v0.9,
jar v1.0
Test manager Test strategy, unit testing, system testing. Suitable for an individual
with an eye for details. – Unit tests, Test spec v1.0 (incl. test code), test results

27

Requirements engineer End-user perspective, feature scoping, detailed requirements.
A requirements engineer bridges engineering and business, identify a generalist. –
SRS v0.5, SRS v0.9, SRS v1.0
Sales engineer Marketing, customer communication, negotiations. Identify your natural salesman, a person with excellent communication skills. – Marketing concept,
signed contract (as supplier)
Domain expert Mastering Robocode, LU Rumble strategy, supplier communication,
negotiations, acceptance testing. The domain expert needs to be willing to learn
about the game aspects of Robocode, thus pick your gamer. – Signed contract (as
customer), acceptance test report, team jar-file

5.2 Time reporting and reflections
Report time per role on a weekly basis. Reflect on the figures after each sprint. Plan
changes if needed to better balance the work load.

5.3 Deliverables
The following deliverables will be produced during the project, the list below presents
the expectations:
Marketing concepts
SRS
Source code
Releases
Test code
Test spec
Test res
Acceptance test
LU Rumble team

5.4 Course infrastructure
The following infrastructure is central during the project:
SRS template

28

Slack workspace
Contract templates
Collaboration contract
Contract of sales
Time reporting
Robot team composition sheet

29

6 Week by week instructions
Week 12
Lecture 1: Group formation, Requirements engineering
Lab 1: Introduction to Robocode development
Exercise 1: Robot feature scoping
Week 13
Lecture 2: Construction, Testing I, Business
Lab 2: Automated unit testing
Exercise 2: Robot marketing
Week 14
Exam week
Week 15
Exam week
Deadline Friday April 13: Alpha release and marketing concept
Week 16
Lecture 3: Robot Fair, Testing II
Lab 3: Automated system testing
Exercise 3: Detailed requirements
Deadline Monday April 16: Purchase array
Week 17
Lecture 4: Design
Exercise 4: Test specification
Deadline Monday April 27: Beta release
Week 18
No scheduled sessions
Week 19
Lecture 5: Processes
Deadline Friday May 11: Final release
Week 20
Lecture 6: Backup, Old exam
Deadline Wednesday May 16: Acceptance testing and business claims
Deadline Friday May 18: Purchase orders and team composition
Week 21
Lecture 7: LU Rumble
Week 22
Exam May 22-23

30



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 30
Page Mode                       : UseOutlines
Author                          : Markus Borg
Title                           : Software Requirement Specification
Subject                         : TeX and LaTeX
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.12
Keywords                        : TeX, LaTeX, graphics, images
Create Date                     : 2018:01:02 15:03:26+01:00
Modify Date                     : 2018:01:02 15:03:26+01:00
Trapped                         : False
PTEX Fullbanner                 : This is MiKTeX-pdfTeX 2.9.4487 (1.40.12)
EXIF Metadata provided by EXIF.tools

Navigation menu