Sunday, August 25, 2019

Agile Software Development and Methods

 Introduction:

In English, "agile" means " the ability to move quickly and easily".

  • Agile is a way to manage projects.
  • Agile breaks down larger projects into small, manageable chunks called iterations.at the end of each iteration something of value is produced.

Agile : What and How to work


Agile Software Development:  is a set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.

  • It refers to the software process models that are people focused , communication oriented , flexible, speedy, rapid and iterative development of the product in small release.
  • Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project.
  • Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks.
  • Agile methods also emphasize working software as the primary measure of progress.
Characteristics of Agile Software Development


  • Light Weighted methodology
  • Small to medium sized teams
  • vague and/or changing requirements
  • vague and/or changing techniques
  • Simple design
  • Minimal system into production

Agile Methods:


  • methods to overcome perceived and actual weakness in conventional software engineering.
  • to accommodate changes in environment, requirement and use cases.
  • is an approach to project management in software development.
Agile Process:
  • Focus on Team Structures, Team Communication, Rapid Delivery of software and de-emphasis on importance of intermediate product.

Agile Manifesto

All agile methods adhere to a set of rules described as Agile Manifesto which are well-defined guidelines for the agile methods.


The above-defined agile manifesto can be elaborated as:
  1. Individuals and interactions: In agile development, self organization and motivation are important, as are interactions like co-location and paring programming.
  2. Working Software:  Working software is more useful and important than just presenting documents to clients in meetings.
  3. Customer collaboration: Requirements cannot be fully identified at the beginning of the software development cycle, therefore, continuous customer or stakeholder involvement is very important.
  4. Responding to change: Agile methods are focused on quick responses to change and continuous development.

Some popular and commonly-used agile methods and frameworks  include:
  • Pair Programming
  • Scrum
  • Adaptive Software Development (ASD)
  • Dynamic Systems Development Method (DSDM)
  • Crystal
  • Feature Driven Development (FDD)
  • Agile Modelling (AM)
  • Extreme Programming (XP)

PAIR PROGRAMMING


Pair programming is an agile practice. It is a practice of software development wherein two programmers work in pairs to develop the software while siting at the same workstations. One programmer thinks and other codes. And both swapping their roles.
The keyboard owner is called the driver and responsible for coding where the other partner is called navigator keeps track of larger issues.
  • In pair programming, the driver focuses on the code at hand, the syntax, semantics and algorithm.
  • The navigator focuses less on that and more on the level of abstraction and quality of overall design.
Advantage :

  • Collective code ownership
  • Better Code
  • Increased discipline
  • Resilient Flow (flexible)
  • Improved morale (confidence)
  • Mentoring
  • Team Cohesion (unity)

Disadvantage: 


  • Difficult skill sets may kill the project
  • Disagreement may occur
  • Scheduling conflict between partners
  • Absence of Partners
  • Rushing

SCRUM


Scrum is an agile development method which concentrates on how to manage tasks within a team-based project. it is a framework that helps teams work together. 

Process flow of Scrum :

  • Each iteration of a scrum is known as as Sprint.
  • Sprints are periods of time when software development is actually done.
  • A sprint usually lasts from one week to one month to complete an item from the product backlog. 
  • Each sprint ends with a sprint review.
  • Team delivers product functionality at the end of he sprint.
  • Sprint continue until the project deadline or the project budget is spent.
Scrum Team

The scrum team size is 6 +/- 3  i.e. from 3 to 9 members which does not include the Scrum master and the Product Owner.  

There are three members in a basic Scrum Team:

  1. Scrum Master
    • is the person who is responsible for facilitating the development team and the Product owner to work on the day to day development activities.
  2. Product owner:
    •  is the customer or stakeholder who is responsible for bringing the gap between the development  team and the stakeholder.
  3. The Development Team
    • is comprised of developers or experts who are responsible to complete the sprint or cycle.
Scrum Events 



Scrum Process Framework can be viewed by means of a sequence of events. These are time-boxed events. This means that in a project, every Scrum event has a predefined maximum duration.

Scrum Framework

The scrum framework has three components: RolesEvents and Artifacts.

Roles

Product Owner

  • Defines features and release plans
  • Prioritize features every iteration as needed
  • Accept or reject work results

Scrum Master

  • Responsible for enacting Scrum values and practices
  • Ensure that the team is fully functional and productive
  • Enable close cooperation across all roles and functions

Team

  • Cross-functional:Programmers, testers, user experience designers, etc.
  • Members should be full-time
  • Teams are self-organizing
  • Sprint Events

    Daily scrum meeting

    • Daily review meeting for 10-15 mins
    • Status review and not for problem solving
    • All sprint team members participate
    • More on daily scrum meeting

    Sprint review

    • Demo of new features to customer/product owner
    • Team presents work accomplished during the sprint
    • All major stakeholders participate

    Sprint retrospective

    • Periodic post-mortem to review what’s working and what’s not
    • Done after every sprint
    • All major stakeholders participate

    Artifacts

    Product backlog

    • A list of all desired work on the project
    • Ideally expressed such that each item has value to the users or customers of the product
    • Prioritized by the product owner
    • Reprioritized at the start of each sprint

    Sprint Backlog

    • A list of tasks identified by the Scrum team to be completed during the sprint.
    • The team selects the items and size of the sprint backlog

     Version Control System
Version Control System (VCS) is a kind of database or software tool that helps a software team manage to source code over time. it keeps track of every modification to the code in a special kind of database. 

