0% found this document useful (0 votes)
4 views29 pages

L1 SoftwareDevProcess

The document discusses the origins and evolution of software engineering, highlighting its establishment as a legitimate discipline in the 1960s and the ongoing software crises that have shaped its development. It outlines various software development processes, including Agile and DevOps, and emphasizes the importance of continuous integration and delivery in modern software practices. Additionally, it addresses the challenges and applications of software at the edge, as well as the role of new positions like Software Reliability Engineers in bridging development and operations.

Uploaded by

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

L1 SoftwareDevProcess

The document discusses the origins and evolution of software engineering, highlighting its establishment as a legitimate discipline in the 1960s and the ongoing software crises that have shaped its development. It outlines various software development processes, including Agile and DevOps, and emphasizes the importance of continuous integration and delivery in modern software practices. Additionally, it addresses the challenges and applications of software at the edge, as well as the role of new positions like Software Reliability Engineers in bridging development and operations.

Uploaded by

troyben91
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

CS3219

SOFTWARE ENGINEERING PRINCIPLES


AND PATTERNS

Software Development Process

CS3219 S1 AY2022/23
Origins of SE
Anthony Oettinger
[August 1966, Communications of ACM]

“A concern with the science of computing and


information processing, while undeniably of the
utmost importance and an historic root of our
organization is, alone, too exclusive. We must
recognize ourselves as members of
an engineering profession, be it hardware
engineering or software engineering, a profession
without artificial and irrelevant boundaries like that
between ‘scientific’ and ‘business’ applications.”
[Link]
CS3219 S1 AY2022/23 2
Origins of SE

[1963-1964] Margret Hamilton , the


lead developer for the Skylab and
Apollo flight software , coined the term
software engineering for the discipline
when she was at Charles Stark Draper
Laboratory at MIT.

She began to use the term "software engineering" during the early Apollo
missions in order to give software the legitimacy of other fields such as
hardware engineering. Over time the term "software engineering" has gained
the same respect as any other discipline.

CS3219 S1 AY2022/23 3
Origins of SE

Software Engineering : by Bauer at NATO Software Engineering


Conferences in 1968/69 in response to software crisis

[1972] “establishment and use of sound engineering


principles to economically obtain software that is
reliable and works on real machines efficiently.”

Friedrich L. Bauer

CS3219 S1 AY2022/23 4
Software Crisis 1.0

1960s Software crisis 1.0 Research & Development


- time - Software development
- cost process models
- quality -Software Architecture
-Software Design principles
-Software Testing methods
-Software Design patterns
….

CS3219 S1 AY2022/23 5
Software Crisis 2.0

1970- now
Research & Development
‘push’ factors
-Data analytics
-enormous advances in
-Human factors
hardware
-Security
-reductions in hardware costs
-increases in processing power -Cloud computing
-device proliferation - IoT
-infinite amount of data - Edge computing
available - - DevOps, CI, CD
- Microservices
‘pull’ factors

- digital natives
CS3219 S1 AY2022/23 6
Software Applications

Various types of software applications

Embedded Real-Time Concurrent Distributed

Find out if you do not know the differences.

CS3219 S1 AY2022/23 7
More Software Applications Types

Open Content Systems – eg Wikipedia, FB, YouTube, Twitter, Flickr


Open-Source Systems – eg Linux, Apache

Variations:
• Requirements: Known vs Requirements emerge from crowds
• Process: Planned increments vs No stable state or version
• Resources: Dedicated & Managed vs Adhoc resources
• Contributors: Controlled vs Influencers

CS3219 S1 AY2022/23 8
Software @ Edge

Intelligence at the edge will complement


intelligence in the cloud, for a better balance
between the demands of centralized
computing and localized decision-making.

Source: Liu, Shaoshan et al. “Edge Computing for Autonomous Driving: Opportunities
and Challenges.” Proceedings of the IEEE 107 (2019): 1697-1716.

CS3219 S1 AY2022/23 9
Software @ Edge – Tracing the History

Centralized Computing
Vs
CS3219 S1 AY2022/23
De-centralized Computing 10
Software @ Edge

Cloud-based Applications
• Latency → serious consequences
• Computation/Intelligence must be
located at the Edge.

CS3219 S1 AY2022/23 11
Software @ Edge

Challenges
• Limited computation power in a camera, sensor, or a
smartphone.
• Many of the devices at the edge of the network are not
connected to a power source → Issues of battery life and
heat dissipation

Intelligence in the cloud + Intelligence at the edge.

