Week 2 Flashcards

1
Q

Software process?

A

A structured set of activities required to develop a software system.
Specification: defining what the system should do.
Design and implementation: defining the organisation of the system.
Validation: checking that it does what the customer wants.
Evolution: changing the system in response to changing customer needs.

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

Plan-driven vs agile processes?

A

Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.

In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements. (Iterative, focus on faster delivery, and considers documentation as overhead).

Practical processes include elements of both.

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

Process models?

A

Abstract representations of software processes.

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

Software specification?

A

The process of establishing what services are required and the constraints on the system’s operation and development.

Software requirement engineering process involves: feasibility study, requirements elicitation and analysis, requirements specification and requirements validation.

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

Software design and implementation?

A

The process of converting the system specification into an executable system.
Design activities: architectural design, interface design, component design, and database design.

The activities of design and implementation are closely related and may be inter-leaved.

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

Software validation?

A

Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.

Involves checking and review processes and system testing.

Executing the system with test cases.

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

Software testing types?

A

Component testing: Individual components are tested independently; components may be functions or objects or groupings of these entities.

System testing: testing of the system as a whole. Testing of emergent properties is particularly important.

Customer testing: testing with customer data to check that the system meets the customer’s needs.

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

Software evolution?

A

As requirements change through changing business circumstances, the software that supports the business must also evolve and change.

Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.

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

Waterfall model?

A

Plan-driven model. Separate and distinct phases of specification and development.

  1. Requirements definition
  2. System and software design
  3. Implementation and unit testing
  4. Integration and system testing
  5. Operation and maintenance
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Problems with waterfall model?

A

Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
Therefore, this model is best used when requirements are well-understood and changes will be fairly limited.

Mostly used for large systems engineering projects where a system is developed at several sites.

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

Incremental development and pros/cons?

A

Specification, development and validation are interleaved. May be plan-driven or agile.

Benefits:
- More rapid delivery and deployment to the customer is possible.
- Easier to get customer feedback on the development work that has been done.
- Customers can comment on demonstrations of the software and see how much has been implemented.
- Cost of accommodating changing customer requirements is reduced.

Disadvantages:
- The process is not visible. Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
- System structure tends to decrease as new increments are added.
- Scope creep

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

Integration and configuration and pros/cons?

A

The system is assembled from existing configurable components. May be plan-driven or agile.

Sometimes called COTS: Commercial-off-the-shelf systems.

Benefits:
- Reduced cost and risks
- Faster delivery and deployment

Disadvantages:
- Requirements compromises are inevitable so system may not meet real needs of users.
- Loss of control over evolution of reused system elements.

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

Boehm’s spiral model?

A

Incremental, risk driver process framework.

Top-left Quadrant: Determine objectives, alternatives, constraints.
Top-right Quadrant: Evaluate alternatives, identify, resolve risks.
Bottom-right Quadrant: Develop, verify next level product.
Bottom-left Quadrant: plan next phases.

Objective setting: specific objectives for that phase of the project are defined.
Risk assessment and reduction: for each of the identified project risks, a detailed analysis is carried out.
Development and validation: after risk evaluation, a develop,em t model for the system is chosen.
Planning: the project is reviewed and a decision made whether to continue with a further loop of the spiral.

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

Boehm’s spiral model pros/cons?

A

Benefits:
- Risk management is part of the lifecycle.
- Iterations involve the customer before the product is completed.
- Reduces chances of misunderstandings.
- Project monitoring easy.
- Schedule & cost more realistic over time.

Disadvantages:
- Iterations 6 to 24 months long (lots of time for customers to change their mind).
- Lots of documentation per iteration.
- Lots of rules to follow hard for whole project.
- Cost of process is high.
- Hard to meet budget and schedule targets.

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

When is the Agile method applicable?

A

Product development where a software company is developing a small or medium-sized product for scale.

Custom system development within an organisation, where there is a clear commitment from the customer to become involved in the development process and where there are few external rules and regulations that affect the software.

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

Principles of agile methods?

A
  1. Customer involvement.
  2. Incremental delivery.
  3. People, not process (the skills of the development team should be recognised and exploited).
  4. Embrace change.
  5. Maintain simplicity.
17
Q

Extreme programming?

A

Agile development uses practices from XP.

Extreme programming (XP) takes an ‘extreme’ approach to iterative development.
- New versions may be built several times per day.
- Increments are delivered to customers every 2 weeks.
- All tests must be run for every build and the build is only accepted if tests run successfully.

Key practices:
1. User stories for specification.
2. Pair programming.
3. Refactoring.
4. Test-first development.

18
Q

User stories?

A

In XP, a customer or user is part of the XP team and is responsible for making decisions on requirements.

User requirements are expressed as stories. These are written on cards and development team break them down into implementation tasks which are basis of schedule and cost estimations.

The customer chooses the stories for inclusion in the next release based on priorities.

19
Q

Pair programming?

A

Programmers working in pairs developing code together.

Helps develop common ownership of code.

Serves as an informal review process.

Encourages refactoring.

20
Q

Refactoring?

A

Conventional wisdom in software engineering is to design for change. It is worth spending time and effort anticipating changes as this reduces cost later in the life cycle.

XP, however, maintains that this is not worthwhile as changes cannot be reliably anticipated.

Rather, it proposes constant code improvement (refactoring).

Refactoring: improving the structure without changing the behaviour.

21
Q

Test-driven development?

A

Writing tests before code clarifies the requirements to be implemented.

Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly.

All previous and new tests are run automatically when new functionality is added, thus checking that the new functionality has not introduced errors.

22
Q

Scrum?

A

Scrum focuses on managing iterative development rather than specific agile practices.

Sprints: time-boxed iterations, where the team focuses on completing a set of prioritised tasks.

Sprints are fixed length, normally 2-4 weeks.

Backlog: a list of to-do items.

Stand-up (daily scrum): a short daily meeting, usually 15 minutes, where the team members sync work.

Scrum-master: facilitator who arranges family meetings, tracks the backlog of work to be done, records decisions, measures progress against the backlog and communicates with customers and management.

Velocity: an estimate of how much product backlog effort that a team can cover in a single sprint.

23
Q

Scrum benefits?

A
  • Product is broken down into a set of manageable and understandable chunks.
  • Unstable requirements do no hold up progress.
  • The whole team has visibility of everything and consequently team communication is improved.
  • Customers see on-time delivery of increments.
  • Trust between customers and developers is established.
24
Q

Distributed scrum?

A

How to facilitate scrum in distributed development teams?

  • videoconferencing.
  • scrum master should be located with the development team.
  • product owner should visit the developers and try to establish a good relationship with them.
  • real-time communications between team members (instant messaging).
  • continuous integration, so that all team members can be aware of the state of the product at any time.
  • common development environment for all teams.