0% found this document useful (0 votes)
45 views

Introduction To Software Development

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views

Introduction To Software Development

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Module 1.

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.

In this module, "Introduction to Software Development," you will explore:

● 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.

To enhance your understanding, we have tailored specific learning activities:

● Reflect on your interactions with software and applications and their


importance in daily life.
● Design a flowchart for a hypothetical project, exploring the various stages
of software creation.
● Experience a simulated client meeting to gather requirements for a small
software project.

Subject Learning Outcomes

The material in this module relates to the following subject learning outcomes:

​ SLO 1: Acquire a thorough understanding of the various stages and


decision points in the SDLC, including capturing user requirements and
specifications.

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.

Accordingly, it is suggested that you allow:

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.

Topic 1. Introduction to Programming and Software


Development

Key takeaways from this topic...

1. Learn the fundamental concepts and terminologies used in programming and


software development.
2. Understand the critical role of programming in the broader spectrum of
software development, which encompasses a range of activities from design
to deployment.
3. Gain an insight into the different programming languages and tools that are
commonly used in the industry.
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.

Section 1: The Core of Digital Revolution

source: freepik

Links to an external site.

The Digital Revolution and the Role of Programming

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.

Breaking Down ‘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.

Section 2: The Necessity of Programming

source: freepik

Links to an external site.

Why Do We Need Programming?

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.

Here’s where programming enters the scene. Among a multitude of purposes, it


allows us to:
1. Automate Repetitive Tasks
Think about large-scale data sorting or calculations – programming makes
these possible in mere seconds.
2. Craft Digital Solutions
From creating interactive websites to simulating real-world processes,
programming provides the tools.
3. Create tailored experiences
Playlists on music streaming services or recommended videos on platforms
are powered by algorithms, which are born from programming.

Further Reading

Why Is Computer Programming Important?

Links to an external site.

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>

Section 3: Delving Deeper into Software Development and Programming


source: freepik

Links to an external site.

The Multi-faceted World of Software Development

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.

A Glimpse into Programming Languages

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.

The Life of a Software Developer

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

Day in the Life of a Software Engineer

Links to an external site.

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>

Topic 2. Software Development Lifecycle

Key takeaways from this topic...


1. Understand the SDLC as a framework that outlines the stages involved in the
development of software, helping to ensure successful project outcomes.
2. Learn the key stages of the SDLC, including requirement analysis, design,
implementation, testing, deployment, and maintenance.
3. Develop an appreciation for the importance of each stage in the SDLC,
understanding how they contribute to the development of reliable and efficient
software.

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

Section 1: Understanding the Software Development Lifecycle (SDLC)


source: freepik

Links to an external site.

The Software Development Lifecycle: A Blueprint for Success

At the core of any successful software project is a well-defined Software


Development Lifecycle (SDLC). Just like constructing a building requires a blueprint,
creating a robust software application demands a structured approach. The SDLC
serves as this guidebook, outlining each phase that a software project will go through
from inception to deployment and maintenance.

What Is the Software Development Lifecycle?

In essence, the SDLC is a framework that guides the process of developing a


software application or system. Think of it as the roadmap or the “recipe” for software
development. It lays out the stages, activities, and tasks needed to convert an idea
into a functional piece of software.

Section 2: Phases of SDLC


source: freepik

Links to an external site.

The Critical Phases of SDLC

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.

Why Does SDLC Matter?

Understanding the SDLC is vital for several reasons:

● Efficiency and Productivity


A structured approach saves time and resources. It’s akin to having a
well-planned grocery list before shopping.

● 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

Software Development Life Cycle (SDLC)

Links to an external site.

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/>

Section 3: Application and Methodologies of SDLC


source: freepik

Links to an external site.

Example: Developing a Food Delivery Mobile Application

Requirement Analysis Phase:

● Identify user needs and preferences for food delivery.


● Define features like order placement, payment options, and real-time
tracking.

System Design Phase:

● Create visual wireframes and mockups of the app’s interface.


● Plan the app’s architecture for data storage and processing.

Implementation Phase:

● Write code to turn design into functional features.


● Develop user registration, order placement, payment processing, and
location tracking.

Testing Phase:

● Test components, integration, and user acceptance.


● Identify and fix bugs, errors, and performance issues.

Deployment Phase:

● Publish the app on app stores for users to download.


● Enable users to place orders and track deliveries.

Maintenance Phase:

● Continuously update the app based on user feedback.


● Fix bugs, enhance performance, and add new features.

Agile, Waterfall, and More: The Methodologies


