Theory of Software Engineering
Software Development Life Cycle
Software Implementation and Deployment
Agile Software Development
Implementation and Version Control
100

What is Software Engineering and what it isn't?

The Systematic, Disciplined, and Quantifiable application of Engineering principles to the design, development, operation, and maintenance of software.

100
What is the Software Development Life Cycle?

The Software Development Life Cycle (SDLC) is a structured process that enables the production of high-quality and low-cost software, in the shortest possible production time.

100

What is the term to write a DRY code?

Don't Repeat Yourself.

100

In Agile Manifesto, what is the difference between Deliver Predictably and a Core functional team?

Deliver Predictably: Agile teams should strive to have everyone good enough to be able to contribute something to every bit of work on the team, so you can continuously deliver at a predictable pace.

Cross functional team: An agile team should be cross-functional.

100

What is a High-Level Design and how does it operate?

High-Level Design shows how the major pieces of the final application will fit and interact at an abstract level.

Software development is also a process that chops up the system into smaller and smaller pieces until the pieces are small enough to implement. High-Level Design is the first step in the chopping up process.

200

What does a Software Engineer do?

  • Extracting requirements

  • Analyzing requirements

  • Writing software requirements documents

  • Building and analyzing prototypes

  • Developing software designs

  • Writing software design documents

  • Researching application domain.

  • Developing test strategies and test cases

  • Testing the software and recording the results.

  • Isolating problems and solving them.

  • Learning how to use new software and hardware tools or install and set them up.

  • Writing other documentation such as users manuals.

  • Attending meetings with colleagues, customers, and supervisors.

  • Archiving software or  getting it ready for distribution

200
What is the importance of the SDLC?

For any real-world project to succeed long-term, each of these areas must be addressed.

200

Why do we use Composition over Inheritance?

Composition programming is cleaner to write, easier to maintain, and allows for flexibility-defining behaviors.

200

What can you do by using Timebox Usage?

- Don't consider overtime work. No more than 8 hours of work.

- Overtime work disrupts team's predictability.

- Overtime is not sustainable.

200

What are the 3 key components of the MVC Architecture Pattern

- Controller (Brain)

- View (User-Interface)

- Model (Data)

300

Where is Coding in the Functions of Software Engineering?

The implementation phase (stage 4) in the Software Development Life Cycle (SDLC). 

300

What are Requirements in Software Engineering?

A documented description of a feature, function, or constraint that a software system must satisfy to meet user needs and business objectives.

300

What is the definition for the Separations of Concern (SOC)

A program should be designed with different containers, and these containers should NOT have access to each other. It means each container is responsible for a separate concern, minimizing the overlap of concerns as much as possible.

300

What is the difference between an Agile and Waterfall model?

Agile is a mindset.

Waterfall is a process.

300

Why is Git considered a distributed version control system?

Every developer possesses a complete, local copy of the entire project repository, including its full history.

400

What are the Challenges in Software Engineering?

The challenge in Software Engineering is to deliver high-quality software on time and on budget to customers.

400

What is the difference between Requirements and Specification?

Requirement - A non-technical definition of features that users expect from the system. NO JARGON!

Specification - A technical definition of what is required for building systems. We are not trying to design it, so KEEP IT SIMPLE!

400

For Programming Principles, what are the aspects of refactoring?

  • Unused code: unused variables or methods that are in the code base

  • Duplicates: identical functions or variables.

  • Functions and variables with unclear names

  • An excessive amount of text in one method

  • A superfluous amount of comments

Incorrectly formatted code fragments: functions and loops not written correctly, extra spaces from the beginning of a line, etc.

400

What is a Scrum in Agile Frameworks?

An agile project management framework that helps teams structure and manage their work through a set of values, principles, and practices.

400

How does GitHub enable collaboration beyond what Git alone provides? 

A cloud-based platform offering integrated tools for code review, project management, and automation.

500

In the video where the rocket launched, what was the error that made the rocket explode?

A software bug where a 64-bit floating-point number was converted into a 16-bit signed integer, causing an overflow error.

500

What is the difference between Functional and Non-Functional Requirements?

Functional: A developer must implement these requirements so that users can achieve their goals with the product.

Non-Functional: Place constraints on what goals should be met in the product.

500

What is the term by doing Clean Code?

Don't try to pack a ton of logic into one line. Leave clear instructions in your comments and documentation. If your code is easy to read, it will also usually be easy to maintain.

500

How can you work on a Workflow Management?

The Kanban system is a popular way to apply lean thinking to software development.

Lean thinking is about focusing on what's valuable to the customer, and then continuously improving the product over time.

500

What is a branch in Git, and why do developers use them?

Developers use them to safely isolate changes, experiment with new ideas, and enable collaboration without affecting the main codebase.