Final Exam Flashcards
(51 cards)
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.
Explain the difference between validation and defect testing.
Validation testing: To demonstrate to the developer and the system customer that the software meets its requirements. A successful test shows that the system operates as intended. Defect testing: To discover faults or defects in the software where its behavior is incorrect or not in conformance with its specification. A successful test is a test that makes the system perform incorrectly and so exposes a defect in the system.
You are testing a field that accepts a mobile phone number. Knowing that all mobile phone numbers have the format 07# ### ###, which values you need to use for testing?
I would need the first two values to check if they’re 0 and 7 after that just test if the field accepts as many values as it should.
Depending on the granularity, how can testing be categorized?
Development testing, Test-driven development, Release testing, User testing
Depending on which part of the code is being tested, which kinds of development testing we have?
Unit testing: This tests small pieces of the program, like individual functions or classes, focusing on making sure they work as expected.
Component testing: This checks how several units work together as larger components, focusing on the connections between them.
System testing: This tests the entire system by combining all the components, focusing on how they interact with each other.