Introduction to Software Engineering Flashcards
(17 cards)
What is Software?
Software is more than just a program. It includes the code, libraries, and documentation used to solve a problem.
Types of Software Products
Generic Products: These are ready-made software products. Anyone can buy and use them. (Example: Microsoft Word, Photoshop.)
Customised Products: These are made specially for a particular customer. They are designed to meet specific needs.
What is Software Engineering?
Software engineering is the scientific and planned process of creating software. It uses defined methods, principles, and tools. The goal is to make high-quality, reliable software that meets user needs.
IEEE Definition of Software Engineering
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.
What are the two Key Techniques in Software Engineering
Abstraction
Decomposition
What is Abstraction?
Hiding unnecessary details to focus on what’s important.
Example: When driving a car, you don’t need to know how the engine works.
What is Decomposition?
Breaking a big problem into smaller, manageable parts.
Each part is easier to understand and solve.
Why Do We Need Software Engineering?
Software is getting larger and more complex.
User needs keep changing.
The environment (devices, systems) also changes.
We need a scientific way to: Build large software, maintain it, control costs and ensure quality
Challenges Without Software Engineering (Ad Hoc Development)
No planning
No clear goals or stages
Poor understanding of user needs
No checks or reviews
Developers may not be skilled
Budget and time are often misjudged
This leads to: Delays, High costs, Poor quality software, Software that doesn’t solve the problem
How to Build Good Software
Estimate time and cost
Plan and schedule the work
Work with users to understand what they need
Break development into stages
Set goals (milestones) to track progress
Review the work regularly
Test the software well
Clearly define what will be delivered
Why is It Difficult?
Users want easy-to-use and fast software.
Developers focus on writing code and using databases.
Managers care about cost, schedule, and business benefits.
Characteristics of Good Software
Good software must meet three main areas:
Operational – How well the software works
Transitional – How easily the software can be moved or connected
Maintenance – How easy is it to update or fix the software
What are Operational Characteristics?
Correctness – Does it give the right result?
Reliability – Does it work well under different conditions?
Efficiency – Does it use computer resources wisely?
Usability – Is it easy to use?
Security – Does it protect data and prevent misuse?
What are Transitional Characteristics?
Portability – Can it run on different systems easily?
Interoperability – Can it work with other software?
Installability – Is it easy to install and set up?
What are Maintenance Characteristics?
Modularity – Is it built in small parts that work independently?
Flexibility – Can we easily make changes?
Extensibility – Can we easily add new features?
Why do software projects fail?
No planning
Poor understanding of users
Late delivery
Over budget
Low quality
Hard to fix
How to build good software?
Estimate cost/time
Plan the process
Talk to users
Set milestones
Review progress
Test well