B1 Week 2 Flashcards

(29 cards)

1
Q

What are the 3 software models?

A
  • The waterfall model:This takes the fundamental process activities of specification, development, validation, and evolution and represents them as separate process phases such as requirements specification, software design, implementation, and testing.
  • Incremental Development:This approach interleaves the activities of specification, development, and validation. The system is developed as a series of versions (increments), with each version adding functionality to the previous version.
  • Integration and Configuration:This approach relies on the availability of reusable components or systems. The system development process focuses on configuring these components for use in a new setting and integrating them into a system.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the four basic process activities?

A

Specification
Development
Validation
Evolution

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

What is software requirements engineering process?

A

The process of understanding and defining what services are required from the system and identifying the constraints on the system’s operation and development

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

What are the main activities in the requirements engineering process?

A
  • Requirements elicitation and analysis
  • Requirements specification
  • Requirements Validation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is the implementation stage of software development?

A

The process of developing an executable system for delivery to the customer

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

What are the four activites of the implementation stage of software development?

A
  • Architectural Design
  • Database Design
  • Interface Design
  • Component and selection Design
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is software validation intended to do?

A

It is intended to show that a system both conforms to its specification and meets the expectations of the system customer.

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

What are the testing phases in software validation?

A
  • Component Testing
  • System Testing
  • Customer Testing
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is software system evolution?

A

Software evolution is referred to as the process of developing, maintaining and updating software for various reasons

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

What are the two approaches to reducing costs of rework?

A
  • Cost anticipation
  • Change tolerance
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the two ways of coping with change and changing system requirements?

A
  • System Prototyping
  • Incremental Delivery
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

In what software development processes can protyping assist?

A
  • Requirements engineering process: a prototype can help with the elicitation and validation of system requirements.
  • System design process: a prototype can be used to explore software solutions and in the development of a user interface for the system.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the advantages and disadvantages of incremental delivery?

A
  • Customers can use the early increments as prototypes and gain experience that informs their requirements for later system increments. Unlike prototypes, these are part of the real system, so there is no relearning when the complete system is available.
  • Customers do not have to wait until the entire system is delivered before they can gain value from it. The first increment satisfies their most critical requirements, so they can use the software immediately.
  • The process maintains the benefits of incremental development in that it should be relatively easy to incorporate changes into the system.
  • As the highest priority services are delivered first and later increments then integrated, the most important system services receive the most testing.

Key problems with this approach are (Sommerville, 2016):

  • Iterative delivery is problematic when the new system is intended to replace an existing system. Users need all of the functionality of the old system and are usually unwilling to experiment with an incomplete new system.
  • Most systems require a set of basic facilities that are used by different parts of the system. As requirements are not defined in detail until an increment is to be implemented, it can be hard to identify common facilities that are needed by all increments.
  • The essence of iterative processes is that the specification is developed in conjunction with the software. However, this conflicts with the procurement model of many organisations, where the complete system specification is part of the system development contract.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What are the two different approaches to process improvement and change?

A
  • The process maturity approach, which has focused on improving process and project management and introducing good software engineering practice into an organisation.
  • The agile approach, which has focused on iterative development and the reduction of overheads in the software process. The primary characteristics of agile methods are rapid delivery of functionality and responsiveness to changing customer requirements.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are the steps in Process maturity

A
  • Process Measure
  • Process Change
  • Process Analyze
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are the levels in process maturity?

A
  • Initial
  • Managed
  • Defined
  • Quantitively Managed
  • Optimising
17
Q

What are the principles of Agile Methods?

A
  • Customer Involvement
  • Embrace Change
  • Incremental Delivery
  • Maintain simplicity
  • People, not process
18
Q

What is refactoring?

A

Refactoring means that the programming team look for possible improvements to the software and implements them immediately.

19
Q

What does XP mean and what are they key features of testing it?

A

