Module 1 Flashcards
(21 cards)
What is Software Engineering?
Software Engineering is the systematic application of engineering approaches to the development of software.
OR
Software engineering is the application of engineering principles to software development. It involves analyzing user requirements, designing, developing, testing, and maintaining software systems. The goal is to build reliable, efficient, and scalable software within time and budget constraints.
What is the Software Development Life Cycle (SDLC)?
The SDLC is a structured process for creating software. It includes the following phases:
Requirements gathering
System design
Implementation (coding)
Testing
Deployment
Maintenance
Each phase ensures the software meets user expectations and is high quality.
What is a Software Requirement?
Software requirements are the functionalities and constraints of the software. They are classified into:
Functional Requirements: What the software should do (e.g., login, search).
Non-functional Requirements: How it should behave (e.g., performance, security, usability).
What is the difference between Verification and Validation?
Verification: Are we building the product right? It checks if the software meets design specifications.
Validation: Are we building the right product? It ensures the software meets the user’s needs.
What is a Software Process Model?
A software process model is a standard method for organizing the steps in software development. Common models include:
Waterfall Model
Agile Model
Spiral Model
V-Model
Each has unique approaches for planning, executing, and controlling the SDLC.
What is the Waterfall Model?
A linear, sequential SDLC model where each phase must be completed before the next begins. It’s easy to manage but lacks flexibility for changing requirements.
What is Agile Development?
Agile is an iterative and incremental approach to software development. It emphasizes:
Customer collaboration
Working software
Flexibility to change
Frequent delivery of features
Popular Agile methods include Scrum, Kanban, and Extreme Programming (XP).
What is Scrum?
Scrum is an Agile framework that organizes work in fixed-length iterations called Sprints (usually 2–4 weeks). It includes roles like:
Product Owner
Scrum Master
Development Team
Scrum ceremonies: Sprint Planning, Daily Standups, Sprint Review, and Retrospective
What is Software Design?
Software design is the process of defining the architecture, components, interfaces, and data of a system. It’s divided into:
High-Level Design (Architecture)
Low-Level Design (Class diagrams, pseudo code)
What is UML (Unified Modeling Language)?
UML is a standard language for visualizing, specifying, and documenting software systems. Diagrams include:
Class Diagram
Use Case Diagram
Sequence Diagram
Activity Diagram
State Diagram
What is Software Testing?
Software testing ensures the software works correctly and is free of bugs. It includes:
Unit Testing (individual components)
Integration Testing (combined modules)
System Testing (whole system)
Acceptance Testing (by the user)
What is Debugging?
Debugging is the process of finding and fixing errors or bugs in the software. It involves understanding code, identifying where it fails, and correcting the problem.
What is Software Maintenance?
Software maintenance is updating and improving software after it’s deployed. Types include:
Corrective (fixing bugs)
Adaptive (adapting to changes in environment)
Perfective (enhancing features)
Preventive (improving future maintainability)
What is Version Control?
Version control is managing changes to source code over time. It allows teams to collaborate, revert changes, and track history.
Example: Git and GitHub.
What are Software Quality Attributes?
Qualities that measure how good the software is:
Reliability
Maintainability
Usability
Efficiency
Portability
Security
What is the difference between Coupling and Cohesion?
Cohesion: How closely related tasks in a single module are. High cohesion is good.
Coupling: How much modules depend on each other. Low coupling is good.
What is Refactoring?
Refactoring is improving code structure and readability without changing its functionality. It’s essential for maintainability and reducing technical debt.
What is Software Architecture?
Software architecture defines the high-level structure of the system. It includes:
Components
Their interactions
System behaviors
Examples: Client-server, Microservices, Monolithic, Layered Architecture
What is a Design Pattern?
Design patterns are proven solutions to common software design problems. Examples:
Singleton
Factory
Observer
Strategy
They improve code reusability, readability, and scalability.
What is Software Project Management?
It involves planning, tracking, and controlling software projects. Tasks include:
Time estimation
Cost estimation
Risk management
Resource allocation
Communication