Week 1 Flashcards
(34 cards)
What is Software Engineering?
The systematic application of engineering
approaches to software development.
Systematic methodology?
Employing structured and well-defined
processes to ensure consistency and reliability in software development.
To have a disciplined, quantifiable approach
Use metrics, analysis, and
evaluation to measure and improve software quality.
What is development, operation, and maintenance
Addressing the entire
software lifecycle, from initial design to deployment and updates,
ensuring sustainability and adaptability.
Why is Software Engineering Important?
- Helps build reliable, maintainable, and scalable systems.
- Reduces costs by minimising errors and improving
efficiency. - Addresses challenges like complexity, evolving
requirements, and team collaboration.
What is abstraction?
The process of hiding unnecessary details and
exposing only the essential features of a system.
Purpose of abstraction?
Simplifies system complexity, making it easier to
manage and understand.
What is modularity?
Dividing a system into smaller, self-contained modules or
components.
Benefits of modularity?
- Enhances maintainability by isolating changes to specific modules.
- Facilitates parallel development by allowing teams to work on different
modules independently. - Promotes code reuse across projects.
What is encapsulation?
Restricting access to certain parts of an object and exposing only
the necessary interfaces.
What is the purpose of encapsulation?
- Protects data integrity by preventing unauthorized access or modification.
- Enables loose coupling between components, making systems more
adaptable.
What is Object-Oriented Programming (OOP)?
A programming paradigm based on the concept of “objects” that represent
real-world entities.
(OOP core concept) What are Classes and Objects?
A class is a blueprint, and an object is an instance of that
class.
(OOP core concept) What is Inheritance and Polymorphism?
Mechanisms to create hierarchies and enable
dynamic behaviour, such as overriding methods.
(OOP core concept) What is Encapsulation and Abstraction?
Simplifying complexity and protecting system
integrity.
What is type safety?
Ensuring that variables and operations adhere strictly to their defined types.
Advantages of type safety?
- Reduces runtime errors by catching issues during compilation.
- Improves code readability and maintainability
(Type Safety) What does Strong Type Checking do?
Prevents assigning incompatible types (e.g., assigning a string to an integer).
(Type Safety) What does Type Inference do?
Allows the compiler to deduce the type of a variable, making code more concise.
(Type Safety) What does Generic Types do?
Enables type-agnostic definition for collections and methods e.g. List<T> for lists of any type.</T>
What is memory management?
The process of allocating and deallocating memory resources
during program execution.
What are memory management features?
- Garbage collection
- Resource management
- Disposal patterns
Garbage Collection?
Automatically reclaims unused objects, reducing
memory leaks and manual effort.
Resource Management?
Ensures efficient use of system resources, such as
file handles and network connections.