SPS Project
SPS Project
SPS Project
TR Manunure - 222002905,
J Ntesa - 222022701,
JPH Kanyinga - 222062754,
K Pindeni 222114517,
TL Tadyanemhandu - 222007141
Introduction
The purpose of the document serves to report on the research done on a software company
in Namibia called iGig in order to understand the software development processes involved
within the development of software products for the company, identifying areas of
improvement and developing a comprehensive software process improvement plan for iGig.
Organisation Background
iGig Technologies is a top information technology and web design company in Namibia that
provides information communication technology (ICT) solutions, products and services using
ultra-modern technologies. iGig Technologies provides comprehensive and integrated IT
services that include Software development, Website designing and development, Mobile
application development, Digital marketing as well as development and implementation of
mission critical business applications with cutting edge technology to their customers round
the globe. They ensure high quality deliveries every time and on time. Some of their recent
projects include Bill Tracking System for the Parliament of Namibia, Legabibo Community-
Led Health Care Monitoring Tool Development and Hardcore Mining and Logistics Website.
They also made websites like Ngumus eye surveillance and tracking website & portal,
NAMDrive Academy website and August 26 Holdings Website. iGig develops mobile and
web applications. One notable web project is an Online Polling Tool designed for Civil
Society organisations in Namibia. This tool facilitates data collection and analysis, offering
insights into the daily lives of Namibian citizens. Additionally, iGig has developed an Online
Bill Tracking System for the Parliament of Namibia. This system provides a comprehensive
view of bill history, empowering citizens to participate in the legislative process from
inception to presidential approval.
Our approach to analysing the software development process involved using different
methodologies like interviews and surveys to gather more insight into the current practices of
the company and identifying areas of improvement in order to formulate actionable
recommendations for process enhancement.
Interview Questions
1. Requirement Gathering
iGig begins by diligently understanding what the client requires, what they are expecting and
the objective they are trying to achieve. They do this by engaging into discussions with the
client to gather all essential information.
3. Design
In their design phase, the team focuses on crafting user interfaces (UI) and user experiences
(UX) that are intuitive, visually appealing, and in harmony with the client's brand identity. To
effectively communicate design concepts they make use of wireframes, mockups, and
prototypes.
The welcoming page for the Legabibo Community-Led Health Care Monitoring Tool
Development Website. It’s a tool that allows health facilities to monitor service delivery.
experience at those facilities worldwide for the LGBTQ+ community.
4. Development/ Implementation
Once the design is approved, the development team begins coding the software according to
the specified requirements and design guidelines. They follow best practices and use modern
technologies to ensure scalability, performance, and maintainability.
5.Testing
Ensuring quality is fundamental to the team's approach. They perform thorough testing to
detect and resolve any bugs or issues within the software. This encompasses white box, black
box,integration, regression, compatibility, data and UI security, functional , usability,
performance, load and security testing. They do compatibility tests since some of their clients
will be running the application on different devices like IOS and Android. Sometimes the clients
are using different browsers so to ensure the website or applications are fully functional on
different devices they do the testing. The team responsible for a project usually tests the
different testing strategies in parallel or some tests are done sequentially depending on the
availability of the team member.
6. Deployment
After the software successfully undergoes testing and receives approval from the client, it is
deployed to the production environment. The deployment process is meticulously planned to
minimise downtime and ensure a smooth transition.
The team's commitment to the client extends beyond deployment. They offer continuous
maintenance and support services to resolve issues, implement updates, and maintain
optimal performance of the software.
8. Documentation
IGig ensures they document all the stages and steps they have taken in a project to ensure
the knowledge is shared and there is consistency and they are able to trace all the steps
they have taken. Having clear documentation also helps in having software that can be
maintained and scaled. These are some of the documents that they have:
1. Requirements Documentation
The company documents the functional and non- functional requirements thoroughly using
user stories, use cases and acceptance criteria. They use the requirements document as a
reference point for understanding project scope.
2. Design Documentation
IGig uses the design document to outline the architecture, system components, and data
structures of the software. This includes system diagrams, entity-relationship diagrams
(ERDs), sequence diagrams, and other design artefacts that provide insights into the
software's structure and functionality.
3. Technical Documentation
The company documents technical aspects of the software, including APIs, libraries,
frameworks, and dependencies used in the project. Technical documentation helps
developers understand how different components interact and enables them to navigate the
codebase effectively.
4. Code Documentation
iGig follows best practices for code documentation, including inline comments, descriptive
variable names, and clear function/method documentation. This helps improve code
readability, maintainability, and understanding for both current and future developers.
5. Test Documentation
The team documents test plans, test cases, and test results to ensure thorough testing
coverage and validate that the software meets quality standards. Test documentation provides
a record of testing activities and helps identify areas for improvement or regression.
6. Deployment Documentation
They maintain documentation related to change requests, bug fixes, and enhancements
throughout the development lifecycle. This includes tracking changes, documenting
resolutions, and communicating updates to stakeholders.
8. Meeting Minutes and Communication
We document meeting minutes, decisions, action items, and other communication within the
team and with stakeholders. Meeting documentation ensures accountability, clarity, and
alignment among team members and stakeholders. Meeting minutes also help everyone to
refer and remember what the plan was or even have someone be up to date if they have
missed a meeting.
Tracking the progression of different tasks is very crucial and the company makes use of
different tools in order to manage and oversee the different activities. The various branches
that make up and are used within the tracking tool includes,
● Creation of task boards
● Assignment of tasks to team members
● Setting deadlines for each task
● Timeline for checking and tracing
The tools used to achieve this are Trello1, Jira2, and at times Asana, which are all project
management tools, each having their own strengths. Due to the team making use of the
Agile approach as a software model, a lot of cross-functional teams are involved which
requires a lot of follow-ups as well as discussions which need to be managed. Inorder to
have effective communication and collaboration the company makes use of Slack and
Microsoft Teams to communicate and help all team members to be on the same page.
Moreover the team makes use of Git 3 for version control and GitHub/GitLab or Bitbucket for
hosting Git repositories, managing code and facilitating collaboration among developers.
1
Trello- Software used for organising tasks, creating task boards, and tracking progress using
Kanban boards.
2
Jira- A comprehensive project management tool for planning, tracking, and managing agile software
development projects
3
Git- Distributed version control system for tracking changes in source code during software
development.
The team makes use of Visual Studio Code for development and the IDE’s they usually use
include IntelliJ IDEA or Eclipse. To test the functionality of the system they use JUnit4 or
TestNG and Postman5.
For creation, organisation and sharing the project documentation, meeting notes and other
team knowledge they use Swagger/OpenAPI. The team makes use of cloud computing
platforms like Microsoft Azure or Google Cloud platform (GCP) to host their applications,
storing data and deploying scalable infrastructure. Cloud hosting provides reliability and
flexibility at a manageable cost. Cloud hosting also provides robust data backup and disaster
recovery compared to shared or dedicated hosting on a single server. For the management
and storage of structured data they make use of MySQL or PostgreSQL or Ms Database but
for unstructured data they use MongoDB.
Communication
Good communication plays a vital role in ensuring the success of the iGig projects so they
have put a system in place to help communicate and collaborate better. This involves having
regular meetings to discuss project status, share updates and address any issues or
concerns pertaining to the projects. This helps members to all be on the same page and
work towards the same project goal. Also it helps team members to give feedback on the
progress that they have. Moreover they have daily or bi daily stand- up meetings, either face
to face or virtually, where the teams briefly present their progress, plans for the day and any
obstacles that they are facing, this helps to keep everyone accountable with what they are
expected to do and promote transparency among the team members. For quick
communication and messaging the team utilises emails or microsoft teams. To keep the
stakeholders in the loop iGig provides regular reports to the stakeholders in order to share
the project’s status, milestones achieved and any issues and risks identified. The reports are
delivered using meetings, emails or project management tools depending on the preference
of the stakeholder. These meetings also provide a chance for the team to receive feedback
from clients and address any concerns that clients might have.
IGig finds it vital to allow the team members to continuously learn and be up to date with the
new emerging technologies and methodologies. They do this through the following:
The team has workshops and training sessions led by the experienced team members of the
group or external experts to discuss different topics like new programming languages and
4
JUnit- Frameworks for writing and running unit tests in Java
5
Postman- API testing tool for writing and running automated tests for APIs.
frameworks to best practices in software development methodologies. These sessions
provide opportunities for hands-on learning and knowledge sharing among team members.
IGig encourages their team members to enroll in online courses, tutorials and learning
platforms such as Udemy, Coursera, or Pluralsight to deepen their expertise in specific
areas of interest or to learn new technologies and methodologies.
iGig hosts hackathons and innovation days where team members collaborate on projects,
experiment with new technologies, and explore innovative solutions to real-world problems.
These events foster creativity, teamwork, and exploration of emerging technologies.
IGig sponsors and encourages team members to attend industry conferences, seminars,
and workshops where they can network with peers, learn about the latest trends and
advancements in technology, and gain insights from thought leaders in the field.
IGig facilitates internal knowledge sharing sessions where team members present on topics
of interest, share their experiences, and discuss lessons learned from past projects. These
sessions encourage collaboration, cross-functional learning, and the exchange of ideas
within the team.
IGig promotes mentorship and peer learning initiatives where experienced team members
mentor junior colleagues, provide guidance, and share their expertise. Peer learning fosters
a culture of continuous improvement and supports the professional growth of all team
members.
IGig support team members in obtaining relevant certifications and credentials in their
respective fields, such as AWS certifications, Scrum Master certification, or Microsoft
Certified Professional (MCP) credentials. These certifications validate skills and knowledge
and demonstrate a commitment to professional development
Software Process Improvement Plan
The current model being adopted within the company is the Agile model, but at times and
due to different project requirements and needs, the company adopts the Hybrid system,
where they combine both Agile and Waterfall model.
Weaknesses
● iGig finds it has to manage changing requirements. This can be due to poor
requirements gathering methods, or not understanding the needs of the users
completely, which then affects the scope of the project,leading to delays and more
work to encompass the new changes.
● Challenges are faced in coordination of tasks and maintaining communication
across the different teams, especially when different time zones are involved. iGig
having projects that involve other countries, touching the corners of Africa, teams can
set to work in those respective countries.
● Maintaining and ensuring teamwork and team building especially in terms of
consistency in code quality and in adherence to standards when looking at different
team members with different levels of experience.
● iGig still has not implemented some crucial technological tools that can be used
within the various stages of the development stage, for example Azure Devops for
the automation of various development stages which would help in having faster
delivery cycles, Docker which is crucial when containerizing the development and
development of the different processes as iGig has different projects running, aiding
in improving resource utilisation and scalability.
● IGig manually conducts the tests of their system and it would be better if they use
automated testing tools like Selenium
● The company should improve their requirements gathering stage by ensuring they
don’t only involve the stakeholders but they are able to ask more people who might
end up using the system based on their current experience with the systems already
in existence and what they would want to be improved.
● Task assignment is done based on the expertise, skills of a person and this might
disadvantage the juniors of the team.
Improvement Plan
The team, after accessing and gathering all this information, suggests that iGig make use of
the Hybrid system, taking in the Waterfall model and the Agile - KanBan model to develop
the system. This combines the strengths of the Waterfall model with that of the KanBan
model to build and tackle challenges being faced within the company in developing software.
The diagram below summarises these improvements:
1.Requirement Gathering
While iGig Technologies currently has detailed discussions with clients to understand their
requirements, they could improve this stage by implementing more formalised techniques
such as use-case diagrams, user stories, and requirement specification documents.This could
help to ensure that all stakeholders have a clear, shared understanding of the software's
requirements, thus reducing potential miscommunications or misunderstandings as well as
changing requirements that come in from a lack of understanding first. This encompasses the
rigid way of the Waterfall Model with set measures that need to be met but having constant
discussions and interactions with stakeholders to fully understand requirements as used in the
KanBan Model
3. Design
iGig Technologies can incorporate user testing during this phase. Following the flow of the
waterfall model to handle set timeline, the interactivity of the KanBan model for
understanding users needs in terms of interactivity with the system through creating
prototypes and conducting user testing, they could gather valuable feedback about the
usability and functionality of their designs before they begin development. This could help to
ensure that the final product is user-friendly and meets the needs of the end users through
focusing on the right audience.
4. Development
iGig Technologies could improve their development process by implementing pair
programming or code reviews. This would involve having two developers work together on
the same code or having one developer review another's code. This can help to improve
code quality, catch bugs earlier, and foster knowledge sharing among the development
team. With the Hybrid model, constant feedback and discussions will aid in helping team
members work together and also guide those that still lack experience.
5.Testing
iGig Technologies could consider implementing automated testing. Automated testing can
help to quickly identify bugs or issues, reduce the manual effort required for testing, and
ensure that changes or updates to the software do not break existing functionality. System
walkthroughs and observations also ensure the system is tested according to what the user
sees and highlight their interactions as well as measuring if requirements have been met and
already make changes accordingly. Enhancing these test procedures would solve the issue
of changing requirements that come in once the project has been deployed or delivered
already.
6. Deployment
iGig Technologies could implement continuous deployment, which would involve
automatically deploying changes to the production environment once they pass all
automated tests. This can help to speed up the release cycle, reduce the risk of deployment
errors, and ensure that users always have access to the latest version of the software. The
proposed system also focuses on reducing waste, which we can name, idle time. This
improves the efficiency and productivity of the team.
10. Communication
iGig Technologies could improve communication by implementing a structured
communication plan. This would outline when and how communication
should occur, who should be involved, and what information should be shared. This
could help to ensure that all team members and stakeholders are kept informed and
involved throughout the project.
A summary of the improvements
Interview Questions
General Process:
1. What software have you build, and what purpose/problem does it solve in the community?
2. Can you walk me through the typical software development process followed in your
team/department? (This will give you a high-level overview of the process)
3. What are the different stages involved in your software development lifecycle (SDLC)?
(Identify specific phases like requirements gathering, design, development, testing,
deployment)
4. How are tasks assigned and tracked within the team? (Understand project management
practices)
5. What tools and technologies do you use for different stages of the development process?
(Identify current tools and potential upgrade areas)
6. How is communication handled between team members and with stakeholders? (Evaluate
communication effectivenes)
1. What do you consider to be the biggest strengths of your current software development
process? (Identify areas working well)
2. Have you encountered any challenges or bottlenecks in the current process? If so, can
you elaborate? (Uncover weaknesses and inefficiencies)
3. How do you measure the success of a software project? (Identify performance metrics
used)
Areas for Improvement:
1. Are there any specific areas within the process you think could benefit from improvement?
(Gather suggestions from the developer)
2. How do you handle changes to requirements after the development process has begun?
(Evaluate change management practices)
3. How do you ensure the quality of the software being developed? (Understand testing
practices)
4. What are the biggest challenges your team faces when developing software? (Identify
pain points)
Improvement Plan:
1. If you could change one thing about your current software development process, what
would it be and why? (Gather specific improvement ideas)
2. Have you ever used or considered using any specific methodologies or frameworks for
software development (e.g., Agile, Waterfall)? (Explore potential process improvements)
3. Are there any specific tools or technologies you think would be beneficial to adopt for the
development process? (Identify potential technology improvements)
Additional Questions:
1. How does your team handle version control? (Understand code management practices)
2. What documentation practices are followed within the team? (Identify documentation
processes and potential gaps)
3. How are team members trained and kept up-to-date on new technologies and
methodologies? (Evaluate training and knowledge management practices)
Cram A.W, 2019, Information System Management: Agile Development in Practice: Lessons
from the Trenches 36(1), 2-14. https://doi.org/10.1080/10580530.2018.1553645
What is cloud hosting? benefits and risks | google cloud (no date) Google. Available at:
https://cloud.google.com/learn/what-is-cloud-hosting (Accessed: 06 May 2024).
Ince, D. and Andrews, D. (1990) The software life cycle. London, England: Butterworth & Co.
(Publishers) Ltd.