SlideShare a Scribd company logo
OBJECT-ORIENTED SOFTWARE
DEVELOPMENT
Lectured by: Dr. Solomon Demissie
(Assistant Professor)
Kotebe Metropolitan University
June, 2022
• INTRODUCTION TO SOFTWARE DEVELOPMENT
– What is Software Development?
• It is a complex process to develop modern and
professional software today.
• Normally we use the terms System Engineering or
Software Engineering.
• System Engineering: The process of analyzing and
designing an entire system, including the hardware
and the software.
• Software Engineering: The discipline for creating
software applications.
– It is a systematic approach to the design, development,
testing, and maintenance of software.
• A lot of systems today have a mix of hardware and
software that is tightly integrated, like modern
smartphones, tablets, etc.
– Creating such systems involve a lot of different disciplines.
• Software is any set of machine-readable instructions
that directs a computer's processor to perform specific
operations.
• The term is used to contrast with computer hardware,
the physical objects (processor and related devices)
that carry out the instructions.
• Computer hardware and software require each other,
and neither can be realistically used without the other,
see Figure 1-1.
• Figure 1-1: Hardware and Software working together
• In Figure 1-2 we see a typical network and
infrastructure that the software relies on.
• Figure 1-2: Typical Network and Infrastructure in
Software Development
• Figure 1-3 we see the complexity of software
development and different components that are
involved.
• Figure 1-3: The Complexity of modern Software
• In Figure 1-4 we see the different phases involved
in the Software Development Lifecycle (SDLC).
• Figure 1-4: The Software Development Lifecycle
• PHASES OF SOFTWARE DEVELOPMENT PROCESS
Requirements - description of features and functionalities of the target system.
Requirements convey the expectations of users from the software
product.
– Functional requirements - are product features or functions that developers
must implement to enable users to accomplish their tasks.
– Non-functional requirement (NFR) - a requirement that specifies criteria that
can be used to judge the operation of a system, rather than specific
behaviours.
– types of non functional behaviour: Scalability, Capacity, Availability, Reliability,
Recoverability, Data Integrity, etc.
– Examples: Employees never allowed to update their salary information.
– Initial User Interface:
• The User Interface (UI) - is the point of human-computer interaction and
communication in a software system.
– Technology Platform Selection - evaluating multiple competing technologies
or platforms to identify what solution will work best for a business's needs.
– Technical Architecture – is a form of IT architecture that is used to design
computer systems.
– It involves the development of a technical blueprint with regard to the
arrangement, interaction, and interdependence of all software elements so
that system-relevant requirements are met.
• Project Plan - a formal, approved document used to guide both project
execution and project control.
• Design – is the specifications to determine what your
software needs, how it will look, and what the
timeline for development is going to be.
– Application Architecture - describes the patterns and
techniques used to design and build an application.
• The architecture gives you a roadmap and best practices to follow
when building an application, so that you end up with a well-
structured app.
– Detailed Specifications - is a document or set of
documentation that describes the features and behavior of
a system or software application.
– System Interface Design - designing and building systems
that are effective, are intuitive, and meet the goals of a set
of users.
• Test Plan - is a detailed document that describes the
test strategy, objectives, schedule, estimation,
deliverables, and resources required to test the
software.
• Implementation - the transformation of the software
technical data package (TDP) (set of files that describe
the software product) into one or more fabricated,
integrated, and tested software configuration items
that are ready for software acceptance testing.
– Application Code Development - a way to design and
develop applications with coding
– System Interface Development - the development of
components of a computer system to exchange
information.
– Unit Testing - a type of software testing where individual
components of a software are tested.
– Integration with Existing Apps
• Regression testing - is a software testing practice that
ensures an application still functions as expected after
any code changes, updates, or improvements.
• Testing - Software testing is the process of evaluating and
verifying that a software product or application does what it
is supposed to do.
• The benefits of testing include preventing bugs, reducing development
costs and improving performance.
• It is responsible for the overall stability and functionality of the existing
features.
– Integration testing -- also known as integration and testing (I&T)
-- is a type of software testing in which the different units,
modules or components of a software application are tested as a
combined entity.
– System testing, also referred to as system-level tests or system-
integration testing, -is the process in which a quality assurance
(QA) team evaluates how the various components of an
application interact together in the full, integrated system or
application.
• Acceptance testing - a testing technique performed to
determine whether or not the software system has met the
requirement specifications.
• Maintenance - is the process of changing, modifying,
and updating software to keep up with customer
needs.
• It is done after the product has launched for several reasons
including improving the software overall, correcting issues or
bugs, to boost performance, and more.
– Deployment - is the mechanism through which
applications, modules, updates, and patches are
delivered from developers to users.
– Installation - is the act of making the program ready for
execution.
• Support - are generally technical support or
break/fix services that are delivered for specific
software products.
• In Figure 1-5 we see examples of some of the different activities
involved in the different phases of software development
• Figure 1-5: Activities involved in the different Software Phases
• As you see, software development involves lot of
phases.
• Figure 1-6: Have Reviews at all levels in the
Development Cycle
– Background
• Software and software systems are getting more and more
complex, so it is important to have the necessary “tools” in
your “toolbox” to be able to create and maintain your
software.
• Software Development is a complex process, and it may
involve a lot of money and a lot of people.
• Here are some examples:
– Windows 7: A Team with 1000 Developers created Windows 7
– Number of Code Lines: Real systems may have millions of code
lines
– Big money: 100+ million Development Projects
– Combination of Hardware and Software: Most of the projects
involves both hardware and software and integration between
them.
– iPhone 1: Development period 2004-2007, 1000 Apple
employees worked with the device, Estimated cost: $150 mill.
• All this need structure! - Software Engineering is the Answer!
• Project Planning and Management is important in Software
Development, and we can use different approaches to deal with
the Software Development, which we will cover in this course
– Especially so-called Agile approaches, such as Scrum has become very
popular today.
• Agile SW Approach - a group of software development methodologies based on iterative
development, where requirements and solutions evolve through collaboration between self-
organizing cross-functional teams (the people who have responsibility for making decisions about
what is built to deliver value to customers).
• Agile scrum methodology - is a project management system that relies on incremental
development.
– Each iteration consists of two- to four-week sprints, where the goal of each
sprint is to build the most important features first and come out with a
potentially deliverable product.
– A sprint in Scrum is a short period of time wherein a development team works
to complete specific tasks, milestones, or deliverables
• In general, the Software Development Life Cycle, shorted SDLC,
involves distinct phases, such as:
– Market research
• an intelligent process of gathering and analyzing the statistical data related to software
services and products.
• This research aims at your targeted customer's understanding, needs and wants.
• Also, reveals how effectively a company can meet their requirements
– Gathering requirements for the proposed business solution
– Analyzing the problem
– Create a plan or design for the software-based solution
– Implementation (coding) of the software
– Documentation in different ways
– Testing the software
– Deployment and Installation
– Maintenance and bug fixing
– Marketing
• There are different approaches (Software Development
Processes) that deal with these phases, such as:
– Waterfall model - a breakdown of project activities into linear sequential
phases, where each phase depends on the deliverables of the previous one
– V-model - an extension of the waterfall model and is based on the association
of a testing phase for each corresponding development stage
– Agile Software Development (such as Scrum, XP, etc.) - a group of software
development methodologies based on iterative development, where
requirements and solutions evolve through collaboration between self-
organizing cross-functional teams
– Spiral model - a risk-driven software development process model.
• It is a combination of waterfall model and iterative model
– Rational Unified Process (RUP) - an agile software development method, in
which the life cycle of a project, or the development of software, is divided
into four phases:
• Inception (the basic idea and structure of the project are determined, e.g., market research
results, project plan),
• Elaboration (the system’s requirements and its required architecture are assessed and
analysed),
• Construction (the software system is constructed in its entirety), and
• Transition (transfer the product to its new user)
– etc.
• We will learn more about these development processes later in this course.
• Software Development also involves separate roles,
which are organized in different teams (Figure 1-8).
Typical roles are:
– Project Manager- in charge of the planning, scheduling,
budgeting, execution, and delivery of software and web
projects
– System Architect - define the architecture of a
computerized system in order to fulfill certain requirements
– UX Designer - design of the entire process of acquiring and
integrating the product, including aspects of branding,
design, usability and function
– Programmer, System Developer - create software that
enables users to perform specific tasks on computer devices
– Tester - perform automated and manual tests to ensure the
software created by developers is fit for purpose
– Customer – the end user to the system
• It is crucial that the separate roles and teams can work
together and collaborate.
• The Programmer or System Engineer must deal with
that there exists hundreds of different Programming
Languages.
• Each language has pros and cons, so it is important to
find out which programming language is best suited in
each situation.
• Figure 1-8: Distinct Roles involved in Software
Development
• In this course, we will learn how to build good (i.e.,
high quality) software, which includes:
– Requirements Specification
– Technical Design
– User Experience (UX)
– Improved Code Quality and Implementation
– Testing
– System Documentation
– User Documentation
– etc.
• Figure 1-9: The Toolbox of a Software Engineer
• When working with software development it is important to have good
tools.
• The developer needs of course to use a programming language and proper
IDE (Integrated Development Environment).
– software for building applications that combines common developer tools into
a single graphical user interface (GUI)
• In addition, a so-called ALM (Application Lifecycle Management) Tool
should be used.
– ALM - is the product lifecycle management of computer programs
• An ALM tool typically facilitate and integrate things like:
– Requirements Management
– Architecture
– Coding
– Source Code Control (SCC) - a version control system designed to track changes
in source code and other text files during the development of a piece of
software
– Testing
– Bug Tracking
– Release Management
– etc.
• There exist a lot of such tools, e.g., Azure DevOps, Jira, Git, etc.
• Typically, you need to share the code with other
developers or testers in your team or other teams,
so it is crucial that you have tools that can be used
to share your code, that makes sure that old
versions of your code will be stored, and can be
restored, etc.
– Such a system is called a Source Code Control (SCC)
system.
• Your software will also contain a lot of bugs that
needs to be found, tracked, and fixed, etc.
• To handle that we need a so-called Bug Tracking
system.
• In Figure 1-10 we see some of the bug tracking
functionality in Azure DevOps.
Figure 1-10: Bug Tracking System
• In Figure 1-11 we see a typical software project with
different platforms and frameworks involved.
• Figure 1-11: Typical Software Project with different
Platforms and Frameworks involved
• Typically, your software needs to be installed and
be running on different devices, such as PCs,
tablets, smartphones, etc.
• You also need to store the data, typically in a
database, such as Microsoft SQL Server, MySQL,
etc.
• All these devices and the data also need to
communicate with each other over a network,
either an internal network (LAN, Local Area
Network) or over Internet (WAN, Wide Area
Network).
• All these things make it very complicated to
develop, test, deploy and install such systems.
– That’s the reality for a modern software developer.
SOFTWARE HISTORY
• 2.1. Introduction
• The computer and software history goes back to the
beginning of the 1900 century.
• IBM (International Business Machines corporation) was
established in 1911, Hewlet Packard (HP) was
established in 1939, the transistor came in 1947, the
first Microprocessor came in 1972, etc.
– But “personal computing” started in 1981 with MS-DOS and
the IBM PC.
• In 1984 came the famous Macintosh from Apple.
• Windows 1.0 was released in 1985.
• They found a bug (a moth) inside a computer in 1947
that made the program not behaving as expected.
– This was the “first” real bug.
• In the 80s and 90s we saw the beginning of the personal
computer era that started with Mac computers from Apple
(Macintosh, 1984) and IBM computers from IBM (or IBM
compatible computers from other vendors) with MS-DOS
and later Windows installed (Figure 2-1).
Figure 2-1: The Beginning of Personal Computing
• World Wide Web (WWW) was established in 1991.
– referred to as WWW, W3, or the Web—is an
interconnected system of public webpages accessible
through the Internet.
• The first Web Browser (application software for
accessing the World Wide Web or a local website),
as we know it today, came in 1994 (Netscape).
• Google was established as late as 1998.
• Facebook was first invented in 2004.
• The first smartphone was released in 2007
(iPhone).
• The companies that they created still dominate the
software industry today.
• Some of the people are still active within these
companies today, either as CEOs or members of the
board.
• Some of the largest software companies today are:
• Microsoft (established 1975), Bill Gates, Paul Allen
– MS DOS (1981), Office, Windows (1985), …
– Employees (2012): 94,000, Revenue (2012): $74 bill.
• Apple (Software and Hardware) (established 1976),
Steve Jobs, Steve Wozniak
– Macintosh (1984), iPhone (1997), iPad (2012), iOS ((formerly
iPhone OS or iPhone Operating System) is a mobile operating system
created and developed by Apple Inc. exclusively for its hardware.)
– Employees (2012): 72,800, Revenue (2012): $158 bill.
• Google (established 1986), Larry Page, Sergey Brin
• Facebook (established 2004), Mark Zuckerberg
– More than 1 bill. users
• In addition, we can mention companies like IBM,
Oracle, Samsung (more hardware than software),
Amazon, SAP, Adobe, Symantec, VMware, etc.
2.2. Software Trends
• The software industry has changed a lot since the
80s, and it is still changing very quickly.
• Figure 2-3 gives an overview of some important
trends in the software industry today and
tomorrow.
Figure 2-3: Software Trends
• Apps and Mobil devices: Everybody have a mobile
device today and fewer PCs are sold than ever
before.
• Licensing: You don’t buy, but lease software these
days and all your information is stored in the Cloud,
and some software is running in the Cloud (so-
called Cloud Computing).
• The security challenges is very important in this
case.
• The companies that develop software needs to face
these facts and make the necessary changes to
survive.
• Virtualization - is the creation of a virtual -- rather than
actual -- version of something, such as an operating
system (OS), a server, a storage device or network
resources.
– Virtualization - uses software that simulates hardware
functionality to create a virtual system.
– Virtualization - uses software to create an abstraction layer
over computer hardware that allows the hardware
elements of a single computer—processors, memory,
storage and more—to be divided into multiple virtual
computers, commonly called virtual machines
• Cloud computing- is the delivery of computing
services—including servers, storage, databases,
networking, software, analytics, and intelligence—over
the Internet ("the cloud") to offer faster innovation,
flexible resources, and economies of scale.
• “Softwear” and Wearable Computing: the study or
practice of inventing, designing, building, or using
miniature body-borne computational and sensory
devices.
– Now we have watches like Galaxy Gear, the Apple
Watch, Google Glass, etc.
• BYOD (bring your own device) - is a policy that
allows employees in an organization to use their
personally owned devices for work-related
activities.
– Those activities include tasks such as accessing emails,
connecting to the corporate network, and accessing
corporate apps and data.
Figure 2-4: Software Trends Examples
SOFTWARE DEVELOPMENT
• Terms:
• Software Development
– (also known as application development,
– software design,
– designing software,
– software application development,
– enterprise application development, or
– platform development)
• is the development of a software product.
• Software Engineering (SE) - is the application of a systematic,
disciplined, quantifiable approach to the development, operation,
and maintenance of software.
• In Figure 3-1 we see how a software application typically interacts
with users, the underlying operating system and hardware.
Figure 3-1: Software Interaction with Hardware and Users
– Challenges
• In Figure 3-2 we see some of the challenges in
software development.
Figure 3-2: Challenges with Software Development
• Collaboration and communication within the team
and with stakeholders, etc. is crucial when it comes to
creating good software.
• Creating software is complicated.
• It is important to understand the customer’s needs!
• In some way, you need to find out what the customer
needs.
• Market research, etc. is a good start, but in the end,
you need to go much deeper to understand the
customer.
• Most of the time the customer doesn’t even know
what they need.
– Software Systems
• In software development we have different kinds of
systems, such as:
• Stand-alone applications
– These are application systems that run on a local computer,
such as a PC.
– They include all necessary functionality and do not need to
be connected to a network.
• Interactive transaction-based applications
– Applications that execute on a remote computer and are
accessed by users from their own PCs or terminals.
– These include web applications such as e-commerce
applications.
• Embedded control systems
– These are software control systems that control and manage
hardware devices.
– Numerically, there are probably more embedded systems
than any other type of system.
• Batch processing systems
– These are business systems that are designed to process data in large batches.
– They process large numbers of individual inputs to create corresponding
outputs.
– E.g., transactions of credit cards, generation of bills, etc.
• Entertainment systems
– These are systems that are primarily for personal use and which are intended
to entertain the user.
• Systems for modeling and simulation
– These are systems that are developed by scientists and engineers to model
physical processes or situations, which include many, separate, interacting
objects.
– E.g., weather forecasting, flight simulators used for training pilots, and car
crash modeling, etc
• Data collection systems
– These are systems that collect data from their environment using a set of
sensors and send that data to other systems for processing.
– E.g,, bar code scanners, position scanners, etc.
• Systems of systems
– These are systems that are composed of several other software systems.
– E.g., air and road transportation, power grids, healthcare, water management,
industrial processes, building complexes, critical infrastructures, enterprise
systems, smart homes and cities, and others
• We can split the software systems in 2 main
categories:
• Generic products
– Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
– Examples – PC software such as graphics programs,
project management tools; CAD software; software for
specific markets such as appointments systems for
dentists.
– Examples: Microsoft Office
• Customized products
– Software that is commissioned by a specific customer to
meet their own needs.
– Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
– Documentation
• Lots of documentation is involved in software
development, see Figure 3-3.
• Some of the documentation needed in the different
phases involved in software development are:
• SRS – Software Requirements Specifications
• A document stating what an application must accomplish
• SDD – Software Design Document
• A document describing the design of a software application
• STP - Software Test Plan
• Documentation stating what parts of an application will be tested,
and the schedule of when the testing is to be performed
• STD - Software Test Documentation
• Contents: Introduction, Test Plan, Test Design, Test Cases, Test
procedures, Test Log, …, Summary
• More about Software Documentation later in this
course.
Figure 3-3: Typical Documentation involved in Software
Development
• QA – Quality Assurance - refers to the engineering activities
implemented in a quality system so that requirements for a
product or service will be fulfilled.
– Iterations and Releases
• In Software Development, we typically have
different iterations and releases (alpha, beta,
release candidate, requirements traceability
matrix), as shown in Figure 3-4.
Figure 3-4: Software Iterations and Releases
TO BE CONTINUED……
Software Engineering
Development Teams
• A typical Software Team consists of the following
roles:
– Project Manager
– System Architect
– UX Designer (Software Designer)
– Programmer
– Software Tester
• In addition, we have the Stakeholders or
Customers that play an important role in the
development.
• A typical Software Team:
Course Lecture Slide about object oriented programming
• A System Engineer is:
– a general person that could be a Programmer, Architect, Designer, Tester in different
phases in the project, or
– he could be a tester in one project and a programmer in another project – all in one
person.
• in larger companies these roles (designer, tester, programmer) could be a full-
time job.
• To successfully create software, collaboration inside the team is essential.
Stakeholders
• Are all the people that has an interest in the outcome
of the software .
• In most cases, they are referred to as “Customers” but
others may also be referred to as stakeholders, such as
management, shareholders, etc.
Project Manager
• The Project Managers have the responsibility of the
planning, execution and closing of the project.
System Architect
• With “Technical Design” we mean the Platform and
Architecture Design, i.e., how to build the software.
• This is typically done by a so-called Software/System
Architect.
UX Designer
• UX Design is the Design of the User eXperience (UX) and the
Graphical User Interface (GUI),
• sometimes also called Human Machine Interface (HMI).
• This is what the end user of the software sees.
• This is typically done by a so-called UX Designer.
Programmer
• The Programmer or the Developer is doing the actual
implementation of the software, i.e., the coding.
Software Tester
• Before the customer can start using the software it needs to be
properly tested.
• The Developer/Programmer needs to test his software, but since
software consists of several software modules and components
created by different developers, we need dedicated software
testers that can test the software on a higher level.
• The Customers are/should also be involved in the testing as well.
• Software Development Phases
Requirements
• In the requirements, we describe what the system
should do.
• The requirements include both functional
requirements and non-functional requirements.
– Functional Requirements: Statements of services the
system should provide, how the system should react to
inputs and how the system should behave in different
situations.
• May state what the system should not do.
– Non-Functional Requirements: Constraints on the services
or functions offered by the system such as timing
constraints, constraints on the development process,
standards, etc.
• Often apply to the system rather than individual
features or services.
• The requirements are often collected in a so-called “Software
Requirements Specification (SRS)” document.
• The SRS could contain stuff like:
• Introduction
– Purpose
– Definitions
– System overview
– References
• Overall description
– Product perspective
• System Interfaces
• User Interfaces
• Hardware interfaces
• Software interfaces
• Communication Interfaces
• Memory Constraints
• Operations
• Site Adaptation Requirements
– Product functions
– User characteristics
– Constraints, assumptions, and dependencies
• Specific requirements
– External interface requirements
– Functional requirements
– Performance requirements
– Design constraints
• Standards Compliance
– Logical database requirement
– Software System attributes
• Reliability
• Availability
• Security
• Maintainability
• Portability
• Other requirements
• The Requirements is normally given by the Customer if we deal with customized
products.
• The software requirements document is the official statement of what is required
of the system.
• It should include both a definition of user requirements and a specification of the
system requirements.
• It is NOT a design document.
• As far as possible, it should include a set of WHAT the system should do rather
than HOW it should do it.
Design
• In the design phase, we use the specification and
transform it into descriptions of how we should do it.
• In principle, requirements should state what the
system should do and the design should describe how
it does this – but in practice this is not so easy! - In
practice, requirements and design are inseparable.
• We can divide design into 2 main groups:
– Technical Design – Platform and Architecture Design, i.e.,
how to build the software.
– UX Design – Design of User eXperience (UX) and the
Graphical User Interface (GUI), sometimes also called
Human Machine Interface (HMI).
• This is what the end user of the software sees.
Technical Design
• Technical Design is the Platform and Architecture
Design, i.e., how to build the software.
• This is typically done by a so-called Software
Architect.
UX Design
• UX Design is the Design of the User eXperience
(UX) and the Graphical User Interface (GUI),
sometimes also called Human Machine Interface
(HMI).
• This is what the end user of the software sees.
• This is typically done by a so-called UX Designer.
Implementation
• Implementation = Coding.
• Software is usually designed and created
(coded/written/programmed) in integrated
development environments (IDE) like Eclipse, Xcode or
Microsoft Visual Studio that can simplify the process
and compile the program to an executable unit.
• Software is usually created on top of existing software
and the application programming interface (API) that
the underlying software frameworks provide, e.g.
Microsoft .NET, etc.
• Most of the software has a Graphical User Interface
(GUI).
• Normally you separate the GUI design and code in
different layers or files.
Testing
• Testing can be performed on different levels and by different persons.
• Testing is a very important part of software development.
• About 50% of the software development is about testing your software.
• Creating User-friendly Software is Crucial!
• Discussed later…
Deployment
• Software deployment is all the activities that make a software system available for
use.
• Examples:
– Get the software out to the customers
– Creating Installation Packages
– Documentation, e.g., Installation Guide, etc.
– Installation
– etc.
• Deployment strategies may vary depending of what kind of software
we create, etc.
• Discussed later…
Maintenance
• When the software is deployed, or installed, you normally go into a
Maintenance phase.
• The maintenance of software involves bug fixes of the software after the
software is released, etc.
• At some time, you also need to start planning new releases of the
software.
Software Development Process
• There are lots of different software development processes or methods in
use today, e.g.:
– Waterfall model
– V-model
– Spiral model
– Unified Process (UP)/ Rational Unified Process (RUP)
– Scrum
– eXtreme Programming (XP)
– Lean Software Development
– TDD (Test Driven Development)
– Lean Software Development
– Kanban
– etc.
• These processes or models may be divided in 2
main categories: Plan-driven models and Agile
methods.
• The Waterfall model, V-model and the Spiral
model is so-called plan-driven models, while Scrum
and eXtreme Programming are so-called Agile
methods.
• Traditionally plan-driven methods where used in
software development, while today Agile methods
such as Scrum have become very popular,
especially in smaller development teams.
• Plan-driven models (e.g., Waterfall) generally
produce more documentation than Agile models.
Course Lecture Slide about object oriented programming
Plan-driven models
• We have different plan-driven models such as the
Waterfall model, V-model, Spiral model which we will
discuss in more details.
Waterfall model
• The Waterfall model consists of the following phases:
– Requirements specification (Requirements analysis)
– Software design
– Implementation and Integration
– Testing (or Validation)
– Deployment (or Installation)
– Maintenance
• Traditionally with the Waterfall model, you can only
start on the next phase when the previous phase is
finished.
– Therefore, it is called the Waterfall method
Course Lecture Slide about object oriented programming
• In practice, there is impossible to create perfect requirements and
design before you start implementing the code, so it is common to
go back and update these phases iteratively.
V-model
• The V-model is derived from the more traditional Waterfall model.
• The V-model is an extension of the waterfall model, but it’s using a
more flexible approach.
• “The V-Model reflects a project management view of software
development and fits the needs of project managers, accountants
and lawyers rather than software developers or users.”
• the left side is about requirements and design, while
the right-side of the model is about testing and
validating.
Agile Software Development
• is a group of software development methods based on
iterative and incremental development.
• So, what is Agile development? – Here is a short
summary:
– A group of software development methods
– Iterative approach
– Incremental: Software available to Customers every 2-4
weeks
– Self-organizing and cross-functional Teams
– Refactoring (restructuring an existing body of code, altering
its internal structure without changing its external behavior)
• In the following Figure, we see some important Agile
features and principles.
Course Lecture Slide about object oriented programming
• Examples of popular Agile methods:
– Scrum
– eXtreme Programming (XP)
• In the following Figure, we see the key features
with Agile Software Development.
The Manifesto for Agile Software Development:
• In 2001, some software developers met to discuss
development methods.
• They published the Manifesto for Agile Software
Development to define the approach now known as agile
software development.
• The Manifesto for Agile Software Development is as follows:
• We are uncovering better ways of developing software by
doing it and helping others do it.
• Through this work, we have come to value:
– Individuals and interactions over processes and tools
– Working software over comprehensive documentation
– Customer collaboration over contract negotiation
– Responding to change over following a plan
• That is, while there is value in the items on the right, we
value the items on the left more.
Burndown Chart:
• is a graphical representation of work left to do versus time.
• The outstanding work (or backlog) is often on the vertical axis, with time along
the horizontal.
• That is, it is a run chart of outstanding work.
• It is useful for predicting when all the work will be completed.
• It is often used in agile software development methodologies such as Scrum.
• However, burn down charts can be applied to any project containing measurable
progress over time.
• In the following, we see a typical Burndown chart.
Waterfall vs. Agile
• Agile is more flexible than traditional methods (like the waterfall).
• Here are some key factors that separates the traditional waterfall
method versus the more flexible Agile methods, such as Scrum:
– Agile and Scrum is based on Iterations while Waterfall is Sequential
– Agile and Scrum focus on less documentation
– Agile is good for small projects – not so good for larger projects?
– If the Customer don’t know what he wants in detail – Scrum is a good
approach
• In the following Figure we see some important differences between
the traditional waterfall method and the Agile Development
approach.
• We see that Agile delivers value in each iteration of the
development.
eXtreme Programming (XP)
• eXtreme Programming or shorted XP is a popular Agile
method.
• Typical features in XP are as follows:
– Pair Programming – an agile technique in which two
programmers work together at one workstation
– Code Reviews- methodical assessments of code designed to
identify bugs, increase code quality, and help developers learn
the source code
– Refactoring - restructuring an existing body of code, altering its
internal structure without changing its external behavior
– Unit Testing - In XP you start by writing Unit Tests before you
start coding
– Standup Meetings - regularly held gatherings—typically daily—
during which team members share status reports on their work
• In XP, they practice so-called “Pair Programming”, meaning 2
developers working together.
• So, is Pair Programming Good or Bad? There exists various studies
of the productivity of Pair Programming:
– Study 1: Comparable with that of 2 developers work independently
– Study 2: A significant loss in productivity compared with 2 developers
working alone
• A reasonable question is: Should the 2 developers have the same
skills or not?
• Newer less, there are benefits with XP:
– Collective Ownership for the code created and the results of the
project.
• Continuous informal Review process because each code line is
looked at by at least 2 people
– It supports Refactoring, which is a continuous process of software
improvement
– Less time is spent on repairing bugs.
– Improved Code Quality
– It reduces the overall risk
Scrum
• is a so-called Agile method, and it has become very
popular today.
• It is simple and easy to understand.
• The method is more flexible and more informal
than plan-driven methods.
• In short, Scrum is a Framework for Software Development.
– Agile Software Development method
– Simple to understand
– Flexible
– Extremely difficult to master!
– Self-organizing Teams (3-9 persons)
– Scrum Team:
• Product Owner – who is responsible for the project's outcome
• Scrum Master - facilitator who is responsible for managing the exchange of information between
team members
• Development Team - the team that is responsible for building the actual product increment and
meeting the sprint goal
• Some important Scrum Events are:
– The Sprint (duration between 14-30 days)
• a short period of time wherein a development team works to complete specific tasks, milestones, or
deliverables
– Sprint Planning Meeting (8 hours if 30 days’ sprint)
• is when the team (including the Scrum Master, Scrum Product Manager, and Scrum Team)
meets to determine which backlog items will be handled in the next sprint.
– Daily Scrum Meeting (Max 15 min, every day at the same time) (also
called Standup Meeting)
– Sprint Review (4 hours if 30 days’ sprint)
• Is where the team gathers to review completed work and determine whether additional
changes are needed.
• An example of a Daily Scrum Meeting is shown in
the Figure below.
• It is normal to held this meeting as a “standup
meeting”, where participants standing during the
meeting.
Daily Scrum Meeting:
• Important features with the Daily Scrum Meeting
are as follows:
– Max 15 min.
– The meeting is held at the same time and place every
day
– “Stand Up” Meeting
– Purpose:
• Synchronize activities and create a plan for next 24 hours.
• Track Progress
– Agenda – Each Team member explains:
• What has been accomplished since last meeting?
• What will be done before the next meeting?
• What obstacles are in the way?
Kanban
• is based on Lean and Toyota production principles and Just-in-Time principles.
– Lean Production Principles: 1) defining value (discover the actual or latent needs of the
customer.), 2) mapping the value stream (use the customer’s value as a reference point and
identify all the activities that contribute to these values), 3) creating flow (ensure that the flow
of the remaining steps run smoothly without interruptions or delays), 4) using a pull system
(creating just-in-time delivery), and 5) pursuing perfection (find ways to get a little better each
and every day)
)
• has fewer “rules” than scrum.
• is flow-based, while Scrum is Time box-based (Sprints).
• Kanban has focus on estimation.
• In Kanban, they use a Kanban board to track the progress.
• The Kanban board is very like the Task board used in Scrum.
Scrum Artifacts
– Product Backlog - a prioritized list of work for the development team
that is derived from the roadmap and its requirements.
– Sprint Backlog - the set of items that a cross-functional product team
selects from its product backlog to work on during the upcoming
sprint.
– Increment - a concrete stepping stone toward the Product Goal
• Scrum’s artifacts represent work or value in various ways that are
useful in providing transparency and opportunities for inspection
and adaptation.
• Artifacts defined by Scrum are specifically designed to maximize
transparency of key information needed to ensure Scrum Teams
are successful in delivering a “Done” Increment.
The Scrum Team
• The Scrum Team have the following members:
– Product Owner
– Scrum Master
– Development Team
• In addition, we have the Stakeholders, but they are not part of
the Scrum team itself.
Scrum Meetings
• So, if we summarize, we have 4 different meetings in
Scrum:
– Sprint Planning Meeting
– Daily Scrum Meeting
– Sprint Review Meeting
– Retrospective Meeting (a timeboxed meeting that takes place
after the sprint review and before sprint planning)
• The following table summarizes the different meetings
(purpose, duration, and frequency).
Scrum Terms
• Below we summarize the terms used in Scrum.
Scrum:
• Scrum is a framework structured to support complex
product development.
• Scrum consists of Scrum Teams and their associated roles,
events, artifacts, and rules.
• Each component within the framework serves a specific
purpose and is essential to Scrum’s success and usage.
The Scrum Team:
• The Scrum Team consists of a Product Owner, the
Development Team, and a Scrum Master.
• Scrum Teams are self-organizing and cross-functional.
• Self-organizing teams choose how best to accomplish their
work, rather than being directed by others outside the team.
Development Team:
• The Development Team are the professionals who do the
work of delivering a potentially releasable Increment of
“Done” product at the end of each Sprint.
• Development Teams are structured and empowered by the
organization to organize and manage their own work.
Product Owner:
• The Product Owner is the person responsible for maximizing
the value of the product, the work of the Development
Team, and management of the Product Backlog.
Scrum Master:
• The Scrum Master is a servant-leader for the Scrum Team
responsible for ensuring Scrum is understood and enacted.
• Scrum Masters do this by ensuring that the Scrum Team
adheres to Scrum theory, practices, and rules.
Product Backlog:
• The Product Backlog is an ordered list of everything that
might be needed in the product and is the single source of
requirements for any changes to be made to the product.
• The Product Owner is responsible for the Product Backlog,
including its content, availability, and ordering.
Sprint Backlog:
• The Sprint Backlog is the set of Product Backlog items
selected for the Sprint plus a plan for delivering the product
Increment and realizing the Sprint Goal.
• The Sprint Backlog is a forecast by the Development Team
about what functionality will be in the next Increment and
the work needed to deliver that functionality.
Increment:
• The Increment is the sum of all the Product Backlog items
completed during a Sprint and all previous Sprints.
Sprint:
• The heart of Scrum is a Sprint, a time-box of one month or less
during which a “Done”, useable, and potentially releasable
product Increment is created.
• Sprints have consistent durations throughout a development
effort.
• A new Sprint starts immediately after the conclusion of the
previous Sprint.
Sprint Planning Meeting:
• The work to be performed in the Sprint is planned at the Sprint
Planning Meeting.
• This plan is created by the collaborative work of the entire Scrum
Team.
Daily Scrum:
• The Daily Scrum is a 15-minute time-boxed event for the
Development Team to synchronize activities and create a plan for
the next 24 hours.
• This is done by inspecting the work since the last Daily Scrum and
forecasting the work that could be done before the next one.
Sprint Review:
• A Sprint Review is held at the end of the Sprint to inspect the
Increment and adapt the Product Backlog if needed.
• During the Sprint Review, the Scrum Team and stakeholders
collaborate about what was done in the Sprint.
• Based on that and any changes to the Product Backlog during the
Sprint, attendees collaborate on the next things that could be
done.
• This is an informal meeting, and the presentation of the
Increment is intended to elicit feedback and foster collaboration.
Sprint Retrospective:
• The Sprint Retrospective is an opportunity for the Scrum Team to
inspect itself and create a plan for improvements to be enacted
during the next Sprint.
• The Sprint Retrospective occurs after the Sprint Review and prior
to the next Sprint Planning Meeting.
• This is a three-hour time-boxed meeting for one-month Sprints.
• Proportionately less time is allocated for shorter Sprints.
Hybrid Process Models
Unified Process (UP)/ Rational Unified Process (RUP)
• The Unified Process (UP)/ Rational Unified Process (RUP) is a
so-called hybrid process model.
• It takes elements from many of the traditional plan drive
methods as well iterative/incremental delivery, which is an
important part of Agile methods.
• The RUP has been designed to work together with UML
(Unified Modeling Language).
– UML - a standard language for specifying, visualizing,
constructing, and documenting the artifacts of software
systems
• In UP we have 4 different phases:
– Inception
– Elaboration
– Construction
– Transition
• During the Inception phase, the emphasis is placed on
scope definition and business case formulation.
• The focus of the Elaboration phase is creating a
software development plan as well as identifying a
stable software architecture.
– The software development plan - includes determining the
project complexity, which is a major consideration for the
number of iterations, and project schedule and budget.
• During the Construction phase, the design of the
system is finalized and refined and the system is built
using the basis created during elaboration phase.
• The Transition phase is the final project phase which
delivers the new system to its end-users.
Summary
• Agile methods have become very popular today.
Agile methods are good in some situations, while
more traditional methods are better in other
situations.
• To create great software, we need to combine the
best of all these approaches and adjust them to fit
the needs of your company.
• There are lots of different kinds of software, and
one method is not fit to solve all these different
situations.
• Agile methods have less focus on documentation
Project Management
• is the key factor in any software development projects.
• It is the discipline of planning, organizing, motivating, and
controlling resources to achieve specific goals.
• Here the Figure below shows the well-known project
triangle.
• Here are some Key factors for successful project management:
– Proper Planning
– Kick-off and Brainstorming
– Planning and Estimation
– Project Tracking
– Communication and Collaboration
– Meetings
– Using proper Tools, such as e.g., Azure DevOps
1. Project Planning
• Software development involves lots of activities that need to be
planned and synchronized.
• To do that we need good tools for these activities.
• The Gantt chart is probably the most used tool.
– Gantt chart - is a type of bar chart that illustrates a project schedule,
named after its popularizer, Henry Gantt, who designed such a chart
around the years 1910–1915.
– Modern Gantt charts also show the dependency relationships between
activities and the current schedule status.
• In addition, we need to have different meetings to plan and
coordinate the different activities.
2. Kick-off/Brainstorming
• A Project should always start with a Kick-off meeting
where a brainstorming session is important of that
meeting.
• During the brainstorming, you should:
– Involve all in the group
– Discuss what you are going to do in the project
– How are you going to solve the project?
– etc.
• In addition to get good ideas for solving the project,
you should learn from previous projects.
• Examples: Who are going to solve the different parts,
what kind of Frameworks are you going to use, what
kind of development tools shall you use, etc.
3. Software Development Plan (SDP)
• Communication is the key to success!
• Below we list some examples how to avoid
Communication Problems:
– Listen to all with concentration
– Don’t pre-judge
– Give all team members a turn
– See the value in every idea
– Don’t make assumptions
– Ask questions to clarify
– When in doubt, communicate
• A good idea is to create a Software Development Plan.
• The Software Development Plan gives an overview of
all the communication within the project or within the
team, i.e., what kind of communication, how the
communication should be done, etc.
• Examples of Communication:
– Meetings: The Team will meet every Monday from …
– Standards: Which Word processor, Templates, etc.
– E-mail… or other communication platforms, …
– Collaboration: How will you communicate? Work together on Tuesdays, …
– Other Tools: Microsoft Project, …
• Microsoft Project - is a project management software product, developed and sold by
Microsoft.
• It is designed to assist a project manager in developing a schedule, assigning resources to
tasks, tracking progress, managing the budget, and analyzing workloads.
– etc.
• The Software Development Plan typically includes the following sections:
• 1. Introduction: This briefly describes the objectives of the project and set out the
constraints (e.g., budget, time, etc.) that affects the management of the project
• 2. Project Organization: This section describes how the development team is organized,
the people involved and their roles in the team.
• 3. Risk Analysis - is the process of identifying and analyzing potential issues that could
negatively impact key business initiatives or projects
• 4. Hardware and Software Resource Requirements
• 5. Work Breakdown (WBS, Work Breakdown Structure): Break down the project in into
activities and identifies milestones
• 6. Project Schedule: Shows dependencies between activities, the estimated time required
to reach each milestone, allocation of people to activities.
– (5) and (6) is typically done in a Gantt Chart (created in e.g., Microsoft Project)
• 7. Monitoring and Reporting Mechanisms: Definition of the Management Report that
should be produced, when these should be produced, etc.
• Other words for the Software Development Plan may be
“Communication Plan” or “Project Plan”.
• A Software Development Plan (SDP) is all about the Internal
Communication within the Development Team and how it
Communicates with rest of the Organization, the Customers, etc.
3.1 Gantt Chart
• One of the most used tools for project planning is the Gantt chart.
• The Gantt chart gives an overview of tasks, subtasks, milestones (is a
reference point that marks major events, decision points, or
deliverables that a project manager and other stakeholders need to
pay attention to), resources, etc. in a project.
• In the Figure below we see a Gant Chart example created with
Microsoft Project.
• It is important that the Project Management is an active
part of your software project.
• The Gantt Chart should be used through the whole
project; it is not something you create in the beginning of
the project and put in a drawer.
• The Figure below shows the recommended way of
working with the different project activities.
• Always create a Project Plan!
4. Meetings
• It is necessary to have meetings when planning and creating
software, but these meetings should not be misused.
• Below we list some typical meeting needed during the software
development project:
– Kickoff and Planning Meetings
– Project Meetings
– Daily Scrum Meetings
– Review Meetings
– Meetings for Planning next Sprint/Iteration
• For meetings in general we have the following guidelines:
– The meeting agenda should be clear.
– All meetings should follow the basic structure that is described for that
meeting.
– Meetings should start on time, even if some team members are late.
– Meetings should finish on time.
– Each team member should come to the meeting prepared.
• Always be prepared before the meetings (otherwise you don’t
need to be there)!
4.1. Meeting Agenda
• A typical meeting agenda could be as follows:
– Project Plan, Gantt Chart (Project Manager)
– Work Items, Overview and Status (Test Manager -
responsible for the planning, coordination, and control of
various test activities)
– Demonstration of Applications/Coding (Individual)
– Short Status for each member (Individual)
• What have you done so far?
• What shall be the focus the next weeks?
• Any Technical Challenges/Problems/Issues? (It is very important to
get an overview
– of the challenges in the project, or else the whole project
will be at risk if you don’t talk about them!)
• Other matters
– The meeting should last no longer than 60 minutes.
• When you are finished with the meeting, write a short
Minutes of Meeting as soon as possible.
5. Agile Project Planning and Tracking
• Successful projects often have the following characteristics:
– The needs of the customers drive the project.
– The team creates a high-level plan for delivering the project.
– The team develops the product over several iterations and refines the high-
level plan over time.
– The team has effective tools for adapting to changes that occur.
• The Figure below shows the steps involved in Agile Project Planning
and Tracking.
• In Agile Project Planning and Tracking, everything
is broken down to so-called iterations, as shown in
the following Figure.
• A burn down chart is a graphical representation of work left to do versus time.
• The outstanding work (or backlog) is often on the vertical axis, with time along
the horizontal.
• That is, it is a run chart of outstanding work.
• It is useful for predicting when all the work will be completed.
• It is often used in agile software development methodologies such as Scrum.
• However, burn down charts can be applied to any project containing measurable
progress over time.
• Azure DevOps have all these features (Task board, Burndown chart, etc.) built in.
TO BE CONTINUED….
Course Lecture Slide about object oriented programming
Course Lecture Slide about object oriented programming
Course Lecture Slide about object oriented programming
Course Lecture Slide about object oriented programming
Course Lecture Slide about object oriented programming
Course Lecture Slide about object oriented programming

