0% found this document useful (0 votes)
11 views45 pages

Soe 411 Lecture Note by Ja Orban

The document provides an overview of Agile software development methodologies, highlighting its core values and principles as outlined in the Agile Manifesto. It discusses the Agile software development cycle, various Agile methodologies such as Scrum and Lean, and compares Agile with traditional Waterfall approaches. Additionally, it addresses the advantages and disadvantages of Agile, emphasizing the cultural shift it brings to software development and the importance of collaboration and communication.

Uploaded by

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

Soe 411 Lecture Note by Ja Orban

The document provides an overview of Agile software development methodologies, highlighting its core values and principles as outlined in the Agile Manifesto. It discusses the Agile software development cycle, various Agile methodologies such as Scrum and Lean, and compares Agile with traditional Waterfall approaches. Additionally, it addresses the advantages and disadvantages of Agile, emphasizing the cultural shift it brings to software development and the importance of collaboration and communication.

Uploaded by

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

FEDERAL UNIVERSITY OF TECHNOLOGY OWERRI

SCHOOL OF INFORMATION AND COMMUNICATION TECHNOLOGY (SICT)

DEPARTMENT OF SOFTWARE ENGINEERNG (SOE)

LECTURE NOTE ON

COURSE CODE

SOE 411

COURSE TITLE

OPEN-SOURCE SOFTWARE DEVELOPMENT TECHNOLOGIES

CREDIT UNITS: 3

By

J. A. ORBAN
AGILE SOFTWARE DEVELOPMENT
Agile is a type of software development methodology that anticipates the need for
flexibility and applies a level of pragmatism to the delivery of the finished product. Agile
software development requires a cultural shift in many companies because it focuses on
the clean delivery of individual pieces or parts of the software and not on the entire
application.

Benefits of Agile include its ability to help teams in an evolving landscape while
maintaining a focus on the efficient delivery of business value. The collaborative culture
facilitated by Agile also improves efficiency throughout the organization as teams work
together and understand their specific roles in the process. Finally, companies using
Agile software development can feel confident that they are releasing a high-quality
product because testing is performed throughout development. This provides the
opportunity to make changes as needed and alert teams to any potential issues.

Agile has largely replaced waterfall as the most popular development methodology in
most companies, but is itself at risk of being eclipsed or consumed by the growing
popularity of DevOps.

The four values of Agile


In 2001, 17 software development professionals gathered to discuss concepts around
the idea of lightweight software development and ended up creating the Agile
Manifesto. The Manifesto outlines the four core values of Agile, and although there has
been debate about whether the Manifesto has outlived its usefulness, it remains at the
core of the Agile movement.

The four core values outlined in the Agile Manifesto are as follows:

Individual interactions are more important than processes and tools. People drive
the development process and respond to business needs. They are the most important
part of development and should be valued above processes and tools. If the processes
or tools drive development, then the team will be less likely to respond and adapt to
change and, therefore, less likely to meet customer needs.

A focus on working software rather than thorough documentation. Before Agile, a


large amount of time was spent documenting the product throughout development for
delivery. The list of documented requirements was lengthy and would cause long delays
in the development process. While Agile does not eliminate the use of documentation, it
streamlines it in a way that provides the developer with only the information that is
needed to do the work -- such as user stories. The Agile Manifesto continues to place
value on the process of documentation, but it places higher value on working software.

Collaboration instead of contract negotiations. Agile focuses on collaboration


between the customer and project manager, rather than negotiations between the two,
to work out the details of delivery. Collaborating with the customer means that they are
included throughout the entire development process, not just at the beginning and end,
thus making it easier for teams to meet the needs of their customers. For example, in
Agile, the customer can be included at different intervals for demos of the product.
However, the customer could also be present and interact with the teams daily, attend
all meetings and ensure the product meets their desires.

A focus on responding to change. Traditional software development used to avoid


change because it was considered an undesired expense. Agile eliminates this idea.
The short iterations in the Agile cycle allow changes to easily be made, helping the
team modify the process to best fit their needs rather than the other way around.
Overall, Agile software development believes change is always a way to improve the
project and provide additional value.

The 12 principles of Agile


The Agile Manifesto also outlined 12 core principles for the development process. They
are as follows:

1. Satisfy customers through early and continuous delivery of valuable work.


2. Break big work down into smaller tasks that can be completed quickly.
3. Recognize that the best work emerges from self-organized teams.
4. Provide motivated individuals with the environment and support they need and trust
them to get the job done.
5. Create processes that promote sustainable efforts.
6. Maintain a constant pace for completed work.
7. Welcome changing requirements, even late in a project.
8. Assemble the project team and business owners on a daily basis throughout the
project.
9. Have the team reflect at regular intervals on how to become more effective, then tune
and adjust behavior accordingly.
10. Measure progress by the amount of completed work.
11. Continually seek excellence.
12. Harness change for a competitive advantage.

The Agile software development cycle


The Agile software development cycle can be broken down into the following six steps:

• concept
• inception
• iteration/construction
• release
• production
• retirement

The first step, concept, involves the identification of business opportunities in each
potential project as well as an estimation of the time and work that will be required to
complete the project. This information can then be used to prioritize projects and
discern which ones are worth pursuing based on technical and economic feasibility.

During the second step, inception, team members are identified, funding is established
and the initial requirements are discussed with the customer. A timeline should also be
created that outlines the various responsibilities of teams and clearly defines when work
is expected to be completed for each sprint. A sprint is a set period of time during which
specific work has to be completed and made ready for review.

A visualization of the Agile software development cycle

The third step, iteration/construction, is when teams start creating working software
based on requirements and continuous feedback. The Agile software development
cycle relies on iterations -- or single development cycles -- that build upon each other
and lead into the next step of the overall development process until the project is
completed. Each iteration typically lasts between two to four weeks, with a set
completion date. The goal is to have a working product to launch at the end of each
iteration.

Multiple iterations occur throughout the development cycle and they each possess their
own workflow. A typical iteration flow consists of the following:

• defining requirements based on the product backlog, sprint backlog and customer
and stakeholder feedback;
• developing software based on the set requirements;
• conducting QA testing, internal and external training and documentation;
• delivering and integrating the working product into production; and
• gathering customer and stakeholder feedback on the iteration in order to define new
requirements for the next sprint.

