Agile FAQs

No comments



The following FAQs on Agile and Scrum are likely to answer many of your questions about the various Agile methodologies, Agile manifesto, Agile certifications and more. Browse through these FAQs to find relevant answers to most commonly heard questions. If you have any further questions, do reach us at:

1. What is Agile?


Agile software development describes a set of principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. These principles support the definition and continuing evolution of many software development methods. Know more about Agile.

Agile is a disciplined way of managing IT development teams and projects encouraging collaboration between all stakeholders. It involves adaptation, frequent inspection, incremental and iterative practices in Agile Software Development (ASD). Agile methodologies or Agile processes are intended to focus on high-quality development, and providing multiple opportunities for a high degree of collaboration among stakeholders.

What is the History of Agile Software Development?

The roots of this incremental and iterative Agile software development approach can be traced back to 1957. Until 2001, the year when the Manifesto for Agile was published; there emerged a number of software development methods such as adaptive software management, lightweight software development method, heavyweight methods, rapid application development, DSDM (Dynamic Systems Development Method), Scrum, CC (Crystal Clear) and XP (Extreme Programming) are a few to name. However, a few of the aforementioned methods are now broadly referred to as Agile methods.

Brief History of Agile Software Development or Agile Manifesto

The buzzword – Agile Software Development or simply Agile is derived from the Agile Manifesto, which was formed by a small group of software developers in February 2001 at the Snowbird resort in Utah. With their combined experience of developing software, they shared their thoughts on why conventional approaches to managing software development projects often fail, and why there should be a better way to manage software development projects. As a result they published the Manifesto for Agile Software Development (ASD).

2. What are the Four Values of Agile Manifesto?

The Manifesto for Agile Software Development, published by a group of seventeen software developers, promotes below 4 crucial values.

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

The Agile Manifesto demonstrates that there is value in the items on the right, however, the items on the left have more value. Find more about the Agile Manifesto, history and the context of its origin here.

3. What are the Benefits of Agile?

Agile methodologies have gained tremendous popularity in the world of software development and real-time projects for the past 15 years. Here are a few high-level benefits that made Agile so popular.

  • Respond to customer changes quickly
  • High quality and faster delivery
  • Minimize project deviation risks
  • Self-learning and motivated team
  • Continuous improvement
  • Transparency between customer and the development team

4. Are Agile and SCRUM the Same?

Agile Software Development (ASD) is a term that collectively represents a set of software development methodologies such as Scrum, Kanban, XP, DSDM and others. So, Agile is a leadership philosophy that fosters collaboration, self-learning, teamwork and ownership. Scrum is a subset of Agile, a methodology that shares much of Agile philosophy, Agile principles and values.

5. What are Other Popular Methodologies of Agile?

Several organizations and product development teams use wide range of agile methodologies . Scrum is the most popular methodology of Agile. Here are some of the other popular methodologies of Agile such as Kanban, XP, Lean, and Crystal etc.

6. What are 12 principles of Agile Software Development?

The 12 principles of Agile Software Development include:

  1. Customer satisfaction and timely delivery
  2. Embracing change
  3. Deliver frequently
  4. Working together
  5. Positive environment
  6. Face-to-face communication
  7. Frequent inspection
  8. Sustainable development
  9. Technical excellence and good design
  10. Simplicity
  11. Self-learning teams
  12. Regular adjustments of intervals

Find more about these 12 principles behind the Agile Manifesto.

7. What are Popular Certifications in Agile?

The various Agile methodologies have changed the face of project management and software development cycle, which definitely increased the demand for professionals with various Agile skills. Here are some of the popular Agile certifications to enhance your knowledge:

  1. PMI Agile Certified Practitioner (PMI ACP)
  2. SCRUM Certifications by Scrum Alliance
    • Certified Scrum Product Owner (CSPO)
    • Certified Scrum Master (CSM)
    • Certified Scrum Developer (CSD)
    • Certified Scrum Professional (CSP)
    • Certified Scrum Trainer (CST)
    • Certified Enterprise Coach (CEC)
    • Certified Team Coach (CTC)
  3. Leading SAFe (SA)
  4. SAFe Program Consultant (SPC)
  5. APMG International
  6. Strategyex certificate (Associate or Masters certificate in Agile practices)
  7. ICAgile