More Related Content

Similar to Course Lecture Slide about object oriented programming (20)

PPTX
Software Engineering Introduction -UNIT 1.pptx
Kalpana Mohan
 
PPSX
Software Development
Goutama Bachtiar
 
DOC
Session3
Jani Kusuma
 
PPTX
SE Unit-1.pptx
SanskarBhushankar
 
PPTX
Lecture 3 software_engineering
moduledesign
 
PDF
software engineering
Ahmed Elshahat Mohamed
 
PPTX
Chapter 1-Introduction to sofware Engineering.pptx
aragawbayuh
 
PPT
16103271 software-testing-ppt
atish90
 
PPTX
Software engineer
Social Development Club
 
PDF
Chap2
Niit
 
PPTX
Introduction to Software Engineering_Need_SDLC_types of SDLC
DeepakUlape2
 
PPTX
S.E Lec #1.pptx
RaajpootQueen
 
PDF
How Custom Software Development is Transforming the Traditional Business Prac...
christiemarie4
 
PPTX
Introduction to Software Engineering Notes.pptx
bscit6
 
PDF
software_engineering_interview_questions.pdf
swathysajeev35
 
PDF
Software engineering interview questions
MuhammadTalha436
 
PPSX
Software engineering
h2eEdgar
 
PPTX
SoftwareEngineering.pptx
priyaaresearch
 
