Chapter 1 Flashcards
(52 cards)
Four dimensions of Software Engineering
Technology
People
Quality
Economy
Software engineering is concerned with (three aspects):
Theories
Methods
Tools
What dominates the computer system costs more: hardware or software?
Software
What usually drains more funds: development or maintanance?
Maintanance, due to bug fixes, evolution
Why do software projects fail? (6+2 reasons)
- Too little time
- Project getting too complex/convoluded
- Failure to include new technologies
- Lack of funding
- Being beaten by competition
- Not using software engineering methods
- Incompetent / corrupted management
- Bad/outdated development tools
Why is the software development without the use of software engineering methods inferior? (3 reasons)
- Project gets unproportionally harder as it grows
- Difficult for other developers to help or to continue the development
- Software is poorly written, therefore more expensive and less reliable
What is software composed of (2 things)?
Computer programs + documentation
What are the 2 types of software customers?
- Particular customer that orders the software
- Buyers on general market
Good software should deliver required: (2 things)
- Functionality
- Performance
Good software should be: (4 things)
- Usable (can be accessed)
- Dependable (can be trusted with)
- Maintainable (can be modified)
- Efficient (responsive and non-wasteful)
Definition of software engineering (as a discipline):
Engineering discipline concerned with all aspects of software production
4 fundamental software engineering activities
- Specification - Planning
- Development - Creating
- Validation - Testing
- Evolution - Upgrading
What computer science and software engineering fundamentally differ in? (what do they focus on in the context of software)
Computer science - theory and fundamentals
Software engineering - practicalities of software development
How does system engineering and software engineering relate?
System engineering is a broad term that focuses on many aspects of computers (like hardware, communication) including software engineering
3 key challenges in software development
- Faster delivery
- Trustworthy software
- More capabilities
Dev/Test average costs proportions
60% dev, 40% test
What is the best set of software engineering techniques and methods
There is no single set. Each should be chosen according to the type of developed software
How the web impacted software dev? (what became available/what did it advance)
Made available:
- More software services
- Highly distributed, service-based systems
- Software for reuse
Advanced:
- Programming languages
2 types of software products (in relation to customer type)
- Generic producs (put on market)
- Customised product (for an ordering customer)
What does it mean, that the software is maintainable?
Can evolve up to customer’s needs and business changes
What does it mean, that the software is dependable?
- Would not cause physical or economical damage (due to system failure)
- Is consistent and predictable
What does it mean, that the software is secure?
Prevents corruption, leaks and theft of important/critical information by malicious software
What does it mean, that software is efficient? (what it shouldn’t and should?)
Shouldn’t waste system resources (CPU time, memory, …)
Should increase performance (responsiveness, processing time, …)
What does it mean, that software is acceptable?
User must just accept it, which actually means that it has to be:
- Understandable
- Usable
- Compatible with user’s system(s)