8. Is Agile Only Used in Software Development?

No! Agile methodologies or frameworks are not just limited to software development industry, they are used in several non-IT industries as well that rely on learning, self-discovery and unlocking team’s hidden potential through the constant delivery of valuable software, transparency and promoting sustainable development in their individual businesses. Automobile, Construction, Marketing, Architecture, Event Planning, Education, Industrial/Manufacturing are a few non-IT industries that use Agile. Scrum and Kanban are currently the most popular methodologies used by organizations across various industries.

9. What is SCRUM?

Scrum is an iterative and incremental ASD framework that is significantly useful for managing product development. It is a defined “process framework” which is flexible and comes with a set of practices that support development team to work in a consistent way and reach their common goals. The key principles of Scrum is to encourage collaboration of all stakeholders, adapting to evolving technologies, responding to emerging requirements and changes in the current market conditions.

Scrum uses development cycles called Sprints. Sprint cycles usually range from 2 to 6 weeks. Also uses specific concepts and practices to maximum the amount of productive time in its framework. These concepts and practices can be categorized into three types called Roles, Artifacts and Time Boxes. Read more about meetings and artifacts about Scrum in the other FAQ items.

10. What are Key Resources to Learn About Agile and Scrum?

Here is a list of popular resources to learn more about various Agile and SCRUM methodologies.

SCRUM Alliance

This is one of the largest hubs for scrum resources offering a comprehensive range of articles, material and knowledgeable information on Scrum from its members. All the scrum enthusiasts who are looking to benchmark their knowledge and take a leap in their professional career, this is one of the best free resources to consider.

Agile Alliance

This is a non-profit organization that has global membership and is exclusively dedicated to discussing Agile learning and highlights. The community allows users to explore Agile principles, values, and practices to support building effective software solutions.

Agile or SCRUM Google Communities & User Groups

This is an extremely easy way to gain knowledge on SCRUM. The Google communities or user groups help initiate conversations with people who are excited to share their knowledge with others. Users can join a local Agile or SCRUM user group for free and experience a much faster pace of progress.

Agile and SCRUM Meetup

Meetup is an online social networking site that allows users from various localities around the world to explore and join offline group meetings related to their interest. This also includes Meetups on Agile and other technologies. Users can explore an array of group meetings, live stream of Meetups, Agile tools Meetup and Agile speaker series on this platform. This is the best free resource for Agile and SCRUM enthusiasts, thought leaders, evangelists, and everybody who wants to develop their understanding of Agile, SCRUM, Lean, and other methodologies.

This online site was founded by SCRUM co-creator Ken Schwaber to provide professional SCRUM trainings and assessments through their global community of individuals, teams and organizations. Here you can explore the basics of SCRUM, variety of useful articles on SCRUM and its framework plus, get a chance to meet the community of PSEs at a nearby event.

Stack Overflow

Stack Overflow was created in 2008 and is an excellent question-and-answer portal that serves as a good resource if you have gained theoretical knowledge of Agile but have queries in implementing it in real-time. Also, for those who would like to polish their Agile skills and get appreciated for it, this is the platform where you can browse the complete list of questions related to Agile or SCRUM, and answer those unanswered questions which you are confident about.


This is a free educational site that has quite useful articles, blogs, videos, guides, infographics and more about Scrum.

11. What are advantages and disadvantages of SCRUM?

The Agile Scrum framework focuses software development in small, consistent installments based upon regular collaboration among self-organizing cross-functional departments. Since Scrum is the most widely used Agile methodology, it is important that you understand some of the advantages and disadvantages of it.


  • Better quality
  • Visible progress
  • Reduced risk
  • Higher collaboration and accountability
  • Higher team morale
  • Self-organizing teams
  • Increased customer satisfaction
  • Increases ROI


  • Works well within small teams
  • If individuals aren’t committed the chances of a project failure will be high
  • Daily meetings at times frustrate team members

