Software Engineering methodologies (Week 3-6) Flashcards

1
Q

Name the 4 most relevant software engineering methodologies

A
  • Waterfall (plan-driven process), unidirectional, one step at a time
  • Agile (software developed iteratively in sprints), (SCRUM)
  • Rapid Application Development (RAD)
  • Spiral
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Describe Plan-driven process

A
  1. All of the process activities are planned in advance
  2. Progress is measured against this plan
    (Waterfall)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe Agile process

A
  1. Planning is incremental
  2. Easier to change the process
  3. Reflect changing customer requirements
    SCRUM, XP
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

List the steps of Waterfall process

A
  1. Requirements analysis (system’s services, constraints, goals, all must be defined in details and serve as a system specification)
  2. System and software design (Allocate requirements to either hardware or software systems. Describing software system abstraction and their relationships.)
  3. Implementation (Software design realized as programs or program units)
  4. Unit testing (Verifying each unit meets its specifications)
  5. Integration, system testing (Programs and units integrated, tested as a complete system. Requirements met. Deliver to customer)
  6. Operation, Maintenance (System in practical use. Correction errors, improving system units, meeting new requirements)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

When is documentation produced for waterfall?

A

Produced at each phase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the advantages of waterfall?

A
  • Process visibility
  • Processes are well organised
  • Quality and cost are identifiable
  • Simple and easy to use
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are the disadvantages of waterfall?

A
  • You have to commit early
  • Responding to change is difficult
  • Long time to deliver
  • Little/No feedback from customers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is evolutionary development?

A

In principle the same as waterfall, the difference is all processes are concurrent.
Software is not developed in one go, rather there are a series of small increment leading to the final product
Customers are involved

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the advantages of evolutionary/iterative development?

A
  1. Customers get to try out early increments, gain experience to inform requirements for later increments
  2. Customers can gain value from increments ( dont have to wait until the software is fully finished)
  3. Easy to incorporate changes into the system
  4. Highest-priority services delivered first. Most important features receive most testing.
  5. Easier to get customer feedback
  6. Rapid delivery, not all functionality is needed
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the disadvantages of evolutionary/iterative development?

A
  1. Systems require basic facilities used by different parts of system; hard to identify common facilities needed by all increments
  2. The process is not visible. Managers need regular deliverables to measure progress
  3. Regular change corrupts software structure
  4. Incorporating further changes increases difficulty and costs.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is reuse-oriented software engineering?

A

It is a methodology that utilizes already written code in a program it wasn’t written for.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are the characteristics of rapid software development?

A
  • The process of specification, design and implementation are interleaved
    • No detailed system specification
    • Design documentation minimized
    • Requirements document only defines most important characteristics
  • System developed in a series of versions
    • End-users, stakeholders involved in specifying, evaluating each version
    • End-users may propose to change requirements in later versions
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the principles of agile methods?

A
  • Customer involvement: customer closely involved, they provide and prioritize new requirements, evaluate the system
  • Incremental delivery: software developed in increments; customer specifying requirements to be included in each increment
  • People not process: skills of team recognised and exploited. Team members left to develop their own ways of working without prescriptive processes
  • Embrace change: expect system requirements to change, design system to accommodate changes
  • Maintain simplicity: focus on simplicity. When possible, eliminate complexity from system
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What are the disadvantages of agile?

A
  • Lots of time with clients(less time for development)
  • Clients may not be willing and able to spend time with development team
  • No long term planning
  • Prioritising change can be difficult: Different stakeholders may give different priorities
    Contracts: customers pay for time required for development, rather than the development of a specific set of requirements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is Extreme programming? XP

A

Agile process with the focus on code rather than design or documentation.

XP takes an extreme approach to iterative development, new versions can be built several times per day

  • increments are delivered to customer every 2 weeks
  • all test must be run for every build (build is only accepted if tests run successfully)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

How are requirements expressed in XP?

A

They are expressed as stories, these stories are written on cards(development team breaks them into tasks, tasks are the basis of schedule and cost estimates)
- Customer chooses the stories for inclusion in the next release based on priorities and schedule estimates

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What are user stories?

A

Convenient format for expressing the desired business values

  • crafted to be understandable to both business people and technical people.
  • Serve the same purpose as use cases
  • Used instead of large requirement document
  • Written by the Customer (things the system needs to do for them, the are written in about 3 sentences)
18
Q

How much detail should user stories provide?

A

User stories should only provide enough detail to make a low risk estimate of how long it will take to implement
- when it is time to implement, the developers go back to customer for a detailed description of requirements

19
Q

How does testing happen in XP?

A

XP follows a test-driven development (write tests before code, instead of writing some code and then writing tests for that code, you write the tests before you write the code.)
Tests are automated, you can run the test as the code is being written and discover problems during development.

Acceptance testing
Unit testing

20
Q

