Software Engineering
Design
Software Testing
Software implementation and deployment
Miscellaneous
100

What is software engineering?

a systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineering of software


100

Architecture patterns

  • MVC

  • Layered

  • Microservices

  • Client-server

100

What is software testing?

the process of finding errors and fixing them before a product goes to market

100

Programming principles

  • Clean code principles

  • YAGNI

  • KISS

  • CRUD

  • Separation of Concerns

  • Single Responsibility

  • Document your code

 

100

What is version control?

a fundamental component of a successful software deployment strategy

200

What does a software engineer do?

  • Requirement and Design Engineering
  • Problem Solving and Research
  • Quality Assurance
  • Deployment and Maintenance
  • Collaboration
200

What is UML and how is it used?

  • Unified Modeling Language

  • What: A standardized way to specify and visualize how different parts of a software system should work

  • How: used during the recording requirements and design phases to create blueprints that represent various pieces of the system

200

Verification vs. validation

  • Verification

    • Am I building the product right?

      • If the program accesses the wrong database, we are not building it correctly

    • Unit Test

    • Integration Test

    • Automated Testing

  • Validation

    • Am I building the right product?

      • If the program calculates car payments instead of house payments, we are not building the right system

    • Customer Acceptance Test

    • Usability Test

200

Building vs. buying software

  • Building

    • developing a custom solution internally to meet specific requirements

  • Buying

    • Involves purchasing a "commercial off-the-shelf" product from a third-party vendor.

200

Repository vs local repository

  • Repository

    • Area where software engineers check out code from a repository to begin their work and check in code once changes are finalized and reviewed

  • Local repository

    • Individual/Initial environment

300
SDLC Activities
  • Requirements

  • Design

  • Implementation

  • Verification

  • Maintenance




300

Structural vs. behavioral diagrams

  • Represent the static aspect of the system

  • Focus on the components that exist within the system and the relationships between them

300

Types of tests

  • Unit testing

  • Acceptance Testing
  • Integration testing
  • Manual testing
  • System Testing
300

Technical debt -- what is it?

Long-term consequences and implied costs of choosing an easy or "dirty" solution in the short term instead of using a better, more structured approach that would take longer to implement

300

Git commands

  • Push

  • Merge

  • Pull

  • Commit
400

Functional vs. non-functional requirements

  • Functional: Implementing requirements so that users can achieve their goals with the product

  • Non-functional: Place constraints on what goals should be met in the product

400

Static vs. dynamic diagrams

  • Represent the dynamic aspect of the system

  • How the system behaves and how its objects interact with one another over time

400

Acceptance testing

  • A form of testing performed by the customer or end-user to ensure the system meets business requirements and provides the desired user experience (UX)

  • It verifies the business requirements and whether the system solves the problems it was designed to solve

400

Refractoring

Involves reviewing and optimizing your existing code to make it more efficient and maintainable while ensuring the external behavior and results stay exactly the same

400

Definition of API

  • Application Programming Interface

  • a fundamental component of software architecture that serves as the interface through which different systems, services, and modules interact

500

What is “good” architecture design?

FRM

  • Faster development

  • Reduce overall idle time

  • Maintainable software

500

What is Kanban

a popular workflow management system used to apply lean thinking to software development

500

System testing

  • A level of testing that evaluates the software as a whole to ensure all integrated features work as expected in a typical environment

  • It tests the system's integrity, including how it interacts with subsystems and external applications

500

What do you consider when refactoring code?

  • Enhance code readability

  • Reduce complexity

  • Improve maintainability

  • Improve extensibility

  • Enhance performance

  • Facilitate faster program execution

500

Agile software development

a mindset focused on being flexible and adaptable, allowing teams to react and continuously learn

M
e
n
u