1. Describe the importance of software engineering to software development
2. Identify a suitable development methodology for each of the following case-studies. Identify one characteristic of the chosen methodology and explain how this characteristic benefits the project
User-stories are one of the primary development artifacts for Scrum and XP project teams created during the requirements engineering phase. A user story is a short, concise description of a feature narrated from the perspective of the person who desires the capability, containing just enough information so that the developers can produce a reasonable estimate of the effort to implement it.
One technique to create a user-story is to follow the role-feature-reason template or RGB (Role, Goal, Benefit) Template as proposed by Mike Kohan of Mountain Goat Software.
The template looks like: “As a [type of user], I want some [feature] so that [some reason]. This technique keeps the focus on who, what, and why.
Examples of User Stories using the RGB template
• As a librarian, I want to have facility of searching a book by different criteria so that I will save time to serve a customer
• As a student, I want to be reminded of my class schedule every morning
• As a lawyer, I want to see all my active cases on the main screen
In an Agile project, user stories are discussed in meetings with the Product Owner (the person who represents the customer for the product you’re developing, and who writes the user stories) and the development team. The user story is presented, and the conversation starts.
For example: As a conference attendee, I want to be able to register online, so I can register quickly and cut down on paperwork.
Questions for the Product Owner might include:
• What information needs to be collected to allow a user to register?
• Where does this information need to be collected/delivered?
• Can the user pay online as part of the registration process?
• Does the user need to be sent an acknowledgment?
Acceptance criteria are statements of requirements described from the perspective of the customer to determine what is required for the business and product owner to accept the user story as being “done”. Any member of the team can assist the product owner in defining and reviewing the acceptance criteria, which can continue to evolve and change until the team starts working on the user-story. Typically, an acceptance criteria can be specified in the format:
When inputX and processY, then outcomeZ.
e.g., inputX = invalid email address, processY _= email validation,_* outcomeZ* = “invalid email address” message
3. Read the following problem statement and write a set of epic and detailed user stories with acceptance criteria
The epic stories above show a large story that is hard to estimate and difficult to implement in a single iteration. Stories containing “and” or “or” are likely candidates for breaking into smaller, atomic user-stories. For example, all of the above stories can be broken down into more fine-grained or atomic user-stories with clearly defined acceptance criteria as below:
US1: As a waiter, I should be able to view the current menu-options, so that I can advise the diner of the current menu-choices in the restaurant
Acceptance Criteria:
US2: As a waiter, I should be able to add a new table order into the system, so that I am able to serve a diner.
Acceptance Criteria:
Should be able to input the table number for the order into the system
Should be able to create a drinks order for the chosen table number and add drinks ordered by the table from the drinks menu stored in the system
Should be able to create a food order for the chosen table number and add dishes ordered by the table from the food menu stored on the system
Should be able to click on any specific drink order and provide additional instructions to the bar chef e.g., “extra shot of bitters in lemon lime & bitters”
Should be able to click on any specific food order and provide additional instructions to the kitchen chef e.g., “no chilli”
Python offers a number of compound data types, to allow you to group together values. These include lists, tuples, dictionaries. In this tutorial, we will look at lists and dictionaries
The most versatile data structure, written as a list of comma separated values within square brackets. Lists might contain items of the same or different data types, e.g.,
- primes = [2,3,5,7,11,13]
- mixed_basket = [1,[apples,3,3.45],2,[oranges,4.05]]
Given a list of numbers find the median of the numbers. You may assume that the input list contains at least one number.
Think about why you many want to use sorted(numbers) instead of numbers.sort()
Dictionary
Another useful data type built into Python is the dictionary. Unlike a list, string or tuple whose elements can be indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys.
phone = {‘sam’: 97896000, ‘john’:9584 2384, ‘tom’:97268907}
'''
Common list methods:
list(d.keys()) on a dictionary returns all the keys in the dictionary.
use the 'in' keyword to check if a particular key exists
dict() can be used to build a dictionary from a sequence of key-value pairs
use items() to loop through the dictionary
'''
You are given a dictionary of fruits names and their prices ($). Add a new entry: ‘golden apple’, with a price of $42 per unit. Implement a function that does the following: