Software Engineering CHP 3
Software Engineering CHP 3
Agile Software Development is a software development methodology that values flexibility, collaboration, and
customer satisfaction. It is based on the Agile Manifesto, a set of principles for software development that
prioritize individuals and interactions, working software, customer collaboration, and responding to change.
Agile Software Development is an iterative and incremental approach to software development that
emphasizes the importance of delivering a working product quickly and frequently. It involves close
collaboration between the development team and the customer to ensure that the product meets their needs
and expectations.
Why Agile is Used?
Creating Tangible Value: Agile places a high priority on creating tangible value as soon as possible in a
project. Customers can benefit from early delivery of promised advantages and opportunity for prompt
feedback and modifications.
Concentrate on Value-Added Work: Agile methodology promotes teams to concentrate on producing
functional and value-added product increments, hence reducing the amount of time and energy
allocated to non-essential tasks.
Agile as a Mindset: Agile represents a shift in culture that values adaptability, collaboration, and client
happiness. It gives team members more authority and promotes a cooperative and upbeat work
atmosphere.
Quick Response to Change: Agile fosters a culture that allows teams to respond swiftly to constantly
shifting priorities and requirements. This adaptability is particularly useful in sectors of the economy or
technology that experience fast changes.
Regular Demonstrations: Agile techniques place a strong emphasis on regular demonstrations of
project progress. Stakeholders may clearly see the project’s status, upcoming problems, and upcoming
new features due to this transparency.
Cross-Functional Teams: Agile fosters self-organizing, cross-functional teams that share information
effectively, communicate more effectively and feel more like a unit.
4 Core Values of Agile Software Development
Individuals and Interactions over Processes and Tools
Working Software over Comprehensive
Documentation
Customer Collaboration over Contract Negotiation
Responding to Change over Following a Plan
These principles include:
Ensuring customer satisfaction through the early
delivery of software.
Being open to changing requirements in the stages of
the development.
Frequently delivering working software with a main focus on preference for timeframes.
Promoting collaboration between business stakeholders and developers as an element.
Structuring the projects around individuals. Providing them with the necessary environment and
support.
Prioritizing face to face communication whenever needed.
Considering working software as the measure of the progress.
Fostering development by allowing teams to maintain a pace indefinitely.
Placing attention on excellence and good design practices.
Recognizing the simplicity as crucial factor aiming to maximize productivity by minimizing the work.
Encouraging self organizing teams as the approach to design and build systems.
Regularly reflecting on how to enhance effectiveness and to make adjustments accordingly.
Agility Principles:
The Agile Alliance defines twelve lightness principles for those that need to attain agility:
Our highest priority is to satisfy the client through early and continuous delivery of valuable computer
software.
Welcome dynamical necessities, even late in development. Agile processes harness modification for
the customer’s competitive advantage.
Deliver operating computer software often, from a pair of weeks to a couple of months, with a
preference to the shorter timescale.
Business individuals and developers should work along daily throughout the project.
The build comes around actuated people. offer them the setting and support they have, and trust
them to urge the task done.
the foremost economical and effective methodology of conveyancing info to and among a
development team is face-to-face speech.
working computer software is the primary live of progress.
Agile processes promote property development. The sponsors, developers, and users got to be able to
maintain a relentless pace indefinitely.
Continuous attention to technical excellence and smart style enhances nimbleness.
Simplicity—the art of maximizing the number of work not done—is essential.
the most effective architectures, necessities, and styles emerge from self– organizing groups.
At regular intervals, the team reflects on a way to become simpler, then tunes and adjusts its behavior
consequently.
Adaptive Software Development (ASD)
Adaptive Software Development is a method to build complex software and system. ASD focuses on human
collaboration and self-organization. Adaptive software development (ASD) is a software development process
that grew out of the work by Jim Highsmith and Sam
Bayer on rapid application development (RAD). ASD
“life cycle” incorporates three phases namely:
1. Speculation
2. Collaboration
3. Learning
These are explained as following below.
Introduction to DevOps
DevOps is basically a combination of two words- Development and Operations. DevOps is a culture that
implements the technology in order to promote collaboration between the developer team and the operations
team to deploy code to production faster in an automated and repeatable way.
Why DevOps?
The goal of DevOps is to increase an organization’s speed when it comes to delivering applications and services.
Many companies have successfully implemented DevOps to enhance their user experience including Amazon,
Netflix, etc.
Facebook’s mobile app which is updated every two weeks effectively tells users you can have what you want
and you can have it. Now ever wondered how Facebook was able to do social smoothing? It’s the DevOps
philosophy that helps Facebook ensure that apps aren’t outdated and that users get the best experience on
Facebook. Facebook accomplishes this true code ownership model that makes its developers responsible that
includes testing and supporting through production and delivery for each kernel of code. They write and update
their true policies like this but Facebook has developed a DevOps culture and has successfully accelerated its
development lifecycle.
Industries have started to gear up for digital transformation by shifting their means to weeks and months instead
of years while maintaining high quality as a result. The solution to all this is- DevOps.
How DevOps is different from Traditional IT?
Traditional IT has 1000s lines of code and is created by different teams with different standards whereas DevOps
is created by one team with intimate knowledge of the product. Traditional IT is complex to understand and
DevOps is easily understandable.
DevOps Lifecycle: DevOps lifecycle is the methodology where
professional development teams come together to bring products
to market more efficiently and quickly. The structure of the
DevOps lifecycle consists of Plan, Code, Building, Test, Releasing,
Deploying, Operating, and Monitoring.
Plan: Determining the commercial needs and gathering
the opinions of end-user by professionals in this level of
the DevOps lifecycle.
Code: At this level, the code for the same is developed and
in order to simplify the design, the team of developers uses
tools and extensions that take care of security problems.
Build: After the coding part, programmers use various
tools for the submission of the code to the common code
source.
Test: This level is very important to assure software integrity. Various sorts of tests are done such as user
acceptability testing, safety testing, speed testing, and many more.
Release: At this level, everything is ready to be deployed in the operational environment.
Deploy: In this level, Infrastructure-as-Code assists in creating the operational infrastructure and
subsequently publishes the build using various DevOps lifecycle tools.
Operate: At this level, the available version is ready for users to use. Here, the department looks after
the server configuration and deployment.
Monitor: The observation is done at this level that depends on the data which is gathered from
consumer behavior, the efficiency of applications, and from various other sources.
Best Practices to follow:
Implement automated dashboard
Keep the entire team together
Allow DevOps to be a cultural change
Be patient with the developers
Maintain a centralized unit
Build a flexible infrastructure
Advantages:
1. Faster Delivery: DevOps enables organizations to release new products and updates faster and more
frequently, which can lead to a competitive advantage.
2. Improved Collaboration: DevOps promotes collaboration between development and operations
teams, resulting in better communication, increased efficiency, and reduced friction.
3. Improved Quality: DevOps emphasizes automated testing and continuous integration, which helps
to catch bugs early in the development process and improve the overall quality of software.
4. Increased Automation: DevOps enables organizations to automate many manual processes, freeing
up time for more strategic work and reducing the risk of human error.
5. Better Scalability: DevOps enables organizations to quickly and efficiently scale their infrastructure
to meet changing demands, improving the ability to respond to business needs.
6. Increased Customer Satisfaction: DevOps helps organizations to deliver new features and updates
more quickly, which can result in increased customer satisfaction and loyalty.
7. Improved Security: DevOps promotes security best practices, such as continuous testing and
monitoring, which can help to reduce the risk of security breaches and improve the overall security
of an organization’s systems.
8. Better Resource Utilization: DevOps enables organizations to optimize their use of resources,
including hardware, software, and personnel, which can result in cost savings and improved
efficiency.
Disadvantages:
1. High Initial Investment: Implementing DevOps can be a complex and costly process, requiring
significant investment in technology, infrastructure, and personnel.
2. Skills Shortage: Finding qualified DevOps professionals can be a challenge, and organizations may
need to invest in training and development programs to build the necessary skills within their teams.
3. Resistance to Change: Some employees may resist the cultural and organizational changes required
for successful DevOps adoption, which can result in resistance, resistance to collaboration, and
reduced efficiency.
4. Lack of Standardization: DevOps is still a relatively new field, and there is a lack of standardization in
terms of methodologies, tools, and processes. This can make it difficult for organizations to
determine the best approach for their specific needs.
5. Increased Complexity: DevOps can increase the complexity of software delivery, requiring
organizations to manage a larger number of moving parts and integrate multiple systems and tools.
6. Dependency on Technology: DevOps relies heavily on technology, and organizations may need to
invest in a variety of tools and platforms to support the DevOps process.
7. Need for Continuous Improvement: DevOps requires ongoing improvement and adaptation, as new
technologies and best practices emerge. Organizations must be prepared to continuously adapt and
evolve their DevOps practices to remain competitive.
Introduction of JIRA
JIRA is a project management tool. Bug tracking and agile project management are allowed in JIRA and are
developed by Atlassian. Fedora Commons, Hibernate, and the Apache Software Foundation are organizations
that have used Jira for bug-tracking and project management. The Japanese word “Gojira” is a word from
which JIRA is inherited which means “Godzilla”. It is a platform-independent tool. It can be run anywhere. JIRA
supports languages like English, French, German, Japanese, Spanish, etc so it is called a multi-lingual tool. For
all types of testing, it is widely used as an issue-tracking tool. It is an Incident Management Tool. It is used for
Project Management, Bug Tracking, Issue Tracking, and Workflow. It is highly customizable. It can be tailored
to fit any workflow.
MySQL, Oracle, PostgreSQL and SQL server in the backend is supported by JIRA. JIRA is available as a trial
version for a limited period as it is a tool that is commercial. A person uses a 15-day trial version. A license is
required to utilize JIRA services. A free license is provided by JIRA for academic projects. Handling of issues is
made easy by JIRA dashboard which consists of many useful functions and features. JIRA allows for tracking
the progress of a project from time to time. JIRA contains four packages:-
Jira Core- It offers crucial project and task management features and is made for corporate teams.
Teams needing a platform to manage their tasks and projects outside of the software development
industry, like those in HR, marketing, finance and operations, can use it.
Jira Software- It is designed especially for teams who produce software. It has functionality for
monitoring and organizing tasks related to software development, including user stories, issues, epics,
as well as robust agile project management tools, Scrum and Kanban boards.
Jira Service Desk- It is ideal for IT helpdesks and service teams because it has tools for handling
incidents, problem management, handling changes, and service request fulfilment.
Jira Align- It is a business-level solution that enables scaled agile practices in big businesses. Multiple
teams can collaborate effectively on challenging projects and initiatives thanks to the alignment of
business strategy and execution.
Inside JIRA scheme, everything can be configured, and it consists of:-
Field Configuration – It specifies which custom fields are accessible for certain problem types by linking
field settings to issue types. The default field configuration for problems within a project is also
specified.
Permissions – It defines which individuals, groups or roles are granted certain project rights, such as
the ability to add, amend or move issues around in workflows.
Notification – It sets the recipients of notifications for particular occurrences as well as the nature of
those messages.
Screens – It maps screens to different Jira operations, making sure the right fields are shown during
these activities.
Workflows – It identifies the workflow that should be used for each issue type by connecting issue
types to workflows. and outlines the standard issue resolution process for a project.
Issue Types – It defines the various challenges that can be encountered in a project. Additionally, when
adding new issues to the project, it sets the default issue type.