12. What are the Roles in Scrum?

Scrum framework has primarily three different roles, they are Certified Scrum Master (CSM), Scrum Product Owner and the Scrum Team. Each of these roles has a set of common rules that are quite important to finish a project or a task successfully.


Certified Scrum Master: A CSM is a facilitator for an Agile development team. He/she ensures that the Scrum Team adheres to the rules, norms and practices of the Scrum theory. Some of the most significant responsibilities of the Scrum master include:

  1. Managing the process for how information is exchanged
  2. Facilitating various Scrum events
  3. Ensures effective communication between the Scrum Product Owner and the Scrum Team
  4. Trains the Scrum Team
  5. Adapts to the emerging changes
  6. Ensures to maximize the amount of productivity of the Scrum Team

Scrum Product Owner: The Scrum Product Owner plays a vital role within this development framework. He/she represents stakeholders or end customers and is accountable for maximizing the product value. Here are some major responsibilities of the Scrum Product Owner:

  1. Release management
  2. Manage the Scrum Product Backlog
  3. To work closely with the Scrum Team
  4. Stakeholder management

Scrum Team: Besides Product Owner, Scrum Team delivers the core work from the requirements. Everyone in the Scrum Team ensures to follow a common goal, have respect for each other, and follow the defined rules and norms. Here are some top common responsibilities of every Scrum Team member:

  1. Create the Sprint Backlog
  2. Perform the short Daily Sprint Meeting
  3. Update their status of the tasks regularly
  4. Allow creation of a Sprint Burndown Diagram





13. What are the Meetings in Scrum?

Scrum practice has four primary meetings. Here they are

Sprint Planning

Sprint Planning is conducted at the beginning of a sprint to define the Sprint backlog process. This plan is defined by the collaborative work of the entire Scrum team. It is typically time-boxed to a maximum of 8 hours for a one-month Sprint. During the process of Sprint planning, there are two things defined by the Product Owner and the entire Scrum Team – Objective definition and Task Estimation. The Scrum Master ensures that all the attendants understand the purpose of the Sprint planning during the event and guides the Scrum Team to fulfill the Sprint goal and how to keep it within the time-box.

Daily Scrum

Daily Scrum or Daily Standup Meeting is typically time-boxed to 15 minutes, and it is a short daily meeting. The purpose of this meeting is to help the Scrum team to synchronize activities and define a plan for the next 24 hours. The team members get together to present the progress of the work since the last Daily Scrum and present the work that could be done before the next one. During this meeting, the team members answer the following questions:

  • Yesterday’s tasks that were completed
  • The to-do’s for today
  • Any impediments or obstacles they face

Sprint Review

Sprint review meeting is typically time-boxed for 4 hours for a one-month Sprint. This meeting is conducted at the end of the Sprint to demonstrate and validate the Sprint process. The Scrum Team projects the deliverables of the current Sprint to the Product Owner and adapts the Product Backlog if needed. The Product Owner reviews the product increment and it is intended to give feedback and promote collaboration.

Sprint Retrospective

Sprint Retrospective occurs after the Sprint review and before the next Sprint Planning. It is typically time-boxed for 3 hours for a one-month Sprint. During this meeting, the Scrum Team meets to inspect the last Sprint, its process, tools, communication, collaboration mechanisms and other related aspects. The purpose of this meeting is to understand what went well in the last Sprint and what did not, and it is intended to learn, make improvements and progress in the further Sprints. The Scrum Team discusses the opportunities or best practices to implement in the Sprints to follow at any time.

14. What are Artifacts and Tools in Scrum?


