Final Exam Flashcards

1
Q

How should you design the architecture if “security” is the main concern?

A

Use a layered architecture with critical assets in the inner layers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Explain how performance requirements can influence architecture?

A

If performance is the priority the best option is to localize critical operations and minimize communications.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Explain the Pipe and Filter architecture.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Give at least four structural decisions.

A

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?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explain the Repository architectural pattern.

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How should you design the architecture if “availability” is the main concern?

A

Include redundant components and mechanisms for fault tolerance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is a design pattern?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Explain the Observer pattern

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the different levels of software reuse?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

People not process:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Embrace change:

A

Expect the system requirements to change and so design the system to accommodate these changes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

How are the requirements expressed in agile processes?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

How and when is testing done in Extreme Programming (XP)?

A

All tests must be run for every build and the build is only accepted if tests run successfully.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Explain what the staging area in Git is?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Why is it important to be able to reproduce a particular release?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What do you understand by change management?

A

Change management is the process of controlling changes to a system, so that the impact of changes is predictable and costs are controlled.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What functionalities are offered by a Version Control System (VCS)?

A

Version and release identification, Change history recording, Support for independent development, Project support, Storage management

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Explain what a branch in git is and what the “merge” operation does.

A

The creation of a new codeline from a version in an existing codeline. The new codeline and the existing codeline may then develop independently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Give some of the factors that should be taken into account during change analysis.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What are the advantages of a distributed VCS over a centralized one?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Explain the difference between validation and defect testing.

A

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.

22
Q

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?

A

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.

23
Q

Depending on the granularity, how can testing be categorized?

A

Development testing, Test-driven development, Release testing, User testing

23
Q

Depending on which part of the code is being tested, which kinds of development testing we have?

A

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.

24
Q

What is the idea behind partition testing?

A

Partition testing, where you identify groups of inputs that have common characteristics and should be processed in the same way.

25
Q

What objective criteria can we use to decide how much we should test?

A

The amount of software testing needed depends on things like how well the requirements are covered, the risks involved, the impact on the business, how complex the code is, the effect of code changes, usability needs, regulatory rules, available resources, what customers expect, past issues, how well tests can be automated, and the progress and results of ongoing tests.

26
Q

What are the principles of Test-Driven Development (TDD)?

A

Code coverage: All code written has at least one test.
Regression testing: A regression test suite is developed incrementally as a program is developed.
Simplified debugging: When a test fails, it should be obvious where the problem lies.
System documentation: The tests themselves are a form of documentation that describe what the code should be doing.

27
Q

What is the difference between functional and non-functional requirements?

A

Functional requirements: Services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. May state what the system should not do.
Non-functional requirements: Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. Often apply to the system as a whole rather than individual features or services.

28
Q

What is the difference between user and system requirements?

A

User requirements: Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for customers.
System requirements: A structured document setting out detailed descriptions of the system’s functions, services and operational constraints. Defines what should be implemented so may be part of a contract between client and contractor.

29
Q

Give examples of at least 4 types of non-functional requirements.

A

Product requirements, organizational, external, efficiency, dependability, security, ethical, performance, usability

30
Q

What is the difference between plan-based and agile processes?

A

The main difference between plan-based and agile processes is their approach to project management: Plan-based processes focus on detailed planning at the start and following a set order of steps. Agile processes, on the other hand, focus on being flexible, working in small steps, and adapting quickly to changes as they happen.

31
Q

What are the main drawbacks of waterfall model?

A

The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase.

32
Q

Why is it easier to embrace change in incremental development processes?

A

It’s easier to embrace change in incremental development processes because the system is built and delivered in smaller, manageable chunks.

33
Q

What do you understand by a life-cycle model?

A

A life-cycle model, refers to a framework or methodology that outlines the stages involved in the development of a software product from inception to retirement.

34
Q

What is the key idea behind the spiral life-cycle model?

A

The spiral life-cycle model focuses on iterative development, with an emphasis on managing risks by continuously improving the product through repeated cycles of planning, risk analysis, development, and evaluation.

35
Q

What is the main characteristic of agile development methods (XP, Scrum, …)?

A

The main characteristic of agile development methods is their iterative and incremental approach, where software is developed and delivered in small, frequent increments, allowing for continuous feedback, adaptation, and collaboration throughout the development process.

36
Q

git init:

A

Purpose: Initializes a new Git repository in your project. This command sets up the necessary metadata (like the .git directory) to start tracking changes in your files.
Use Case: When starting a new project and you want to use Git to track changes, you run git init in the project directory.

37
Q

git push:

A

Purpose: Sends your committed changes to a remote repository, such as GitHub or GitLab. It updates the remote repository with your local changes.
Use Case: After committing your changes locally, you run git push to upload those changes to the remote repository so others can see or collaborate.

38
Q

git commit:

A

Purpose: Records changes to the repository. A commit acts like a snapshot of the current state of your files and includes a message explaining the changes.
Use Case: After staging your changes with git add, you run git commit to save those changes into the project history.

39
Q

git merge:

A

Purpose: Combines changes from different branches into one. It merges the changes from the specified branch into your current working branch.
Use Case: After working on a feature branch, you run git merge to combine the feature branch into the main branch.

40
Q

git branch:

A

Purpose: Manages branches in your repository. You can create, list, or delete branches.
Use Case: Use git branch to create a new branch for developing a feature or list all branches in your repository.

41
Q

git add

A

Purpose: Adds changes from the working directory to the staging area, preparing them for a commit. This command tells Git which files or parts of files you want to include in the next commit.
Use Case: After making changes to files, use git add to stage them so that they will be included in the next commit. Without adding them to the staging area, Git won’t include these changes when you commit.

42
Q

Layered architecture

A

Organizes the system into layers with related functionality associated with each layer. A layer provides services to the layer above it so the lowest-level layers represent core services that are likely to be used throughout the system.

43
Q

MVC (Model-View-Controller)

A

Separates presentation and interaction from the system data. The system is structured into three logical components that interact with each other. The Model component manages the system data and associated operations on that data. The View component defines and manages how the data is presented to the user. The Controller component manages user interaction (e.g., key presses, mouse clicks, etc.) and passes these interactions to the View and the Model.

44
Q

Repository

A

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.

45
Q

Client Server

A

In a client–server architecture, the functionality of the system is organized into services, with each service delivered from a separate server. Clients are users of these services and access servers to make use of them.

46
Q

If security is the main concern:

A

Use a layered architecture with critical assets in the inner layers.

47
Q

If maintainability is the main concern

A

Use fine-grain, replaceable components.

48
Q

If safety is the main concern

A

Localise safety-critical features in a small number of sub-systems.

49
Q

What is extreme programming?

A

Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.
New versions may be built several times per day;
Increments are delivered to customers every 2 weeks;

50
Q

Architectural views:

A

Logical, physical, development and process view