PPTX
SoftwareEngineering.pptx
DrPrabakaranPerumal
 
Software Engineering Introduction -UNIT 1.pptx
Kalpana Mohan
 
Software Development
Goutama Bachtiar
 
Session3
Jani Kusuma
 
SE Unit-1.pptx
SanskarBhushankar
 
Lecture 3 software_engineering
moduledesign
 
software engineering
Ahmed Elshahat Mohamed
 
Chapter 1-Introduction to sofware Engineering.pptx
aragawbayuh
 
16103271 software-testing-ppt
atish90
 
Software engineer
Social Development Club
 
Chap2
Niit
 
Introduction to Software Engineering_Need_SDLC_types of SDLC
DeepakUlape2
 
S.E Lec #1.pptx
RaajpootQueen
 
How Custom Software Development is Transforming the Traditional Business Prac...
christiemarie4
 
Introduction to Software Engineering Notes.pptx
bscit6
 
software_engineering_interview_questions.pdf
swathysajeev35
 
Software engineering interview questions
MuhammadTalha436
 
Software engineering
h2eEdgar
 
SoftwareEngineering.pptx
priyaaresearch
 
SoftwareEngineering.pptx
DrPrabakaranPerumal
 

More from amare63 (9)

PPTX
External css.pptx on chapter 5 introduction to html
amare63
 
