0% found this document useful (0 votes)
23 views16 pages

Software Development - Selected Topics

Software development encompasses the creation, design, deployment, and support of software, involving various professionals beyond coders. It includes different types of software such as system, programming, application, and embedded software, and follows a structured process that involves methodologies, requirements gathering, design, coding, testing, and maintenance. Emerging trends in software development include AI, cloud-native development, DevOps, and ethical considerations in AI, which are essential for enhancing product quality and addressing user needs.

Uploaded by

nuraliyudeen130
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views16 pages

Software Development - Selected Topics

Software development encompasses the creation, design, deployment, and support of software, involving various professionals beyond coders. It includes different types of software such as system, programming, application, and embedded software, and follows a structured process that involves methodologies, requirements gathering, design, coding, testing, and maintenance. Emerging trends in software development include AI, cloud-native development, DevOps, and ethical considerations in AI, which are essential for enhancing product quality and addressing user needs.

Uploaded by

nuraliyudeen130
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Software Development

Selected of Topics
What is software development?

• Software development refers to a set of computer science


activities that are dedicated to the process of creating,
designing, deploying, and supporting software.
• Software itself is the set of instructions or programs that
tell a computer what to do. It is independent of hardware
and makes computers programmable.
• The work of software development is not confined to
coders or development teams. Professionals such as
scientists, device fabricators, and hardware makers also
create software code even though they are not primarily
software developers.
Types of Software
There are four basic types:
• System software – to provide core functions such as operating systems, disk
management, utilities, hardware management, and other operational
necessities.
• Programming software – to give programmers tools such as text editors,
compilers, linkers, debuggers, and other tools to create code.
• Application software – (applications or apps) to help users perform tasks
e.g. Office productivity suites, data management software, media players, and
security programs are examples. Applications also refer to web and mobile
applications like those used to shop on Amazon.com, socialize with Facebook,
or post pictures on Instagram.
• Embedded software – Embedded systems software used to control machines
and devices not typically considered computers like telecommunications
networks, cars, industrial robots, and more. These devices, and their software,
can be connected as part of the Internet of Things (IoT).
Software Development
Software development is primarily conducted by programmers, software engineers,
and software developers. These roles interact and overlap, and the dynamics
between them vary greatly across development departments and communities.
• Programmers, or coders, write source code to program computers or devices
for specific tasks.
• Software engineers apply engineering principles to build software and systems
to solve problems. They use modelling language and other tools to devise
solutions that can often be applied to problems. Their responsibility has grown as
products have become increasingly intelligent with the addition of
microprocessors, sensors, and software.
• Software developers have a less formal role than engineers and can be closely
involved with specific project areas — including writing code. At the same time,
they drive the overall software development lifecycle — including working across
functional teams to transform requirements into features, manage development
teams and processes, and conduct software testing and maintenance.
Custom/Commercial Software
There is an important distinction between custom
software development and commercial software
development.
• Custom software development is the process of
designing, creating, deploying, and maintaining
software for a specific set of users, functions, or
organizations.
• In contrast, commercial off-the-shelf software (COTS) is
designed for a broad set of requirements, allowing it to
be packaged, commercially marketed, and distributed.
Software Development Process
Developing software typically involves the following steps:
1. Selecting a methodology to establish a framework in which the steps of
software development are applied. It describes an overall work process or
roadmap for the project. Methodologies can include Agile development,
DevOps, Rapid Application Development (RAD), Scaled Agile Framework
(SAFe), Waterfall, and others.
2. Gathering requirements to understand and document what is required by
users and other stakeholders.
3. Choosing or building an architecture as the underlying structure within
which the software will operate.
4. Develop a design around solutions to the problems presented by
requirements, often involving process models and storyboards.
5. Building a model with a modelling tool that uses a modelling language like
SysML or UML to conduct early validation, prototyping, and simulation of the
design.
6. Constructing code in the appropriate programming language. Involves peer
and team review to eliminate problems early and produce quality software
Software Development Process
7. Testing with pre-planned scenarios as part of software design and coding
— and conducting performance testing to simulate load testing on the
application.
8. Managing configuration and defects to understand all the software
artifacts (requirements, design, code, test) and build distinct versions of
the software. Establish quality assurance priorities and release criteria to
address and track defects.
9. Deploying the software for use and responding to and resolving user
problems.
10.Migrating data to the new or updated software from existing applications
or data sources if necessary.
11.Managing and measuring the project to maintain quality and delivery
over the application lifecycle, and to evaluate the development process
with models such as the Capability Maturity Model (CMM).
Application Lifecycle
Management (ALM)
Software development process steps can be grouped into the phases
of the lifecycle, but the importance of the lifecycle is that it recycles to
enable continuous improvement. For example, user issues that surface
in the maintenance and support phase can become requirements at
the beginning of the next cycle.
The steps of the software development process fit into application
lifecycle management (ALM). The steps include:
• Requirements analysis and specification
• Design and development
• Testing
• Deployment
• Maintenance and support
Why is software development
important?
• Software development is also important because it is
• Pervasive
• Differentiator – Software has emerged as a key
differentiator in many products; from cars to washing
machines to thermostats with a growing Internet of
Things connecting them.
Emerging Trends in Software Development

Using software development to differentiate brands and gain competitive


