Introduction To Software Development
Introduction To Software Development
Software development is at the heart of the digital solutions that shape our lives.
From mobile applications to business systems, understanding the processes that
turn ideas into functional software is important for anyone interested in IT or wanting
to understand our digital world better.
● Learn what programming is, its history, and its role in software
development.
● Discover the Software Development Lifecycle's (SDLC) nature, the
blueprint of software creation, and how concepts evolve into products.
● Gain insights into the importance of user requirements in software
development and how to translate user needs into functional
specifications.
The material in this module relates to the following subject learning outcomes:
Student Expectations
During this module, you are expected to spend time working through the prescribed
material prior to attending class. This will enable a more valuable discussion to take
place in online tutorials or conferences, where you will be able to discuss concepts,
present ideas and explore information collaboratively in greater depth.
4 hours for facilitated study. This includes guided facilitated study, watching or
attending course lectures (live or pre-recorded), responding to facilitator feedback.
8 hours for personal study. This includes reading through course material,
undertaking learning activities and exploring additional related resources.
The Learner Guide provides the core knowledge for this topic. Work through the
materials and be prepared to discuss these in your forums, tutorials or classes.
source: freepik
At the heart of today’s digital revolution lies the science of programming. From the
alarm that wakes you up to global stock exchanges, every aspect of modern life is
infused with coded software. If you’ve ever wondered how your favourite applications
or websites function or thought about the engine under the vast expanse of digital
services, then you’re thinking about programming.
Programming is the act of instructing computers to perform specific tasks. At its core,
it’s a series of commands given to a computer to process information in a specific
way. To understand this, imagine a chef following a recipe. Each step in that recipe
corresponds to an instruction, and the entire dish represents the final program.
source: freepik
Computers, without instructions, are vast reservoirs of potential, waiting for direction.
By themselves, they can’t make decisions, nor can they perform tasks. They need
precise, step-by-step guidance.
Further Reading
Explore how computer programming is like the lifeblood of modern society. Learning
to program is like gaining a superpower that extends beyond creating software—it's
the key to simplifying banking processes, ensuring smooth supply chains, and
crafting the amazing online experiences we all love.
Reference: Mooc Blog Team 2022, Why Is Computer Programming Important?, MOOC Org (blog),
accessed 18 January 2023, <https://www.mooc.org/blog/why-is-computer-programming-important>
While programming is about writing code, software development is the wider process
of conceptualising, designing, testing, and maintaining applications, frameworks, or
systems. It’s not just about writing code but understanding the problem, knowing the
user, and ensuring that the software evolves as needs change.
Just as there are multiple languages to communicate with humans, there are a
myriad of programming languages to communicate with computers. Some popular
ones include:
● Python: Known for its simplicity, it’s a favourite for beginners and is widely
used in data science.
● Java: Versatile and object-oriented, it powers many enterprise-level
applications and Android apps.
● C++: An extension of C, this language is known for performance-critical
applications.
Each language has its strengths, and the choice often depends on the problem at
hand.
A day in the life of a software developer is diverse. While they do spend significant
time writing and refining code, they also:
● Brainstorm Ideas
Before any code is written there are sessions to define what needs to be
built.
● Debug
This is the process of finding and resolving defects or problems within the
program that prevent correct operation of computer software or a system.
● Collaborate
Developers often work in teams, collaborating with designers, testers, and
other specialists.
● Continuous Learning
The tech world is ever-evolving. Developers often find themselves learning
new languages or techniques.
Further Reading
Software engineers are the backbone of websites and applications we use every
day, but what’s going on behind the curtain? What does a day in the life of a software
engineer actually look like? Explore the tasks they work on to the people they talk to,
the tools they use, and what they think makes them successful.
Reference: Zoe Kaplan 2023, Day in the Life of a Software Engineer, Forage Blog, accessed 30
January 2024, <https://www.theforage.com/blog/careers/day-in-life-software-engineer>
Learner Guide
The Learner Guide provides the core knowledge for this topic. Work through the
materials and be prepared to discuss these in your forums, tutorials or classes.
Expand All
Panels
Collapse All
Panels
The Software Development Lifecycle is generally divided into the following phases:
1. Requirement Analysis
This is the “listening” phase. Developers and stakeholders identify the needs,
constraints, and functionality desired in the software.
2. System Design
Based on the requirements gathered, a blueprint for the software system is
designed. This will guide the team through the development process.
3. Implementation
This is where the real action takes place. Developers write code based on the
design blueprint, turning theory into practice.
4. Testing
Before releasing the software into the wild, it’s tested rigorously to identify
bugs, errors, and areas for improvement.
5. Deployment
Once the software passes all tests, it’s launched and made available to users.
6. Maintenance
Software is never really ‘complete.’ It requires continuous updates,
improvements, and bug-fixes.
● Quality Assurance
Following a lifecycle ensures each step is rigorously examined and
fine-tuned, resulting in a higher-quality end product.
● Risk Management
SDLC allows developers and stakeholders to identify potential pitfalls or
bottlenecks early in the process, avoiding costly issues down the line.
Further Reading
SDLC is a structured process that is used to design, develop, and test good-quality
software. It is a methodology that defines the entire procedure of software
development step-by-step. Explore further each stage of the process.
Reference: Geeks for Geeks (n.d.), Software Development Life Cycle (SDLC), Geeks for Geeks,
accessed 30 January 2024, <https://www.geeksforgeeks.org/software-development-life-cycle-sdlc/>
Implementation Phase:
Testing Phase:
Deployment Phase:
Maintenance Phase:
Summary
Learner Guide
The Learner Guide provides the core knowledge for this topic. Work through the
materials and be prepared to discuss these in your forums, tutorials or classes.
Expand All
Panels
Collapse All
Panels
Before diving into strategies of collecting user requirements, let’s explore why it is
crucial in software development:
● Guiding Development
Offers clear guidelines for the development team on what needs to be
created.
● Budget and Timeline Planning
Helps in devising realistic budgets and timelines.
● Minimising Miscommunication
Reduces chances of misunderstandings between stakeholders and
development teams.
Further Reading
Clearly defined requirements are essential signs on the road to a successful project.
They establish a formal agreement between clients and providers that they are both
working to reach the same goal. Explore the different types of requirements you may
need to consider, and learn to differentiate between those that are functional and
non-functional.
Reference: Altexsoft staff 2023, 'Functional and Nonfunctional Requirements: Specification and
Types', Altexsoft blog, accessed 30 January 2024,
<https://www.altexsoft.com/blog/functional-and-non-functional-requirements-specification-and-types/>
● Stakeholder Interviews
Conducting one-on-one interviews with stakeholders, including potential
users, to understand their expectations, needs, and challenges with the
current system.
● Surveys and Questionnaires
Utilising these tools to collect data from a larger group of potential users,
gathering both quantitative and qualitative data.
● Observational Studies
Observing users interacting with the current system to identify pain points
and areas for improvement.
● Focus Groups
Generating a deeper understanding of user attitudes, perceptions, and
desires regarding the product through moderated discussions.
● Use Case Development
Creating specific scenarios that illustrate how users will interact with the
new system, identifying any gaps or areas for improvement early in
development.
Flow charts are used to model the flow of activities/events identified in a system.
Once requirements are captured, Flowcharts can be created to model the
process/logic of client requirements.
In a metropolitan area bustling with life, the central city library, a revered institution,
found that its manual book management system was increasingly unable to keep up
with the volume of visitors and the diversity of its book collection. In an effort to
modernise and streamline their operations, the library authorities decided to
transition to a digital library management system. The envisioned system would not
only expedite the lending process but would also offer an enriched user experience,
encouraging more individuals to utilise the library’s resources.
Preparatory Phase
Strategies Implemented
To fully grasp the user requirements, the project team adopted a multi-faceted
approach:
● Stakeholder Interviews
The team conducted in-depth interviews with a diverse group comprising
librarians, frequent library visitors, and even individuals who rarely visited
the library. This exercise helped in garnering a rich perspective on the
different expectations and potential improvements that could be
incorporated into the new system.
● Surveys and Feedback
In parallel, an online survey was rolled out, aimed at collecting quantitative
data regarding user preferences, issues faced with the current system,
and suggestions for the new system.
● Observational Studies
The team spent several days observing the day-to-day operations in the
library, noting the bottlenecks in the existing system and identifying areas
where technology could bring in efficiency and precision.
● Use Case Development
Based on the collected data, the team developed comprehensive use
cases, illustrating the different ways the proposed system would interact
with the users and other systems.
Development Phase
With a clear vision, the development phase kicked off, guided by the detailed user
requirements and specifications document crafted in the preparatory phase. A
modular approach was adopted, which facilitated a flexible and adaptive
development process.
Outcome
The librarians appreciated the automated notifications and reminders, which made
managing book returns more manageable. Moreover, the new system introduced a
recommendation feature, suggesting books based on users’ reading histories, which
was well-received, fostering a vibrant reading community within the library.
Further Resources
The resources in this section are for further exploration, providing additional
information for deeper insights.
Expand All
Panels
Collapse All
Panels
Reading: The Digital Revolution - How Computers Are Rewriting the Story of
Humanity
This article invites readers on an exciting journey to understand the digital
revolution's core, where computers play a vital role in our fast-changing technology
world. Starting from the bulky computers in the 1950s to today's sleek and powerful
machines, the article explores how these incredible inventions have changed the
way we live, work, and have fun.
The Digital Revolution: How Computers Are Rewriting the Story of Humanity
Reference: ArtFex 2023, The Digital Revolution: How Computers Are Rewriting the Story of Humanity,
Medium (Blog), accessed 18 January 2023,
<https://medium.com/@artfex.info/the-digital-revolution-how-computers-are-rewriting-the-story-of-hum
anity-d2cbe23c4647>
Reference: Bigelow S. J 2020, What are the types of requirements in software engineering?,
TechTarget (website), accessed 18 January 2024,
<https://www.techtarget.com/searchsoftwarequality/answer/What-are-requirements-types>
Programming Resources
The resources in this section will help prepare you to get started with programming in
C++ – the language we will be using in this subject.
Expand All
Panels
Collapse All
Panels
Video: Should you Learn C++?
This video discusses the modern relevancy and context of C++, emphasising that it
is a language used for writing highly efficient and fast-running code, particularly in
areas such as embedded systems, game engines, and AI engines. The key
advantage of C++ is its ability to provide fast runtime due to its lower-level code,
closer to the CPU.
youtu.be/D7cCdzS4cXQ
(07:27)
Reference: Stefan Mischook 2023, Should you Learn C++ in 2023?, YouTube, accessed 30 January
2024, <https://youtu.be/D7cCdzS4cXQ>
Learning C++
Reference: Eduardo Corpeño 2021, 'Learning C++', LinkedIn Learning, accessed 18 January 2023,
<https://www.linkedin.com/learning/learning-c-plus-plus-14267389/setting-up-the-development-enviro
nment-14230629>
Watch only the Introduction and 'Section 2 - The Basics' (approx. 40mins)
Reference: Bill Weinman 2022, 'Section 2: The Basics', C++ Essential Training, LinkedIn Learning,
accessed 30 January 2024,
<https://www.linkedin.com/learning/c-plus-plus-essential-training-15106801/basic-syntax>