Features of VCS:
  • it maintains separate track record for each team member of the project.
  • easy to compare and merge codes of different branches.
  • easy to trace changes in the code to find the version that introduced a bug.
  • simple to compare versions to resolve conflicts in the code during merging.
  • reverts changes made to the code to any state from its history.
Benefits of using VCS:
  • Collaboration.
  • Proper storing of versions
  • Restoring previous versions
  • Understanding events
  • Easy backup


Types of Version Control System:
  1. Centralized Version Control System 
  2. Distributed Version Control System

GIT- A DISTRIBUTED VERSION CONTROL SYSTEM


GIT (Global Information Tracker) is the most popular DVCS and founded by Linus Torvald in 2005. Nowadays, it is used by many popular open source sotwares like Android, Eclipse developer teams and many commercial projects. Basically, it was written in the programming language C but later on GIT has been reimplemented in other languages - Java, Ruby and Python.

Advantage :
  • Performance : GIT has good performance among other VCS.
  • Security: It secures our codes well with cryptographic method SHA-1
  • Branching Model: GIT has multiple local branches which are independent of each other. it use context switching ( switching back and forth to new commit code)
  • Staging Area: GIT has an intermediate stage called"index" or "staging area" where commits can be formatted and modified before being completed.
  • Distributed: means the repository or the complete code base is mirrored onto the developer's system so that he only can work on it.
  • Open Source: GIT is an open source, available for the whole world developers.


Disadvantage :


  • GIT is less preferred for handling extremely large files.
  • GIT does not support 'commits' across multiple branches or tags.
GIT can be downloaded from https://gitforwindows.org/ 




BUSINESS USE-CASE DIAGRAM

INTRODUCTION: Business Use-Case Diagram describes how the business is being used by its customers. it is an important part of UML (Unified Modelling Language) that provides for drawing use-case diagrams. Use-cases are used during the analysis phase of a project to identify and partition system functionality. They separate the system into Actors and use-cases. 


Actor:- an actor is a user or outside system which interacts with the system being designed in order to obtain some result from that interaction. Ex- Person, Machine, Information System
USE-CASE :-  are structured outline or template for the description of user requirements modelled in a structured language like English. Use-case means how a business system interacts with its environment.

Categories of Business Use-cases: 

Based on the activities in a business, there are 03 categories of business use-cases:-
  1. Business Process: includes activities which are commercially important.
  2. Business Work:  includes activities which are not commercially important but to be performed anyhow to run the business like security, administration, cleaning etc.
  3. Management Work:  defines the type of work that affects business use-cases management.
Characteristics of a Good Business Use-Case Model: 

  • it must perform all the activities within the business.
  • it must conform (equal) to the business for which these are designed.
  • every activity must be related to at least one use-case.
  • it should have balance between the number of use-cases and the size of the use-cases:-
    • Less use-cases make the model easier to understand whereas more use-cases may make the model difficult to understand.
    • Large use-case may be complex and difficult to understand.
  • each use-case must be unique.
  • it should be give a good comprehensive picture of the organization.

What is a USE-CASE DIAGRAM actually?

UCD:- show what a system does from the view of an external observer. The main focus is on what a system does rather than how it does it. It is a formal way of representing how a business system interacts with its environment by illustrating the activities that are performed by the users of the system.

Elements/ component in Use-Case Diagrams:

There are 03 basic elements in use-case diagrams are:
  • Actor: An actor represents a role that an outsider takes on while interacting with the business system.
  • Association/Relationship: it is the relationship between an actor and a business use-case association.  it is shown by "straight bold line".
  • Business Use Case: It describes the interaction between an actor and a business system.  it is shown  by "oval shape".
  • Subject: it describes a business system that has one or more business use-cases attached to it. it is shown by "rectangle shape".
  • Other symbols that are usually used with use-ase diagrams are:
    • Connector- Interaction  (shown by straight line)
    • Generalization- further parts of connector (Shown by Straight arrow)
    • Steretype- relationship ( Shown by dashed straight arrow)
    • <<include>> it is an implicit function to use any use-case/capability.
    • <<extend>> it is an explicit function and is optional . This signifies that we may or may not use a capability.
Note :  
  • Actors appear outside the rectangle.
  • Rectangle describes the use-cases functionality.
  • Relationship/Association is a solid line between actor and use-cases.

An example of a use-case diagram


In the above use case diagram, there are two actors named student and a teacher. There are a total of five use cases that represent the specific functionality of a student management system. Each actor interacts with a particular use case. A student actor can check attendance, timetable as well as test marks on the application or a system. This actor can perform only these interactions with the system even though other use cases are remaining in the system.
It is not necessary that each actor should interact with all the use cases, but it can happen.
The second actor named teacher can interact with all the functionalities or use cases of the system. This actor can also update the attendance of a student and marks of the student. These interactions of both student and a teacher actor together sums up the entire student management application.




Use-case diagram as case study

A use case diagram is a representation of a user's interaction with the system where relationship is shown between the user and the different use cases in which the user is involved.

How to build a Use Case Diagram?

Following are the steps to draw use case diagram.
•Identify the Actors of the system.
•Identify all roles played by the users relevant to the system.
•Identify the users/task required to achieve the goals.
•Create use cases for every goal.
•Structure the use cases.
•Prioritize/review/estimate/validate the users.











There are many online website for use case design 

  • Creately:Online diagramming and collaboration. 
  • Several modeling languages supported
  • Diagram.ly :Simpeand easy
  • Draw.io
  • Gliffy| Online Diagram and Flowchart Software
  • Lucidchart
  • Create UML diagrams online
  • MxGraph(JavaScript based)

*************end of chapter********






No comments:

Post a Comment

Note: Only a member of this blog may post a comment.