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.
What are the context dependencies of a module? How do they relate to a module’s interface?
The context dependencies of a module are the other modules that the module requires in order to carry out its task.
What are the benefits of using modules with defined interfaces?
You will know what to expect from a module and the services it provides. Possibility of module reuse. Irrelevant modules are avoided
Why does it help to have high cohesion in the modules of a software system?
modules are more tightly related to each other and each module will carry out a specific task. This means its purpose is clear.
What characteristics should a module display that will help to ensure that it is easy and cheap to develop and maintain and that errors are kept to a minimum?
The right balance between low coupling (its dependency on other modules) and its high cohesion (the task require of the module)
Why is it important to achieve a balance between coupling and cohesion?
You may end up with smaller loosely coupled and less cohesive modules or a larger set of tightly coupled more cohesive modules.
What are the characteristics of a component?
It is sufficiently good abstraction for the problem in hand.
Capable of being reused in future projects with same architecture.
Well defined interface.
How does the concept of an architecture contribute to component reuse?
Embodies high-level decisions about the overall structure of the system and this may apply to more than one system.
Which form of decomposition might be used in a software architecture?
Basic form of decomposition used in software architecture is partitioning addressed by a subsystem. Eg, separate the UI layer from the core business services.
What are the similarities and differences between components and services?
Both are units of reuse
Both have their own interfaces
Component is tech dependent, service is tech neutral.
Give the characteristics of an engineering approach that support the argument that software development is an engineering discipline.
Validation and verification are essential as building the software itself
Makes use of tools and standards
Follows a code of practice
What is a development process?
A development process is a set of rules and activities that define how a software development project should be carried out.
What should the role of project management be with respect to the deliverables of a development project?
Identifying an appropriate set of requirements and controlling the cost of producing them.
Suggest a reason why maintenance is a core activity in the development of a good software system
It allows the software system to evolve, allows errors to be corrected, adapting to changing environments, introduce enhancements and improve the software
What are the assumptions on which the waterfall model is based?
That when one particular activity is completed it will not be revisited.
Why are there additional risks when developing large projects?
Implementing different teams work on a project. Need for good communication between teams.
Why is traceability important to the development of software?
Able to trace backward from an implemented component(s), through their design to a given requirement.
How does documentation contribute to traceability within a development project?
The documentation records the progress from requirements to implementation.
For what kind of software system might you minimise or even avoid any documentation?
If the software system has a short lifespan or will be discarded after use.
How would you characterise agile documentation
Simple to understand, a well defined purpose and maximise the payoff in the effort of producing it
What is a model?
It is an abstract representation of a situation in reality, or of a system from a particular pov