Part I - Intro to Software Development Flashcards

1
Q

What is a software process?

A

Software processes are the activities involved in producing a software system. Software process models are abstract representations of these processes.

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

Describe some process models

A

General process models describe the organization of software processes. Examples of these general models include the waterfall model, incremental development, and reusable component configuration and integration.

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

What is requirements engineering?

A

Requirements engineering is the process of developing a software specification. Specifications are intended to communicate the system needs of the customer to the system developers.

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

What does design and implementation mean?

A

Design and implementation processes are concerned with transforming a requirements specifi- cation into an executable software system.

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

What is software validation?

A

Software validation is the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system.

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

What is software evolution?

A

Software evolution takes place when you change existing software systems to meet new requirements. Changes are continuous, and the software must evolve to remain useful.

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

What should be considered during every software development process?

A

Processes should include activities to cope with change. This may involve a prototyping phase that helps avoid poor decisions on requirements and design. Processes may be structured for iterative development and delivery so that changes may be made without disrupting the system as a whole.

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

Describe software process improvement

A

Process improvement is the process of improving existing software processes to improve soft- ware quality, lower development costs, or reduce development time. It is a cyclic process involv- ing process measurement, analysis, and change.

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

What is agile development?

A

Agile methods are iterative development methods that focus on reducing process overheads and documentation and on incremental software delivery. They involve customer representatives directly in the development process.

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

What factors influence the decision of using an agile approach?

A

The decision on whether to use an agile or a plan-driven approach to development should depend on the type of software being developed, the capabilities of the development team, and the culture of the company developing the system. In practice, a mix of agile and plan-based techniques may be used.

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

What are some common agile practices?

A

Agile development practices include requirements expressed as user stories, pair programming, refactoring, continuous integration, and test-first development.

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

Describe what a scrum is

A

Scrum is an agile method that provides a framework for organizing agile projects. It is centered around a set of sprints, which are fixed time periods when a system increment is developed. Plan- ning is based on prioritizing a backlog of work and selecting the highest priority tasks for a sprint.

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

How does one scale agile methods?

A

To scale agile methods, some plan-based practices have to be integrated with agile practice. These include up-front requirements, multiple customer representatives, more documentation, common tooling across project teams, and the alignment of releases across teams.

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

What is a weakness of testing software?

A

Testing can only show the presence of errors in a program. It cannot show that there are no remaining faults.

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

Who tests the software?

A

Development testing is the responsibility of the software development team. A separate team should be responsible for testing a system before it is released to customers. In the user testing process, customers or system users provide test data and check that tests are successful.

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

What are the kinds of tests that are done on a complete system?

A

Development testing includes unit testing in which you test individual objects and methods; component testing in which you test related groups of objects; and system testing in which you test partial or complete systems.

17
Q

How does one test software effectively?

A

When testing software, you should try to “break” the software by using experience and guidelines to choose types of test cases that have been effective in discovering defects in other systems.

18
Q

How does one test software effectively?

A

Wherever possible, you should write automated tests. The tests are embedded in a program that can be run every time a change is made to a system.

19
Q

What is test driven development?

A

Test-first development is an approach to development whereby tests are written before the code to be tested. Small code changes are made, and the code is refactored until all tests execute successfully.

20
Q

What is scenario testing, and why is it useful?

A

Scenario testing is useful because it replicates the practical use of the system. It involves inventing a typical usage scenario and using this to derive test cases.

21
Q

What is acceptance testing? When is it used?

A

Acceptance testing is a user testing process in which the aim is to decide if the software is good enough to be deployed and used in its planned operational environment.

22
Q

What is a common model of the software development and evolution cycle?

A

Software development and evolution can be thought of as an integrated, iterative process that can be represented using a spiral model.

23
Q

What’s more expensive, development or maintenance?

A

For custom systems, the costs of software maintenance usually exceed the software develop- ment costs.

24
Q

How is software evolution driven? What are the steps?

A

The process of software evolution is driven by requests for changes and includes change impact analysis, release planning, and change implementation.

25
Q

What is a legacy system?

A

Legacy systems are older software systems, developed using obsolete software and hardware technologies, that remain useful for a business.

26
Q

If a business has a legacy system and they want more features, should you start from scratch, or adjust the old system? Pretend you are looking to cut costs and lower risk.

A

It is often cheaper and less risky to maintain a legacy system than to develop a replacement sys- tem using modern technology.

27
Q

What needs to be considered when debating whether or not to abolish a legacy system?

A

The business value of a legacy system and the quality of the application software and its envi- ronment should be assessed to determine whether a system should be replaced, transformed, or maintained.

28
Q

What are the three kinds of software maintenance?

A

There are three types of software maintenance, namely, bug fixing, modifying software to work in a new environment, and implementing new or changed requirements.

29
Q

What is software reengineering and what does it entail?

A

Software reengineering is concerned with restructuring and redocumenting software to make it easier to understand and change.

30
Q

What is refactoring?

A

Refactoring, making small program changes that preserve functionality, can be thought of as preventative maintenance.