What is acceptance testing? (XP)

A

Process where system is tested using customer data to check it meets customer’s real needs
Written with customer; acts as a ‘contract’, measure of progress

21
Q

What is unit testing? (XP)

A

Automate testing of functionality for software development

22
Q

What are the 4 principles of test-driven development?

A

Test first - before we write any code, write a test for that feature

Automated - Tests are ran automatically each time a release is built

Unit tests - Automate testing of functionality as developers write it

Acceptance tests - specified by the customer to test the overall system

23
Q

What is pair programming?

A

Two programmers work side-by-side (usually) at the computer.

Helps develop common ownership of code
spreads knowledge accross the team

Continuously collaborate on same design, algorith, code, etc

Serves as an informal review process

Encourages refactoring as the whole team can benefit from this

24
Q

What is refactioring?

A

A practice of software development that allows you to improve the code without changing or breaking its functionality

All developers are expected to refactor the code continuously as soon as code improvements are found

Helps to keep the code simple and maintainable

25
Q

What are the Scrum Roles?

A

Product owner
ScrumMaster
Development team

26
Q

What is Product owner responsible for? (SCRUM)

A
  • Responsible for what will be developed and in what order
  • Empowered central point of product leadership
  • Deciding which features and functionality to build
27
Q

What is ScrumMaster responsible for?

A

Responsible for guiding the team in creating and following its own process based on the broader framework

A coach, providing process leadership, helping the team

28
Q

What is development team responsible for?

A

Responsible for determining how to deliver what the product owner has asked for
5-9 people in size
Must collectively have all of the skills needed to produce good quality, working software: Programmers, testers, user experience designers, etc

29
Q

What is Grooming?

A

Creation and refinement of prioritization list - product backlog

Re-prioritize, delete and insert new items during grooming phase

30
Q

What is Product backlog and who determines it?

A

Product owner is responsible for determining product backlog.

Product backlog is a priority list of features required to meet the product owner’s vision

Items in the backlog are ordered in terms of value, cost, knowledge and risk

31
Q

What happens in the process of sprint planning?

A

Determine the most important subset of product backlog items

Product owner and development team agree on a sprint goal

Sprint backlog is created from product backlog

32
Q

What is sprint backlog?

A

Second backlog created after product backlog during sprint planning, subset of features to be focused on during the next sprint

33
Q

What is done during each SCRUM? (sprint execution)

A

Three questions get asked:
What did I accomplish since the last daily scrum?
What do I plan to work on by the next daily scrum?
What obstacles are preventing me from making progress?

34
Q

What is done during Sprint Review?

A

Give everyone with input into product development an opportunity to inspect and adapt what has been built so far

35
Q

What is done during Sprint retrospective?

A

After sprint review and before next sprint planning, the team looks at what is working, what isnt and what should be changed (process/development)

36
Q

What types of product backlog items (PBIs) go into the product backlog?

A
Features
Defects
Technical work
Changes
Knowledge acquisition
37
Q

What are the characteristics of a good product backlog?

A
DEEP rule:
Detailed Appropriately (near top of backlog: small in size, very detailed - can work on in near-term sprint)

Emergent (customer might change their mind)

Estimated (A size estimate to the effort required to develop them)

Prioritized (Prioritize the near-term items that are designed for the next few sprints)

38
Q

Who determines the Sprint goal and who determines the specific PBIs for the sprint?

A

Scrum team agrees on the sprint goal.

Development team determines specific PBIs from the backlog to work on for the next sprint

39
Q

What is agile manifesto?

A

Agile manifesto is a proclamation that articulates four key values and twelve key principles that its authors believe software developers should use to guide their work

40
Q

What are the 4 key values stated in agile manifesto?

A

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiations

Responding to change over following a plan

41
Q

What are the 12 princpiles of agile manifesto?

A

Highest priority is to satisfy the customer through early and continuous delivery of valuable software

Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.

Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.

Business people and developers must work
together daily throughout the project.

Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.

The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.

Working software is the primary measure of progress.

Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.

Continuous attention to technical excellence
and good design enhances agility.

Simplicity–the art of maximizing the amount
of work not done–is essential.

The best architectures, requirements, and designs
emerge from self-organizing teams.

At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.

42
Q

What are the main drawbacks of agile model?

A

Less perdictable
- For some software deliverables, the developers cannot quantify the full extent of required efforts. Teams new to agile methodoology fear these unknowns and this fear drives frustration, poor pratcises and often poor decisions

Lack of necessary documentation
- Agile methodologies rely on good documentation to keep the development team up-to date. developers who are not doing a good job in documentation can negatively impact the whole team by creating misunderstandings and other difficulties

Greater demand on developers and clients
- Agile methodology requires close collaboration with users. This can sometimes lead to poor outcomes when the users are not committed to the success of the product

Sometimes difficult to measure progress and resource costs as there is no clear end point