PPTX
Module IV in carrier and technical education .pptx
amare63
 
PPTX
Cloud Computing and fog computing lesson notes.pptx
amare63
 
PPTX
Attacker scenarios and threats description.pptx
amare63
 
PPTX
chapter 4 web authoring unit 4 xml.pptx
amare63
 
PPTX
ICT grade 9 handout new curriculum .pptx
amare63
 
PPTX
Unguided (Wireless) Media network communication .pptx
amare63
 
PPTX
chapter 4 about image processing and multimedia production
amare63
 
PPTX
All Chapter Emerging technology ppt.pptx
amare63
 
External css.pptx on chapter 5 introduction to html
amare63
 
Module IV in carrier and technical education .pptx
amare63
 
Cloud Computing and fog computing lesson notes.pptx
amare63
 
Attacker scenarios and threats description.pptx
amare63
 
chapter 4 web authoring unit 4 xml.pptx
amare63
 
ICT grade 9 handout new curriculum .pptx
amare63
 
Unguided (Wireless) Media network communication .pptx
amare63
 
chapter 4 about image processing and multimedia production
amare63
 
All Chapter Emerging technology ppt.pptx
amare63
 
Ad

Recently uploaded (20)

PPTX
Growth and development and milestones, factors
BHUVANESHWARI BADIGER
 