XP means extreme programming

  • Test-first development,
  • Incremental test development from scenarios,
  • User involvement in the test development and validation, and
  • The use of automated testing frameworks.
20
Q

What is pair programming and what are it’s advantages?

A

When programmers work in pairs to develop the software. The programming pair sits at the same computer to develop the software.

  • It supports the idea of collective ownership and responsibility for the system.
  • It acts as an informal review process because each line of code is looked at by at least two people.
  • It encourages refactoring to improve the software structure.
21
Q

What is Scrum?

A

Scrum is a software product development strategy that organizes software developers as a team to reach a common goal — creating a ready-for-market product. It is widely used as a subset of agile software development.

22
Q

What is a backlog in a scrum and what do they discuss in scrum meetings?

A

A wishlist of features

The team meets to discuss:

  • The backlog.
  • What still needs to be completed.
  • How long it will take.
23
Q

What is a sprint and what are the chracateristics of it?

A

Sprints are periods of time when software development is actually done.

· A sprint usually lasts from one week to one month to complete an item from the backlog.

· The goal of each sprint is to create a saleable product.

· Each sprint ends with a sprint review.

· Then the team chooses another piece of backlog to develop — which starts a new sprint.

· Sprints continue until the project deadline or the project budget is spent.

24
Q

What is a daily scrum?

A

In daily scrums, teams meet to discuss their progress since the previous meeting and make plans for that day.

· The meetings should be brief — no longer than 15 minutes.

· Each team member needs to be present and prepared.

· The ScrumMaster keeps the team focused on the goal.

25
What are some aspects of scaling agile methods
* Scaling up these methods to handle the development of large systems that are too big to be developed by a single small team. * Scaling out these methods from specialized development teams to more widespread use in a large company that has many years of software development experience.
26
What problems do agile methods present for long-lifetime systems?
1. The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies. 2. Agile methods are most appropriate for new software development rather than for software maintenance. Yet the majority of software costs in large companies come from maintaining their existing software systems. 3. Agile methods are designed for small co-located teams, yet much software development now involves worldwide distributed teams. 4. Contractual issues can be a major problem when agile methods are used. When the system customer uses an outside organisation for system development, a contract for the software development is drawn up between them.
27
What are some other key issues with "pure" agile approach?
1. How large is the system that is being developed? Agile methods are most effective when the system can be developed with a relatively small co-located team who can communicate informally. 2. What type of system is being developed? Systems that require a lot of analysis before implementation (e.g., real-time system with complex timing requirements) usually need a fairly detailed design to carry out this analysis. A plan driven approach may be best in those circumstances. 3. What is the expected system lifetime? Long-lifetime systems may require more design documentation to communicate the original intentions of the system developers to the support team. 4. Is the system subject to external regulation? If a system has to be approved by an external regulator (e.g., the Federal Aviation Administration approves software that is critical to the operation of an aircraft), then you will probably be required to produce detailed documentation as part of the system safety case.
28
What are six principle factors that contribute to the complexity of scaling large systems?
1. Large systems are usually systems of systems—collections of separate, communicating systems, where separate teams develop each system. 2. Large systems are brownfield systems; that is, they include and interact with a number of existing systems. 3. Where several systems are integrated to create a system, a significant fraction of the development is concerned with system configuration rather than original code development. 4. Large systems and their development processes are often constrained by external rules and regulations limiting the way that they can be developed, that require certain types of system documentation to be produced, and so on. 5. Large systems have a long procurement and development time. 6. Large systems usually have a diverse set of stakeholders with different perspectives and objectives.
29
What things do approaching the scaling agile methods have in common?
1. A completely incremental approach to requirements engineering is impossible. 2. There cannot be a single product owner or customer representative. 3. It is not possible to focus only on the code of the system. 4. Cross-team communication mechanisms have to be designed and used. 5. Continuous integration, where the whole system is built every time any developer checks in a change, is practically impossible when several separate programs have to be integrated to create the system.