The fourth step, release, involves final QA testing, resolution of any remaining defects,
finalization of the system and user documentation and, at the end, release of the final
iteration into production.

After the release, the fifth step, production, focuses on the ongoing support necessary
to maintain the software. The development teams must keep the software running
smoothly while also teaching users exactly how to use it. The production phase
continues until the support has ended or the product is planned for retirement.

The final step, retirement, incorporates all end-of-life activities, such as notifying
customers and final migration. The system release must be removed from production.
This is usually done when a system needs to be replaced by a new release or if the
system becomes outdated, unnecessary or starts to go against the business model.

Throughout the Agile cycle, different features can be added to the product backlog, but
the entire process should consist of repeating each step over and over until every item
in the backlog has been satisfied. This makes the Agile cycle more of a loop than a
linear process. At any time, an enterprise can have multiple projects occurring
simultaneously with iterations that are logged on different product lines and a variety of
internal and external customers providing different business needs.
Types of Agile methodologies
The goal of every Agile methodology is to embrace and adapt to change while
delivering working software as efficiently as possible. However, each method varies in
the way it defines the steps of software development. The most widely used Agile
methods include the following:

• Scrum
• Lean software development
• Extreme programming
• Crystal
• Kanban
• Dynamic systems development method
• Feature-driven development

Scrum is a lightweight Agile framework that can be used by project managers to control
all types of iterative and incremental projects. In Scrum, the product owner creates a
product backlog that allows them to work with their team to identify and prioritize system
functionality. The product backlog is a list of everything that needs to be accomplished
to deliver a successful, working software system -- this includes bug fixes, features and
non-functional requirements. Once the product backlog is defined, no additional
functionality can be added except by the corresponding team.

Once the team and the product owner have established the priorities, cross-functional
teams step in and agree to deliver working increments of software during each sprint --
often within 30 days. After each sprint, the product backlog is reevaluated, analyzed and
reprioritized in order to select a new set of deliverable functions for the next sprint.
Scrum has gained popularity over the years since it is simple, has proven to be
productive and can incorporate the various overarching practices promoted by the other
Agile methods.

Lean software development is another iterative method that places a focus on using
effective value stream mapping to ensure the team delivers value to the customer. It is
flexible and evolving; it does not have rigid guidelines or rules. The Lean method uses
the following primary principles:

• Increasing learning
• Empowering the team
• Fostering integrity
• Removing waste
• Understanding the whole
• Making decisions as late as possible
• Delivering the product as fast as possible

The Lean method relies on fast and reliable feedback between the customers and
programmers in order to provide fast and efficient development workflows. To
accomplish this, it provides individuals and small teams with decision-making authority
instead of relying on a hierarchical flow of control. To eliminate waste, the Lean method
asks users to only select truly valuable features for their system, prioritize these chosen
features and then deliver them in small batches. Lean software development also
encourages automated unit tests to be written simultaneously with the code and
concentrates on ensuring every member of the team is as productive as possible.

The extreme programming (XP) method is a disciplined approach that focuses on


speed and continuous delivery. It promotes increased customer involvement, fast
feedback loops, continuous planning and testing and close teamwork. Software is
delivered at frequent intervals -- usually every one to three weeks. The goal is to
improve software quality and responsiveness when faced with changing customer
requirements.

The XP method is based on the values of communication, feedback, simplicity and


courage. Customers work closely with their development team to define and prioritize
their requested user stories. However, it is up to the team to deliver the highest priority
user stories in the form of working software that has been tested at each iteration. To
maximize productivity, the XP method provides users with a supportive, lightweight
framework that guides them and helps ensure the release of high-quality enterprise
software.

Crystal is the most lightweight and adaptable methodology. It focuses on people and
the interactions that occur while working on an Agile project as well as business-
criticality and priority of the system under development. The Crystal method works off
the realization that every project possesses unique characteristics that require a slightly
tailored set of policies, practices and processes. As a result, it is made up of a collection
of Agile process models, such as Crystal Orange, Crystal Clear and Crystal Yellow.
Each model has its own unique characteristics that are driven by different factors,
including project priorities, team size and system criticality.
Like other Agile methodologies, Crystal emphasizes frequent delivery of working
software with high customer involvement, adaptability and the elimination of
bureaucracy and distractions. Its key principles include communication, teamwork and
simplicity.

Kanban uses a highly visual workflow management method that allows teams to
actively manage product creation -- emphasizing continuous delivery -- without creating
more stress in the software development lifecycle (SDLC). It has become popular
among teams also practicing Lean software development.

Kanban uses three basic principles: visualize the workflow; limit the amount of work in
progress; and improve the flow of work. Like the Scrum, the Kanban method is
designed to help teams work more efficiently with each other. It encourages continuous
collaboration and attempts to define the best possible workflow in order to promote an
environment with active and ongoing learning and improvement.

The dynamic systems development method (DSDM) is a response to the need for a
common industry framework for rapid software delivery. The DSDM is based on eight
key principles; failing to abide by any one of the principles introduces risk to successful
completion of the project. The eight principles are as follows:

1. Collaboration
2. On-time delivery
3. Demonstrated control
4. Continuous, clear communication
5. A constant focus on the business need
6. Iterative development
7. Creation in increments from firm foundations
8. Refusal to compromise quality

In the DSDM, rework is built into the process and all changes must be reversible.
System requirements are prioritized using MoSCoW Rules, which ranks priority as
follows:

• M -- must have
• S -- should have
• C -- could have, but not critical
• W -- won't have now, but could have later

It's important in DSDM that not every requirement is considered critical. Each iteration
should include less critical items which can be removed so higher priority requirements
are not impacted.

Finally, feature-driven development (FDD) blends software engineering best practices


-- such as developing by feature, code ownership and domain object modeling -- to
create a cohesive, model-driven, short-iteration process. FFD begins by defining an
overall model shape, which in turn creates a feature list. The method then proceeds with
iterations that last two weeks and focus on planning by feature, designing by feature
and building by feature. If a feature takes more than two weeks to build, then it should
be broken down into smaller features. The primary advantage of FDD is that it
is scalable -- even to large teams -- since it uses the concept of "just enough design
initially," or JEDI.

Advantages and disadvantages of Agile


Much has been compared over the years with Agile vs. Waterfall approaches.

In the Waterfall era of software development, coders worked alone, with little to no input
before handing the software to testers and then on to production. Bugs, complications
and feature changes either weren't handled well, or were dealt with so late in the
process that projects were seriously delayed or even scrapped.

The idea behind the Agile model, in which everyone -- including the business side --
stayed involved and informed in the development process, represented a profound
change in both company culture and the ability to get better software to market more
quickly.

Collaboration and communication became as important as technology, and because the


Agile Manifesto is open to interpretation, Agile has been adapted and modified to fit
organizations of all sizes and types. The Agile cultural shift also paved the way for the
latest software development evolution, DevOps.

On the other hand, many would say the biggest disadvantage of Agile is the fact it has
been modified -- some would say diluted -- by many organizations. This phenomenon is
so widespread that the "Agile my way" practitioners are known as "ScrumButs," as in,
"We do Scrum in our organization, but …."
Although Agile opens the lines of communication between developers and the business
side, it's been less successful bringing testing and operations into that mix -- an
omission that may have helped the idea of DevOps gain traction.

Another potential concern about Agile is its lack of emphasis on technology, which can
make it difficult to sell the concept to upper managers who don't understand the role that
culture plays in software development. Furthermore, the necessity of completing sprints
on time can create a stressful work environment for software developers. They may be
forced to work extra hours and stay late in order to meet deadlines.

Defining Workflow Management


To understand what workflow management actually is, let’s break the concept down in
simpler terms. A workflow is defined as a series of steps which, through the input of
data and subsequent processing sequentially in the order defined, results in the
completion of a specific task.

Operationally, workflows represent the mechanism of getting work done. Take, for
example, the act of finalizing a vendor for a specific project in a company.

Workflows will need to be created for inviting tenders for the project, inspecting the
vendor’s capability and capacity for the task, ensuring financial viability is signed off on
the project, sending invoices post the selection of the vendor, contract finalization, post
assignment follow-ups, as well appropriate documentation.

In many corporate apparatuses world over, workflows aren’t as simple. There exist
multiple ones, each which focus on the completion of a task. These independent tasks
together result in the completion of a bigger organizational objective.

A simple workflow system consists of predefined business rules and designated human
tasks, which results in error-free outcomes.

With the rise in technology and automation, the necessity of workflows to accomplish
complex processes with minimal human intervention has been greater than ever. The
ever-changing business environments required robust mechanisms to achieve
efficiency in business processes, and this is where the Workflow Management
Softwares/Systems arose.

What is Workflow Management Software?


Workflow software (WfMS) can perform a series of automated actions in business
processes to improve efficiency, focus, and accountability. Workflow Management
Software can design and execute large projects with customized business applications.
With the use of an optimized Workflow tool, you can start organizing your business into
a systematic framework.

Essentially, business processes today require a stern degree of automation. Workflow


Management software ensures that the most rigorous tasks are executed without much
ado.

Types of Workflow Management Tools


There are essentially three types of workflow management tools. Let’s have a look at
these.

Human-Centric Workflow Management Systems

Creation of Business process management tasks and methodologies that involve


significant human input, because only people can perform them, in the chain and
thereby designing automation processes to support these tasks (e.g., Writing a
proposal, Data analysis reports, etc.).

Document-Centric Workflow Management Systems

Used when documents hold significant value in the processes of organizations. The flow
of documents through different processes and activities it is used becomes central to
the plans of the business process to improve the company’s efficiency. In this case, the
product of a process on one document at any stage of the process becomes the input to
the next stage. Hence document standardizations and acceptable inputs must be
present to preserve formats.

Most common activities that consider a document-centric system include document


approval and review, transcription, and translation.

Integration-Centric Workflow Management Systems

These often involve tasks and functionalities where the contributions of human beings
are minimal at best. Iterative and sequentially executed repetitive tasks fall under this
purview.

Who uses Workflow Management Software?


Workflow management software solutions are used by individual users or corporations
who need to keep track of real-time events with the purpose of processing, reporting,
and executing a variety of tasks, which may or cannot accommodate consistent human
intervention.
Examples of Industries using the workflow include the food and beverage industry,
companies such as Dominos and Pepsi, while the airline industry does rely on the
workflow for efficient business process handling.

Some of the world's biggest banks rely on successful workflow tools to ensure
transaction reliability.

Defining Workflow Management


To understand what workflow management actually is, let’s break the concept down in
simpler terms. A workflow is defined as a series of steps which, through the input of
data and subsequent processing sequentially in the order defined, results in the
completion of a specific task.

Operationally, workflows represent the mechanism of getting work done. Take, for
example, the act of finalizing a vendor for a specific project in a company.

Workflows will need to be created for inviting tenders for the project, inspecting the
vendor’s capability and capacity for the task, ensuring financial viability is signed off on
the project, sending invoices post the selection of the vendor, contract finalization, post
assignment follow-ups, as well appropriate documentation.

In many corporate apparatuses world over, workflows aren’t as simple. There exist
multiple ones, each which focus on the completion of a task. These independent tasks
together result in the completion of a bigger organizational objective.

A simple workflow system consists of predefined business rules and designated human
tasks, which results in error-free outcomes.

With the rise in technology and automation, the necessity of workflows to accomplish
complex processes with minimal human intervention has been greater than ever. The
ever-changing business environments required robust mechanisms to achieve
efficiency in business processes, and this is where the Workflow Management
Softwares/Systems arose.

What is Workflow Management Software?


Workflow software (WfMS) can perform a series of automated actions in business
processes to improve efficiency, focus, and accountability. Workflow Management
Software can design and execute large projects with customized business applications.
With the use of an optimized Workflow tool, you can start organizing your business into
a systematic framework.
Essentially, business processes today require a stern degree of automation. Workflow
Management software ensures that the most rigorous tasks are executed without much
ado.

Types of Workflow Management Tools


There are essentially three types of workflow management tools. Let’s have a look at
these.

Human-Centric Workflow Management Systems

Creation of Business process management tasks and methodologies that involve


significant human input, because only people can perform them, in the chain and
thereby designing automation processes to support these tasks (e.g., Writing a
proposal, Data analysis reports, etc.).

Document-Centric Workflow Management Systems

Used when documents hold significant value in the processes of organizations. The flow
of documents through different processes and activities it is used becomes central to
the plans of the business process to improve the company’s efficiency. In this case, the
product of a process on one document at any stage of the process becomes the input to
the next stage. Hence document standardizations and acceptable inputs must be
present to preserve formats.

Most common activities that consider a document-centric system include document


approval and review, transcription, and translation.

Integration-Centric Workflow Management Systems

These often involve tasks and functionalities where the contributions of human beings
are minimal at best. Iterative and sequentially executed repetitive tasks fall under this
purview.

Who uses Workflow Management Software?


Workflow management software solutions are used by individual users or corporations
who need to keep track of real-time events with the purpose of processing, reporting,
and executing a variety of tasks, which may or cannot accommodate consistent human
intervention.

Examples of Industries using the workflow include the food and beverage industry,
companies such as Dominos and Pepsi, while the airline industry does rely on the
workflow for efficient business process handling.
Some of the world's biggest banks rely on successful workflow tools to ensure
transaction reliability.

Advantages of Workflow Management Software


Workflow Management systems grew in importance throughout the ‘90s and into the
‘00s, once professionals in the IT sector realized its significance alongside the vast
globalization of productivity. Here are a couple of benefits of the modern Workflow
Management software -

• Increased efficiency through streamlining processes


• Effective compliance and audit tracking
• Accurate data reporting and insight
• Better communication and collaboration
• Product and process quality improvements
• Enhanced business planning
• Improved business strategy
• Increased customer satisfaction and loyalty
• Reduced redundancy and resource wastage
• Lowered process risks
Functions Executed by a Concise Workflow Management Tool

Access Controls
Just like the name suggests, access controls regulate the interactions individuals in an
organization can have with a selective resource. This becomes most important when
sensitive data and the non-overlapping processes must be kept apart from different
users.

Automate Business Process


Allowing minimal human interaction in some processes in business actually aids in
greater productivity, while reducing cost. Workflow management systems must contain,

Calendar Management
From the tracking of events per day to scheduling meetings between personnel and not
to forget, hosting reminders, Calendars have become near synonymous with business
efficiency. Hence, an effective Workflow management system will host and accomplish
some basic calendar Management functions.
Compliance Tracking
Following up with all documentation and procedures to ensure no rules and regulations
were broken in the follow-through of the process.

Document Management
The genesis for today’s workflow management systems arose in the necessity of
maintaining thousands of documents online and offline in the corporate world. With the
boom of business and the subsequent necessity of recording thousands of tasks per
day, effective documentation management has been one of the key functionalities that
workflow management systems achieve success in.

Enhanced Communication
Communication is often regarded as the backbone of efficient organizations. Despite
this, miscommunication between departments or teams essentially under the umbrage
of the same organization can single-handedly be the cause for the disruption in
performance. A good workflow management system minimizes the gap in
communication and allows strong collaboration between teams.

Forms Management
An ever-increasing reliance on storing data for different processes and of different types
has led to the necessity of effective forms management software. Through forms,
documentation, and subsequent processing of data becomes a child’s play for the
system, while minimizing human intervention to process them, becomes the norm,
especially when data is stored to the tune of millions of bytes every day in an
organization.

KPI-based Reports
Multiple processes need KPIs to be recorded simultaneously or instantaneously.
Keeping track of all of them together makes productivity egregious. It is here that KPI
indicators, all of them visible on a programmed dashboard, adjustable by the user,
makes workflow management systems a boon to use.

Notifications and Reminders


As discussed in the calendars section, workflow management systems play a savior to
schedule on an individual basis. Whether it’s a reminder to execute a task at a particular
time or if it’s automated progress checks that keep the users updated on independent
processes, workflow management systems give users a significant advantage in-
process monitoring like they never take their eyes off the ball.
Reporting and Analytics
Crunch decisions are often made by falling back on the strength of the data-backed
analysis. Reporting the effect of these decisions and also carrying out further data
analytics falls under the purview of most Workflow Management Systems.

SLA Status Indicators


With the increasing importance of software dashboards, SLAs have become to be relied
on. These indicators aid users in deciphering the progress of a task in accordance with
its importance, such that users know which objective needs to be achieved before
others.

Let's now go through details about one of the most popular workflow management
software - Wrike.

Wrike
Wrike is a cloud-based workflow management software that delivers powerful
automation empowering your teams to collaborate efficiently across multiple
departments and have 360-degree visibility over different projects running within an
organization. It helps companies to improve productivity by establishing a systematic
approach while managing various workflows. It helps your team maximize its
performance, resulting in improved customer experiences and accelerated business
growth.

Key Features

• Provides customizable dashboards, workflows, request forms, and more to equip teams
with the exact solutions they need
• Allows sharing files and shortens approval processes with visual proofing resulting in
enhanced productivity and collaboration within teams
• Eliminates silos between different departments by providing visibility to real-time
information enabling smart and informed decision making
• Enables instilling ethical practices within an organization as it includes security
capabilities that prevent fraudulent and malicious activities
• Includes templates built for specific purposes that help in speeding up some standard
processes like event management, onboarding employees, order fulfillment, and more
• Provides automated insights over workloads that help in better resource management
and achieving required productivity
• Enables easy access to customized reports that help making smarter decisions and
implementing smoother workflows
1. Apache Airflow
With a focus on creating, monitoring, and managing workflows, Apache’s free and open-
source Airflow platform is a go-to workflow management tool. Constituted of Directed
Acyclic Graphs (DAGs), it helps users schedule, program, and automate the flow of
data through nodes.

The pipelines only represent the direction of data movement, while one node’s (task)
output, is usually the input to another node. The acyclic nature of the graph indicates
that data cannot flow back between nodes. The process must be completed or halted
and restarted for the workflow to complete all tasks.

The airflow workflow management platform was built on four important principles, which
also translate to some of its most important features as follows.

• Dynamic – Dynamic creation of pipelines, CODED in via python as initiated, as well as