Scrum artifacts provide significant information to the Scrum Team and the stakeholders for the effective and efficient development. This information fosters the understanding of the product in progress, the activities being planned, and the activities being done in the project. Here are the primary artifacts seen in Scrum Process Framework:

  • Product Backlog:The Product Backlog is an ordered list of features that are prioritized based on business value, where each features has an associated estimate and other attributes provided by the Scrum Team. It is an evolving artifact that provides all features, enhancements, requirements, functions and changes to be made to the product. The Product Owner is responsible for the Product Backlog.
  • Sprint Backlog:The Sprint Backlog is the set of Product Backlog items loaded onto the Sprint’s time-box – this often includes in-depth details such as plan for delivering the products, the primary person to work during the Sprint and gives information that helps in understanding the Sprint Goal.
  • Product Increment:The Product Increment is the sum of all the Product Backlog items completed in a Sprint and the last Sprint. At the end of a Sprint, the Product Increment must be complete and meet the Scrum Team’s definition of Done, and in a usable condition regardless of whether the Product Owner accepts or rejects. The increment consists of fully tested code that has been built into an executable. Also, the user operation of the functionality is documented.
  • Sprint Burn-down Chart:The Sprint Burn-down Chart presents the visibility into the Sprint – provides progress by the team, work left to do in the Sprint and predicts when all the work can be done. In simple, at any given point in a Sprint, the Burn-down Chart shows the total work remaining in the Sprint Backlog. This is a useful technique to monitor the Sprint progress heading the Sprint Goal. The Product Owner is responsible to track the work done and total work remaining at the Sprint Review.
  • Release Burn-up Chart:The Release Burn-up Chart presents a way for the team to track progress towards a release or project’s completion. It is updated at the end of each Sprint to provide progress toward delivering the Sprint Goal. In simple, the Burn-up chart shows how much work has been Done or completed, and the total amount of work.


There are a variety of Agile and Scrum tools that enable organizations in making swift decisions and come with a range of awesome features. Here is a list of Agile or Scrum project management tools that we believe are very effective and quite useful for Agile or Scrum practitioners.

  • Jira: Atlassian Jira is one of the best software development tools widely used by Agile teams. The tool is designed for every Agile practitioner to plan, track and release software. Plus, the tool also presents visual data where you can use it to improve team performance based on real-time. The Jira software comes with the following features – flexible planning, value-driven prioritization, accurate estimations, scalable evolution, actionable results, transparent execution and much more.
  • Scrumwise: This online tool is built explicitly for Scrum. It lets you create teams and roles effortlessly with drag and drop option and come with time tracking feature to view the time log for individual persons and track backlog items. Here are some of the most impressive features by Scrumwise: lightning fast, realtime updating, auto saving, right-click menu, cut & paste, popup dialogues, comments, attachments, activity history, export, integration to Github and much more.
  • Asana: The best ever way for teams to track their work and get results is through Asana. This online tool enables individual teams to work collaboratively while availing plenty of features – create tasks, organize the tasks, add reminders, comment on tasks and track all the tasks from anywhere with ease. Here are the best features of this tool: quick updates, work on the go, free unlimited usage, add tasks & break down your work, add due dates, ‘followers, assignees, files, details and more.
  • Trello: This collaboration tool helps get a perspective over various projects that you manage and lets you manage them from anywhere. This tool comes with simple user interface and various powerful yet flexible features that let you get things done and stay organized. Check out the benefits Trello offers here – Customize workflow for different projects, upload files from Dropbox or Google Drive, add checklists, invite team members or co-workers to collaborate.
  • ScrumDo: ScrumDo is one of the easiest ways to manage work and get it distributed among the teams. Whether you are a seasoned Agile tool practitioner or looking to introduce one into your work environment, this tool sure lets you focus on the work and get things done faster. Here are some of the awesome features the ScrumDo comprises of – planning tool, flexible board, car labels, email notifications, pro-active training and support, and much more. Find the other Scrum tools below.
  • Axosoft
  • Yodiz
  • Planbox
  • TargetProcess
  • Acunote
  • VersionOne
  • ActiveCollab
  • Pivotal Labs
  • SprintGround
  • Telerik TeamPulse
  • Agile Agenda
  • Agile Fant
  • Agile Buddy
  • Agile Wrap
  • Banana Scrum
