Intro To Software Engineering Flashcards
What is the definition of Software Engineering?
The process of designing, developing, testing, and maintaining software systems.
List the key principles of Software Engineering.
- Scalability
- Maintainability
- User-Centric Design
What are the phases of the Software Development Life Cycle (SDLC)?
- Requirements Gathering
- Design
- Implementation
- Testing
- Deployment
- Maintenance
What are the two main SDLC models?
- Waterfall
- Agile
What are functional requirements?
What the software should do (e.g., login system).
What are non-functional requirements?
Performance, security, scalability.
What tools help visualize software requirements?
UML (Unified Modeling Language) diagrams.
What is modularity in software design?
Breaking the software into smaller, manageable parts (modules).
Define reusability in software engineering.
Using existing components to save time.
What does low coupling and high cohesion mean?
Parts of the software should work independently but cohesively.
What is the purpose of version control?
To manage code changes.
What are two best practices for code quality?
- Write clean, understandable code
- Include comments
What is unit testing?
Testing individual components.
What is integration testing?
Ensuring modules work together.
What is the focus of system testing?
Testing the entire system.
What is user acceptance testing?
Making sure the user is satisfied.
Name an automation tool for testing.
- Selenium
- JUnit
What are the types of software maintenance?
- Corrective
- Adaptive
- Perfective
- Preventive
What are some project management tools used in software engineering?
- Jira
- Trello
What is a Gantt chart?
A visual timeline.
What is Scrum in the context of project management?
An Agile framework with sprints.
What ethical considerations should be taken in software engineering?
- Respect user privacy and data security
- Avoid plagiarism in coding
Fill in the blank: The _______ is the process of writing the code.
Implementation
Fill in the blank: _______ testing focuses on fixing bugs.
Corrective