Software Engineering Flashcards

(14 cards)

1
Q

Explain the Software Development Life Cycle (SDLC).

A

SDLC phases include:
1. Requirements Analysis: Gathering and documenting system requirements
2. Design: Creating system architecture and detailed design
3. Implementation: Writing and coding the software
4. Testing: Verifying functionality and finding defects
5. Deployment: Releasing software to production
6. Maintenance: Ongoing support and updates

Popular methodologies include Waterfall (sequential), Agile (iterative), and DevOps (continuous integration/deployment).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is version control and why is Git important?

A

Version control systems track changes to code over time, enabling collaboration, rollback capabilities, and branching. Git is a distributed version control system offering:
- Local and remote repositories
- Branching and merging capabilities
- Conflict resolution
- History tracking and blame functionality
- Integration with platforms like GitHub, GitLab

Essential for team development and code management.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe different testing methodologies.

A

Unit Testing: Testing individual components in isolation
Integration Testing: Testing component interactions
System Testing: Testing complete system functionality
Acceptance Testing: Validating system meets requirements
Test-Driven Development (TDD): Writing tests before implementation
Behavior-Driven Development (BDD): Tests based on user behavior scenarios

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are design patterns? Give examples.

A

Design patterns are reusable solutions to common programming problems. Examples:
- Singleton: Ensures only one instance of a class exists
- Factory: Creates objects without specifying exact classes
- Observer: Notifies multiple objects about state changes
- Strategy: Encapsulates algorithms and makes them interchangeable
- MVC (Model-View-Controller): Separates application logic, presentation, and user input

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explain Agile methodology and Scrum framework.

A

Agile emphasizes iterative development, customer collaboration, and responding to change. Scrum is a popular Agile framework featuring:
- Sprints: Short development cycles (1-4 weeks)
- Roles: Product Owner, Scrum Master, Development Team
- Ceremonies: Sprint planning, daily standups, sprint review, retrospective
- Artifacts: Product backlog, sprint backlog, increment

Benefits include faster delivery, better customer feedback, and improved team collaboration.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is continuous integration and continuous deployment (CI/CD)?

A

CI/CD automates software development workflow:
- Continuous Integration: Automatically merge code changes, run tests, build applications
- Continuous Deployment: Automatically deploy to production after passing tests
- Continuous Delivery: Automatically deploy to staging; manual production deployment

Benefits include faster releases, reduced integration problems, early bug detection, and consistent deployment processes. Tools include Jenkins, GitLab CI, GitHub Actions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Explain microservices architecture.

A

Microservices decompose applications into small, independent services communicating over networks. Characteristics:
- Single responsibility per service
- Independent deployment and scaling
- Technology diversity allowed
- Decentralized governance

Advantages: scalability, technology flexibility, fault isolation. Challenges: complexity, network latency, data consistency, distributed system debugging.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is refactoring and why is it important?

A

Refactoring improves code structure without changing external behavior. Goals include:
- Improving code readability and maintainability
- Reducing complexity and technical debt
- Enhancing performance
- Making code more flexible for future changes

Common refactoring techniques: extract method, rename variables, eliminate code duplication. Essential for long-term code health and team productivity.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Describe code review best practices.

A

Effective code reviews involve:
- Small, focused changes for easier review
- Clear descriptions of what and why changes were made
- Constructive feedback focusing on code, not person
- Automated checks for style and basic issues
- Timely reviews to maintain development velocity

Benefits include bug detection, knowledge sharing, and code quality improvement.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is technical debt and how do you manage it?

A

Technical debt represents shortcuts taken during development that require future rework. Types include:
- Code debt (poor code quality)
- Architecture debt (suboptimal design decisions)
- Test debt (insufficient testing)
- Documentation debt (missing/outdated docs)

Management strategies: regular assessment, prioritization, dedicated refactoring time, preventing accumulation through code standards and reviews.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Explain different software architecture patterns.

A

Common architectural patterns:
- Layered Architecture: Organized in horizontal layers (presentation, business, data)
- Event-Driven: Components communicate through events
- Pipeline: Data flows through series of processing steps
- Client-Server: Clients request services from servers
- Peer-to-Peer: Nodes act as both clients and servers
- Service-Oriented: Business functions exposed as services

Each pattern suits different requirements and constraints.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is DevOps and its key practices?

A

DevOps bridges development and operations teams to improve collaboration and productivity. Key practices:
- Infrastructure as Code: Managing infrastructure through code
- Automated Testing: Comprehensive test suites at all levels
- Monitoring and Logging: Observability into system behavior
- Configuration Management: Consistent environment setup
- Deployment Automation: Reliable, repeatable deployments

Benefits include faster delivery, higher quality, improved collaboration, and better system reliability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Describe software metrics and their importance.

A

Software metrics quantify various aspects of development:
- Code Quality: Cyclomatic complexity, code coverage, duplication
- Productivity: Lines of code, story points, velocity
- Reliability: Bug density, mean time to failure, availability
- Performance: Response time, throughput, resource utilization
- Process: Lead time, deployment frequency, change failure rate

Metrics guide decision-making, identify improvement areas, and track progress over time.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is API design and REST principles?

A

Good API design follows principles like:
- Consistency in naming and behavior
- Simplicity and ease of use
- Proper documentation and examples
- Error handling with meaningful messages
- Versioning for backward compatibility

REST principles include stateless communication, uniform interface, cacheable responses, and layered system architecture. Well-designed APIs improve developer experience and system integration.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly