Final Exam Flashcards
How should you design the architecture if “security” is the main concern?
Use a layered architecture with critical assets in the inner layers.
Explain how performance requirements can influence architecture?
If performance is the priority the best option is to localize critical operations and minimize communications.
Explain the Pipe and Filter architecture.
The processing of the data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. The data flows (as in a pipe) from one component to another for processing.
Give at least four structural decisions.
What architectural patterns or styles might be used?
What will be the fundamental approach used to structure the system?
How should the architecture of the system be documented?
Is there a generic application architecture that can act as a template for the system that is being designed?
Explain the Repository architectural pattern.
All data in a system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository.
How should you design the architecture if “availability” is the main concern?
Include redundant components and mechanisms for fault tolerance.
What is a design pattern?
A design pattern is a way of reusing abstract knowledge about a problem and its solution. A pattern is a description of the problem and the essence of its solution.
Explain the Observer pattern
Separates the display of the state of an object from the object itself and allows alternative displays to be provided. When the object state changes, all displays are automatically notified and updated to reflect the change.
What are the different levels of software reuse?
The abstraction level: At this level, you don’t reuse software directly but use knowledge of successful abstractions in the design of your software.
The object level: At this level, you directly reuse objects from a library rather than writing the code yourself.
The component level: Components are collections of objects and object classes that you reuse in application systems.
The system level: At this level, you reuse entire application systems.
People not process:
The skills of the development team should be recognize and exploited. Team members should be left to develop their own ways of working without prescriptive processes.
Embrace change:
Expect the system requirements to change and so design the system to accommodate these changes.
How are the requirements expressed in agile processes?
They are expressed in user stories. These user stories are short, simple descriptions of a feature or functionality from the perspective of an end user, focusing on the value it provides and often written in a non-technical language.
How and when is testing done in Extreme Programming (XP)?
All tests must be run for every build and the build is only accepted if tests run successfully.
Explain what the staging area in Git is?
The staging area in Git is an intermediate area where commits can be formatted and reviewed before completing the commit. It is a middle ground between what you have done to your files and what you have last committed.
Why is it important to be able to reproduce a particular release?
In software engineering, it’s important to be able to recreate a specific version of the software to keep things consistent in different settings, fix bugs easily, test thoroughly, follow industry rules, and quickly undo or apply changes if problems arise.
What do you understand by change management?
Change management is the process of controlling changes to a system, so that the impact of changes is predictable and costs are controlled.
What functionalities are offered by a Version Control System (VCS)?
Version and release identification, Change history recording, Support for independent development, Project support, Storage management
Explain what a branch in git is and what the “merge” operation does.
The creation of a new codeline from a version in an existing codeline. The new codeline and the existing codeline may then develop independently.
Give some of the factors that should be taken into account during change analysis.
The consequences of not making the change, The benefits of the change, The number of users affected by the change, The costs of making the change, The product release cycle
What are the advantages of a distributed VCS over a centralized one?
Centralized systems, where there is a single master repository that maintains all versions of the software components that are being developed. Subversion is a widely used example of a centralized VC system. Distributed systems, where multiple versions of the component repository exist at the same time. Git is a widely-used example of a distributed VC system.