Week 1- Introduction to Software Engineering Flashcards

1
Q

What is software crisis?

A

The software crisis refers to the challenges in software development, such as complexity, requirement changes, cost overruns, skill shortages, and quality assurance failures.

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

What are the main causes of software crises?

A

Complexity & Scaling – Large projects are hard to manage.

Requirement Changes – Customers frequently change needs.

Cost & Time Overruns – Projects often exceed budgets and deadlines.

Skill Shortage – Lack of trained software engineers.

Quality Issues – Bugs, crashes, and unmet user expectations.

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

Why was software engineering introduced?

A

To provide structured principles and methodologies for developing software on time, within budget, and with high quality.

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

What is software engineering?

A

Ghezzi et al. (2008) – “A systematic, disciplined, and quantifiable approach to software development.”

Ian Sommerville (2011) – “An engineering discipline concerned with all aspects of software production.”

Rod Stephens (2015) – “An organized, analytical approach to the design, development, and maintenance of software.”

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

What are the four fundamental software process activities?

A

Software Specification – Defining system requirements.

Software Development – Designing and programming the system.

Software Validation – Ensuring the software meets customer needs.

Software Evolution – Modifying the software based on feedback and new requirements.

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

Is software engineering an art or a science?

A

Science: Uses structured techniques and methodologies.

Art: Requires creativity to solve complex problems.

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

What are the two types of software products?

A

Generic Software – Mass-market products (e.g., Microsoft Office).

Bespoke Software – Custom-built for a client (e.g., Banking Software).

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

Why is software engineering important?

A

Human Dependency – Businesses and society rely on software.

Cost Efficiency – Saves money in the long run.
Adaptability – Allows easy modifications and improvements.

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

What are the four essential attributes of a software product?

A

Maintainability – Easy to modify and update.

Dependability & Security – Reliable and secure.

Efficiency – Optimizes system resources.

Acceptability – Meets user needs and expectations.

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

What is modularity in software engineering?

A

Breaking a large system into smaller, manageable modules to simplify design, development, and maintenance.

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

What are the two modularity approaches?

A

Top-Down – Decomposing the system into smaller modules first, then designing each.

Bottom-Up – Designing individual modules first, then integrating them into a system.

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

What are the key software engineering principles?

A

Rigour & Formality – Applying precision in software development.

Separation of Concerns – Focusing on one aspect at a time.

Modularity – Dividing a system into smaller, manageable parts.

Abstraction – Ignoring irrelevant details to focus on essential aspects.

Anticipation of Change – Designing software to accommodate future modifications.

Generality – Creating reusable components for different projects.

Incrementality – Building the software step by step.

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

What is cohesion and coupling in modularity?

A

Cohesion: How closely related the elements of a module are (high cohesion is better).

Coupling: The degree of dependence between modules (low coupling is better).

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

How does software engineering differ from computer science?

A

Computer Science: Focuses on theoretical algorithms and data structures.

Software Engineering: Applies engineering principles to develop large-scale software systems.

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

How does software engineering differ from system engineering?

A

Software Engineering: Focuses only on software.

System Engineering: Involves both software and hardware components.

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

What are the key roles in software development teams?

A

Software Engineers – Write and maintain code.

Project Managers – Oversee scope, budget, and timeline.

Quality Assurance Engineers – Ensure software quality.

System Analysts – Analyze business requirements.

15
Q

What is the software development process?

A

The sequence of activities that lead to a software product, including specification, development, validation, and evolution.

16
Q

What is the importance of a systematic approach in software engineering?

A

Efficient resource management.
High-quality and maintainable software.
Cost and time predictability.