Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SPS Project

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

LC Uuyuni - 221027998,

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.

Projects done by iGig Technologies:

1. Online Polling Tool


Project Link: https://polling.epdn.org/
2. . EPDN (Enhancing Participatory Democracy in Namibia Programme) Corporate Website
Project Link: https://www.epdn.org/
3. Legabibo Community-Led Health Care Monitoring Tool Development
Project Link: https://www.mabox.co.bw/
4. Hardcore Mining and Logistics Website
Project Link: https://www.hc.com.na/
Methodology

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

Refer page 16-17 to see the interview questions.

Current Software Development Process Analysis


iGig Technologies has a carefully structured process that ensures efficiency, quality and
client satisfaction. Below is their typical software development:

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.

2. Planning and Analysis

After gaining a thorough comprehension of the requirements, they move forward to


strategizing the project. This entails outlining the project's scope, establishing milestones,
assigning resources, and crafting a timeline.

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.

Below are some of the designs for their projects:


The landing page for the Hardcore Mining website

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.

7. Maintenance and Support

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

iGig documents the deployment procedures, including configuration settings, deployment


scripts, and infrastructure requirements. Deployment documentation ensures consistency and
reliability when deploying the software to different environments.

7. Change Management 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.

Task assignment and tracking within the team


Tasks come with different requirements and often have a lot of attributes involved including
deadlines. In order to accomplish these tasks in the most efficient way, tasks are divided
among team members. When distributing tasks, teams are set up and the above factors are
considered. This is to ensure a fair distribution and allocation of tasks in order to achieve
optimum results.

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.

How IGig equip team members with new technologies

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:

1. Internal Workshops and Training Sessions

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.

2. Online Courses and Tutorials

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.

3. Hackathons and Innovation Days

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.

4. Professional Conferences and Events

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.

5. Internal Knowledge Sharing Sessions

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.

6. Mentorship and Peer Learning

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.

7. Certifications and Credentials

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.

Strengths of the current system discussed:

● iGig focuses on collaboration and transparent communication within team members.


This helps in building strong teamwork, helps to pass down knowledge to everyone
so that skills are shared among the team members.
● Their focus on creating intuitive and visually appealing user interfaces aligned with
client branding enhances user experience which helps them keep their clients happy
and help them get new clients through recommendations from previous clients.
● The rigorous testing ensures quality assurance procedures covering functional,
usability, performance, and security testing, ensuring the reliability of the final product
and this helps the software to be used for a while rather than the software just being
used for a short while.
● The constant meetings the team have on a regular basis help keep everyone up to
date with progress, clear objectives and steps to be taken in achieving them.
● Constant feedback on a current project ensures that the team improves the
development process and outlines the lessons they have learnt to ensure they don’t
repeat any mistakes and they take note of what they did well. Areas of optimization
and enhancements are seen and reviewed through this. It helps refine the
development process and help the team deliver high- quality software efficiently and
effectively.
● IGig has been developing reliable and stable softwares through quality assurance
tests and testing procedures to detect issues, bugs, and minimise risks of defects at
an earlier stage.
● They adhere to best practices of the industry by ensuring the software they develop
are in compliance with the rules and regulations and this helps the company to stay
ahead of the growth curve and deliver innovative solutions that meet the evolving
needs of their clients.
● They utilise modern tools and technologies to meet clients needs by leveraging the
latest advancement in software development to ensure they deliver software that
makes clients happy and gives value to the clients.
● IGig ensures that their team members are fully skilled and they upskill those that
already have skills through internal workshops and training sessions, encouraging
their team members to take online courses and tutorials. Another tool that helps
harness creativity, teamwork among the team is hosting hackathons and innovation
days.
● IGig team members are encouraged to attend professional conferences and events
that help them to network with peers, learn about the latest trends and advancement
in technology and gain insight from the leading expertise in the field and they can
implement the skills they get when developing their software.
● Through internal knowledge sharing sessions, mentorship and peer learning the
team members are able to share their experiences and lessons learnt from past
projects. Junior colleagues are able to receive guidance. The culture fosters
continuous improvement and professional growth among the team members.
● IGig also has a good documentation system which ensures there is consistency and
knowledge sharing in the development process. They ensure this through having
requirements documentation, design documentation, technical documentation, code
documentation , test documentation, deployment documentation, change
management documentation and meeting minutes and communication documents.
Having these documents is good because it helps the team to be able to have
reference points because they have somewhere to trace what they did well and what
could be improved in the next project.
● When there is an improvement to be done on the software they have developed it's
easier to do because they have the documentation and if the developers who
developed the system aren’t available the developers present are able to still improve
the software because they have a reference point
● Meeting minutes documents 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.
● The use of prototypes in the design phase is great because it allows the clients to know
and also give feedback to the developers before the final product is deployed to the
environment.
● The teams’ use of Git for version control ensures that there is a audit trails and logs
of all changes made to the codebase, which can be valuable for regulatory
compliance, security audits, or troubleshooting purposes. Code reviews also help in
ensuring good code quality.
● Version control also supports branching, allowing developers to create separate
branches of the codebase to work on new features, bug fixes, or experimental
changes without affecting the main codebase. This enables developers to test new
ideas, implement features in isolation, and merge successful changes back into the
main codebase when ready.
With every software process, there are also challenges or weaknesses that are faced. Below
captures the weaknesses with the current development process 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

2. Planning and Analysis


iGig Technologies could consider implementing project risk management during this phase.
This would involve identifying potential risks or challenges that could arise during the project,
assessing their potential impact, and developing strategies to mitigate them. This could help
to prevent unexpected issues from disrupting the project timeline or quality. The KanBan
model focuses on visualizing the workflow of the different processes in order to guide each
team member so that in terms of planning and analysing the data, everyone has a clear
understanding.

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.

7. Maintenance and Support


iGig Technologies could improve their maintenance and support services by implementing a
formal incident management process. This would involve tracking and managing incidents or
issues reported by users, prioritizing them based on their impact and urgency, and ensuring
they are resolved in a timely manner.

8. Task Assignment and Tracking


iGig Technologies could consider using a more advanced project management tool that
offers features such as time tracking, advanced reporting, and automated notifications. This
could help to improve visibility into project progress, ensure tasks are completed on time,
and keep all stakeholders informed about project status.

9. Tools and Technologies


iGig Technologies could consider implementing DevOpspractices and tools, such as Docker
for containerization, Jenkins for continuous integration and delivery, and Ansible for
configuration management. These tools can help to streamline the development process,
improve collaboration between the development and operations teams, and increase the
speed and reliability of releases.

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)

Strengths and Weaknesses:

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)

Remember: • Encourage the developer to elaborate on their answers with specific


examples. • Ask follow-up questions to gain deeper insights into their experiences.
References

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.

Reddy J.M.K, Neelakanteswara R.A , Lanka K, 2023, Journal of Modelling in Management:


System dynamics modelling of fixed and dynamic Kanban controlled production systems: a
supply chain perspective 18(1), 17-35. DOI:10.1108/JM2-06-2020-0168

Sommerville, I.(2011). Software Engineering, 9th Edition. Pearson Education, Inc.

Kneuper.R. (2018).Software Processes and Life Cycle Models An Introduction to Modelling.


Springer Nature Switzerland A

You might also like