PPTX
HYDROCEPHALUS: NURSING MANAGEMENT .pptx
PRADEEP ABOTHU
 
PPTX
2025 Winter SWAYAM NPTEL & A Student.pptx
Utsav Yagnik
 
PDF
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
PPTX
Pyhton with Mysql to perform CRUD operations.pptx
Ramakrishna Reddy Bijjam
 
PDF
ARAL_Orientation_Day-2-Sessions_ARAL-Readung ARAL-Mathematics ARAL-Sciencev2.pdf
JoelVilloso1
 
PDF
The Different Types of Non-Experimental Research
Thelma Villaflores
 
PDF
CONCURSO DE POESIA “POETUFAS – PASSOS SUAVES PELO VERSO.pdf
Colégio Santa Teresinha
 
PPTX
Unit 2 COMMERCIAL BANKING, Corporate banking.pptx
AnubalaSuresh1
 
PPTX
How to Manage Large Scrollbar in Odoo 18 POS
Celine George
 
PDF
Dimensions of Societal Planning in Commonism
StefanMz
 
PPTX
MENINGITIS: NURSING MANAGEMENT, BACTERIAL MENINGITIS, VIRAL MENINGITIS.pptx
PRADEEP ABOTHU
 
PPTX
Soil and agriculture microbiology .pptx
Keerthana Ramesh
 
PDF
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
PDF
DIGESTION OF CARBOHYDRATES,PROTEINS,LIPIDS
raviralanaresh2
 
PPTX
THE TAME BIRD AND THE FREE BIRD.pptxxxxx
MarcChristianNicolas
 
PDF
ARAL-Orientation_Morning-Session_Day-11.pdf
JoelVilloso1
 
PDF
community health nursing question paper 2.pdf
Prince kumar
 
PDF
The dynastic history of the Chahmana.pdf
PrachiSontakke5
 
PDF
Isharyanti-2025-Cross Language Communication in Indonesian Language
Neny Isharyanti
 
Growth and development and milestones, factors
BHUVANESHWARI BADIGER
 
HYDROCEPHALUS: NURSING MANAGEMENT .pptx
PRADEEP ABOTHU
 
2025 Winter SWAYAM NPTEL & A Student.pptx
Utsav Yagnik
 
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
Pyhton with Mysql to perform CRUD operations.pptx
Ramakrishna Reddy Bijjam
 
ARAL_Orientation_Day-2-Sessions_ARAL-Readung ARAL-Mathematics ARAL-Sciencev2.pdf
JoelVilloso1
 
The Different Types of Non-Experimental Research
Thelma Villaflores
 
CONCURSO DE POESIA “POETUFAS – PASSOS SUAVES PELO VERSO.pdf
Colégio Santa Teresinha
 
Unit 2 COMMERCIAL BANKING, Corporate banking.pptx
AnubalaSuresh1
 
How to Manage Large Scrollbar in Odoo 18 POS
Celine George
 
Dimensions of Societal Planning in Commonism
StefanMz
 
MENINGITIS: NURSING MANAGEMENT, BACTERIAL MENINGITIS, VIRAL MENINGITIS.pptx
PRADEEP ABOTHU
 
Soil and agriculture microbiology .pptx
Keerthana Ramesh
 
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
DIGESTION OF CARBOHYDRATES,PROTEINS,LIPIDS
raviralanaresh2
 
THE TAME BIRD AND THE FREE BIRD.pptxxxxx
MarcChristianNicolas
 
ARAL-Orientation_Morning-Session_Day-11.pdf
JoelVilloso1
 
community health nursing question paper 2.pdf
Prince kumar
 
The dynastic history of the Chahmana.pdf
PrachiSontakke5
 
Isharyanti-2025-Cross Language Communication in Indonesian Language
Neny Isharyanti
 
Ad

