Software Engineering Overview Flashcards
Characteristics of a Software Engineering project
Large scale Specific set of requirements Limited time/budget working in a team environment More than one version Follows software engineering guidelines
4 factors of software development
Time
Money
Quality
Functionality
Success factor of software development
Productivity
Money - more work done in less time results in lesser cost
Functionality - reduced time allows for more features
Quality - reduced time allows for better polish
Define: Correctness
“Building the right system”
A measure of how well the software follows the client specifications
Define: Robustness
“Building the system right”
A measure of how well the software operates outside the given parameters
Define: Maintenance
The continuous correction of errors, and updating of construction of a software project, in order to keep it up to date with changing requirements/specs.
Also ensures security, efficiency and robustness
Symptoms of a difficult to maintain system
A maintainable system should have high cohesion and low coupling. If a system has high coupling, this could make it difficult to maintain.
Define: Interface
A contract between the software system and the environment I.e. a keyboard is an interface between the user and a word processing program
Why not no interfaces?
No interfaces means that there is no way for the environment to interact with the software system, and for many projects, environmental interaction is a critical component. Very few software projects are self contained.
Benefits of reusing software components
Saves development time significantly
Prevents accidental mistakes from sneaking into already verified methods
Drawbacks of reusing software components
Code reuse results in dependency from the source of the component
Increases system coupling
Why is Software Engineering considered to be in a ‘crisis’
Many projects are cancelled, finish up to 10x over budget and 2x late.
Why isn’t the crisis over?
Software Engineering is a new discipline, still growing and changing. Peoples expectations are growing faster than the practises of the discipline
What is the relationship between interface size and
maintainability of a component?
A larger interface will mean that a component is less maintainable, as there is more being guaranteed by the system.
What is the relationship between interface size and
maintainability of a component?
A larger interface will mean that a component is less maintainable, as there is more being guaranteed by the system.
A component with a good interface size will be: