Version Control & Software at Scale Flashcards

1
Q

What are the benefits of Git?

A

backups, so software isn’t lost
distinct configurations and versions
safe experimentation

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

What is Git?

A

Software systems can be highly complex and change frequently. For large projects, many interconnected components are created by teams of engineers each making their own contribution.

To manage this complexity, tools and techniques have been developed to keep track of development activity and the artefacts created and modified.

Git enables safe and efficient collaboration between contributors to large software projects.

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

What is a distributed version control system?

A

For most large projects we use Git as a “distributed” version control system. This usually means there will be a central “upstream” software repository that contributors to the project will “pull” from and “push” to. Each contributor has their local copy of the repository.

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

What is Git hosting?

A

Git hosting is the provision of shared (upstream) repositories. This provides a safe, though not necessarily private, storage space for all software artifacts.

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

What are examples of git hosting?

A

GitHub
GitLab
BitBucket

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

What is version management?

A

Software systems are constantly changing during development and use. In a good project change is welcomed to eliminate bad code. Policies, processes and tools for managing changing software systems are essential.

Version management must ensure changes made by different developers do not interfere with each other. Where conflicting changes occur software tools, e.g. Git, allow us to resolve these.

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

What is release management?

A

Release management is preparing software for external release and keeping track of the system versions that have been released for customer use.

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

What is change management?

A

Change management is tracking and prioritising requests for changes from customers and developers.

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

Why are agile projects more dependent on version control?

A

Agile development teams try to reduce the amount of documentation and project management overhead, but in doing so actually they’ve become even more dependent on good version control software.

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

What is a centralised version control system?

A

Centralised where there is a single master repo

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

What are the two types of version control systems?

A

Centralised and distributed

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

Are project requirements deliberately vague?

A

Requirements for a projects are deliberately vague. In particular when a requirement document is prepared as part of a tender document it should be designed to attract multiple bids, and the associated requirements should anticipate more than one kind of solution. Also, Some technologies can change rapidly, yet for large systems the time between gathering requirements and delivering the solution can be many years.

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

What is requirements engineering?

A

Requirements engineering is the process through which a project will clarify the customer needs and operating constraints, that is the functional and non-functional requirements. In most cases two rather different documents will be produced. User requirements, written in language that both customer and supplier understand. And system requirements, detailed description of both the functional and non functional requirements.

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

What is the purpose of a requirements document?

A

When developing the requirements documents it is important to keep sight on the purpose of the document. We are not wishing to capture every detail of environment, regulations, risks, and so on. We are looking to document those requirements that determine the architecture of the solution. In doing so we must also recognise that the component, their functional requirements, will also impact on non-functional requirements.

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

Can requirements change?

A

Requirement can, and do, change during the development of a system. In the case of functional requirements, the typical development workflow can handle these quite well. Issues are raised and recorded, changes agreed, etc. all the way through to testing and deployment. In the case of non-functional requirements, these can sometimes be impossible to resolve. These could be changes in regulations, business restructuring, security requirements, etc. Ultimately these may even force a project to restart, or even be abandoned.

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

Is design and implementation interleaved?

A

Design and implementation are interleaved, design informs implementation but designs for large systems are never perfect.
Implementation is the realisation, and therefore also the refinement, of the design.

17
Q

What goes into system implementation?

A

Implementation is not just building the system it can also include sourcing components, configuring packages, procuring “cloud” services. Understanding and specifying the external environment can be a significant part of software design and implementation.

18
Q

What are implementation skills?

A

Implementation skills doesn’t just include coding, rarely designing algorithms, it also includes:

Design documents - UML
Reuse – libraries, APIs, stacks, platforms
Development environments – IDEs, version
control, emulators, target systems

19
Q

What is the ever changing toolkit?

A

Software engineering is constantly changing, this includes changing of tools, languages, frameworks, methodologies…

Waterfall is a good example of this as now it is a somewhat old methodology but is still important to know. In particular when talking about requirements engineering as it takes a waterfall approach.

20
Q

What are the two ways to cope with change?

A

There are two ways to cope with change:

Anticipate change – know what is happening around us: the release cycle is for tools, operating systems, even hardware.
Prepare for change – design your software, and development processes to accommodate change. e.g. customers using an old OS.

21
Q

Learning from case studies….

A

Every project adds to your knowledge. Software is easily replicated, so software engineers are never asked to create exactly the same thing twice. Every project is different, and new.

Software does not wear out, but can quickly become obsolete. Some software has a very long life, for example banking systems.

The fundamental ideas of software engineering are applicable to all types of software system. Each type of system requires appropriate software engineering tools and techniques.