DAGs themselves to ensure smooth process creation in the Airflow environment.
• Elegant – A smooth interface and enriching User Interface (owing to the python script),
combined with what Apache terms “lean” pipeline configuration allows for a quick and
almost flawless workflow creation.
• Extensible – No need to follow the predefined set of operators and variables in the
airflow environment library. A user can create their own set of the above, aiding their
level of abstraction and understanding.
• Scalable – Imagine a workflow with over a hundred individual processes! Airflow’s
characteristics allow a user to envision an environment that fits multiple scenarios,
owing to its scalability.
• Integration – Multiple Amazon Web Services (AWS), Google Cloud applications, and
Microsoft Azure functionalities can be integrated into the airflow workflow environment.
• Easy, concise monitoring and reporting
• Multiple Graph views in the Environment - Includes tree view, Graph View, and DAG
View for minute analysis of processes.
2. Apache Taverna
While Apache Airflows can be used to create regular workflows, Apache Taverna is a
free and open-source workflow management system that caters to the creation of
scientific workflows. In essence, it is a workflow management tool specifically aimed at
the scientific community.

The Taverna suite, as it’s better called, is a combination of the Taverna engine, the
Taverna Workbench, and the Taverna Server. These components working together aid
scientists with limited working knowledge of computing and skim on resources to
essentially build complex data workflows (and perform analysis on them) from a variety
of public and private sources, involving distinct fields such as geography, medicine, and
sports analytics.

The workflow tool is platform-independent, which means it can be accessed from a


variety of operating systems.

Features

• Command-line execution to allow quick and easy GUI-less Workflow monitoring


• Remote access to workflows using Taverna Server
• Integration of a wide variety of scientific and non-scientific service providers; e.g.,
BioMart, SoapLab, R, Excel Spreadsheets
• Enough versatility to open workflows in a web-browser.
• HTTP authentication necessity ensures protection for all users
• Optimizing and monitoring Workflow progress
• Extensive customer support
• Share self-created workflows and analyze different ones using myExperiment services
• Exceptional debugging tools present
• Rich, diverse set of pre-loaded workflows alongside the option to create from scratch
• Easy-to-navigate and feature-heavy workbench environment
3. Trello
Trello is a visual, free workflow management tool. It consists of a list of cards, which in
turn contain a set of to-do activities for a team. Trello’s ambition is to showcase greater
team collaboration and ease of project management. Owing to a cascading view, cards
can actually be allotted significant parameters such as date of task completion, names
of team members, etc., for productivity purposes.

You can use Trello to organize and prioritize personal and professional life in a fun,
flexible, and rewarding way.

Features

• Compact and easy to use the card system


• Easy collaboration between departments
• Visibility and accountability established within the workflow
• Intuitive and easy to use Workflow editor
• Notification and reminders
• Availability of rule-based triggers to increase automation of tasks
• Customizability of cards
• Integration with third-party applications (DropBox, JIRA, etc.)
• Readymade templates of cards for different processes and functions in different
industries
4. Camunda
Camunda is a free and open-source workflow management tool that allows businesses
to achieve digital transformation through the power of automated tools and efficient
workflows. Built on three fundamental principles of design, automation, and
improvement, Camunda ensures the process of designing workflows becomes simpler
and less taxing as it once may have been. The workflow management system has been
envisioned to ensure agility in handling workflows for complex organizations, while data
visibility remains key between actors. Built on a lightweight Java Application Program
Interface (API) stack, the platform is robust and easily scalable.

Features

• Better performance through the separation of runtime and historical data


• Efficient sharing of databases by multiple entities to ease scalability
• Support of all BPMN (Business Project Modelling Notation) 2.0 symbols to represent
complex tasks that are easily understandable
• Complex Decision table integration available with workflows, to enhance business rules-
based decision making while increasing output
• Creation of shared, inter-departmental workflows alongside conversion to HTML and
XML file types
• Easy integration of Camunda plug-ins and technologies
• BPMN Modeler allows the creation of executable files for multiple BPMN and DMN
engines
• Existence of predefined configuration to allow customized and low code template for
workflow designs
• Highly detailed dashboard, Cockpit that serves to quickly identify, analyze and resolve
workflow errors
• Rigorous authorization checks via administration software to safeguard sensitive
workflow processes
• Detailed task assignment, user communication and progress tracking using the BPMN
2.0 user task interface, Tasklist
• Rigorous analytics tools and dashboards with a clear focus on reporting the efficiency of
workflows
• Process tools such as BPMN 2.0 heat maps, alerts, and variety (model) testing to
ascertain optimum workflow fit for business processes
• Cloud-integrated, easy access from multiple platforms
5. ProcessMaker
ProcessMaker is an open-source workflow system that allows BPM users to generate
low-code workflows and design complex processes faster than other similar tools,
especially for enterprises. The ProcessMaker workflow consists of an agile BPM
technology where users can just drag and drop elements on the environment interface
to quicken process ideation and analysis.

Features

• Easy and rapid to implementation of workflows


• Extensive portability of workflows across teams
• Integration of a variety of third party applications and services (Eg. DropBox,
Salesforce, etc.)
• Cloud-hosted BPM software to ensure accessibility on AWS for enterprises
• White Label software – essentially allows companies to use ProcessMaker BPM
functionalities as their own after customization
• User authentication protocols to strictly protect sensitive workflows
• Screenbuilder allows easy building of web-based and interactive forms.
• ProcessMaker RESTful API and complete Software Development Kit allow for
resourceful workflow designs.
• Easy access to a robust database using API.
6. Cflow
Cflow is a cloud-based (hosted on AWS), open-source workflow automation software. It
is essentially a code-free workflow management tool, with the software operating on
assets of predefined library templates of essentially used workflows for organizations of
different dimensions.

Features

• Resilient and reliant drag and drop software interface


• Custom Inbox to preserve and denote all available workflows in the environment
• Easy integration of over 1000 third party applications (e.g., SAP, Zapier, etc.)
• Visual workflow designer with predefined, industry-specific templates
• Central dashboard to track all process performance and increase the efficiency of
decision making
• Robust notification setup to alert multiple users of workflow progress
• Excellent document management
• Intuitive mobile application to build and monitor workflows
• Ensures compliance details are followed by creating an audit trail of all processes
• Advanced authentication techniques alongside encryption for tasks and processes
• Customizable decision-maker engine that can easily be implemented across workflows
• Allows for easy linkages between multiple processes for increased collaboration
between departments.

