What is Software Engineering and some of the everyday duties?
A systematic approach to analysis, design, assessment, implementation, test, maintenance, reengineering of software.
Extracting requirements
Analyzing requirement
Writing software requirements documents
Building and analyzing prototypes
Developing test strategies and test cases
What is Agile software development, and what are its core principles?
Agile is an iterative approach to software development focused on collaboration, customer feedback, and rapid delivery. Its core principles emphasize:
Individuals and interactions over processes.
Working software over documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
What is the difference between verification and validation?
Verification ensures the software meets specified requirements ("Are we building the product right?").
Validation checks if the software meets user needs ("Are we building the right product?").
What are common software design principles?
Modularity – Break systems into independent modules.
Separation of Concerns – Divide a system based on distinct functionality.
Single Responsibility Principle – Each module should have one clear function.
What is object-oriented programming (OOP), and what are its four pillars?
OOP is a programming paradigm using objects and classes. Its pillars:
Encapsulation – Hiding internal details.
Abstraction – Simplifying complex systems.
Inheritance – Reusing code through parent-child relationships.
Polymorphism – Using a single interface for different types.
What is the difference between functional and non-functional requirements?
Functional requirements define what the system should do (e.g., user login, data retrieval).
Non-functional requirements define how the system performs tasks (e.g., performance, security, scalability).
What are the key components of Scrum, and how does it work?
Scrum involves small, cross-functional teams working in time-boxed sprints (typically 2-4 weeks). Key roles include:
Product Owner – Manages the product backlog.
Scrum Master – Facilitates the Scrum process.
Development Team – Delivers the product increment.
What are the main phases of the Software Testing Life Cycle (STLC)?
Requirement analysis
Test planning
Test case development
Test environment setup
Test execution
Test closure
What is the Model-View-Controller (MVC) architecture?
Model – Handles data and business logic.
View – Displays information to users.
Controller – Manages input and updates the model or view.
What are CRUD operations in databases?
Create – Insert new records.
Read – Retrieve existing data.
Update – Modify existing records.
Delete – Remove records.
What is Software Development Life Cycle (SDLC) and it's phases
A structured process the enables the production of high-quality and low-cost software
Requirements Analysis – Gathering and defining system needs.
Design – Creating the system's architecture and design plan.
Implementation – Writing and developing the software code.
Testing – Validating the software through various tests.
Deployment – Releasing the software for use.
Maintenance – Updating and fixing the software over time.
What is Kanban, and how does it differ from Scrum?
Kanban is a visual workflow management method that emphasizes continuous delivery. Unlike Scrum’s fixed sprints, Kanban has no set time frames and allows for flexible work item prioritization.
What are the key differences between unit testing and integration testing?
Unit Testing checks individual code components in isolation.
Integration Testing verifies interactions between combined components.
What are the key differences between layered and microservices architecture?
Layered Architecture organizes code into logical layers (e.g., presentation, business, data).
Microservices splits applications into independent services communicating via APIs.
Explain the difference between primary and foreign keys in databases.
Primary Key uniquely identifies each record in a table.
Foreign Key references the primary key in another table, linking two tables.
Software Development Life Cycle Activities
What is concept Requirements, design, implementation, verification, and maintenance
When should you build software versus buy software?
Build when you need a custom, unique solution.
Buy when an off-the-shelf product meets your needs faster and more affordably.
What is manual testing, and when is it useful?
Manual testing involves human testers executing test cases without automation. It is useful for exploratory testing, usability testing, and cases where automation is not cost-effective.
What are the main types of UML diagrams?
Structural Diagrams – Class, Component, Deployment.
Behavioral Diagrams – Use Case, Sequence, Activity.
What is an API, and what is its purpose?
An API (Application Programming Interface) allows different software systems to communicate with each other by defining how requests and responses should be handled.
What is the WRSPM model, and what does each component represent?
The WRSPM model breaks down software engineering into five layers:
World – Real-world environment and context.
Requirements – User needs and expectations.
Specifications – Formalized descriptions of the system's behavior.
Program – The actual software code that implements specifications.
Machine – The hardware and systems running the software.
What are the stages of software implementation and deployment?
Implementation involves coding and integrating components.
Deployment includes delivering the software to production, ensuring it works in the live environment.
What defines a software defect, and can you give an example?
A software defect is any flaw in code causing incorrect or unexpected behavior. Example: A login feature allowing access with the wrong password.
What does the acronym DRY mean, and why is it important?
Don’t Repeat Yourself – Avoid duplicating code to improve maintainability and reduce errors.
What are the differences between Git and GitHub?
Git is a version control system for tracking changes in code.
GitHub is a cloud-based platform for hosting Git repositories and enabling collaboration.