SE (Unit 4)
SE (Unit 4)
Introduction to Agile
What Is Agile?
Agile is a set of values and principles, and becoming agile means upholding these values and principles.
It's not about doing one practice and declaring that you are Agile, it's about continually seeking better ways of
achieving organizational goals.
Agile is a collection of methods and practices that focuses on iterative development.
It is time-boxed and iterative, focusing on delivering products incrementally throughout the project, rather than all
at once, in the end.
Agile methodology is a project management approach that allows successful and efficient execution of the project
while emphasizing the improvement of a project and team collaboration.
The approach is applicable in software development for flexibility, customer satisfaction, and collaboration.
It refers to the application of a set of principles that functions through an interactive and incremental approach.
The Agile methodology in software development emphasizes the importance of team collaboration and delivering a
working product quickly to meet customer needs and expectations.
(i) Requirements: The companies here gather information on customer’s requirements and prioritize them based
on different factors. It is an initial factor to understand the direction of the project and progress.
(ii) Planning: Developing a plan is an essential part of delivering the complete software comprising all the features.
The plan includes time for the development and delivery of each iteration.
(iii) Development: The software development is carried out by the development team while using frequent and
rapid iterations.
(iv) Testing: It involves software testing to make sure it meets the quality delivered by the organization and
expected by the customer
(v) Deployment: Here, the organization serves the ultimate aim, which is to allow usage of the software.
(vi) Maintenance: The software is regularly maintained to ensure customers' needs and expectations are met.
Value Points of Agile
Value points are a way to measure the relative value of user stories in Agile. They can be used to prioritize a product backlog
and communicate the importance of user stories to the software development team.
Agile Principles-
1. “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
2. “Welcome changing requirements, even late in development. Agile processes harness change for the customer’s
competitive advantage.”
3. “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the
shorter timescale.”
4. “Business people and developers must work together daily throughout the project.”
5. “Build projects around motivated individuals. Give them the environment and support they need, and trust them to
get the job done.”
6. “The most efficient and effective method of conveying information to and within a development team is face-to-
face conversation.”
7. “Working software is the primary measure of progress.”
8. “Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain
a constant pace indefinitely.”
9. “Continuous attention to technical excellence and good design enhances agility.”
10. “Simplicity — the art of maximizing the amount of work not done — is essential.”
11. “The best architectures, requirements, and designs emerge from self-organizing teams.”
12. “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior
accordingly.”
Advantages of Agile Software Development
People and interactions are preferred over tools and processes in the usage of Agile software development
methodology.
It leads to a regular focus on improved design and technical excellence.
The Agile development process assists in improvement by allowing immediate feedback.
Fastens the software development process, thus increasing customer trust.
Allows quick adaptability to meet the change in requirements.
Incorporates flexibility and adaptability.
Enhances quality and reliability through a focus on quality assurance and continuous improvement.
Increase team confidence and allow the set up of a collaborative, positive, and supportive workplace culture.
Agile Team
An Agile team is a group of people who work together to complete a project using the Agile methodology. Agile
teams are typically cross-functional, self-directed, and self-organized, and are made up of people with a variety of
skills. They are known for their ability to adapt to change and deliver high-quality results in a timely manner.
Agile teams are typically collocated and often wholly dedicated to the project during its timeline, with no
obligations to other projects.
An Agile team needs every person required to produce the end product or service.
When building a high-performing Agile team, there are a number of steps to follow. You need to:
Choose your Agile framework
Define clear goals
Identify key roles to assign work
Set up continuous feedback loops
Create a culture of transparency
Use real-time collaboration tools
Agile Implementation
To implement the Agile methodology successfully for software development, you need to review the following points:
Communicate with the team and use the Elevator Pitch method. Find the target customer, statement of need, specific
product name and category, its benefits, primary competitive alternative, and final statement of primary differentiation.
The product owner must use the strategy to develop the path to the product or software. It will include goals and how to
achieve them. Every goal will have features, metrics, and other key information.
It includes prioritizing the software features to be launched first, followed by subsequent losses. It will include 3 to 5 sprints.
1. KANBAN
Kanban is a visual scheduling system that helps a team determine what to produce, when to produce it, and how much to
produce.
To implement kanban:
Create a visual workflow and picture the product in each state—from concept to deployment.
Develop rules to limit work in progress (WIP) to prevent your team from becoming overwhelmed, and keep
progress continuous and steady.
Manage the flow in order to allow and prepare for changes that will occur within the iteration.
Make the team, queue and practice policies explicit so your team knows how to participate in the process properly,
ensuring a smoother iteration
2. SCRUM
Scrum is an agile project management model that consists of small teams working interdependently. The teams work
together, but focus on their own tasks and must be capable of self management and decision-making.
Scrum is based around a “sprint,” which is generally a 1-4 week period for delivering a working part of the system. At the
end of a sprint the results are delivered, then reviewed, and the next sprint is started.
3. DevOps
The DevOps movement is aimed at removing these silos, encouraging continuous improvement at all levels, and leveraging
automation to work smarter, not harder.
Continuous improvement.
Continuous delivery.
Testing automation.
Infrastructure automation.
Note- A silo is a part of a company, organization, or system that doesn't work well with other parts. Silos can occur when
departments or teams have separate visions, goals, and responsibilities, and don't communicate with each other.
Extreme Programming uses an object-oriented approach (Appendix 2) as its preferred development paradigm and
encompasses a set of rules and practices that occur within the context of four framework activities: planning, design,
coding, and testing.
Recognize that current processes, organizational structures, culture and approaches are usually the key causes of
throughput or quality problems—not your people.
Coach your people on recognizing problems and challenges. Finding, identifying and talking about these roadblocks
is expected and encouraged.
Select the processes and approaches suited best to help your organization, based on the problems and challenges
being highlighted.
Introduction to Cloud Computing
Cloud Computing is the delivery of computing services such as servers, storage, databases, networking, software, analytics,
intelligence, and more, over the Cloud (Internet).
Cloud Computing provides an alternative to the on-premises datacentre. With an on-premises datacentre, we have to
manage everything, such as purchasing and installing hardware, virtualization, installing the operating system, and any
other required applications, setting up the network, configuring the firewall, and setting up storage for data. After doing all
the set-up, we become responsible for maintaining it through its entire lifecycle.
But if we choose Cloud Computing, a cloud vendor is responsible for the hardware purchase and maintenance. They also
provide a wide variety of software and platform as a service. We can take any required services on rent. The cloud
computing services will be charged based on usage.
The cloud environment provides an easily accessible online portal that makes handy for the user to manage the compute,
storage, network, and application resources.
o Scalability: We can increase or decrease the requirement of resources according to the business requirements.
o Productivity: While using cloud computing, we put less operational effort. We do not need to apply patching, as
well as no need to maintain hardware and software. So, in this way, the IT team can be more productive and focus
on achieving business goals.
o Reliability: Backup and recovery of data are less expensive and very fast for business continuity.
o Security: Many cloud vendors offer a broad set of policies, technologies, and controls that strengthen our data
security.
Downtime: Cloud computing services are internet-based, so service outages can occur due to weak connectivity or
internet outages. These outages can cost businesses over $100,000 per hour.
Security risks: Cloud computing can lead to data loss, data leakage, and other security risks. According to a survey,
98% of companies using cloud computing services experienced a data breach between 2020 and 2022.
Vendor lock-in: You may become locked into a vendor when using cloud computing.
Limited control: You may have less control over the cloud infrastructure.
Integration complexity: Integrating cloud computing with existing systems can be complex.
Trusting third-party providers: You need to share your data with a third-party vendor, which can be risky.
Types of Clouds
o Public Cloud: The cloud resources that are owned and operated by a third-party cloud service provider are termed
as public clouds. It delivers computing resources such as servers, software, and storage over the internet
o Private Cloud: The cloud computing resources that are exclusively used inside a single business or organization are
termed as a private cloud. A private cloud may physically be located on the company’s on-site datacentre or hosted
by a third-party service provider.
o Hybrid Cloud: It is the combination of public and private clouds, which is bounded together by technology that
allows data applications to be shared between them. Hybrid cloud provides flexibility and more deployment options
to the business.
2. Platform as a Service (PaaS): This service provides an on-demand environment for developing, testing, delivering,
and managing software applications. The developer is responsible for the application, and the PaaS vendor provides
the ability to deploy and run it. Using PaaS, the flexibility gets reduce, but the management of the environment is
taken care of by the cloud vendors.
Advantages of PaaS
PaaS is simple and very much convenient for the user as it can be accessed via a web browser.
PaaS has the capabilities to efficiently manage the lifecycle.
Disadvantages of PaaS
PaaS has limited control over infrastructure as they have less control over the environment and are not able
to make some customizations.
PaaS has a high dependence on the provider.
3. Software as a Service (SaaS): It provides a centrally hosted and managed software services to the end-users. It
delivers software over the internet, on-demand, and typically on a subscription basis. E.g., Microsoft One Drive,
Dropbox, WordPress, Office 365, and Amazon Kindle. SaaS is used to minimize the operational cost to the maximum
extent.
Advantages of SaaS
SaaS can access app data from anywhere on the Internet.
SaaS provides easy access to features and services.
Disadvantages of SaaS
SaaS solutions have limited customization, which means they have some restrictions within the platform.
SaaS has little control over the data of the user.
SaaS are generally cloud-based, they require a stable internet connection for proper working.
Key Characteristics of Cloud Computing
1. On-demand self-service:
Before the cloud, an individual or business would need to buy, configure, and install an IT infrastructure to
support their computing needs. With the advent of AWS, Microsoft Azure, Google Cloud, and other public
cloud platforms, it is now possible to access the IT tools you need much more quickly. You also don’t need
to provision the servers, databases, or other computing capabilities yourself, and you can get started
without understanding the underlying technology.
2. Resource pooling:
With the public cloud, you have access to resource pooling. For example, instead of one small business
investing in all the technology needed to develop a new application, it can turn to a cloud provider.
Common resources are shared on a high-efficiency infrastructure maintained, monitored, secured, and
updated by experts. Meanwhile, a small business can take advantage of economies of scale and only needs
access to the internet to take advantage of the cloud resources.
3. Broad network access:
The cloud provides broad network access, with resources available from anywhere with an internet
connection.
4. Scalability:
Since the actual computing resources are online, it is much easier to scale up or down as needed. For
instance, If a business needs more data backup, it can contract with the cloud provider for more storage. It
doesn’t have to shop around for its data storage technology, wait for that hardware to arrive, set it up, and
secure it first. Or, if a business wants to scale back when a team shrinks, it can simply pay for fewer software
licenses instead of having unused desktops and other technology taking up space and budget.
5. Pay-per-use availability:
The cloud computing provider can measure your resource utilisation and charge per use. Providers may
even be able to bill you down to the second. However, agreeing to a long-term commitment could see
greater cost savings.
6. Resilience:
This means that if something happened to your own business (say a power outage), while your on-premises
computers were down, your employees could continue to function by logging in to the cloud from off-site
networks
Cloud Deployment Models
Cloud Deployment Model functions as a virtual computing environment with a deployment architecture that varies
depending on the amount of data you want to store and who has access to the infrastructure.
The cloud deployment model identifies the specific type of cloud environment based on ownership, scale, and
access, as well as the cloud’s nature and purpose.
The location of the servers you’re utilizing and who controls them are defined by a cloud deployment model.
It specifies how your cloud infrastructure will look, what you can change, and whether you will be given services or
will have to create everything yourself.
Different types of cloud computing deployment models are described below.
Public Cloud
Private Cloud
Hybrid Cloud
Community Cloud
Multi-Cloud
Minimal Investment: Because it is a pay-per-use service, there is no substantial upfront fee, making it excellent for
enterprises that require immediate access to resources.
No setup cost: The entire infrastructure is fully subsidized by the cloud service providers, thus there is no need to
set up any hardware.
Infrastructure Management is not required: Using the public cloud does not necessitate infrastructure
management.
No maintenance: The maintenance work is done by the service provider (not users).
Dynamic Scalability: To fulfill your company’s needs, on-demand resources are accessible.
Less secure: Public cloud is less secure as resources are public so there is no guarantee of high-level security.
Low customization: It is accessed by many public so it can’t be customized according to personal requirements.
Better Control: You are the sole owner of the property. You gain complete command over service integration, IT
operations, policies, and user behavior.
Data Security and Privacy: It’s suitable for storing corporate information to which only authorized staff have access.
By segmenting resources within the same infrastructure, improved access and security can be achieved.
Supports Legacy Systems: This approach is designed to work with legacy systems that are unable to access the
public cloud.
Customization: Unlike a public cloud deployment, a private cloud allows a company to tailor its solution to meet its
specific needs.
Less scalable: Private clouds are scaled within a certain range as there is less number of clients.
Costly: Private clouds are more costly as they provide personalized facilities.
Flexibility and control: Businesses with more flexibility can design personalized solutions that meet their particular
needs.
Cost: Because public clouds provide scalability, you’ll only be responsible for paying for the extra capacity if you
require it.
Security: Because data is properly separated, the chances of data theft by attackers are considerably reduced.
Difficult to manage: Hybrid clouds are difficult to manage as it is a combination of both public and private cloud. So,
it is complex.
Slow data transmission: Data transmission in the hybrid cloud takes place through the public cloud so latency
occurs.
Community Cloud Model
It allows systems and services to be accessible by a group of organizations.
It is a distributed system that is created by integrating the services of different clouds to address the specific needs
of a community, industry, or business.
The infrastructure of the community could be shared between the organization which has shared concerns or tasks.
It is generally managed by a third party or by the combination of one or more organizations in the community.
Cost Effective: It is cost-effective because the cloud is shared by multiple organizations or communities.
Shared resources: It allows you to share resources, infrastructure, etc. with multiple organizations.
Collaboration and data sharing: It is suitable for both collaboration and data sharing.
Limited Scalability: Community cloud is relatively less scalable as many organizations share the same resources
according to their collaborative interests.
Rigid in customization: As the data and resources are shared among different organizations according to their
mutual interests if an organization wants some changes according to their needs they cannot do so because it will
have an impact on other organizations.
Multi-Cloud Model
It’s similar to the hybrid cloud deployment approach, which combines public and private cloud resources.
Instead of merging private and public clouds, multi-cloud uses many public clouds.
Although public cloud providers provide numerous tools to improve the reliability of their services, mishaps still
occur.
It’s quite rare that two distinct clouds would have an incident at the same moment.
As a result, multi-cloud deployment improves the high availability of your services even more.
Advantages of the Multi-Cloud Model
You can mix and match the best features of each cloud provider’s services to suit the demands of your apps,
workloads, and business by choosing different cloud providers.
Reduced Latency: To reduce latency and improve user experience, you can choose cloud regions and zones that are
close to your clients.
High availability of service: It’s quite rare that two distinct clouds would have an incident at the same moment. So,
the multi-cloud deployment improves the high availability of your services.
Complex: The combination of many clouds makes the system complex and bottlenecks may occur.
Security issue: Due to the complex structure, there may be loopholes to which a hacker can take advantage hence,
makes the data insecure.
Virtualization
Virtualization is used to create a virtual version of an underlying service
With the help of Virtualization, multiple operating systems and applications can run on the same machine and its
same hardware at the same time, increasing the utilization and flexibility of hardware.
It was initially developed during the mainframe era.
Virtualization allows sharing of a single physical instance of a resource or an application among multiple customers
and organizations at one time.
It does this by assigning a logical name to physical storage and providing a pointer to that physical resource on
demand.
The term virtualization is often synonymous with hardware virtualization, which plays a fundamental role in
efficiently delivering Infrastructure-as-a-Service (IaaS) solutions for cloud computing.
Moreover, virtualization technologies provide a virtual environment for not only executing applications but also for
storage, memory, and networking.
Work of Virtualization in Cloud Computing
In the case of cloud computing, users store data in the cloud, but with the help of Virtualization, users have the
extra benefit of sharing the infrastructure.
Cloud Vendors take care of the required physical resources, but these cloud providers charge a huge amount for
these services which impacts every user or organization.
Virtualization helps Users or Organisations in maintaining those services which are required by a company
through external (third-party) people, which helps in reducing costs to the company.
This is the way through which Virtualization works in Cloud Computing.
Benefits of Virtualization
More flexible and efficient allocation of resources.
Enhance development productivity.
It lowers the cost of IT infrastructure.
Remote access and rapid scalability.
High availability and disaster recovery.
Pay peruse of the IT infrastructure on demand.
Enables running multiple operating systems.
Drawback of Virtualization
High Initial Investment: Clouds have a very high initial investment, but it is also true that it will help in
reducing the cost of companies.
Learning New Infrastructure: As the companies shifted from Servers to Cloud, it requires highly skilled staff
who have skills to work with the cloud easily, and for this, you have to hire new staff or provide training to
current staff.
Risk of Data: Hosting data on third-party resources can lead to putting the data at risk, it has the chance of
getting attacked by any hacker or cracker very easily.
Characteristics of Virtualization
Increased Security: The ability to control the execution of a guest program in a completely transparent manner
opens new possibilities for delivering a secure, controlled execution environment. All the operations of the guest
programs are generally performed against the virtual machine, which then translates and applies them to the host
programs.
Managed Execution: In particular, sharing, aggregation, emulation, and isolation are the most relevant features.
Sharing: Virtualization allows the creation of a separate computing environment within the same host.
Aggregation: It is possible to share physical resources among several guests, but virtualization also allows
aggregation, which is the opposite process.
1. Application Virtualization: Application virtualization helps a user to have remote access to an application from a
server. The server stores all personal information and other characteristics of the application but can still run on a
local workstation through the internet. An example of this would be a user who needs to run two different versions
of the same software. Technologies that use application virtualization are hosted applications and packaged
applications.
2. Network Virtualization: The ability to run multiple virtual networks with each having a separate control and data
plan. It co-exists together on top of one physical network. It can be managed by individual parties that are
potentially confidential to each other. Network virtualization provides a facility to create and provision virtual
networks, logical switches, routers, firewalls, load balancers, Virtual Private Networks (VPN), and workload security
within days or even weeks.
3. Desktop Virtualization: Desktop virtualization allows the users’ OS to be remotely stored on a server in the data
center. It allows the user to access their desktop virtually, from any location by a different machine. Users who want
specific operating systems other than Windows Server will need to have a virtual desktop. The main benefits of
desktop virtualization are user mobility, portability, and easy management of software installation, updates, and
patches.
4. Storage Virtualization: Storage virtualization is an array of servers that are managed by a virtual storage system.
The servers aren’t aware of exactly where their data is stored and instead function more like worker bees in a hive.
It makes managing storage from multiple sources be managed and utilized as a single repository. storage
virtualization software maintains smooth operations, consistent performance, and a continuous suite of advanced
functions despite changes, breaks down, and differences in the underlying equipment.
5. Server Virtualization: This is a kind of virtualization in which the masking of server resources takes place. Here, the
central server (physical server) is divided into multiple different virtual servers by changing the identity number, and
processors. So, each system can operate its operating systems in an isolated manner. Where each sub-server knows
the identity of the central server. It causes an increase in performance and reduces the operating cost by the
deployment of main server resources into a sub-server resource. It’s beneficial in virtual migration, reducing energy
consumption, reducing infrastructural costs, etc.
The main types of server virtualization:
i) Operating System (OS) Virtualization – Virtualization software allows for the creation of multiple virtual
machines (VMs) that are run as separate operating systems. The potential uses of this kind of operating
system virtualization architecture are enormous, such as allowing the software to be tested on different
operating systems, applications to be tried out, etc.
ii) Full Virtualization – This is essentially the complete cloning of the test hardware into the virtual
environment. It allows for extremely accurate simulations to test software and applications, while also
having the enormous benefit of allowing multiple users to share the environment at once.
iii) Para-virtualization – This is very similar to the hypervisor principle because a hypervisor is installed on the
server which then allows for a guest operating system to be set up. This increases the server performance
without operating cost of the host operating system. It allows the software to run on virtual machines
where the hardware is different from the underlying hardware. It differs from Full Virtualization in that the
various guest servers are aware of one another.
6. Data Virtualization: This is the kind of virtualization in which the data is collected from various sources and
managed at a single place without knowing more about the technical information like how data is collected, stored
& formatted then arranged that data logically so that its virtual view can be accessed by its interested people and
stakeholders, and users through the various cloud services remotely. Many big giant companies are providing their
services like Oracle, IBM, At scale, Cdata, etc.