AthenaAgile FAQs
Read More

Transaction Management Fundamentals in Java – Spring & EJ

No comments

This image show a picture about Java-Spring- EJB

Transaction Management is one of the fundamental topics of how an application manages data and below is an overview of how transaction management is handled using Java as the programming language.

What is transaction management?

In simple terms, a transaction is a group of tasks that must be processed together. Transaction is indivisible and must be executed as a whole; otherwise the data integrity is violated. For example, a banking money transfer request involves deducting money from the source account, transfer the money into an interim escrow account, and finally transfer the money to the destination account. And all these “tasks” need to happen together and otherwise, the money is “lost” in transaction. And data integrity is violated.

Transaction Management in Java EE world:

Now, let’s talk about tasks of a transaction in Java EE world. In the Java EE world, we are referring to group of SQL statements or processing of JMS messages.
Both Spring and EJB have provided comprehensive support for executing transactions in Java. The usage of spring is simpler as compared to the usage of EJB, while EJB is definitely the official Java EE standard. Both technologies have their own strong points and the usage can be sometimes interchangeable.

JDBC is definitely the first database API option for any Java developer. The transaction management using JDBC can be illustrated in simple and and boiler-plate terms:

  • Set auto-commit to false

  • Execute the sequence of JDBC SQL statements

  • Manipulate the data using the result set

  • Do commit OR rollback back for any exceptions

Transaction management “ways” using various Java APIs:

  1. The transaction is clearly controlled in the JDBC based program and no wonder it is called “Programmatic Transaction Management”. As the business logic grows complex, the code grows complex and, managing transactions in the program becomes difficult.
  2. Spring’s transaction management was introduced to reserve the flexibility of manual control of the transactions as compared to automated part of programmatic transaction management. Spring’s TransactionTemplate or PlatformTransactionManager API can be used for this purpose.
  3. EJB provides Bean Managed Transaction (BMT) to handle complex transaction commit and rollbacks to avoid major pitfalls. UserTransaction API is invented for the similar purpose of PlatformTransactionManager API in Spring.

Comparison and Analysis of these “ways”:

Since most of the time the transaction management logic is straightforward, most of the users prefer declarative transaction management. With the declarative model, developers usually don’t have to write any code related to the transaction itself. All we need are some annotations and configurations. It is easy to use declarative transaction management in Spring by just put @Transactional and @EnableTransactionManagement into the code. Under the hood, Spring implements it via APO proxy. The caller of one transaction actually invokes an AOP proxy where the transaction is created on the way in and committed or rolled back on the way out. If everything goes smoothly, the transaction will be successfully committed. In the default configuration, Spring will mark a transaction for rollback in the case of Runtime Exceptions. And of course this can be overridden by doing configuration changes to make Spring rollback the transactions on any exceptions. Similar to the Spring’s declarative transaction management, EJB provides the better worry-free container-managed transaction (CMT) demarcation. With CMT, the EJBs automatically become transactional by default. The application server is in charge of commit and rollback. Also in EJB world, one can use TransactionAttribute annotation to specify the TransactionAttributeType.

Programmatic transaction management is better only when a small number of tasks are involved to complete a transaction. On the other hand, if your applications has lots of transaction operations (tasks) or involve multiple resources, considering declarative transaction management is worthwhile.

A distributed transaction is one that involves more than one transactional resource. For instance, a transaction having operations in two different data sources, or one transaction writes to database and also need to put a message to a messaging middleware. There are many solutions to resolve this situation where atomicity, reliability and safety are the main criteria.

