chapter 1 - 2 Flashcards

(36 cards)

1
Q

What is software engineering?

A

A discipline that involves comprehending and evaluating user requirements, then utilizing scientific concepts, techniques, and methods to design, implement, and test software systems.

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

What are the characteristics of software?

A
  • Functionality/Performance
  • Efficiency/Optimization
  • Dependability
  • Usability
  • Maintainability
  • Portability
  • Scalability
  • Interoperability
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is the purpose of engineering?

A

To systematically design, construct, and evaluate something to fulfill a specific purpose and resolve a problem efficiently considering cost-effectiveness.

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

What is system software?

A

Software written to enhance the usability and convenience of the system for its users, controlling hardware and allowing other software to run smoothly.

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

What are the types of system software?

A
  • Operating System
  • Language Processor
  • Device Driver
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is application software?

A

Software created by individual users to fulfill their unique computational requirements, categorized based on their functions.

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

What are the types of application software?

A
  • General Purpose Software
  • Customized Software
  • Bespoke Software
  • Utility Software
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What does the DRY principle stand for?

A

Don’t Repeat Yourself, meaning to avoid code duplication by writing code once and reusing it.

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

What does the KISS principle stand for?

A

Keep It Simple, Stupid, meaning to avoid unnecessary complexity in design and code.

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

What is the purpose of Test-Driven Development (TDD)?

A

To write test cases before writing the actual code to ensure the software works correctly from the start.

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

What are the SOLID principles?

A
  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is Computer-Based Systems Engineering (CBSE)?

A

A discipline that focuses on the design, development, and implementation of complex systems integrating hardware, software, and human elements.

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

What is the Layered Architecture Pattern?

A

A software design pattern that organizes code into separate layers, where each layer has a specific role, enhancing maintainability and scalability.

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

What are the common layers in a software system?

A
  • Presentation Layer (UI Layer)
  • Application Layer (Service Layer)
  • Business Logic Layer (Domain Layer)
  • Data Access Layer (Persistence Layer)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What does the Microkernel Architecture Pattern consist of?

A

A core system handling essential functions and plug-ins that extend its capabilities, ensuring flexibility and adaptability.

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

What is the Microservices Architecture Pattern?

A

A way of building software as a collection of small, independent services that work together, each responsible for a specific task.

17
Q

What is the Event-Based Architecture Pattern designed for?

A

Highly scalable systems that handle multiple tasks asynchronously, processing specific events as they occur.

18
Q

What is the Space-Based Architecture Pattern?

A

An architecture designed to address concurrency and scalability issues by using distributed, in-memory data grids instead of a central database.

19
Q

What are key quality attributes of good software architecture?

A
  • Functionality
  • Usability
  • Reliability
  • Supportability
  • Performance
  • Self-Reliance
20
Q

What is a paradigm in software engineering?

A

A broad way or approach to organizing and designing software, representing a fundamental style or model of programming.

21
Q

What is Object-Oriented Programming (OOP)?

A

A programming paradigm that centers on classes and objects, encouraging structuring code into reusable entities.

22
Q

What is Functional Programming (FP)?

A

A programming paradigm focused on using functions as the primary building blocks for software design.

23
Q

Fill in the blank: Software design architecture refers to the high-level ______ of a software system.

24
Q

What is Object-Oriented Programming (OOP)?

A

A programming paradigm centered on classes and objects, encouraging code structuring into reusable and modular entities called classes.

OOP focuses on encapsulation, inheritance, and polymorphism.

25
What are the key principles of Object-Oriented Programming (OOP)?
* Encapsulation * Inheritance * Polymorphism ## Footnote These principles help develop modular, extensible, and maintainable software systems.
26
What is Functional-Oriented Programming (FOP)?
A programming paradigm that treats computation as the evaluation of mathematical functions, emphasizing pure functions and immutable data structures. ## Footnote FOP avoids side effects and promotes higher-order functions.
27
What are first-class citizens in Functional-Oriented Programming (FOP)?
Functions that can be passed as arguments, returned from other functions, and assigned to variables. ## Footnote This characteristic allows for greater flexibility in programming.
28
What is a key consideration when choosing between Object-Oriented Design (OOD) and Function-Oriented Design (FOD)?
System Complexity ## Footnote OOD is preferred for complex systems, while FOD suits simpler tasks.
29
How does Object-Oriented Design (OOD) promote code reusability?
By leveraging inheritance and polymorphism. ## Footnote This simplifies extending and modifying existing code.
30
What is the impact of modularity on maintenance in Object-Oriented Design (OOD)?
OOD emphasizes modularity by using encapsulation, facilitating simpler maintenance and updates. ## Footnote Encapsulation confines changes within objects.
31
What is the scalability advantage of Object-Oriented Design (OOD)?
OOD enables adding new features through creating new classes or extending existing ones. ## Footnote This effectively manages increasing complexity.
32
What team expertise is required for Object-Oriented Design (OOD)?
A strong comprehension of object-oriented principles and design patterns. ## Footnote Proficient OOD teams enhance development and maintenance efficiency.
33
True or False: Functional-Oriented Design (FOD) may provide superior performance in certain scenarios.
True ## Footnote FOD can directly manipulate data with fewer abstraction layers.
34
Fill in the blank: Object-Oriented Programming (OOP) architectures center on principles such as _______.
encapsulation, inheritance, and polymorphism.
35
Example languages used in Object-Oriented Programming (OOP) include:
* Java * C++ * Python * Ruby ## Footnote These languages support OOP principles.
36
Example languages used in Functional-Oriented Programming (FOP) include:
* C * Fortran * Pascal ## Footnote These languages facilitate functional programming paradigms.