0% found this document useful (0 votes)
28 views6 pages

Software Engineering Reviewer

Uploaded by

jasperalvindee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views6 pages

Software Engineering Reviewer

Uploaded by

jasperalvindee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Software Engineering Reviewer

1. Software Engineering: Definition & Importance

• Definition: Software Engineering is the application of engineering principles to


software development. It involves the design, development, maintenance, testing,
and evaluation of software and systems.

• Importance: Ensures software is reliable, scalable, maintainable, and meets user


requirements. It focuses on creating high-quality software within time and cost
constraints.

2. Software Development Life Cycle (SDLC)

• Phases of SDLC:

o Requirements Analysis: Gathering and defining what the software should


do.

o Design: Structuring the software, including architecture and user interface.

o Implementation/Development: Writing the actual code.

o Testing: Checking the software for errors and verifying it meets


requirements.

o Deployment: Releasing the software for use.

o Maintenance: Updating and fixing issues post-deployment.

• SDLC Models:

o Waterfall: A sequential, step-by-step process.

o Agile: An iterative, incremental approach with frequent updates.

o V-Model: Each development phase is directly associated with a testing


phase.

o Spiral: A risk-driven model that combines iterative development with a focus


on risk assessment.

• Advantages and Disadvantages of SDLC Models:

o Waterfall: Simple and straightforward but inflexible.

o Agile: Flexible and customer-focused but can be chaotic without proper


management.
3. Core Software Engineering Concepts

a. Software Requirements

• Functional Requirements: What the system must do (e.g., login functionality).

• Non-Functional Requirements: System qualities like performance, security,


scalability, etc.

• Requirement Gathering Techniques:

o Interviews

o Surveys

o Observation

o Document Analysis

• Use Case Diagrams: Visual representation of system interactions with users or


other systems.

b. Software Design

• Key Design Principles:

o Modularity: Dividing software into separate, interchangeable components.

o Abstraction: Hiding complex details behind simple interfaces.

o Encapsulation: Grouping related data and functions together in a single unit


(like classes in OOP).

o Separation of Concerns: Dividing a system into distinct features that


overlap in functionality as little as possible.

• Design Patterns: Reusable solutions to common software design problems.

o Singleton: Ensures a class has only one instance.

o Factory: Creates objects without specifying the exact class of object that will
be created.

o Observer: Allows objects to notify others of changes in state.

c. Software Architecture
• Definition: High-level structure of a software system.

• Architectural Patterns:

o Layered Architecture: Divides the system into layers, such as presentation,


business logic, and data layers.

o Client-Server Architecture: Divides the system into clients (request


services) and servers (provide services).

o Microservices: Decomposes applications into loosely coupled services.

o MVC (Model-View-Controller): Separates data (Model), user interface


(View), and control flow (Controller).

4. Software Development Fundamentals

a. Programming Paradigms

• Procedural Programming: Based on a sequence of steps or procedures (e.g., C).

• Object-Oriented Programming (OOP): Organizes software as objects that


represent both data and behavior (e.g., Java, C++).

o Key concepts: Inheritance, Polymorphism, Encapsulation, Abstraction.

• Functional Programming: Focuses on pure functions and immutability (e.g.,


Haskell, Scala).

• Logic Programming: Based on formal logic (e.g., Prolog).

b. Version Control Systems (VCS)

• Git: A distributed version control system.

o Common Git commands: git init, git clone, git commit, git push, git pull, git
merge.

• Branching: Allows different versions of code to be worked on simultaneously.

• Merging: Combines changes from different branches.

c. Testing & Debugging

• Testing Levels:

o Unit Testing: Testing individual units or components of software.


o Integration Testing: Testing interactions between components.

o System Testing: Testing the complete system.

o Acceptance Testing: Verifying if the software meets the user’s requirements.

• Black-box Testing: Focuses on input-output behavior without knowing the internal


workings.

• White-box Testing: Focuses on the internal structure and logic of the code.

5. Software Engineering Applications & Use-Cases

a. Agile Methodology

• Agile Principles: Flexibility, customer collaboration, and responding to change.

• Scrum: An Agile framework that organizes work in 2-4 week sprints, with roles like
Product Owner, Scrum Master, and Development Team.

• Kanban: A visual workflow management method for tracking tasks.

b. DevOps

• Definition: A set of practices combining software development (Dev) and IT


operations (Ops) to shorten the software development lifecycle.

• Continuous Integration (CI): The practice of frequently integrating code into a


shared repository.

• Continuous Delivery (CD): Automating the release process so that software can be
deployed at any time.

c. Software Project Management

• Key Project Management Elements:

o Scope: What the project will and will not deliver.

o Time: Project schedule and deadlines.

o Cost: Budget constraints.

o Quality: Meeting user requirements and industry standards.

• Risk Management: Identifying, assessing, and mitigating risks.


6. Sample Quiz Questions

Multiple Choice Questions (MCQs)

1. Which of the following is NOT a phase in the SDLC?

o A) Requirements Analysis

o B) Design

o C) Marketing

o D) Deployment

2. What does OOP stand for in software design?

o A) Open Object Programming

o B) Object-Oriented Programming

o C) Optimal Object Performance

o D) Organized Object Programming

3. In Agile, what is the role of the Scrum Master?

o A) To develop code

o B) To ensure the team follows Agile principles and removes impediments

o C) To manage the product backlog

o D) To set deadlines for the project

4. Which design pattern ensures that a class has only one instance?

o A) Factory

o B) Singleton

o C) Observer

o D) Strategy

5. In DevOps, CI/CD stands for:

o A) Constant Integration/Continuous Development

o B) Continuous Integration/Continuous Delivery


o C) Correct Integration/Correct Development

o D) Controlled Integration/Controlled Delivery

True or False Questions

1. The Waterfall model is an iterative approach to software development.

o True

o False

2. The Factory design pattern is used to create objects without specifying the
exact class of object that will be created.

o True

o False

3. In Agile, the development process is broken into short, time-boxed iterations


called sprints.

o True

o False

4. Git is a centralized version control system.

o True

o False

5. DevOps practices focus on reducing the time between writing code and
deploying it to production.

o True

o False

You might also like