advantage requires proficiency with the techniques and technologies that can
accelerate software deployment, quality, and efficacy.
• Artificial Intelligence (AI) and Machine Learning (ML): have emerged as
transformative technologies in software development. AI-powered applications
are revolutionizing industries by automating processes, analysing vast amounts
of data, and delivering personalized user experiences. Machine learning
algorithms enable software systems to learn from data, recognize patterns, and
make predictions, opening up new possibilities in areas such as natural language
processing, computer vision, and predictive analytics. As AI and ML continue to
mature, software developers must acquire the skills and expertise to harness the
power of these technologies effectively.
• Cloud-native Development: Cloud-native development is a way of building
applications to use cloud environments. A cloud-native application consists of
discrete, reusable components that are known as microservices that are designed
to integrate into any cloud environment. Cloud-native applications can use cloud
environments to improve application performance, flexibility and extensibility.
Emerging Trends in Software
Development
• DevOps and Continuous Delivery: has become a standard practice in software
development, emphasizing collaboration, automation, and continuous delivery. DevOps
principles aim to streamline the software development lifecycle, from code
development and testing to deployment and operations. By breaking down silos
between development and operations teams and adopting automated processes for
building, testing, and deploying software, organizations can accelerate delivery cycles,
increase agility, and improve product quality. Continuous Integration/continuous
deployment (CI/CD) pipelines enable developers to deliver software updates rapidly
and reliably, empowering them to respond quickly to customer feedback and market
changes.
• Cloud-based Development: Just as IT organizations look to the cloud to improve
resource management and cut costs, so do software development organizations. In this
way, the cloud can be used as a fast, flexible, and cost-efficient integrated
development environment (IDE) or development Platform as a Service (PaaS). Cloud-
based development environments can support coding, design, integration, testing, and
other development functions. They can also offer access to APIs, microservices,
DevOps, development tools, services, and expertise.
Emerging Trends in Software
Development
• Blockchain: Blockchain is a secure, digitally linked ledger that
eliminates cost and vulnerability that is introduced by parties like
banks, regulatory bodies, and other intermediaries. It is
transforming businesses by freeing capital, accelerating
processes, lowering transaction costs, and more. Blockchain
presents a tremendous opportunity for software development.
Developers are working with distributed ledgers and open-source
Hyperledger technology to change how businesses operate.
• Mobile: A key capability for software developers is creating
mobile apps with deep connections to data that enrich and
elevate user experiences. Forrester has found that “deeply
integrating digital/mobile customer data has a strong effect on
how customers interact with brands.”
Emerging Trends in Software
Development
• Analytics: The demand signifies how critical it is for companies to
gain insight and value from the explosion of data. Accordingly,
software developers are integrating advanced analytics
capabilities into their applications. Cloud-based services and APIs
make it simpler to guide data exploration, automate predictive
analytics, and create dashboards that deliver new insights and
improve decision-making.
• Model-Based Systems Engineering (MBSE): In MBSE,
software modelling languages are used to perform early
prototyping, simulation, and analysis of software designs for early
validation. Building designs in MBSE helps you to analyse and
elaborate project requirements and move rapidly from design to
implementation.
Emerging Trends in Software
Development
• Containerization and Orchestration: Containerization technologies such as Docker
and container orchestration platforms like Kubernetes have revolutionized software
deployment and management. Containers encapsulate software dependencies and
runtime environments, enabling applications to run consistently across different
computing environments. Kubernetes provides orchestration capabilities for automating
the deployment, scaling, and management of containerized applications, simplifying the
process of building and deploying distributed systems. Containerization and orchestration
empower software developers to build cloud-native applications that are scalable,
portable, and resilient.
• Low-Code and No-Code Development Platforms: are democratizing software
development by enabling users with limited programming skills to build applications
quickly and easily. These platforms provide visual, drag-and-drop interfaces and pre-built
components that allow users to create custom applications without writing code. Low-code
and no-code development platforms accelerate the software development process, reduce
reliance on traditional coding expertise, and empower citizen developers to innovate and
iterate rapidly. By embracing low-code and no-code development platforms, organizations
can increase agility, reduce time-to-market, and address the growing demand for digital
solutions.
Ethical and Responsible AI

• With the increasing integration of AI technologies into software


systems, there is growing concern about ethical considerations
such as privacy, fairness, transparency, and accountability.
• Ethical AI practices aim to ensure that AI-powered applications
uphold fundamental human values and rights while minimizing
potential harms and biases.
• Software developers play a crucial role in designing and
implementing AI systems that are ethical, responsible, and
aligned with societal values. By incorporating ethical
considerations into the software development process,
developers can build trust with users and stakeholders and
mitigate risks associated with AI technologies.
Software Development Terms

• Agile development breaks requirements into consumable functions and delivers


rapidly on those functions through incremental development. A feedback loop helps
find and fix defects as functionality continues to deploy.
• Capability Maturity Model (CMM) assesses the proficiency of software development
processes. It tracks progress from ad hoc actions to defined steps to measure results
and optimize processes.
• DevOps, a combination of development and operations, is an agile-based approach
that brings software development and IT operations together in the design,
development, deployment, and support of software.
• Rapid application development (RAD) is a nonlinear approach that condenses
design and code construction into one interconnected step.
• Scaled Agile Framework (SAFe) provides a way to scale agile methodology to a
larger software development team or organization.
• Waterfall, often considered the traditional software development methodology, is a
set of cascading linear steps from planning and requirements gathering through
deployment and maintenance.
• Spiral model is a hybrid approach that combines elements of the waterfall and agile

You might also like