Version Control & Software at Scale Flashcards
What are the benefits of Git?
backups, so software isn’t lost
distinct configurations and versions
safe experimentation
What is Git?
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.
What is a distributed version control system?
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.
What is Git hosting?
Git hosting is the provision of shared (upstream) repositories. This provides a safe, though not necessarily private, storage space for all software artifacts.
What are examples of git hosting?
GitHub
GitLab
BitBucket
What is version management?
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.
What is release management?
Release management is preparing software for external release and keeping track of the system versions that have been released for customer use.
What is change management?
Change management is tracking and prioritising requests for changes from customers and developers.
Why are agile projects more dependent on version control?
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.
What is a centralised version control system?
Centralised where there is a single master repo
What are the two types of version control systems?
Centralised and distributed
Are project requirements deliberately vague?
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.
What is requirements engineering?
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.
What is the purpose of a requirements document?
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.
Can requirements change?
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.