7. Bonita

The Bonita Platform is a workflow tool, and the business process management (BPM)
tool allows enterprises to create and monitor process-based implementations within the
organization. It is a cloud-based, open-source system that is used to achieve efficiency
or digital transformation of business processes.

Features

• Rapid and agile development of processes using the Bonita studio


• Inter-linking of processes to allow users access via web portals and applications
• Connect to databases, social platforms, web services, and SaaS offerings
• Integration to enterprise systems such as ECMs, CRMs, ERPs
• Citizen developer application composition
• Customize, modify, and personalize processes with out-of-the-box features
• Ability to integrate many third-party applications
• Manage a plethora of tasks with Bonita Portal
• Efficient reporting on processes
VERSION CONTROL SYSTEMS
A version control system (VCS) or version control software automates the process of
version control. It tracks changes to a file or set of files over time so that you do not
have to manage file versions manually or with custom automation scripts. A version
control system keeps a complete history of your code and other files, allowing you to
return to a previous version if needed.
GIT AND GITHUB
What is Git?
Git is a modern and widely used distributed version control system in the world. It is
developed to manage projects with high speed and efficiency. The Version control
system allows us to monitor and work together with our team members at the same
workspace.
Git is an open-source distributed version control system. It is designed to handle
minor to major projects with high speed and efficiency. It is developed to co-ordinate the
work among the developers. The version control allows us to track and work together
with our team members at the same workspace.

Git is foundation of many services like GitHub and GitLab, but we can use Git without
using any other Git services. Git can be used privately and publicly.

Git was created by Linus Torvalds in 2005 to develop Linux Kernel. It is also used as
an important distributed version-control tool for the DevOps.

Git is easy to learn, and has fast performance. It is superior to other SCM tools like
Subversion, CVS, Perforce, and ClearCase.

Features of Git

Some remarkable features of Git are as follows:


o Open Source
Git is an open-source tool. It is released under the GPL (General Public
License) license.
o Scalable
Git is scalable, which means when the number of users increases, the Git can
easily handle such situations.
o Distributed
One of Git's great features is that it is distributed. Distributed means that instead
of switching the project to another machine, we can create a "clone" of the entire
repository. Also, instead of just having one central repository that you send
changes to, every user has their own repository that contains the entire commit
history of the project. We do not need to connect to the remote repository; the
change is just stored on our local repository. If necessary, we can push these
changes to a remote repository.
o Security
Git is secure. It uses the SHA1 (Secure Hash Function) to name and identify
objects within its repository. Files and commits are checked and retrieved by its
checksum at the time of checkout. It stores its history in such a way that the ID of
particular commits depends upon the complete development history leading up to
that commit. Once it is published, one cannot make changes to its old version.
o Speed
Git is very fast, so it can complete all the tasks in a while. Most of the git
operations are done on the local repository, so it provides a huge speed. Also, a
centralized version control system continually communicates with a server
somewhere.
Performance tests conducted by Mozilla showed that it was extremely fast
compared to other VCSs. Fetching version history from a locally stored
repository is much faster than fetching it from the remote server. The core part
of Git is written in C, which ignores runtime overheads associated with other
high-level languages.
Git was developed to work on the Linux kernel; therefore, it is capable enough
to handle large repositories effectively. From the
beginning, speed and performance have been Git's primary goals.
o Supports non-linear development
Git supports seamless branching and merging, which helps in visualizing and
navigating a non-linear development. A branch in Git represents a single commit.
We can construct the full branch structure with the help of its parental commit.
o Branching and Merging
Branching and merging are the great features of Git, which makes it different
from the other SCM tools. Git allows the creation of multiple branches without
affecting each other. We can perform tasks like creation, deletion,
and merging on branches, and these tasks take a few seconds only. Below are
some features that can be achieved by branching:
o We can create a separate branch for a new module of the project,
commit and delete it whenever we want.
o We can have a production branch, which always has what goes into
production and can be merged for testing in the test branch.
o We can create a demo branch for the experiment and check if it is
working. We can also remove it if needed.
o The core benefit of branching is if we want to push something to a remote
repository, we do not have to push all of our branches. We can select a
few of our branches, or all of them together.
o Data Assurance
The Git data model ensures the cryptographic integrity of every unit of our
project. It provides a unique commit ID to every commit through a SHA
algorithm. We can retrieve and update the commit by commit ID. Most of the
centralized version control systems do not provide such integrity by default.
o Staging Area
The Staging area is also a unique functionality of Git. It can be considered as
a preview of our next commit, moreover, an intermediate area where commits
can be formatted and reviewed before completion. When you make a commit, Git
takes changes that are in the staging area and make them as a new commit. We
are allowed to add and remove changes from the staging area. The staging area
can be considered as a place where Git stores the changes.
Although, Git doesn't have a dedicated staging directory where it can store some
objects representing file changes (blobs). Instead of this, it uses a file called
index.
Another feature of Git that makes it apart from other SCM tools is that it is
possible to quickly stage some of our files and commit them without
committing other modified files in our working directory.
o Maintain the clean history
Git facilitates with Git Rebase; It is one of the most helpful features of Git. It
fetches the latest commits from the master branch and puts our code on top of
that. Thus, it maintains a clean history of the project.

Benefits of Git

A version control application allows us to keep track of all the changes that we make in
the files of our project. Every time we make changes in files of an existing project, we
can push those changes to a repository. Other developers are allowed to pull your
changes from the repository and continue to work with the updates that you added to
the project files.

Some significant benefits of using Git are as follows:


o Saves Time
Git is lightning fast technology. Each command takes only a few seconds to
execute so we can save a lot of time as compared to login to a GitHub account
and find out its features.
o Offline Working
One of the most important benefits of Git is that it supports offline working. If we
are facing internet connectivity issues, it will not affect our work. In Git, we can do
almost everything locally. Comparatively, other CVS like SVN is limited and
prefer the connection with the central repository.
o Undo Mistakes
One additional benefit of Git is we can Undo mistakes. Sometimes the undo can
be a savior option for us. Git provides the undo option for almost everything.
o Track the Changes
Git facilitates with some exciting features such as Diff, Log, and Status, which
allows us to track changes so we can check the status, compare our files or
branches.

