Inf 43 Quiz 1
What is software engineering?
"Multi-person construction of multi-version software." - Parnas
business
- Cost of developing (purchasing) software - Time to market of product - Profit that will be made from (sale of?) software
design
- External quality of the software - Deals with everything the user sees and experiences - Is it usable? Does it crash? - Usability engineering, UI design ← needed for a good job in design perspective
metrics
a standard of measure of a degree to which a software system or process possesses some property
abstraction
i.e. requirements document, users don't have to know all the details behind software to know how to use it
incrementality
showing user and adjusting
conformity
software must conform to human institutions and systems
rigor and formality
striving for quality, not just hacking; do what's best in the long run
Royce's principles of SE
- Follow an architecture-first process - Use component-based development (buy vs. build) to reduce the coding effort - Show the customer preliminary versions of the software frequently - Have incremental releases
engineering
- Internal quality of the software matters MOST - quality design and architecture
Davis's principles of SE
- Make quality number 1 - Give products to customers early - Understand the problem first - Choose an appropriate process - Good management is more important than good technology - People are the key to success
Wasserman's Principles of SE
- Modularity - Abstraction - User interface (UI) prototyping - Reuse - Metrics
Inf 43 Recurring, Fundamental Principles of Software Engineering (5)
- rigor and formality - separation of concerns (modularity, divide and conquer, abstraction) - anticipation of change - generality - incrementality
complexity
- "...a construct of interlocking concepts: data structures and classes, algorithms, function calls." - "No two parts are alike." - Difficult communication - Difficult to modify/extend - Unreliability - Security trapdoors
changeability
- "All successful software gets changed." - Why? - Because it can - Because people always want it to
invisibility
- "The reality of software is not inherently embedded in space." - Difficult understanding - Difficult communication
"potential silver bullets" on the essential difficulties
- Buy vs. build - Requirements refinement and rapid prototyping - Incremental development - Great designers
Essential Difficulties of Software Engineering
- complexity - conformity - changeability - invisibility
3 perspectives on software engineering
1) business 2) engineering 3) design
3 essential ingredients of software engineering
1) people (most important) 2) process 3) tools