#Computer-Science#CS307#Software-Engineering IEEE: (1) the application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of Software; that is, the application of engineering to software. (2) the study of approaches as in (1).
- The goal of software engineering is solving problems within constraints
- Cost
- Time
- Customer
- Others
- And doing it with rigor
- Solutions require effective communication
- Sometimes you can solve problems by assembling pieces from existing components
Systematic Development and Evolution
- An engineering process involves applying well understood techniques in an organized and disciplined way
- Many practices have been formally standardized
- Most development is evolutionary
- Techniques are needed because systems have constraints
- Time constraints, knowledge/capacity constraints, finite resources etc.
Software Engineering
- Term software engineering was coined in 1968
- People began to suggest that the principles of engineering should be applied to software development
- Engineering is a licensed profession
- You need a license, so the public stays protected
- Software engineering is not. There was an attempt for there to be one at one point
- Ethical practice is a key tenet of the profession
- In many countries, software engineering does not (yet) require an engineering exam or license
- Differences with other engineering fields
- Foundations are primarily in computer science as opposed to natural sciences
- Focus on discrete rather than continuous mathematics
- Concentrates on abstract/logical entities instead of concrete/physical artifacts
- No manufacturing phase
- Maintenance is usually continued development or evolution not conventional wear and tear
- Commonalities with other engineering fields
- Engineers proceed by making a series of decisions, carefully evaluating options, and choosing an approach at each decision point that is appropriate for the current task in the current context
- Appropriateness can be judged by trade-of analysis, which balances cost against benefits
- Engineers measure things and when appropriate work quantitatively; they calibrate and validate their measurements; and they use approximations based on experience and empirical data
- Engineers emphasize the use of a disciplined process when creating a design and can operate effectively as part of a team in doing so
- Engineers can have multiple roles
- Research, development, design, production, testing, construction, operations, management, and others such as sales, consulting, and teaching
- Engineers use tools to apply processes systematically. Therefore the choice and use of appropriate tools is key to engineering
- Engineers, via their professional societies, advance by the development and validation of principles, standards, and best practices
- Engineers proceed by making a series of decisions, carefully evaluating options, and choosing an approach at each decision point that is appropriate for the current task in the current context