Final Exam Flashcards

1
Q

The first stage of any software design process is to develop an understanding of the relationships between the software that is being designed and its external environment. This is essential for deciding how to provide the required system functionality and how to structure the system to communicate with its environment. Which of the following diagrams will allow us to discover this?

A

context diagram

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

which of the following describes a “design and implementation” phase

A

It is the stage in the software engineering process at which an executable software system is developed.

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

When you use UML to develop a design, you should develop two types of design models: Structural and dynamic. Which of the following describes the structural model?

A

Describe the static view of the system in terms of object classes and relationships.

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

When you test software you are trying to do two things. What are those two things?

A

-To discover situations in which the behavior of the software is incorrect
-To demonstrate that the software meets its requirements

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

Which one of the following testing checks that changes have not “broken” previously working code

A

Regression testing

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

Sometimes software needs to go through urgent changes. What may cause these urgent changes?

A

All 3

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

Companies have to decide if they want to keep maintaining a legacy system or scrap it. In which of the following situations will a company choose to maintain a legacy system instead of scrapping it?

A

The system is fairly stable, and the system users make relatively few change requests

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

What is the purpose of the design and implementation phase?

A

The phase focuses on creating and realizing the software design, ensuring all components meet user requirements and integrate seamlessly

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

What do context diagrams represent?

A

Context diagrams show the system’s boundaries and its relationships with external entities like users, devices, and other systems.

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

What is the relationship between a use-case and a context diagram?

A

Use-cases describe interactions between actors and the system, while context diagrams outline the system’s overall scope and environment.

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

How are UML diagrams and architectural models applied in design and implementation?

A

ML diagrams (e.g., class and sequence diagrams) are used to model static structures and dynamic behaviors, while architectural models define the system’s high-level structure and components.

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

What is the difference between structural and dynamic models?

A

Structural models focus on the static components and their relationships, while dynamic models show how these components interact and change over time.

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

How does the observer pattern work?

A

It establishes a one-to-many dependency where observers are notified and updated automatically whenever the subject’s state changes.

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

What are the advantages and disadvantages of software reuse?

A

Advantages: Reduced development time, cost, and risks; improved reliability.
Disadvantages: High cost of integration, potential for incompatibility, and reliance on external code.

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

What are the descriptions of software reuse, configuration management, and host-target development?

A

Software reuse: Using existing code or components to develop new systems.
Configuration management: Managing changes to software artifacts systematically.
Host-target development: Developing software on one platform (host) to run on another (target).

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

What is version management?

A

Version management tracks different versions of software components to ensure developers access the correct ones and prevent overwriting changes.

17
Q

What is system integration?

A

Combining individual software components into a unified system, ensuring they work together as intended.

18
Q

How does open-source development work?

A

Open-source development makes the source code public, allowing anyone to contribute to its improvement or customization under specific licensing terms.

19
Q

What are the activities performed during the testing phase?

A

Testing activities include unit testing, component testing, system testing, release testing, and user testing to validate functionality and identify defects.

20
Q

What is the difference between validation testing and defect testing?

A

Validation testing ensures the system meets requirements with expected inputs.
Defect testing identifies errors using unexpected or edge-case inputs.

21
Q

What is the difference between software inspection and software testing?

A

Inspection: Static review of system artifacts (e.g., code, design) to find defects.
Testing: Dynamic execution of the software to uncover bugs.

22
Q

What are the three stages of development testing?

A

Unit testing.
Component testing.
System testing.

23
Q

What are the strategies for testing?

A

Partition testing: Divides inputs into equivalence classes for representative testing.
Guideline-based testing: Uses known defect-prone scenarios for test cases.

24
Q

What is test-driven development (TDD), and what are its benefits?

A

TDD is writing tests before code. Benefits include increased code coverage, better debugging, regression testing, and system documentation.

25
Q

What are the types of user testing?

A

Alpha testing: Early user testing with development team involvement.
Beta testing: Wider user group testing before release.
Acceptance testing: Customer evaluation to approve deployment.

26
Q

Why does software change?

A

Software changes due to new requirements, environment changes, bug fixes, and performance or reliability improvements.

27
Q

What are development and evolution in software engineering?

A

Development is creating new software, while evolution involves updating existing software to adapt to changes.

28
Q

What are urgent change requests, and how are they handled?

A

Urgent changes address critical issues like system faults or regulatory updates, often bypassing formal processes for quick fixes.

29
Q

What are the challenges of software evolution?

A

Challenges include high costs, integration issues, degraded structures, and maintaining legacy systems.

30
Q

What is a legacy system, and what are its components?

A

Legacy systems are outdated but critical systems with components like hardware, application software, data, processes, and policies.

31
Q

Why are legacy systems replaced, and what challenges are faced?

A

Replacement occurs due to inefficiency, high maintenance costs, or obsolescence. Challenges include risk, tight integration, and undocumented rules.

32
Q

What are the four basic issues discussed with stakeholders about legacy systems?

A

System usage, process efficiency, system dependability, and output relevance.

33
Q

What happens during the maintenance stage?

A

Activities include fixing bugs, adapting to new environments, and adding/modifying functionality.

34
Q

How can maintenance costs be reduced?

A

By improving software structure, refactoring, automating testing, and reducing complexity.

35
Q

What is the difference between refactoring and reengineering?

A

Refactoring: Incremental improvement of code.
Reengineering: Large-scale redesign and documentation of a system.

36
Q

What do “bad smells” in program code mean?

A

Indicators of poor design, such as duplicate code, long methods, or unnecessary complexity, signaling the need for refactoring.

37
Q

What are the types of software maintenance?

A

Fault repairs.
Environmental adaptation.
Adding/modifying functionality.

38
Q

What are the local and global impacts of computing solutions?

A

Local impacts: Individual or organizational efficiency, productivity, and communication.
Global impacts: Societal changes, ethical considerations, and environmental effects.