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.
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.
What is the term to write a DRY code?
Don't Repeat Yourself.
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.
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.
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
For any real-world project to succeed long-term, each of these areas must be addressed.
Why do we use Composition over Inheritance?
Composition programming is cleaner to write, easier to maintain, and allows for flexibility-defining behaviors.
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.
What are the 3 key components of the MVC Architecture Pattern
- Controller (Brain)
- View (User-Interface)
- Model (Data)
Where is Coding in the Functions of Software Engineering?
The implementation phase (stage 4) in the Software Development Life Cycle (SDLC).
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.
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.
What is the difference between an Agile and Waterfall model?
Agile is a mindset.
Waterfall is a process.
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.
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.
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!
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.
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.
How does GitHub enable collaboration beyond what Git alone provides?
A cloud-based platform offering integrated tools for code review, project management, and automation.
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.
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.
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.
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.
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.