Why Git?

We have discussed many features and benefits of Git that demonstrate the
undoubtedly Git as the leading version control system. Now, we will discuss some
other points about why should we choose Git.
o Git Integrity
Git is developed to ensure the security and integrity of content being version
controlled. It uses checksum during transit or tampering with the file system to
confirm that information is not lost. Internally it creates a checksum value from
the contents of the file and then verifies it when transmitting or storing data.
o Trendy Version Control System
Git is the most widely used version control system. It has maximum
projects among all the version control systems. Due to its amazing
workflow and features, it is a preferred choice of developers.
o Everything is Local
Almost All operations of Git can be performed locally; this is a significant reason
for the use of Git. We will not have to ensure internet connectivity.
o Collaborate to Public Projects
There are many public projects available on the GitHub. We can collaborate on
those projects and show our creativity to the world. Many developers are
collaborating on public projects. The collaboration allows us to stand with
experienced developers and learn a lot from them; thus, it takes our
programming skills to the next level.
o Impress Recruiters
We can impress recruiters by mentioning the Git and GitHub on our resume.
Send your GitHub profile link to the HR of the organization you want to join.
Show your skills and influence them through your work. It increases the chances
of getting hired.

What is GitHub?

GitHub is a Git repository hosting service. GitHub also facilitates with many of its
features, such as access control and collaboration. It provides a Web-based graphical
interface.

GitHub is an American company. It hosts source code of your project in the form of
different programming languages and keeps track of the various changes made by
programmers.

It offers both distributed version control and source code management


(SCM) functionality of Git. It also facilitates with some collaboration features such as
bug tracking, feature requests, task management for every project.

Features of GitHub

GitHub is a place where programmers and designers work together. They collaborate,
contribute, and fix bugs together. It hosts plenty of open source projects and codes of
various programming languages.
Backward Skip 10sPlay VideoForward Skip 10s

Some of its significant features are as follows.

o Collaboration
o Integrated issue and bug tracking
o Graphical representation of branches
o Git repositories hosting
o Project management
o Team management
o Code hosting
o Track and assign tasks
o Conversations
o Wikisc

Benefits of GitHub

GitHub can be separated as the Git and the Hub. GitHub service includes access
controls as well as collaboration features like task management, repository hosting, and
team management.

The key benefits of GitHub are as follows.

o It is easy to contribute to open source projects via GitHub.


o It helps to create an excellent document.
o You can attract recruiter by showing off your work. If you have a profile on
GitHub, you will have a higher chance of being recruited.
o It allows your work to get out there in front of the public.
o You can track changes in your code across versions.

GIT TERMINOLOGY

Git is a tool that covered vast terminology and jargon, which can often be difficult for
new users, or those who know Git basics but want to become Git masters. So, we need
a little explanation of the terminology behind the tools. Let's have a look at the
commonly used terms.

Some commonly used terms are:


Branch

A branch is a version of the repository that diverges from the main working project. It is
an essential feature available in most modern version control systems. A Git project can
have more than one branch. We can perform many operations on Git branch-like
rename, list, delete, etc.

Checkout

In Git, the term checkout is used for the act of switching between different versions of a
target entity. The git checkout command is used to switch between branches in a
repository.

Cherry-Picking

Cherry-picking in Git is meant to apply some commit from one branch into another
branch. In case you made a mistake and committed a change into the wrong branch,
but do not want to merge the whole branch. You can revert the commit and cherry-pick
it on another branch.

Clone

The git clone is a Git command-line utility. It is used to make a copy of the target
repository or clone it. If I want a local copy of my repository from GitHub, this tool allows
creating a local copy of that repository on your local directory from the repository URL.

Fetch

It is used to fetch branches and tags from one or more other repositories, along with the
objects necessary to complete their histories. It updates the remote-tracking branches.

HEAD

HEAD is the representation of the last commit in the current checkout branch. We can
think of the head like a current branch. When you switch branches with git checkout, the
HEAD revision changes, and points the new branch.

Index

The Git index is a staging area between the working directory and repository. It is used
as the index to build up a set of changes that you want to commit together.
Master

Master is a naming convention for Git branch. It's a default branch of Git. After cloning a
project from a remote server, the resulting local repository contains only a single local
branch. This branch is called a "master" branch. It means that "master" is a repository's
"default" branch.

Merge

Merging is a process to put a forked history back together. The git merge command
facilitates you to take the data created by git branch and integrate them into a single
branch.

Origin

In Git, "origin" is a reference to the remote repository from a project was initially cloned.
More precisely, it is used instead of that original repository URL to make referencing
much easier.

Pull/Pull Request

The term Pull is used to receive data from GitHub. It fetches and merges changes on
the remote server to your working directory. The git pull command is used to make a
Git pull.

Pull requests are a process for a developer to notify team members that they have
completed a feature. Once their feature branch is ready, the developer files a pull
request via their remote server account. Pull request announces all the team members
that they need to review the code and merge it into the master branch.

Push

The push term refers to upload local repository content to a remote repository. Pushing
is an act of transfer commits from your local repository to a remote repository. Pushing
is capable of overwriting changes; caution should be taken when pushing.

Rebase

In Git, the term rebase is referred to as the process of moving or combining a sequence
of commits to a new base commit. Rebasing is very beneficial and visualized the
process in the environment of a feature branching workflow.
From a content perception, rebasing is a technique of changing the base of your branch
from one commit to another.

Remote

In Git, the term remote is concerned with the remote repository. It is a shared repository
that all team members use to exchange their changes. A remote repository is stored on
a code hosting service like an internal server, GitHub, Subversion and more.

In case of a local repository, a remote typically does not provide a file tree of the
project's current state, as an alternative it only consists of the .git versioning data.

Repository

In Git, Repository is like a data structure used by VCS to store metadata for a set of files
and directories. It contains the collection of the file as well as the history of changes
made to those files. Repositories in Git is considered as your project folder. A repository
has all the project-related data. Distinct projects have distinct repositories.

Stashing

