SOFT2412: Agile Software Development Practices
Question 1:
(16 marks)
The following questions are on Git and version control systems.
a) To what extent would you consider Git to be a distributed version control system? Justify your answer by referring to specific features and commands
available for developers to use from the command-line.
b) Discuss the role of version control systems in Agile methodologies. How do version control practices support Agile principles such as adaptability, continuous improvement, and frequent iterations? Provide specific examples to illustrate your points.
c) What are the differences between a distributed and centralised control system? Discuss 3 advantages and 3 disadvantages of each. You may wish to discuss how these systems facilitate collaboration, conflict resolution and version tracking in your response.
Question 2:
(20 marks)
You are part of an Agile team working on OpenHealth, a new open-source project for a webbased patient records platform hosted on GitHub. The project is gaining contributors, but faces technical challenges related to Git usage, proprietary code inclusion and licensing.
During the implementation of a new data encryption feature, one of your team members, Rick, inadvertently pushes code containing proprietary elements from a previous employer. Meanwhile, the team is also considering the most appropriate open-source license for OpenHealth.
a) Detail the technical steps using Git commands to revert changes that include proprietary code. Discuss the use of commands like ‘git revert‘ and ‘git reset‘, and their implications in a collaborative project.
b) Analyze two different open-source licenses, focusing on their technical aspects and compatibility with the project’s goals. How does the choice of license
impact future contributions and project forks?
c) Propose a Git workflow strategy to prevent the inclusion of proprietary code in future contributions. Discuss how this strategy integrates with Agile practices and CI/CD pipelines.
d) Explain how Git encourages collaboration and quality control through branch management and pull requests.
e) Discuss the role of protected branches and automated build checks using software such as Jenkins in maintaining code quality and consistency.
Question 3:
(20 marks)
You are applying for a junior backend developer position at a major international IT company. Before you go for an interview, you decide to do some research on the company and discover that their server-side systems are written in Java and they use Agile methodologies.
a) The company uses Gradle for the majority of its projects. Describe what Gradle is and the purpose/benefit of using it in backend components.
b) It is well-known that software development tools, Gradle included, can introduce compatibility-breaking changes in major version updates. In a teamwork
environment, how can developers ensure that they can achieve the same build process regardless of the Gradle version on their local machine?
c) The company has also set up its own Jenkins server cluster. Briefly explain what Jenkins is.
d) Summarise why Jenkins is widely used in software development projects, especially Agile projects. You may wish to discuss aspects such as automation,
compatibility and CI/CD practices.
e) Many project teams use Jenkins webhooks in their code repository. Briefly explain the purpose of these webhooks and discuss how they increase development efficiency.
Question 4:
You have recently joined a tech firm that specialises in e-commerce and retail IT solutions as a junior developer. Your team lead, Sarah, tells you that the team is starting to adapt to Continuous Integration (CI) practices.
a) What does adapting CI mean to your daily workflow as a developer? You may provide an example in your answer.
b) What are the main benefits of adapting CI in software development projects?
c) Given the fierce competition in the market, the company is expecting your team to push out new features quickly and frequently. Discuss how this can be done with CI practices.
d) The team is still discussing whether they will adapt to Continuous Delivery or Continuous Deployment practices for their next project. Discuss the differences between these two, using examples if necessary
咨询 Alpha 小助手,获取更多课业帮助