Software Development Process Flashcards

1
Q

3 Main Areas of Software Engineering

A

Software Development
Software Maintenance
Software Management

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

What does software development entail?

A

Following all phases of the software lifecycle

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

What does software maintenance involve?

A

Incorporating changes into an existing system

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

What does software management include?

A

Estimating development costs, scheduling, and planning development tasks

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

What are two goals of software engineering?

A
  1. Dealing with the large size & complexity of software systems
  2. Producing high-quality software that satisfies quality requirements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the 3 main categories of software systems?

A

Application Software
System Software
Software Tools

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

What is application software? (Definition)

A

Programs developed to solve a specific problem for a specific client

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

What is system software? (Definition)

A

Software that controls the communication between hardware and programs (operating software) or establishes communication between devices (networking software)

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

What are some examples of types of application software?

A

Scheduling, e-commerce, communication

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

What is an example of software tools?

A

Data management systems

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

What are the 4 categories of application software?

A

Critical
Distributed
Real-time
Dynamic

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

What are safety-critical systems?

A

Critical software that can have a catastrophic impact on human lives, the environment, or the economy.

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

What are distributed systems?

A

Software components deployed on several hardware devices.

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

What is a real-time system?

A

Systems that respond in time to events.

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

What is a dynamic software system?

A

Systems where the configuration or architecture changes during runtime.

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

What organizations provide a code of ethics for software development?

A

ACM (Association for Computing Machinery)
IEEE (Institute of Electrical and Electronics Engineers)

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

What are the 7 points of the code of ethics for software development?

A

Public Interest
Client & Employer
Product Quality
Integrity of Software Developers
Integrity of Managers
Integrity of the Profession
Supporting Colleagues

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

What are the 5 phases of the software development life cycle?

A

Feasibility Study > Analysis > Design > Implementation > Testing

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

What is the software feasibility study?

A

Determining whether to proceed with a software proposal.

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

What is software analysis?

A

Describing the problem requirements in terms of functional and quality requirements.

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

What is software design?

A

Developing a high-level solution to the problem requirements, aka software modelling.

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

What is software implementation?

A

Actualize the solution using programming languages and environments.

23
Q

What is software testing?

A

Checking if the problem is solved and verifying quality requirements.

24
Q

What does software maintenance include?

A

Improving, extending, or adapting existing software.

25
Q

What are the 3 tasks of an economic feasibility study?

A
  1. Determine the benefit of a new product
  2. Estimate the total cost of development
  3. Weigh the cost against the benefit
26
Q

What are the 3 tasks of the software analysis phase?

A
  1. Requirements Elicitation
  2. Requirements Specification
  3. Requirements Validation
27
Q

What are the two types of requirements?

A
  1. Functional - functions or services an application offers
  2. Quality - security, scalability, and robustness
28
Q

What does viewing the software as a “black box” mean in the analysis phase?

A

Focusing on the external behaviour and interactions with the environment.

29
Q

What are some ways used to specify functional requirements?

A

Data Flow Diagrams
Use Case Scenarios
Finite State Machines (FSM)
Formal Methods

30
Q

What is the focus of the software design phase?

A

The internal structure and behaviour of the software.

31
Q

What are the two phases of software design?

A
  1. High-level design (top-level software architecture)
  2. Detailed design (refining architecture into models)
32
Q

What is software architecture?

A

The organization of the software system into main components and their interfaces.

33
Q

What is the goal of software architecture?

A

Constructing a solution that satisfies functional and quality requirements (e.g. maintainability)

34
Q

What are architectural styles?

A

Patterns like MVC or n-layer that define rules of interaction between components.

35
Q

What is detailed design?

A

Refining each component of the software architecture into sub-components until reaching modules.

36
Q

What are design patterns?

A

Templates describing well-known design problems and general solutions.

37
Q

What happens after the software design phase?

A

The solution is implemented using programming languages, software environments, and tools.

38
Q

What are some examples of programming paradigms?

A

Multi-threaded programming and object-oriented programming

39
Q

What is the software testing phase?

A

Evaluating each software quality by defining test cases.

40
Q

What are the 3 types of software testing?

A
  1. Unit testing (single component)
  2. Integration testing (interaction between components)
  3. System testing (entire application)
41
Q

Why is software testing an expensive phase?

A

Evaluating many quality requirements and modifying the program when errors are found

42
Q

What are the 5 types of software maintenance?

A
  1. Corrective (fixing bugs)
  2. Perfective (improving quality)
  3. Adaptive (adopting new technologies)
  4. Preventative (updating documentation)
  5. Enhancing (including new functional requirements)
43
Q

Why is software maintenance challenging?

A

Changes can break existing functionality and quality.

44
Q

What UML diagrams are used in functional requirements specification?

A

Use Case & Activity Diagrams

45
Q

What UML diagrams are used in the software design phase?

A

Class diagrams

46
Q

What UML diagrams are used in the software implementation phase?

A

Component diagrams

47
Q

What are the main concepts in a use case diagram?

A

Actor, use case, and association

48
Q

What are the main concepts in an activity diagram?

A

Activity state, action flow, and decision node

49
Q

What are the main concepts in a class diagram?

A

Classes & relationships (inheritance, association, aggregation, composition, dependency)

50
Q

What are the main concepts in a component diagram?

A

Software components (files) and dependencies between them.

51
Q

What are the main concepts in a deployment diagram?

A

Nodes (hardware) and associations (network protocols).

52
Q

What are heavyweight process models?

A

Models with comprehensive planning, extensive documentation, and detailed design (e.g. waterfall, v-model)

53
Q

What are lightweight process models?

A

Models with short planning cycles, minimal documentation, and code-oriented approaches (e.g. prototyping, spiral, agile)