Spring provides a ChainedTransactionManager (CTM) API using 1-phase commit. Basically, no-XA recourses can be used without changing much of the existing transaction managers. However, this is not infrastructure failure tolerant. And hence the 2-phase commit mechanism seems to be a better solution. Spring also provides full support of JTA by using JtaTransactionManager API (JTM). And, the application server handles the XA-resources. However, this way requires more configuration changes as compared to CTM. CTM is easy to implement with the help of JTA. Just like how CTM is configured using set transactionAttribute and JTA takes care of the XA-resources’ commit and roll back atomically.

Are you interested in keep your skills fresh? Just subscribe to our blog and follow us on and follow us on Facebook, LinkedIn and Twitter. You can always reach us at Contact Us

AthenaTransaction Management Fundamentals in Java – Spring & EJ
Read More Core 1.0 Automatic Testing

No comments

How xUnit eases Asp.Net Core development:

ASP.Net 5 is an open source software which helps in building modern web applications and can be run on Windows, Linux, and the Mac.

It also incorporates MV6 framework, which combines all the features of MVC and Web API into a single web programming framework.

.Net Core(formerly Net5):

.Net Core 1.0 (formally Asp.Net 5) helps even more on Automated Testing. Developers use xUnit for the testing, which provides an easy way to make testing automatic.

To make the automatic testing work, first, create a testing project like usual. Then new parameters such as Factor Theory will help to build the test procedures.

Do you have some skills feel free to contact us? Just subscribe to our blog and follow us on Facebook, LinkedIn, and Twitter. You can always reach us at Contact Us Core 1.0 Automatic Testing
Read More

Javascript Security

No comments

What exactly Javascript’s are?

Javascript is a cross-platform client-side script language. Javascript’s are widely used and convenient to be added for any client-side tasks.

However, if Javascript’s code inspection is not done properly then it could lead to serious security issues.

Hackers are looking for two types of Javascript security vulnerabilities on your website:

  • One is that if they can force your code to throw an uncaught Javascript exception and thus stop the pages which are running.
  • the other one is that if they can inject an external Javascript script file to your page and call your methods from their page.

Debugging Javascript’s issues for anyone is an experience, they know if an uncaught Javascript exception is thrown, the page will stop responding, not only the Javascript part but also most of the server calls, because most of the server calls are initiated by the Javascript code on the page.

Once the page stops responding, the hacker then would be able to do more things through the stopped page. One famous example of what pages under this scenario can do is that in the early days, iOS jailbreaking is done through using safari to load a page with intended broken Javascript code.

On the other hand, the nature of Javascript’s code makes debugging injection easily possible. If the javascript function on the page is independent, any hacker would be able to create their own Javascript file and just call the function they want because there is no encapsulation among the top level functions in Javascript.

If the function called by the hacker happened to do any CRUD on the database, the whole system is exposed to hackers’ attack.

How Javascript’s Can Be Solved?

To the two issues we talked above, we do have methods to solve or avoid them. To avoid the attack through Javascript’s exceptions, the solution is simple: catch or avoid every possible exception.

However, the simple solution might not be that easy to achieve. Javascript has following data types:

  • String, Date, Number, Boolean, Array, Object.
  • It also can have a null value and undefined status.

Be careful to validate the data according to those data types and value types should help a lot. Also, remember to use “===” when you need to do a strict comparison.

The solution to the other problem is more complicated and tricky. Each company in the industry has different solutions, but most of them share the same concept.

The basis of the concept is that every function would be hidden into a module as a property of the module object, which only can be called by a controller, while the controller would be started on document.ready, monitoring and responding to page events, but not possible to be called from outside.

Therefore, the only way to call the method is to have the correct event on the page, then the controller which is listening to the certain event is calling the method inside of the corresponding module. This won’t eliminate all the vulnerabilities but it will improve the security by a lot. Be sure to talk to the architect for the solutions your system should be using.

Years ago when I was working for a top tech company, the architect there had an excellent statement about the security of Javascript: “you should never let outside code control our site!

Are you interested in keeping your skills fresh? Just subscribe to our blog and follow us on and follow us on Facebook, LinkedIn, and Twitter. You can always reach us at Contact Us

AthenaJavascript Security
Read More