Course Lecture Slide about object oriented programming

  • 1. OBJECT-ORIENTED SOFTWARE DEVELOPMENT Lectured by: Dr. Solomon Demissie (Assistant Professor) Kotebe Metropolitan University June, 2022
  • 2. • INTRODUCTION TO SOFTWARE DEVELOPMENT – What is Software Development? • It is a complex process to develop modern and professional software today. • Normally we use the terms System Engineering or Software Engineering. • System Engineering: The process of analyzing and designing an entire system, including the hardware and the software. • Software Engineering: The discipline for creating software applications. – It is a systematic approach to the design, development, testing, and maintenance of software.
  • 3. • A lot of systems today have a mix of hardware and software that is tightly integrated, like modern smartphones, tablets, etc. – Creating such systems involve a lot of different disciplines. • Software is any set of machine-readable instructions that directs a computer's processor to perform specific operations. • The term is used to contrast with computer hardware, the physical objects (processor and related devices) that carry out the instructions. • Computer hardware and software require each other, and neither can be realistically used without the other, see Figure 1-1. • Figure 1-1: Hardware and Software working together
  • 4. • In Figure 1-2 we see a typical network and infrastructure that the software relies on. • Figure 1-2: Typical Network and Infrastructure in Software Development
  • 5. • Figure 1-3 we see the complexity of software development and different components that are involved. • Figure 1-3: The Complexity of modern Software
  • 6. • In Figure 1-4 we see the different phases involved in the Software Development Lifecycle (SDLC). • Figure 1-4: The Software Development Lifecycle
  • 7. • PHASES OF SOFTWARE DEVELOPMENT PROCESS Requirements - description of features and functionalities of the target system. Requirements convey the expectations of users from the software product. – Functional requirements - are product features or functions that developers must implement to enable users to accomplish their tasks. – Non-functional requirement (NFR) - a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. – types of non functional behaviour: Scalability, Capacity, Availability, Reliability, Recoverability, Data Integrity, etc. – Examples: Employees never allowed to update their salary information. – Initial User Interface: • The User Interface (UI) - is the point of human-computer interaction and communication in a software system. – Technology Platform Selection - evaluating multiple competing technologies or platforms to identify what solution will work best for a business's needs. – Technical Architecture – is a form of IT architecture that is used to design computer systems. – It involves the development of a technical blueprint with regard to the arrangement, interaction, and interdependence of all software elements so that system-relevant requirements are met. • Project Plan - a formal, approved document used to guide both project execution and project control.
  • 8. • Design – is the specifications to determine what your software needs, how it will look, and what the timeline for development is going to be. – Application Architecture - describes the patterns and techniques used to design and build an application. • The architecture gives you a roadmap and best practices to follow when building an application, so that you end up with a well- structured app. – Detailed Specifications - is a document or set of documentation that describes the features and behavior of a system or software application. – System Interface Design - designing and building systems that are effective, are intuitive, and meet the goals of a set of users. • Test Plan - is a detailed document that describes the test strategy, objectives, schedule, estimation, deliverables, and resources required to test the software.
  • 9. • Implementation - the transformation of the software technical data package (TDP) (set of files that describe the software product) into one or more fabricated, integrated, and tested software configuration items that are ready for software acceptance testing. – Application Code Development - a way to design and develop applications with coding – System Interface Development - the development of components of a computer system to exchange information. – Unit Testing - a type of software testing where individual components of a software are tested. – Integration with Existing Apps • Regression testing - is a software testing practice that ensures an application still functions as expected after any code changes, updates, or improvements.
  • 10. • Testing - Software testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. • The benefits of testing include preventing bugs, reducing development costs and improving performance. • It is responsible for the overall stability and functionality of the existing features. – Integration testing -- also known as integration and testing (I&T) -- is a type of software testing in which the different units, modules or components of a software application are tested as a combined entity. – System testing, also referred to as system-level tests or system- integration testing, -is the process in which a quality assurance (QA) team evaluates how the various components of an application interact together in the full, integrated system or application. • Acceptance testing - a testing technique performed to determine whether or not the software system has met the requirement specifications.
  • 11. • Maintenance - is the process of changing, modifying, and updating software to keep up with customer needs. • It is done after the product has launched for several reasons including improving the software overall, correcting issues or bugs, to boost performance, and more. – Deployment - is the mechanism through which applications, modules, updates, and patches are delivered from developers to users. – Installation - is the act of making the program ready for execution. • Support - are generally technical support or break/fix services that are delivered for specific software products.
  • 12. • In Figure 1-5 we see examples of some of the different activities involved in the different phases of software development • Figure 1-5: Activities involved in the different Software Phases
  • 13. • As you see, software development involves lot of phases. • Figure 1-6: Have Reviews at all levels in the Development Cycle
  • 14. – Background • Software and software systems are getting more and more complex, so it is important to have the necessary “tools” in your “toolbox” to be able to create and maintain your software. • Software Development is a complex process, and it may involve a lot of money and a lot of people. • Here are some examples: – Windows 7: A Team with 1000 Developers created Windows 7 – Number of Code Lines: Real systems may have millions of code lines – Big money: 100+ million Development Projects – Combination of Hardware and Software: Most of the projects involves both hardware and software and integration between them. – iPhone 1: Development period 2004-2007, 1000 Apple employees worked with the device, Estimated cost: $150 mill. • All this need structure! - Software Engineering is the Answer!
  • 15. • Project Planning and Management is important in Software Development, and we can use different approaches to deal with the Software Development, which we will cover in this course – Especially so-called Agile approaches, such as Scrum has become very popular today. • Agile SW Approach - a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self- organizing cross-functional teams (the people who have responsibility for making decisions about what is built to deliver value to customers). • Agile scrum methodology - is a project management system that relies on incremental development. – Each iteration consists of two- to four-week sprints, where the goal of each sprint is to build the most important features first and come out with a potentially deliverable product. – A sprint in Scrum is a short period of time wherein a development team works to complete specific tasks, milestones, or deliverables • In general, the Software Development Life Cycle, shorted SDLC, involves distinct phases, such as: – Market research • an intelligent process of gathering and analyzing the statistical data related to software services and products. • This research aims at your targeted customer's understanding, needs and wants. • Also, reveals how effectively a company can meet their requirements – Gathering requirements for the proposed business solution – Analyzing the problem
  • 16. – Create a plan or design for the software-based solution – Implementation (coding) of the software – Documentation in different ways – Testing the software – Deployment and Installation – Maintenance and bug fixing – Marketing • There are different approaches (Software Development Processes) that deal with these phases, such as:
  • 17. – Waterfall model - a breakdown of project activities into linear sequential phases, where each phase depends on the deliverables of the previous one – V-model - an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage – Agile Software Development (such as Scrum, XP, etc.) - a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self- organizing cross-functional teams – Spiral model - a risk-driven software development process model. • It is a combination of waterfall model and iterative model – Rational Unified Process (RUP) - an agile software development method, in which the life cycle of a project, or the development of software, is divided into four phases: • Inception (the basic idea and structure of the project are determined, e.g., market research results, project plan), • Elaboration (the system’s requirements and its required architecture are assessed and analysed), • Construction (the software system is constructed in its entirety), and • Transition (transfer the product to its new user) – etc. • We will learn more about these development processes later in this course.
  • 18. • Software Development also involves separate roles, which are organized in different teams (Figure 1-8). Typical roles are: – Project Manager- in charge of the planning, scheduling, budgeting, execution, and delivery of software and web projects – System Architect - define the architecture of a computerized system in order to fulfill certain requirements – UX Designer - design of the entire process of acquiring and integrating the product, including aspects of branding, design, usability and function – Programmer, System Developer - create software that enables users to perform specific tasks on computer devices – Tester - perform automated and manual tests to ensure the software created by developers is fit for purpose – Customer – the end user to the system • It is crucial that the separate roles and teams can work together and collaborate.
  • 19. • The Programmer or System Engineer must deal with that there exists hundreds of different Programming Languages. • Each language has pros and cons, so it is important to find out which programming language is best suited in each situation. • Figure 1-8: Distinct Roles involved in Software Development
  • 20. • In this course, we will learn how to build good (i.e., high quality) software, which includes: – Requirements Specification – Technical Design – User Experience (UX) – Improved Code Quality and Implementation – Testing – System Documentation – User Documentation – etc. • Figure 1-9: The Toolbox of a Software Engineer
  • 21. • When working with software development it is important to have good tools. • The developer needs of course to use a programming language and proper IDE (Integrated Development Environment). – software for building applications that combines common developer tools into a single graphical user interface (GUI) • In addition, a so-called ALM (Application Lifecycle Management) Tool should be used. – ALM - is the product lifecycle management of computer programs • An ALM tool typically facilitate and integrate things like: – Requirements Management – Architecture – Coding – Source Code Control (SCC) - a version control system designed to track changes in source code and other text files during the development of a piece of software – Testing – Bug Tracking – Release Management – etc. • There exist a lot of such tools, e.g., Azure DevOps, Jira, Git, etc.
  • 22. • Typically, you need to share the code with other developers or testers in your team or other teams, so it is crucial that you have tools that can be used to share your code, that makes sure that old versions of your code will be stored, and can be restored, etc. – Such a system is called a Source Code Control (SCC) system. • Your software will also contain a lot of bugs that needs to be found, tracked, and fixed, etc. • To handle that we need a so-called Bug Tracking system. • In Figure 1-10 we see some of the bug tracking functionality in Azure DevOps.
  • 23. Figure 1-10: Bug Tracking System
  • 24. • In Figure 1-11 we see a typical software project with different platforms and frameworks involved. • Figure 1-11: Typical Software Project with different Platforms and Frameworks involved
  • 25. • Typically, your software needs to be installed and be running on different devices, such as PCs, tablets, smartphones, etc. • You also need to store the data, typically in a database, such as Microsoft SQL Server, MySQL, etc. • All these devices and the data also need to communicate with each other over a network, either an internal network (LAN, Local Area Network) or over Internet (WAN, Wide Area Network). • All these things make it very complicated to develop, test, deploy and install such systems. – That’s the reality for a modern software developer.
  • 26. SOFTWARE HISTORY • 2.1. Introduction • The computer and software history goes back to the beginning of the 1900 century. • IBM (International Business Machines corporation) was established in 1911, Hewlet Packard (HP) was established in 1939, the transistor came in 1947, the first Microprocessor came in 1972, etc. – But “personal computing” started in 1981 with MS-DOS and the IBM PC. • In 1984 came the famous Macintosh from Apple. • Windows 1.0 was released in 1985. • They found a bug (a moth) inside a computer in 1947 that made the program not behaving as expected. – This was the “first” real bug.
  • 27. • In the 80s and 90s we saw the beginning of the personal computer era that started with Mac computers from Apple (Macintosh, 1984) and IBM computers from IBM (or IBM compatible computers from other vendors) with MS-DOS and later Windows installed (Figure 2-1). Figure 2-1: The Beginning of Personal Computing
  • 28. • World Wide Web (WWW) was established in 1991. – referred to as WWW, W3, or the Web—is an interconnected system of public webpages accessible through the Internet. • The first Web Browser (application software for accessing the World Wide Web or a local website), as we know it today, came in 1994 (Netscape). • Google was established as late as 1998. • Facebook was first invented in 2004. • The first smartphone was released in 2007 (iPhone).
  • 29. • The companies that they created still dominate the software industry today. • Some of the people are still active within these companies today, either as CEOs or members of the board. • Some of the largest software companies today are: • Microsoft (established 1975), Bill Gates, Paul Allen – MS DOS (1981), Office, Windows (1985), … – Employees (2012): 94,000, Revenue (2012): $74 bill. • Apple (Software and Hardware) (established 1976), Steve Jobs, Steve Wozniak – Macintosh (1984), iPhone (1997), iPad (2012), iOS ((formerly iPhone OS or iPhone Operating System) is a mobile operating system created and developed by Apple Inc. exclusively for its hardware.) – Employees (2012): 72,800, Revenue (2012): $158 bill.
  • 30. • Google (established 1986), Larry Page, Sergey Brin • Facebook (established 2004), Mark Zuckerberg – More than 1 bill. users • In addition, we can mention companies like IBM, Oracle, Samsung (more hardware than software), Amazon, SAP, Adobe, Symantec, VMware, etc. 2.2. Software Trends • The software industry has changed a lot since the 80s, and it is still changing very quickly. • Figure 2-3 gives an overview of some important trends in the software industry today and tomorrow.
  • 32. • Apps and Mobil devices: Everybody have a mobile device today and fewer PCs are sold than ever before. • Licensing: You don’t buy, but lease software these days and all your information is stored in the Cloud, and some software is running in the Cloud (so- called Cloud Computing). • The security challenges is very important in this case. • The companies that develop software needs to face these facts and make the necessary changes to survive.
  • 33. • Virtualization - is the creation of a virtual -- rather than actual -- version of something, such as an operating system (OS), a server, a storage device or network resources. – Virtualization - uses software that simulates hardware functionality to create a virtual system. – Virtualization - uses software to create an abstraction layer over computer hardware that allows the hardware elements of a single computer—processors, memory, storage and more—to be divided into multiple virtual computers, commonly called virtual machines • Cloud computing- is the delivery of computing services—including servers, storage, databases, networking, software, analytics, and intelligence—over the Internet ("the cloud") to offer faster innovation, flexible resources, and economies of scale.
  • 34. • “Softwear” and Wearable Computing: the study or practice of inventing, designing, building, or using miniature body-borne computational and sensory devices. – Now we have watches like Galaxy Gear, the Apple Watch, Google Glass, etc. • BYOD (bring your own device) - is a policy that allows employees in an organization to use their personally owned devices for work-related activities. – Those activities include tasks such as accessing emails, connecting to the corporate network, and accessing corporate apps and data.
  • 35. Figure 2-4: Software Trends Examples
  • 36. SOFTWARE DEVELOPMENT • Terms: • Software Development – (also known as application development, – software design, – designing software, – software application development, – enterprise application development, or – platform development) • is the development of a software product.
  • 37. • Software Engineering (SE) - is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. • In Figure 3-1 we see how a software application typically interacts with users, the underlying operating system and hardware. Figure 3-1: Software Interaction with Hardware and Users
  • 38. – Challenges • In Figure 3-2 we see some of the challenges in software development. Figure 3-2: Challenges with Software Development
  • 39. • Collaboration and communication within the team and with stakeholders, etc. is crucial when it comes to creating good software. • Creating software is complicated. • It is important to understand the customer’s needs! • In some way, you need to find out what the customer needs. • Market research, etc. is a good start, but in the end, you need to go much deeper to understand the customer. • Most of the time the customer doesn’t even know what they need. – Software Systems • In software development we have different kinds of systems, such as:
  • 40. • Stand-alone applications – These are application systems that run on a local computer, such as a PC. – They include all necessary functionality and do not need to be connected to a network. • Interactive transaction-based applications – Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. – These include web applications such as e-commerce applications. • Embedded control systems – These are software control systems that control and manage hardware devices. – Numerically, there are probably more embedded systems than any other type of system.
  • 41. • Batch processing systems – These are business systems that are designed to process data in large batches. – They process large numbers of individual inputs to create corresponding outputs. – E.g., transactions of credit cards, generation of bills, etc. • Entertainment systems – These are systems that are primarily for personal use and which are intended to entertain the user. • Systems for modeling and simulation – These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. – E.g., weather forecasting, flight simulators used for training pilots, and car crash modeling, etc • Data collection systems – These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing. – E.g,, bar code scanners, position scanners, etc. • Systems of systems – These are systems that are composed of several other software systems. – E.g., air and road transportation, power grids, healthcare, water management, industrial processes, building complexes, critical infrastructures, enterprise systems, smart homes and cities, and others
  • 42. • We can split the software systems in 2 main categories: • Generic products – Stand-alone systems that are marketed and sold to any customer who wishes to buy them. – Examples – PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists. – Examples: Microsoft Office • Customized products – Software that is commissioned by a specific customer to meet their own needs. – Examples – embedded control systems, air traffic control software, traffic monitoring systems.
  • 43. – Documentation • Lots of documentation is involved in software development, see Figure 3-3. • Some of the documentation needed in the different phases involved in software development are: • SRS – Software Requirements Specifications • A document stating what an application must accomplish • SDD – Software Design Document • A document describing the design of a software application • STP - Software Test Plan • Documentation stating what parts of an application will be tested, and the schedule of when the testing is to be performed • STD - Software Test Documentation • Contents: Introduction, Test Plan, Test Design, Test Cases, Test procedures, Test Log, …, Summary • More about Software Documentation later in this course.
  • 44. Figure 3-3: Typical Documentation involved in Software Development • QA – Quality Assurance - refers to the engineering activities implemented in a quality system so that requirements for a product or service will be fulfilled.
  • 45. – Iterations and Releases • In Software Development, we typically have different iterations and releases (alpha, beta, release candidate, requirements traceability matrix), as shown in Figure 3-4. Figure 3-4: Software Iterations and Releases
  • 48. Development Teams • A typical Software Team consists of the following roles: – Project Manager – System Architect – UX Designer (Software Designer) – Programmer – Software Tester • In addition, we have the Stakeholders or Customers that play an important role in the development. • A typical Software Team:
  • 50. • A System Engineer is: – a general person that could be a Programmer, Architect, Designer, Tester in different phases in the project, or – he could be a tester in one project and a programmer in another project – all in one person. • in larger companies these roles (designer, tester, programmer) could be a full- time job. • To successfully create software, collaboration inside the team is essential.
  • 51. Stakeholders • Are all the people that has an interest in the outcome of the software . • In most cases, they are referred to as “Customers” but others may also be referred to as stakeholders, such as management, shareholders, etc. Project Manager • The Project Managers have the responsibility of the planning, execution and closing of the project. System Architect • With “Technical Design” we mean the Platform and Architecture Design, i.e., how to build the software. • This is typically done by a so-called Software/System Architect.
  • 52. UX Designer • UX Design is the Design of the User eXperience (UX) and the Graphical User Interface (GUI), • sometimes also called Human Machine Interface (HMI). • This is what the end user of the software sees. • This is typically done by a so-called UX Designer. Programmer • The Programmer or the Developer is doing the actual implementation of the software, i.e., the coding. Software Tester • Before the customer can start using the software it needs to be properly tested. • The Developer/Programmer needs to test his software, but since software consists of several software modules and components created by different developers, we need dedicated software testers that can test the software on a higher level. • The Customers are/should also be involved in the testing as well.
  • 54. Requirements • In the requirements, we describe what the system should do. • The requirements include both functional requirements and non-functional requirements. – Functional Requirements: Statements of services the system should provide, how the system should react to inputs and how the system should behave in different situations. • May state what the system should not do. – Non-Functional Requirements: Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. • Often apply to the system rather than individual features or services.
  • 55. • The requirements are often collected in a so-called “Software Requirements Specification (SRS)” document. • The SRS could contain stuff like: • Introduction – Purpose – Definitions – System overview – References • Overall description – Product perspective • System Interfaces • User Interfaces • Hardware interfaces • Software interfaces • Communication Interfaces • Memory Constraints • Operations • Site Adaptation Requirements – Product functions – User characteristics – Constraints, assumptions, and dependencies
  • 56. • Specific requirements – External interface requirements – Functional requirements – Performance requirements – Design constraints • Standards Compliance – Logical database requirement – Software System attributes • Reliability • Availability • Security • Maintainability • Portability • Other requirements • The Requirements is normally given by the Customer if we deal with customized products. • The software requirements document is the official statement of what is required of the system. • It should include both a definition of user requirements and a specification of the system requirements. • It is NOT a design document. • As far as possible, it should include a set of WHAT the system should do rather than HOW it should do it.
  • 57. Design • In the design phase, we use the specification and transform it into descriptions of how we should do it. • In principle, requirements should state what the system should do and the design should describe how it does this – but in practice this is not so easy! - In practice, requirements and design are inseparable. • We can divide design into 2 main groups: – Technical Design – Platform and Architecture Design, i.e., how to build the software. – UX Design – Design of User eXperience (UX) and the Graphical User Interface (GUI), sometimes also called Human Machine Interface (HMI). • This is what the end user of the software sees.
  • 58. Technical Design • Technical Design is the Platform and Architecture Design, i.e., how to build the software. • This is typically done by a so-called Software Architect. UX Design • UX Design is the Design of the User eXperience (UX) and the Graphical User Interface (GUI), sometimes also called Human Machine Interface (HMI). • This is what the end user of the software sees. • This is typically done by a so-called UX Designer.
  • 59. Implementation • Implementation = Coding. • Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like Eclipse, Xcode or Microsoft Visual Studio that can simplify the process and compile the program to an executable unit. • Software is usually created on top of existing software and the application programming interface (API) that the underlying software frameworks provide, e.g. Microsoft .NET, etc. • Most of the software has a Graphical User Interface (GUI). • Normally you separate the GUI design and code in different layers or files.
  • 60. Testing • Testing can be performed on different levels and by different persons. • Testing is a very important part of software development. • About 50% of the software development is about testing your software. • Creating User-friendly Software is Crucial! • Discussed later… Deployment • Software deployment is all the activities that make a software system available for use. • Examples: – Get the software out to the customers – Creating Installation Packages – Documentation, e.g., Installation Guide, etc. – Installation – etc. • Deployment strategies may vary depending of what kind of software we create, etc. • Discussed later…
  • 61. Maintenance • When the software is deployed, or installed, you normally go into a Maintenance phase. • The maintenance of software involves bug fixes of the software after the software is released, etc. • At some time, you also need to start planning new releases of the software. Software Development Process • There are lots of different software development processes or methods in use today, e.g.: – Waterfall model – V-model – Spiral model – Unified Process (UP)/ Rational Unified Process (RUP) – Scrum – eXtreme Programming (XP) – Lean Software Development – TDD (Test Driven Development) – Lean Software Development – Kanban – etc.
  • 62. • These processes or models may be divided in 2 main categories: Plan-driven models and Agile methods. • The Waterfall model, V-model and the Spiral model is so-called plan-driven models, while Scrum and eXtreme Programming are so-called Agile methods. • Traditionally plan-driven methods where used in software development, while today Agile methods such as Scrum have become very popular, especially in smaller development teams. • Plan-driven models (e.g., Waterfall) generally produce more documentation than Agile models.
  • 64. Plan-driven models • We have different plan-driven models such as the Waterfall model, V-model, Spiral model which we will discuss in more details. Waterfall model • The Waterfall model consists of the following phases: – Requirements specification (Requirements analysis) – Software design – Implementation and Integration – Testing (or Validation) – Deployment (or Installation) – Maintenance • Traditionally with the Waterfall model, you can only start on the next phase when the previous phase is finished. – Therefore, it is called the Waterfall method
  • 66. • In practice, there is impossible to create perfect requirements and design before you start implementing the code, so it is common to go back and update these phases iteratively. V-model • The V-model is derived from the more traditional Waterfall model. • The V-model is an extension of the waterfall model, but it’s using a more flexible approach. • “The V-Model reflects a project management view of software development and fits the needs of project managers, accountants and lawyers rather than software developers or users.”
  • 67. • the left side is about requirements and design, while the right-side of the model is about testing and validating. Agile Software Development • is a group of software development methods based on iterative and incremental development. • So, what is Agile development? – Here is a short summary: – A group of software development methods – Iterative approach – Incremental: Software available to Customers every 2-4 weeks – Self-organizing and cross-functional Teams – Refactoring (restructuring an existing body of code, altering its internal structure without changing its external behavior) • In the following Figure, we see some important Agile features and principles.
  • 69. • Examples of popular Agile methods: – Scrum – eXtreme Programming (XP) • In the following Figure, we see the key features with Agile Software Development.
  • 70. The Manifesto for Agile Software Development: • In 2001, some software developers met to discuss development methods. • They published the Manifesto for Agile Software Development to define the approach now known as agile software development. • The Manifesto for Agile Software Development is as follows: • We are uncovering better ways of developing software by doing it and helping others do it. • Through this work, we have come to value: – Individuals and interactions over processes and tools – Working software over comprehensive documentation – Customer collaboration over contract negotiation – Responding to change over following a plan • That is, while there is value in the items on the right, we value the items on the left more.
  • 71. Burndown Chart: • is a graphical representation of work left to do versus time. • The outstanding work (or backlog) is often on the vertical axis, with time along the horizontal. • That is, it is a run chart of outstanding work. • It is useful for predicting when all the work will be completed. • It is often used in agile software development methodologies such as Scrum. • However, burn down charts can be applied to any project containing measurable progress over time. • In the following, we see a typical Burndown chart.
  • 72. Waterfall vs. Agile • Agile is more flexible than traditional methods (like the waterfall). • Here are some key factors that separates the traditional waterfall method versus the more flexible Agile methods, such as Scrum: – Agile and Scrum is based on Iterations while Waterfall is Sequential – Agile and Scrum focus on less documentation – Agile is good for small projects – not so good for larger projects? – If the Customer don’t know what he wants in detail – Scrum is a good approach • In the following Figure we see some important differences between the traditional waterfall method and the Agile Development approach. • We see that Agile delivers value in each iteration of the development.
  • 73. eXtreme Programming (XP) • eXtreme Programming or shorted XP is a popular Agile method. • Typical features in XP are as follows: – Pair Programming – an agile technique in which two programmers work together at one workstation – Code Reviews- methodical assessments of code designed to identify bugs, increase code quality, and help developers learn the source code – Refactoring - restructuring an existing body of code, altering its internal structure without changing its external behavior – Unit Testing - In XP you start by writing Unit Tests before you start coding – Standup Meetings - regularly held gatherings—typically daily— during which team members share status reports on their work
  • 74. • In XP, they practice so-called “Pair Programming”, meaning 2 developers working together. • So, is Pair Programming Good or Bad? There exists various studies of the productivity of Pair Programming: – Study 1: Comparable with that of 2 developers work independently – Study 2: A significant loss in productivity compared with 2 developers working alone • A reasonable question is: Should the 2 developers have the same skills or not? • Newer less, there are benefits with XP: – Collective Ownership for the code created and the results of the project. • Continuous informal Review process because each code line is looked at by at least 2 people – It supports Refactoring, which is a continuous process of software improvement – Less time is spent on repairing bugs. – Improved Code Quality – It reduces the overall risk
  • 75. Scrum • is a so-called Agile method, and it has become very popular today. • It is simple and easy to understand. • The method is more flexible and more informal than plan-driven methods.
  • 76. • In short, Scrum is a Framework for Software Development. – Agile Software Development method – Simple to understand – Flexible – Extremely difficult to master! – Self-organizing Teams (3-9 persons) – Scrum Team: • Product Owner – who is responsible for the project's outcome • Scrum Master - facilitator who is responsible for managing the exchange of information between team members • Development Team - the team that is responsible for building the actual product increment and meeting the sprint goal • Some important Scrum Events are: – The Sprint (duration between 14-30 days) • a short period of time wherein a development team works to complete specific tasks, milestones, or deliverables – Sprint Planning Meeting (8 hours if 30 days’ sprint) • is when the team (including the Scrum Master, Scrum Product Manager, and Scrum Team) meets to determine which backlog items will be handled in the next sprint. – Daily Scrum Meeting (Max 15 min, every day at the same time) (also called Standup Meeting) – Sprint Review (4 hours if 30 days’ sprint) • Is where the team gathers to review completed work and determine whether additional changes are needed.
  • 77. • An example of a Daily Scrum Meeting is shown in the Figure below. • It is normal to held this meeting as a “standup meeting”, where participants standing during the meeting.
  • 78. Daily Scrum Meeting: • Important features with the Daily Scrum Meeting are as follows: – Max 15 min. – The meeting is held at the same time and place every day – “Stand Up” Meeting – Purpose: • Synchronize activities and create a plan for next 24 hours. • Track Progress – Agenda – Each Team member explains: • What has been accomplished since last meeting? • What will be done before the next meeting? • What obstacles are in the way?
  • 79. Kanban • is based on Lean and Toyota production principles and Just-in-Time principles. – Lean Production Principles: 1) defining value (discover the actual or latent needs of the customer.), 2) mapping the value stream (use the customer’s value as a reference point and identify all the activities that contribute to these values), 3) creating flow (ensure that the flow of the remaining steps run smoothly without interruptions or delays), 4) using a pull system (creating just-in-time delivery), and 5) pursuing perfection (find ways to get a little better each and every day) ) • has fewer “rules” than scrum. • is flow-based, while Scrum is Time box-based (Sprints). • Kanban has focus on estimation. • In Kanban, they use a Kanban board to track the progress. • The Kanban board is very like the Task board used in Scrum.
  • 80. Scrum Artifacts – Product Backlog - a prioritized list of work for the development team that is derived from the roadmap and its requirements. – Sprint Backlog - the set of items that a cross-functional product team selects from its product backlog to work on during the upcoming sprint. – Increment - a concrete stepping stone toward the Product Goal • Scrum’s artifacts represent work or value in various ways that are useful in providing transparency and opportunities for inspection and adaptation. • Artifacts defined by Scrum are specifically designed to maximize transparency of key information needed to ensure Scrum Teams are successful in delivering a “Done” Increment. The Scrum Team • The Scrum Team have the following members: – Product Owner – Scrum Master – Development Team • In addition, we have the Stakeholders, but they are not part of the Scrum team itself.
  • 81. Scrum Meetings • So, if we summarize, we have 4 different meetings in Scrum: – Sprint Planning Meeting – Daily Scrum Meeting – Sprint Review Meeting – Retrospective Meeting (a timeboxed meeting that takes place after the sprint review and before sprint planning) • The following table summarizes the different meetings (purpose, duration, and frequency).
  • 82. Scrum Terms • Below we summarize the terms used in Scrum. Scrum: • Scrum is a framework structured to support complex product development. • Scrum consists of Scrum Teams and their associated roles, events, artifacts, and rules. • Each component within the framework serves a specific purpose and is essential to Scrum’s success and usage. The Scrum Team: • The Scrum Team consists of a Product Owner, the Development Team, and a Scrum Master. • Scrum Teams are self-organizing and cross-functional. • Self-organizing teams choose how best to accomplish their work, rather than being directed by others outside the team.
  • 83. Development Team: • The Development Team are the professionals who do the work of delivering a potentially releasable Increment of “Done” product at the end of each Sprint. • Development Teams are structured and empowered by the organization to organize and manage their own work. Product Owner: • The Product Owner is the person responsible for maximizing the value of the product, the work of the Development Team, and management of the Product Backlog. Scrum Master: • The Scrum Master is a servant-leader for the Scrum Team responsible for ensuring Scrum is understood and enacted. • Scrum Masters do this by ensuring that the Scrum Team adheres to Scrum theory, practices, and rules.
  • 84. Product Backlog: • The Product Backlog is an ordered list of everything that might be needed in the product and is the single source of requirements for any changes to be made to the product. • The Product Owner is responsible for the Product Backlog, including its content, availability, and ordering. Sprint Backlog: • The Sprint Backlog is the set of Product Backlog items selected for the Sprint plus a plan for delivering the product Increment and realizing the Sprint Goal. • The Sprint Backlog is a forecast by the Development Team about what functionality will be in the next Increment and the work needed to deliver that functionality. Increment: • The Increment is the sum of all the Product Backlog items completed during a Sprint and all previous Sprints.
  • 85. Sprint: • The heart of Scrum is a Sprint, a time-box of one month or less during which a “Done”, useable, and potentially releasable product Increment is created. • Sprints have consistent durations throughout a development effort. • A new Sprint starts immediately after the conclusion of the previous Sprint. Sprint Planning Meeting: • The work to be performed in the Sprint is planned at the Sprint Planning Meeting. • This plan is created by the collaborative work of the entire Scrum Team. Daily Scrum: • The Daily Scrum is a 15-minute time-boxed event for the Development Team to synchronize activities and create a plan for the next 24 hours. • This is done by inspecting the work since the last Daily Scrum and forecasting the work that could be done before the next one.
  • 86. Sprint Review: • A Sprint Review is held at the end of the Sprint to inspect the Increment and adapt the Product Backlog if needed. • During the Sprint Review, the Scrum Team and stakeholders collaborate about what was done in the Sprint. • Based on that and any changes to the Product Backlog during the Sprint, attendees collaborate on the next things that could be done. • This is an informal meeting, and the presentation of the Increment is intended to elicit feedback and foster collaboration. Sprint Retrospective: • The Sprint Retrospective is an opportunity for the Scrum Team to inspect itself and create a plan for improvements to be enacted during the next Sprint. • The Sprint Retrospective occurs after the Sprint Review and prior to the next Sprint Planning Meeting. • This is a three-hour time-boxed meeting for one-month Sprints. • Proportionately less time is allocated for shorter Sprints.
  • 87. Hybrid Process Models Unified Process (UP)/ Rational Unified Process (RUP) • The Unified Process (UP)/ Rational Unified Process (RUP) is a so-called hybrid process model. • It takes elements from many of the traditional plan drive methods as well iterative/incremental delivery, which is an important part of Agile methods. • The RUP has been designed to work together with UML (Unified Modeling Language). – UML - a standard language for specifying, visualizing, constructing, and documenting the artifacts of software systems • In UP we have 4 different phases: – Inception – Elaboration – Construction – Transition
  • 88. • During the Inception phase, the emphasis is placed on scope definition and business case formulation. • The focus of the Elaboration phase is creating a software development plan as well as identifying a stable software architecture. – The software development plan - includes determining the project complexity, which is a major consideration for the number of iterations, and project schedule and budget. • During the Construction phase, the design of the system is finalized and refined and the system is built using the basis created during elaboration phase. • The Transition phase is the final project phase which delivers the new system to its end-users.
  • 89. Summary • Agile methods have become very popular today. Agile methods are good in some situations, while more traditional methods are better in other situations. • To create great software, we need to combine the best of all these approaches and adjust them to fit the needs of your company. • There are lots of different kinds of software, and one method is not fit to solve all these different situations. • Agile methods have less focus on documentation
  • 90. Project Management • is the key factor in any software development projects. • It is the discipline of planning, organizing, motivating, and controlling resources to achieve specific goals. • Here the Figure below shows the well-known project triangle.
  • 91. • Here are some Key factors for successful project management: – Proper Planning – Kick-off and Brainstorming – Planning and Estimation – Project Tracking – Communication and Collaboration – Meetings – Using proper Tools, such as e.g., Azure DevOps 1. Project Planning • Software development involves lots of activities that need to be planned and synchronized. • To do that we need good tools for these activities. • The Gantt chart is probably the most used tool. – Gantt chart - is a type of bar chart that illustrates a project schedule, named after its popularizer, Henry Gantt, who designed such a chart around the years 1910–1915. – Modern Gantt charts also show the dependency relationships between activities and the current schedule status. • In addition, we need to have different meetings to plan and coordinate the different activities.
  • 92. 2. Kick-off/Brainstorming • A Project should always start with a Kick-off meeting where a brainstorming session is important of that meeting. • During the brainstorming, you should: – Involve all in the group – Discuss what you are going to do in the project – How are you going to solve the project? – etc. • In addition to get good ideas for solving the project, you should learn from previous projects. • Examples: Who are going to solve the different parts, what kind of Frameworks are you going to use, what kind of development tools shall you use, etc.
  • 93. 3. Software Development Plan (SDP) • Communication is the key to success! • Below we list some examples how to avoid Communication Problems: – Listen to all with concentration – Don’t pre-judge – Give all team members a turn – See the value in every idea – Don’t make assumptions – Ask questions to clarify – When in doubt, communicate • A good idea is to create a Software Development Plan. • The Software Development Plan gives an overview of all the communication within the project or within the team, i.e., what kind of communication, how the communication should be done, etc.
  • 94. • Examples of Communication: – Meetings: The Team will meet every Monday from … – Standards: Which Word processor, Templates, etc. – E-mail… or other communication platforms, … – Collaboration: How will you communicate? Work together on Tuesdays, … – Other Tools: Microsoft Project, … • Microsoft Project - is a project management software product, developed and sold by Microsoft. • It is designed to assist a project manager in developing a schedule, assigning resources to tasks, tracking progress, managing the budget, and analyzing workloads. – etc. • The Software Development Plan typically includes the following sections: • 1. Introduction: This briefly describes the objectives of the project and set out the constraints (e.g., budget, time, etc.) that affects the management of the project • 2. Project Organization: This section describes how the development team is organized, the people involved and their roles in the team. • 3. Risk Analysis - is the process of identifying and analyzing potential issues that could negatively impact key business initiatives or projects • 4. Hardware and Software Resource Requirements • 5. Work Breakdown (WBS, Work Breakdown Structure): Break down the project in into activities and identifies milestones • 6. Project Schedule: Shows dependencies between activities, the estimated time required to reach each milestone, allocation of people to activities. – (5) and (6) is typically done in a Gantt Chart (created in e.g., Microsoft Project) • 7. Monitoring and Reporting Mechanisms: Definition of the Management Report that should be produced, when these should be produced, etc.
  • 95. • Other words for the Software Development Plan may be “Communication Plan” or “Project Plan”. • A Software Development Plan (SDP) is all about the Internal Communication within the Development Team and how it Communicates with rest of the Organization, the Customers, etc. 3.1 Gantt Chart • One of the most used tools for project planning is the Gantt chart. • The Gantt chart gives an overview of tasks, subtasks, milestones (is a reference point that marks major events, decision points, or deliverables that a project manager and other stakeholders need to pay attention to), resources, etc. in a project. • In the Figure below we see a Gant Chart example created with Microsoft Project.
  • 96. • It is important that the Project Management is an active part of your software project. • The Gantt Chart should be used through the whole project; it is not something you create in the beginning of the project and put in a drawer. • The Figure below shows the recommended way of working with the different project activities. • Always create a Project Plan!
  • 97. 4. Meetings • It is necessary to have meetings when planning and creating software, but these meetings should not be misused. • Below we list some typical meeting needed during the software development project: – Kickoff and Planning Meetings – Project Meetings – Daily Scrum Meetings – Review Meetings – Meetings for Planning next Sprint/Iteration • For meetings in general we have the following guidelines: – The meeting agenda should be clear. – All meetings should follow the basic structure that is described for that meeting. – Meetings should start on time, even if some team members are late. – Meetings should finish on time. – Each team member should come to the meeting prepared. • Always be prepared before the meetings (otherwise you don’t need to be there)!
  • 98. 4.1. Meeting Agenda • A typical meeting agenda could be as follows: – Project Plan, Gantt Chart (Project Manager) – Work Items, Overview and Status (Test Manager - responsible for the planning, coordination, and control of various test activities) – Demonstration of Applications/Coding (Individual) – Short Status for each member (Individual) • What have you done so far? • What shall be the focus the next weeks? • Any Technical Challenges/Problems/Issues? (It is very important to get an overview – of the challenges in the project, or else the whole project will be at risk if you don’t talk about them!) • Other matters – The meeting should last no longer than 60 minutes. • When you are finished with the meeting, write a short Minutes of Meeting as soon as possible.
  • 99. 5. Agile Project Planning and Tracking • Successful projects often have the following characteristics: – The needs of the customers drive the project. – The team creates a high-level plan for delivering the project. – The team develops the product over several iterations and refines the high- level plan over time. – The team has effective tools for adapting to changes that occur. • The Figure below shows the steps involved in Agile Project Planning and Tracking.
  • 100. • In Agile Project Planning and Tracking, everything is broken down to so-called iterations, as shown in the following Figure.
  • 101. • A burn down chart is a graphical representation of work left to do versus time. • The outstanding work (or backlog) is often on the vertical axis, with time along the horizontal. • That is, it is a run chart of outstanding work. • It is useful for predicting when all the work will be completed. • It is often used in agile software development methodologies such as Scrum. • However, burn down charts can be applied to any project containing measurable progress over time. • Azure DevOps have all these features (Task board, Burndown chart, etc.) built in.