Software Engineering Profession Flashcards
Software Engineering based on Wang & King
Software engineering is a discipline that adopts engineering approaches, such as established methologies, processes, measurement, tools, standards, in the development of large-scale software seeking to result in high-productivity, low cost, and measurable development schedule.
Software Engineering by John A McDermid?
Software engineering is the science and art of specifying, designing, implementing and evolving - with economy, timeliness and elegance - programs, documentation and operating procedures whereby computers can be made useful to man.
Ian Somerville definition of Software Engineering?
Software Engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance.
Wang and King?
An engineering discipline.
Large scale software
Characteristics of Software Engineering?
- Inherent complexity and diversity
- Difficulty of establishing and stabilizing requirements
- Changeability or malleability of software
- Abstraction and intangibility of software
- Requirement of various problem-domain knowledge
Engineering Dimensions?
Size Cost Quality Lifetime Measurability Repeatability Reusability
What is Size dimension?
Size of problem and its solution
- More than 5000 LOC
- Size of team, more than one person often tens or hundreds of people
What is Cost dimension?
Cost of the problem
- Minimal cost, high productivity
What is Quality dimension?
Quality of the solution
- Suitability, Maintainability, Extensibility, Reliability, Dependability, Efficiency
What is Lifetime dimension?
Lifetime of the system
- A system that endures and exceeds the lifetime of involvement of original developers
What is Measurability dimension?
Measurability
- Based on the evidence provided by concrete metrics
What is Repeatability dimension?
Capable of achieving the same result with the same constraints and process
What is Reusability dimension?
Capable of reusing and building on existing artefacts to solve similar problems
Software Trade-Off Triangle?
Schedule
Cost
Product
What do Software Engineers do?
- Engineers carry out a task by making series of decisions.
- Engineers measure things, 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 team in doing so.
- Engineers can have multiple roles: research, development, design, production, testing, construction.
Why is Software Engineering difficult?
Cognitive Constraints
Organizational Constraints
Resource Constraints