Sometimes you want to switch the branches, but you are working on an incomplete part
of your current project. You don't want to make a commit of half-done work. Git stashing
allows you to do so. The git stash command enables you to switch branch without
committing the current branch.

Tag

Tags make a point as a specific point in Git history. It is used to mark a commit stage as
important. We can tag a commit for future reference. Primarily, it is used to mark a
projects initial point like v1.1. There are two types of tags.

1. Light-weighted tag
2. Annotated tag

Upstream And Downstream

The term upstream and downstream is a reference of the repository. Generally,


upstream is where you cloned the repository from (the origin) and downstream is any
project that integrates your work with other works. However, these terms are not
restricted to Git repositories.
Git Revert

In Git, the term revert is used to revert some commit. To revert a commit, git
revert command is used. It is an undo type command. However, it is not a traditional
undo alternative.

Git Reset

In Git, the term reset stands for undoing changes. The git reset command is used to
reset the changes. The git reset command has three core forms of invocation. These
forms are as follows.

o Soft
o Mixed
o Hard

Git Ignore

In Git, the term ignore used to specify intentionally untracked files that Git should ignore.
It doesn't affect the Files that already tracked by Git.

Git Diff

Git diff is a command-line utility. It's a multiuse Git command. When it is executed, it
runs a diff function on Git data sources. These data sources can be files, branches,
commits, and more. It is used to show changes between commits, commit, and working
tree, etc.

Git Cheat Sheet

A Git cheat sheet is a summary of Git quick references. It contains basic Git commands
with quick installation. A cheat sheet or crib sheet is a brief set of notes used for quick
reference. Cheat sheets are so named because the people may use it without no prior
knowledge.

Git Flow

GitFlow is a branching model for Git, developed by Vincent Driessen. It is very well
organized to collaborate and scale the development team. Git flow is a collection of Git
commands. It accomplishes many repository operations with just single commands.
Git Squash

In Git, the term squash is used to squash previous commits into one. Git squash is an
excellent technique to group-specific changes before forwarding them to others. You
can merge several commits into a single commit with the powerful interactive rebase
command.

Git Rm

In Git, the term rm stands for remove. It is used to remove individual files or a collection
of files. The key function of git rm is to remove tracked files from the Git index.
Additionally, it can be used to remove files from both the working directory and staging
index.

Git Fork

A fork is a rough copy of a repository. Forking a repository allows you to freely test and
debug with changes without affecting the original project.

Great use of using forks to propose changes for bug fixes. To resolve an issue for a bug
that you found, you can:

o Fork the repository.


o Make the fix.
o Forward a pull request to the project owner.

GIT COMMANDS

There are many different ways to use Git. Git supports many command-line tools and
graphical user interfaces. The Git command line is the only place where you can run all
the Git commands.

The following set of commands will help you understand how to use Git via the
command line.

Basic Git Commands

Here is a list of most essential Git commands that are used daily.

1. Git Config command


2. Git init command
3. Git clone command
4. Git add command
5. Git commit command
6. Git status command
7. Git push Command
8. Git pull command
9. Git Branch Command
10. Git Merge Command
11. Git log command
12. Git remote command

Let's understand each command in detail.

PauseNext
Unmute
Current Time 0:03
/
Duration 18:10
Loaded: 3.67%
Â
Fullscreen

1) Git config command

This command configures the user. The Git config command is the first and necessary
command used on the Git command line. This command sets the author name and
email address to be used with your commits. Git config is also used in other scenarios.

Syntax

1. $ git config --global [Link] "ImDwivedi1"


2. $ git config --global [Link] "Himanshudubey481@[Link]"

2) Git Init command

This command is used to create a local repository.


Syntax

1. $ git init Demo

The init command will initialize an empty repository. See the below screenshot.

3) Git clone command

This command is used to make a copy of a repository from an existing URL. If I want a
local copy of my repository from GitHub, this command allows creating a local copy of
that repository on your local directory from the repository URL.

Syntax

1. $ git clone URL

4) Git add command

This command is used to add one or more files to staging (Index) area.

Syntax

To add one file

1. $ git add Filename

To add more than one file

1. $ git add*
5) Git commit command

Commit command is used in two scenarios. They are as follows.

Git commit -m

This command changes the head. It records or snapshots the file permanently in the
version history with a message.

Syntax

1. $ git commit -m " Commit Message"

Git commit -a

This command commits any files added in the repository with git add and also commits
any files you've changed since then.

Syntax

1. $ git commit -a

6) Git status command

The status command is used to display the state of the working directory and the
staging area. It allows you to see which changes have been staged, which haven't, and
which files aren?t being tracked by Git. It does not show you any information about the
committed project history. For this, you need to use the git log. It also lists the files that
you've changed and those you still need to add or commit.

Syntax

1. $ git status
7) Git push Command

It is used to upload local repository content to a remote repository. Pushing is an act of


transfer commits from your local repository to a remote repo. It's the complement to git
fetch, but whereas fetching imports commits to local branches on comparatively pushing
exports commits to remote branches. Remote branches are configured by using the git
remote command. Pushing is capable of overwriting changes, and caution should be
taken when pushing.

Git push command can be used as follows.

Git push origin master

This command sends the changes made on the master branch, to your remote
repository.

Syntax

1. $ git push [variable name] master


Git push -all

This command pushes all the branches to the server repository.

Syntax

1. $ git push --all

8) Git pull command

Pull command is used to receive data from GitHub. It fetches and merges changes on
the remote server to your working directory.

Syntax

1. $ git pull URL


9) Git Branch Command

This command lists all the branches available in the repository.

Syntax

1. $ git branch

10) Git Merge Command

This command is used to merge the specified branch?s history into the current branch.

Syntax

1. $ git merge BranchName

11) Git log Command

This command is used to check the commit history.

Syntax
1. $ git log

By default, if no argument passed, Git log shows the most recent commits first. We can
limit the number of log entries displayed by passing a number as an option, such as -3
to show only the last three entries.

1. $ git log -3

12) Git remote Command

Git Remote command is used to connect your local repository to the remote server. This
command allows you to create, view, and delete connections to other repositories.
These connections are more like bookmarks rather than direct links into other
repositories. This command doesn't provide real-time access to repositories.

You might also like