Revision Flashcards
What are architecturally significant requirements(ASRs)?
The requirements that drive a systems software architecture. Quality attributes, core features, constraints, application environment.
What is a software architecture?
The overall structure of a software system.
Tells the devs the overall shape of the software system and how to use various technologies.
What is an architectural pattern?
Codifies recurrent software architectures by describing key elements of the architecture and how they fit together.
What is a design pattern?
A reusable solution to design problems
What is verification in testing terms?
Has the product been built right?
What is validation in testing terms?
Has the right product been built?
What are software quality factors?
Correctness, reliability, integrity, maintainability, usability,…
What is cyclomatic complexity metric?
The number of independent paths through a method body
What is black-box testing?
Black-box testing is a method of testing software functionality based on tests cases from the specification.
What is white-box testing?
The testing of the internal structure of a software system.
What is the logical (functional) view?
Describes the system’s main functional elements and their interactions
What is the process view?
Describes the independently executing processes that exist at run-time and the communication between them.
What is the deployment view?
Describes how the system will be deployed to an operating environment of physical computers and networks
What are logical view artefacts?
Class and object diagrams, sequence diagrams, package diagrams.
What is the defining quality of a good software system, and what are its main characteristics?
That it meets the user’s needs. It useful, usable, flexible, available, affordable and reliable.
How might greater flexibility make a software system more affordable over its whole life?
Makes it easier to correct any errors and therefore reduce the number of staff and the amount of time needed on the project.
Give 2 reasons why a delivered software system might not meet its users’ needs
Missing some of the user’s desired functionality and is unreliable.
Suggest a means of measuring the maintainability of a software system
How easy it is for a developer to track and fix bugs and for them to implement new features to meet the users’ needs
What can we learn from legacy systems about developing a good software system?
Well documented systems rely less on the people initially involved with developing the system.
Suggest a reason why legacy systems will always be a problem.
Malleable software allows developers to bolt on and change the software
Why might you consider splitting up a large project into smaller chunks?
Decomposing a large project into smaller chunks you can assign individuals to separate tasks where it will be easier to understand each of the solutions and problems of the task required.
How does the complexity of a software system affect the maintenance task?
making changes to it or finding the solutions to any problems can become very costly and time consuming.
What is a module?
A module is a smaller subsystem of a larger overall system. In OOP a module can be a class, or a method in a procedural language.
Why does it help to have low coupling in a software system?
As it allows changes to be made to one module without making changes to others, can replace a component easier.