SDLC can be implemented using various methodologies like Agile, Waterfall, or
Scrum. Each comes with its pros and cons:

● Agile: Favours flexibility and is excellent for projects where user


requirements may evolve.
● Waterfall: Sequential and straightforward, but less flexible.
● Scrum: A subset of Agile, focusing on teamwork and iterative progress.

Summary

The SDLC serves as a critical blueprint that guides developers in orchestrating a


successful software project from inception to deployment and maintenance. It
ensures a structured, systematic approach to converting a concept into a tangible,
functional software application, promoting efficiency, quality assurance, and effective
risk management throughout the development process.

Topic 3. Understanding User Requirements and


Specifications

Key takeaways from this topic...

1. Learn the importance of accurately capturing user requirements and


specifications, which forms the basis of any software development project.
2. Develop skills in communicating with clients and stakeholders to gather
requirements effectively.
3. Understand how to translate user requirements into technical specifications,
which guides the development process and helps in meeting user
expectations.

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

Section 1: The Foundation of Software Development - Understanding User


Requirements

Understanding Requirements and Specifications

In the development of any software, comprehending the requirements and


specifications stands as a foundational step. Liaising with stakeholders at this phase
helps grasp what they envision the software to accomplish. The information collected
here is a blueprint for the development process, outlining what needs to be built and
how it will satisfy the users’ needs. In this guide, we shall walk through the essential
aspects of understanding user requirements and specifications, infused with a
practical case study to give you a holistic view of the process.
The Importance of User Requirements

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

Functional and Nonfunctional Requirements: Specification and Types

Links to an external site.

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/>

Section 2: Strategies for Effective Requirement Gathering

Strategies for Gathering Requirements

Understanding user requirements is a pivotal stage in the development of any


software product or system. It involves gathering insights into what end-users expect
from the software, facilitating the creation of a system that meets their needs and
expectations. This section explores various strategies extensively used in the
industry, complemented by practical examples to help you grasp the essence of
each strategy:

● 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.

Learn more in the 6-step guide to requirements gathering

Links to an external site.

from Team Asana (2022)

Modelling the Requirements

The Role of Flow Charts

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.

The Role of Pseudocode


Pseudocode is a high-level description of a computer algorithm that uses plain
language to outline the logic and steps of the solution in a way that is independent of
programming language syntax. It is a useful tool for designing and planning code by
focusing on the algorithm's structure and flow rather than specific code details.

Pseudocode is used to model the algorithms identified in a system. Once


requirements are captured, Pseudocode can be written, to model the logic of client
requirements.

Section 3: Case Study

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

Before embarking on the development journey, the project team, consisting of


software engineers, UI/UX designers, and library management experts, initiated a
series of meetings to brainstorm and lay down the preliminary plan. The team
recognised the necessity of a deep understanding of both the library’s operational
nuances and the users’ preferences and challenges.

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.

User Testing and Adjustments


Once a prototype was ready, it was introduced to a select group of users and
librarians for testing. Their feedback became instrumental in making necessary
adjustments, ensuring the system was finely tuned to meet the user’s needs.

Outcome

The culmination of meticulous planning and user-centric development resulted in a


library management system that was intuitive, efficient, and comprehensive. The
system drastically reduced the time required for lending processes, and the library
users found the search and reservation features particularly impressive.

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

Links to an external site.

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>

Reading: Types of Requirements in Software Engineering


This article discusses requirements in three main categories: business, user, and
software. It provides examples of each category and explains the differences
between functional and non-functional software requirements. Learn about the
various types of requirements and how they contribute to the development of
software.

What are the Types of Requirements in Software Engineering?

Links to an external site.

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

Links to an external site.

(07:27)

Reference: Stefan Mischook 2023, Should you Learn C++ in 2023?, YouTube, accessed 30 January
2024, <https://youtu.be/D7cCdzS4cXQ>

Video: Learning C++


In this LinkedIn Learning course, learn the basic elements of C++. Instructor
Eduardo Corpeño begins with setting up the development environment and
introducing the basic elements of object-oriented programming.

Watch only the 'Getting Started' section (approx. 20mins).

Learning C++

Links to an external site.

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>

Video: C++ Essential Training


In this LinkedIn Learning course, Instructor Bill Weinman discusses the history of
C++ and modern C++, as well as explaining the C++ toolchain. He then dives into
the basics you need to know, like basic syntax, statements and expressions,
identifiers, variables, pointers, and references.

Watch only the Introduction and 'Section 2 - The Basics' (approx. 40mins)

C++ The Basics


Links to an external site.

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>

You might also like