Review Flashcards

1
Q

Define software testing.

A

Testing shows that a program does what it is intended to do and to discover defects before it is put into use.
It should focus on exercising and observing product behavior.
Testing is part of the verification and validation process.

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

What is acceptance testing?

A

Customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed in the customer environment. Primarily for custom systems.

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

Define modularity.

A

Modularity refers to dividing a system into separate modules or components. Each module handles a specific functionality and operates independently.

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

Explain integration testing.

A

Integration testing is a type of software testing where components of the software are gradually integrated and then tested as a unified group.

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

Define unit testing.

A

Unit testing, where individual program units or object classes are tested. Unit testing should focus on testing the functionality of objects or methods.

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

What is the difference between verification and validation?

A

Verification: “Are we building the product right”. The software should conform to its specification.

Validation: “Are we building the right product”. The software should do what the user really requires.

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

Give two reasons and elaborate your answer on why system engineers must understand the environment of a system?

A

The engineers need to know the environment to ensure the system works well with other systems and components, including knowing the protocols and data formats used.
The engineers need to know the environment in order to effectively identify and reduce security threats and vulnerabilities.

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

Explain some of the most common implementation issues raised during software development.

A

Issues can occur when combining different parts of the system, especially if they were made separately or with different technologies.
Slow performance can result from unoptimized code, inefficient algorithms, or poor resource management.
Developers might accidentally create security issues, such as buffer overflows, injection attacks, or improper error handling.

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

Explain shortly what a layered architecture is. Than describe the main characteristics of this architecture, advantages, and disadvantages and in the end conclude with an example.

A

Description: Organizes the system into layers with related functionality associated with each layer. Each layer serves to the one above it, with the lowest layers providing core services used by the entire system.

Advantages: Allows layer replacement as long as the interface stays the same. Redundant features can be provided in each layer to improve system reliability.

Disadvantages: Providing a clean separation between layers is often difficult and a high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it.

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

Please list and explain the common activities during the object-oriented software design.

A

Identifying classes (determining the primary entities and attributes)

Characterizing classes (specifying the properties and methods each class will have)

Defining the associated actions (establishing how the objects will interact through methods, data exchange)

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

What are the objectives of testing?

A

▪ To demonstrate to the developer and the customer that the software meets its requirements.
For custom software, this means that there should be at least one test for every requirement in the requirements document. For generic software products, it means that there should be tests for all of the system features, plus combinations of these features, that will be incorporated in the product release.
▪ To discover situations in which the behavior of the software is incorrect, undesirable or does not conform to its specification.
Defect testing is concerned with rooting out undesirable system behavior such as system crashes, unwanted interactions with other systems, incorrect computations and data corruption.

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

What is software architecture?

A

The design process for identifying the sub-systems making up a system and the framework for sub-system control and communication is architectural design. The output of this design process is a description of the software architecture.

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

What is refactoring?

A

Refactoring is the process of making improvements to a program to slow down degradation through change.
‘Preventative maintenance’ that reduces the problems of future change.
Refactoring involves modifying a program to improve its structure, reduce its complexity or make it easier to understand.
When you refactor a program, you should not add functionality but rather concentrate on program improvement.

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

Distinguish between alpha and beta testing.

A

 Alpha testing
▪ Users of the software work with the development team to test the software at the developer’s site.
 Beta testing
▪ A release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers.

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

Describe the two levels of abstraction during the design of the software architectures.

A

 Architecture in the small is concerned with the architecture of individual programs. At this level, we are concerned with the way that an individual program is decomposed into components.
 Architecture in the large is concerned with the architecture of complex enterprise systems that include other systems, programs, and program components. These enterprise systems are distributed over different computers, which may be owned and managed by different companies.

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

Please explain shortly the 4+1 view of the architecture.

A

 A logical view, which shows the key abstractions in the system as objects or object classes.
 A process view, which shows how, at run-time, the system is composed of interacting processes.
 A development view, which shows how the software is decomposed for development.
 A physical view, which shows the system hardware and how software components are distributed across the processors in the system.
 Related using use cases or scenarios (+1)

17
Q

Repository Architecture

A

Description: All data in a system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository.

Advantages: Components can be independent. Changes made by one component can be propagated to all components.

Disadvantages: Problems in the repository can affect the whole system. Distributing the repository across several computers may be difficult.