CS3219 S1 AY2022/23 12
Software Development

TRANSFORMATIONAL GOAL-DIRECTED
EVOLVING PROCESS
CREATIVE ACTIVITY

CS3219 S1 AY2022/23 13
Software Development

Factors Affecting Software Development

Process
Requirements
(Resources, Time)

Criticality People
(Competence)

Consequences Technology

Generic Development Process


CS3219 S1 AY2022/23 14
Software Development Process Models

• Waterfall
• Spiral
• Rapid Prototyping
• eXtreme Programming
• Rational Unified Process
(RUP)
• Test driven development
• Agile (Scrum, Crystal, etc)
• many others…

CS3219 S1 AY2022/23 15
Scrum – An Agile Process

SPRINT
PLANNING

CS3219 S1 AY2022/23 16
Scrum – Product Backlog Example

CS3219 S1 AY2022/23 17
Software Delivery

Deployment pipeline: an automated implementation of


application build, deploy, test, and release process.

[Link]
CS3219 S1 AY2022/23 18
CI/CD – Pipeline

[Link]
CS3219 S1 AY2022/23 19
CI/CD – Definitions

Continuous Integration (CI) is a development practice that requires developers


to integrate code into a shared repository several times a day. Each check-in is
then verified by an automated build, allowing teams to detect problems early.

Continuous delivery is about ensuring that every good build is potentially


ready for production release.

Continuous deployment is about automating the release of a good build


to the production environment.

[Link]
CS3219 S1 AY2022/23 20
Development + Operations : DevOps

Blends software development and operations staff and tools.

DevOps is a set of software development


practices that combine software
development (Dev) and operations (Ops)

The set of practices intends to reduce the


time between committing a change to a
system and the change being placed into
normal production while ensuring high
quality.

CS3219 S1 AY2022/23 21
DevOps – Pipeline

[Link]
CS3219 S1 AY2022/23 22
DevOps – Typical Steps

Check in code After development …


Pull code changes for build

Run tests

Store artifacts and build repository

Deploy and release

Configure environment

Update databases

Update apps

Push to users

Application and Network Performance Monitoring

CS3219 S1 AY2022/23 23
DevOps – Specific Practices

✓ Continuous integration
✓ Continuous delivery
✓ Continuous monitoring and logging
✓ Communication and Collaboration
✓ Infrastructure as Code

[Link]
CS3219 S1 AY2022/23 24
DevOps – Benefits
Speed of The DevOps model enables your dev & op teams to deliver faster for
Delivery customers. Practices of CI/CD that automate the software release process,
from build to deploy
can quicker release new features and fix bugs.
Reliability Practices of CI/CD ensure testing that each change is functional and safe.
Practices of Monitoring and logging help stay informed of performance in
real-time.
These contribute to more reliable delivery and positive experience of end-
users
Scale Operating and managing your infrastructure and development processes
with automation and consistency help improve scalability. Practice of
infrastructure as code helps you manage your development, testing, and
production environments in a repeatable and more efficient manner.
Improved Dev and op teams collaborate closely, share responsibilities, and workflows.
collaboration This reduces inefficiencies and saves time (e.g. reduced handover periods
between dev and ops)
CS3219 S1 AY2022/23 25
DevOps – Tools

Source: [Link]
CS3219 S1 AY2022/23 26
DevOps – New SE Roles

For example, SRE: Software Reliability Engineer(ing)


• SRE: “what happens when you ask a software engineer to design
an operations function?”
• SRE: a way to bridge the gap between developers and IT
operations
• SRE: like a more proactive form of QA
• SRE: typical tasks
– creating software that improves the reliability of systems in production,
fixing issues, responding to incidents, and taking on-call responsibilities

SREs do not spend all of their time building new features for customers,
they actually make an impact on customer experience.
CS3219 S1 AY2022/23 27
Summary

A Software is a system of intercommunicating (software)


components.

Designing a system requires a systematic and rigorous approach


demanded by the scale and complexity of the requirements.

Software development is a set of tasks to design and implement


requirements for a software system.
The artifacts – code, models, and documents, represent the solution.

CS3219 S1 AY2022/23 28
Find out more about …

• Ethics and Professional Practice


– [Link]
ACM/IEEE-CS Software Engineering Ethics and Professional Practice
• Traditional Software process models – Waterfall, RUP etc.
• Agile vs DevOps
• Process models for Edge-applications, crowdsourced
applications

CS3219 S1 AY2022/23 29

You might also like