WFU
Fundamental of software engineering: Introduction
Introduction
- What is software? Not hardware, procedure documentation, data
- Type of application: application, system
- Craft (hacking) + science (computer science) + engineering (software engineering)
- Software engineering :
- real products for real people
- based on scientific principle
- require academic background
- repeatable, well-defined procedures and processes.
Origin
- Definition: the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machine.
- Software crisis: late and over-budget, poor quality, code hard to maintain, customers and users not happy, project difficult to manage. ⇒ complexity
Complexity
- Numbers of interactions between lines of code
- Moore’s law: density of transistors on a chip will double every two or so years
- corollaries: RAM size in a computer, hard drive space in a computer, internet bandwidth.
- Complexity trend:
- max line of code: n = 2^t
- max interaction: n =n*(n-1)/2
Goals and Principles
- Goals: modifiability, efficiency, reliability, usability
- Principles:
- modularity (reduce complexity, divide and conquer)
- abstraction
- encapsulation (high cohesion, low coupling)
- 4c (correct, complete, consistent, confirmable)
Is software engineering a profession
- Organization: ACM, IEEE-CS