chapter 1 - 2 Flashcards
(36 cards)
What is software engineering?
A discipline that involves comprehending and evaluating user requirements, then utilizing scientific concepts, techniques, and methods to design, implement, and test software systems.
What are the characteristics of software?
- Functionality/Performance
- Efficiency/Optimization
- Dependability
- Usability
- Maintainability
- Portability
- Scalability
- Interoperability
What is the purpose of engineering?
To systematically design, construct, and evaluate something to fulfill a specific purpose and resolve a problem efficiently considering cost-effectiveness.
What is system software?
Software written to enhance the usability and convenience of the system for its users, controlling hardware and allowing other software to run smoothly.
What are the types of system software?
- Operating System
- Language Processor
- Device Driver
What is application software?
Software created by individual users to fulfill their unique computational requirements, categorized based on their functions.
What are the types of application software?
- General Purpose Software
- Customized Software
- Bespoke Software
- Utility Software
What does the DRY principle stand for?
Don’t Repeat Yourself, meaning to avoid code duplication by writing code once and reusing it.
What does the KISS principle stand for?
Keep It Simple, Stupid, meaning to avoid unnecessary complexity in design and code.
What is the purpose of Test-Driven Development (TDD)?
To write test cases before writing the actual code to ensure the software works correctly from the start.
What are the SOLID principles?
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
What is Computer-Based Systems Engineering (CBSE)?
A discipline that focuses on the design, development, and implementation of complex systems integrating hardware, software, and human elements.
What is the Layered Architecture Pattern?
A software design pattern that organizes code into separate layers, where each layer has a specific role, enhancing maintainability and scalability.
What are the common layers in a software system?
- Presentation Layer (UI Layer)
- Application Layer (Service Layer)
- Business Logic Layer (Domain Layer)
- Data Access Layer (Persistence Layer)
What does the Microkernel Architecture Pattern consist of?
A core system handling essential functions and plug-ins that extend its capabilities, ensuring flexibility and adaptability.
What is the Microservices Architecture Pattern?
A way of building software as a collection of small, independent services that work together, each responsible for a specific task.
What is the Event-Based Architecture Pattern designed for?
Highly scalable systems that handle multiple tasks asynchronously, processing specific events as they occur.
What is the Space-Based Architecture Pattern?
An architecture designed to address concurrency and scalability issues by using distributed, in-memory data grids instead of a central database.
What are key quality attributes of good software architecture?
- Functionality
- Usability
- Reliability
- Supportability
- Performance
- Self-Reliance
What is a paradigm in software engineering?
A broad way or approach to organizing and designing software, representing a fundamental style or model of programming.
What is Object-Oriented Programming (OOP)?
A programming paradigm that centers on classes and objects, encouraging structuring code into reusable entities.
What is Functional Programming (FP)?
A programming paradigm focused on using functions as the primary building blocks for software design.
Fill in the blank: Software design architecture refers to the high-level ______ of a software system.
structure
What is Object-Oriented Programming (OOP)?
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.