IT3030 - Programming Applications and Frameworks
IT3030 - Programming Applications and Frameworks
Final Examination
Year 3, Semester 1 (2023)
Duration: 2 Hours
Instructions to Candidates:
2. Name three (3) software frameworks that you have used and explain the reasons for
utilizing those rather than building a solution from scratch.
(5 marks)
3. A common habit among the software developers nowadays is to learn how to use a
software framework rather than leaming in-depth about the programming language the
frameworkisbasedon(e.g.,justleamingtousethefeaturesofaJavascriptframework
without an in-depth knowledge of Javascript). Do you think this practice is good?
Briefly discuss and justify your position with four (4) reasons.
( 1 0 marks)
4. "Inversion of Control" is a concept widely associated with software frameworks.
Explain with an example what this concept is and highlight how the flow of an
application is impacted by utilizing this concept within a framework.
(8 marks)
(2 marks)
2. Compare and contrast Distributed version control systems (DVCS) with Centralized
version control systems (CVCS). Clearly highlight the differences in approaches to
version controlling in each method.
(4 larks)
3. Git is a very popular Distributed VCS. Even though Git repositories can function fully
independently, users of related Git repositories tend to nominate one re-pository as the
upstream or the remote repository and use it as a single source for updates. Why do you
think this practice exists? Give reasons.
(6 marks)
4. Company X is a newly formed software company by five (5) developers. They just
received their first project to develop an online marketplace, and the company has
decided to use Git as the VCS for this project as it is very popular, even though none of
the developers are familiar with Git. As of now, the developers have decided to store
all their code on the main branch of both local as well as remote (upstream) git
repositories. However, you have .been asked to comment on their approach as an IT
undergraduate.
a. Do you see any issues with the approach they have decided to use? If so, briefly
explain what they are. (4 marks)
00673
b. One developer has read online that a git concept called "branching" can help
them to avoid facing those identified problems. However, the other developers
are quite skeptical of this, as it seems a bit complicated to use effectively.
Discuss with an example based on a real-world software development
envirorment, how you would convince the other developers of the benefits of
using branching.
(4 marks)
c. To avoid complications with branching and to help with keeping the flow of
daily development operations ruining smooth, the developers have thought to
adopt a practice called Git workflows along with branching. Out of the existing
Git work flows, GitFlow and GitHub flow have caught their attention as being
suitable for their operation. Since GitFlow seems very comprehensive, they are
thinking of using it for all their projects.
Considering the current status of the company, discuss and justify with reasons
''-i
if using GitFlow is a good idea or not in your view.
(5 marks)
b. What are the benefits gained if an API aligns with the above constraint? Discuss
briefly. (3 marks)
c. With an example, clearly show the difference between a response from a fully
REST compliant API vs. an API which is not REST compliant. You can assume
that it is the same endpoint in the same system responding in both instances -
in one instance, the system has a REST compliant API and in the other instance,
it does not. You can also assume that both systems respond with JSON
(Javascript Object Notation). Please provide a small description explaining
your example.
(4 marks)
J+
L=
ar:;{,73
5. "Keeping a REST API's endpoint naming consistent is a best practice." Do you agree
with this statemen`t? Justify your answer.
(4 marks)
(4 marks)
2. "Devops is notjust a software development methodology, but it's a complete change
ofanITorganization'sculture."Doyouagreewiththisstatement?Justifyyouranswer.
(4 marks)
3. The upper management in a large-scale product-based software company is considering
introducing Continuous Integration (CI) and Continuous Delivery (CD) practices into
the existing software process of the company in hopes of addressing the current issues
it faces with delivery and deployment of software using the traditional waterfall model.
Currently the company has separate teams for Business Analysts, Developers, Quality
Assurance engineers and IT operations. As a senior engineer experienced in Devops
practices who recently joined the organization, you are asked to colrment on this.
a. What would be some common issues that they could be facing? Identify and
briefly discuss these issues.
(3 marks)
b. Do you think just the introduction of CI and CD would solve the issues they
cunently face? Critically discuss your views on the matter.
(4 marks)
c. If your view is thatjust introducing CI/ CD is not enough to overcome the issues
identified, what other changes do you propose to be made to the company's
process to solve the issues that you identified? Briefly discuss the changes with
reasons why each change is necessary.
(6 marks)
d. Some members of the organization also think that the technology stack that is
currently being used by the organization is outdated. Therefore, they suggest
that the organization should ditch their existing technology stack completely
and immediately adapt a cutting-edge suite of technologies to "future-proof" the
software produced by the company. Should the organization do this? State your
recommendations with reasons.
(4 marks)