Saturday, July 1, 2017

Top 5 Tips for Improving Visualforce Pages

Top 5 Tips for Improving Visualforce Pages

1 – Reduce or eliminate view state
2 – Evaluate SOQL for Efficiency
3 – Reduce use of Action tags
4 – Take Advantage of StandardSetControllers when dealing with lists of data
5 – Incorporate Best Practices with all JavaScript, CSS and Images

for reference :
http://saramorgan.net/2014/07/14/top-5-tips-for-improving-visualforce-pages/


Salesforce Interview Questions Part 4


1.What is the difference between map and set in Salesforce collections.
2. Why Use Triggers? 
3. What are different types of Triggers?
4. Why Use Visual Force?
5. How do you handle errors?
6. What is a Component?
7.Tell me about a project with Salesforce in which you led the architecture that was not explicitly limited to the Salesforce infrastructure.
8.How long ago did you work on the above mentioned project?
9.Tell me about inner-department communications and your approach to communicating with non-technical team members.
10.What measures have you taken to make your software products more easily maintainable?
11.What development processes have you used in your recent projects? Were any tools used to support these processes? If so can you name some of the advantages and short comings of the tool/ tools?
12.What is an junction object?.
13.What is the difference between master detail relationship and look up relationship. ?
14.How will you handle 10001 SOQL problem in apex?
15. Define force.com and Salesforce.com?
16.Explain some examples for work-flow rules?
17.What is the use of future method?
18.What is abstract class?.
19.Explain object oriented concepts in sales force how will you implement this?
20.How will you import and export data between two systems eg: SFDC and SQL? 
21.What is appexchange?
22.Explain about cloud?.
23.Explain about validation rules in salesforce?.
24.What is the difference between roles and profiles?.
25.What is the difference between record level ,field level, object level security?
26.How will you use web services in sales force.com?.
27.Can you explain about limitation why this limitation placed in sales force.
28.what is view state in sales force?.It there is any limitation after winter11?
29.What is the difference between Role and Profile?
30.How you handle part of page refresh using VF?
31.How you can define a trigger is executed successfully?
32.Explain about yours current project?
33.How do you rate yours self in apex,VF?
34.How you can deal with project dead lines?
35.How you can use external WSDL files in Sales force?
36.What is difference between rest full and soap API?
37.What is yours Strong point Sales force?
38.How you can with SQL injections in Sales force?
39.Can you explain test methods in salesforce?
40.How did you display error messages in salesforce? On VF Pages?
41.Can you explain relationships in salesforce?
42.What are SOQL limitations?
43.How can bypass SOQL statement to fetch more 1000 records? 
44.What job did you like more in your carrier?
45.Can you explain a scenario integrating login method to third party application.
46.Can you explain about SFDC controllers?
47.Can you explain about sales process? 
48.What is a set in salesforce deployments?
49.How many ways you can invoke an work flow? 
50.What are governor limits can you explain about it?
51.East Sales Team can't access west sales team data how do you configure it?
52.What is Role,Profile,Security?
53.I have an contact .It phone number field is empty how you can get phone number from an related account?
54.How do you handle SOQL problem in Trigger?
55.How you can access JQuery in VF page?
56.What is change set in salesforce? 
57. What is transient variable in salesforce?
58.How you can measure trigger performance?



Developer Interview Question and Answer Part 2

Q). Variable and Method Access Modifiers
• Link classes, methods and variables have different levels depending on the keywords used in the declaration.
– private: This method/variable is accessible within the class it is defined.
– protected: This method/variable is also available to any inner classes or subclasses. It can only be used by instance methods and member variables.
– public: This method/variable can be used by any Apex in this application namespace.
– global: this method/variable is accessible by all Apex everywhere.
• All methods/variable with the webService keyword must be global.
– The default access modifier for methods and variables is private.

Q). Casting

Apex enables casting: A data type of one class can be assigned to a data type of another class, but only if one class is a child of other class.
• Casting converts an object from one data type to another.
• Casting between the generic sObject type and the specific
sObject type is also allowed.
For Example:
sObject s = new Account();
Account a = (Account)s;
Contact c = (Contact)s //this generates a run time error.

Q). Exceptions Statements

Similar to Java, Apex uses exception to note errors and other events that disrupt script execution with the following keywords:
• Throw: signals that an error has occurred and provides an exception object.
• Try: identifies the block of code where the exception can occur.
• Catch: identifies the block of code that can handle a particular exception. There may be multiple catch blocks for each try block.
• Finally: optionally identifies a block of code that is guaranteed to execute after a try block.
Exception Example:
public class OtherException extends BaseException {}
Try{
//Add code here
throw new OtherException(‘Something went wrong here…’);
} Catch (OtherException oex) {
//Caught a custom exception type here
} Catch (Exception ex){
//Caught all other exceptions here
}

Q). Exception Methods

All exceptions support built-in methods for returning the error message and exception type, below is the some of the Exception Methods,
AsyncException
CalloutException
DmlException
EmailException
JSONException
ListException
MathException
NoAccessException
NoDataFoundException
NullPointerException
QueryException
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_exception_methods.htm

Q). Loops

• Apex supports the following five types of procedural loops:
– do {statement} while (Boolean_condition);
– while (Boolean_condition) statement;
– for (initialization; Boolean_exit_condition; increment) statement;
– for (variable : array_or_set) statement;
– for (variable : [inline_soql_query]) statement;
• All loops allow for loop control structures:
– break; exits the entire loop
– continue; skips to the next iteration of the loop



Developer Interview Question and Answer Part 1? Apex Interview Questions.

Q). What is Apex in Salesforce?

• Apex is a procedural scripting language in discrete and executed by the Force.com platform.
• It runs natively on the Salesforce servers, making it more powerful and faster than non-server code, such as JavaScript/AJAX.
• It uses syntax that looks like Java
• Apex can written in triggers that act like database stored procedures.
• Apex allows developers to attach business logic to the record save process.
• It has built-in support for unit test creation and execution.

Apex provides built-in support for common Force.com platform idioms, including:
• Data manipulation language (DML) calls, such as INSERT, UPDATE, and DELETE, that include built-in DmlException handling

• Inline Salesforce Object Query Language (SOQL) and Salesforce Object Search Language (SOSL) queries that return lists of sObject records

- Looping that allows for bulk processing of multiple records at a time
- Locking syntax that prevents record update conflicts
- Custom public Force.com API calls that can be built from stored Apex methods
- Warnings and errors issued when a user tries to edit or delete a custom object or field that is referenced by Apex
Note: Apex is included in Unlimited Edition, Developer Edition, Enterprise Edition, and Database.com

Apex vs. Java: Commonalities
• Both have classes , inheritance, polymorphism, and other common OOP features.
• Both have the same name variable, expression, and looping syntax.
• Both have the same block and conditional statement syntax.
• Both use the same object, array, and comment notation.
• Both are compiled, strongly-typed, and transactional.

Apex vs. Java: Differences
• Apex runs in a multi-tenant environment and is very controlled in its invocation and governor limits.
• To avoid confusion with case-insensitive SOQL queries, Apex is also case-insensitive.
• Apex is on-demand and is compiled and executed in cloud.
• Apex is not a general purpose programming language, but is instead a proprietary language used for specific business logic functions.
• Apex requires unit testing for development into a production environment.
Force.com Apex Code Developer’s Guide

Q). What is Visualforce in Salesforce?

Visualforce is the component-based user interface framework for the Force.com platform. The framework includes a tag-based markup language, similar to HTML. Each Visualforce tag corresponds to a coarse or fine-grained user interface component, such as a section of a page, or a field. Visualforce boasts about 100 built-in components, and a mechanism whereby developers can create their own components.
• Visualforce pages can react differently to different client browsers such as those on a mobile or touch screen device.
• Everything runs on the server, so no additional client-side callbacks are needed to render a complete view.
• Optional server-side call outs can be made to any Web service.

Visualforce is a Web-based framework that lets you quickly develop sophisticated, custom UIs for Force.com desktop and mobile apps. Using native Visualforce markup and standard Web development technologies such as HTML5, CSS, JavaScript, and jQuery, you can rapidly build rich UIs for any app.
http://wiki.developerforce.com/page/User_Interface
Visualforce Developer’s Guide

Q). Apex code Execution Governors and Limits

Apex-Governer-limits
Apex-Governer-limits
This link should have more information about Apex code Execution Governors and Limits,
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_gov_limits.htm

Q). Apex Data Types

Apex primitive data types include
- String
- Blob (for storing binary data)
- Boolean
- Date, DateTime and Time
- Integer, Long, Decimal, Double
- ID (Force.com database record identifier)
– Example:
• DateTime dt = System.now() + 1;
• Boolean isClosed = true;
• String sCapsFirstName = ‘Andrew’.toUpperCase();
Apex sObject Types
- Sobject (object representing a Force.com standard or custom object)
– Example:
• Account acct = new Account(); //Sobject example
Apex has the following types of collections
- Lists
- Maps
- Sets
– Example:
• List myList = new List();
• myList.add(12); //Add the number 12 to the list
• myList.get(0); //Access to first integer stored in the List
Enums
• Enum (or enumerated list) is an abstract that stores one value of a finite set of specified identifiers.
• To define an Enum, use enum keyword in the variable declaration and then define the list of values.
• By creating this Enum, you have created a new data type called Season that can be used as any other data type.
- Example:
• public enum Season {WINTER, SPRING, SUMMER, FALL}

Q). Variables

Local variables are declared with Java-style syntax.
For example:
Integer i = 0;
String str;
Account a;
Account[] accts;
Set s;
Map<ID, Account> m;

Q). Static Methods and Variables

• Class methods and variables can be declared as static. Without this keyword, the default is to create instance methods and variables.
• Static methods are accessed through the class itself, not through an object of the class:

Example:
public class blogReaders {
public static boolean firstScript = false;
}
• Static methods are generally utility methods that do not depend on an instance. System methods are static.
• Use static variables to store data that is shared with in the class.
– All instances of the same class share a single copy of static variables.
– This can be a technique used for setting flags to prevent recursive

Q). What is the use of static variable?

When you declare a method or variable as static, it’s initialized only once when a class is loaded. Static variables aren’t transmitted as part of the view state for a Visualforce page.
Static variables are only static within the scope of the request. They are not static across the server, or across the entire organization.

Q). Final variables

• The final keyword can only used with variables.
– Classes and methods are final by default.
• Final variables can only be assigned a value once.
– This can either be at assigned a value once.
• When defining constants, both static and final keywords should be used.
– Example: public static final Integer =47;

Q). Difference between with sharing and without sharing in salesforce

By default, all Apex executes under the System user, ignoring all CRUD, field-level, and row-level security (that is always executes using the full permissions of the current user).
without sharing:
Enforcing the User’s Permissions, Sharing rules and field-level security should apply to the current user.
For example:
public with sharing class sharingClass {
// Code here
}
without sharing:
Not enforced the User’s Permissions, Sharing rules and field-level security.
For example:
public without sharing class noSharing {
// Code here
}
Enforcing the current user’s sharing rules can impact: (with sharing)
SOQL and SOSL queries – A query may return fewer rows than it would operating in system context.
DML operations – An operation may fail because the current user doesn’t have the correct permissions. For example, if the user specifies a foreign key value that exists in the organization, but which the current user does not have access to.
For More info Click Here:

Q). Class Constructors

• A constructor is a special method used to create(or instantiate) an object out of a class definition.
– Constructors never have explicit return types.
– Constructors have the same name as the class.
• Classes have default, no-argument, public constructor if no explicit constructors is defined.
– If you create a constructor that takes arguments and still want a noargument constructor, you must explicitly define one.
• Constructors can be overloaded, meaning you can have multiple constructors with different parameters, unique argument lists, or signatures.
• Constructors are called before all other methods in the class.
For Example:
public class TestObject2 {
private static final Integer DEFAULT_SIZE = 10;
Integer size;
//Constructor with no arguments
public TestObject2() {
this(DEFAULT_SIZE); // Using this(…) calls the one argument constructor
}
// Constructor with one argument
public TestObject2(Integer ObjectSize) {
size = ObjectSize;
}
}
New objects of this type can be instantiated with the following code:
TestObject2 myObject1 = new TestObject2(42);
TestObject2 myObject2 = new TestObject2();

Q). Class Access Modifiers

• Classes have different access levels depending on the keywords used in the class definition.
– global: this class is accessible by all Apex everywhere.
• All methods/variables with the webService keyword must be global.
• All methods/variables dealing with email services must be global.
• All methods/variables/inner classes that are global must be within an global class to be accessible.
– public: this class is visible across you application or name space.
– private: this class is an inner class and is only accessible to the outer class, or is a test class.
• Top-Level (or outer) classes must have one of these keywords.
– There is no default access level for top-level classes.
– The default access level for inner classes is private.
– protected: this means that the method or variable is visible to any inner classes in the defining Apex class. You can only use this access modifier for instance methods and member variables.
To use the private, protected, public, or global access modifiers, use the following syntax:
[(none)|private|protected|public|global] declaration

Apex Code Best Practices


Apex Code is the Force.com programming language used to write custom, robust business logic. As with any programming language, there are key coding principles and best practices that will help you write efficient, scalable code. This article illustrates many of the key best practices for writing and designing Apex Code solutions on the Force.com platform.

Best Practice

1: Bulkify your Code
2: Avoid SOQL Queries or DML statements inside FOR Loops
3: Bulkify your Helper Methods
4: Using Collections, Streamlining Queries, and Efficient For Loops
5: Streamlining Multiple Triggers on the Same Object
6: Querying Large Data Sets
7: Use of the Limits Apex Methods to Avoid Hitting Governor Limits
8: Use @future Appropriately
9: Writing Test Methods to Verify Large Datasets
10: Avoid Hardcoding IDs

for reference please go through this link.



What is Version Control?

  • Version control is a repository that is the central store of files with a system that helps to manage and track changes made to these files.
  • Useful for tracking code changes and allows you to rollback changes if necessary
  • Allows for conflict resolution if files on your local system do not match what is stored on the server.
  • Supports Branching, which lets you branch your code and is necessary when doing parallel development. You can make changes to branches independently and then merge branches back into the main branch when complete. Ideally, you would have the following branches:
    • Developer Branch – Used for each developers line of development. Allows them to save incomplete work without interfering with others.
    • Project Branch – considered the main development line. Should contain working builds
    • Release Branch – Merged here when all changes have been compiled and tested in Project branch.
    • Note that not all customizations through the Setup are available through the metadata API and therefore these will need to be reproduced for each org.
    • When you checkout a project for the first time, you need to apply the Force.com nature at the project level. This is done by selecting Add Force.com Nature at the project level.
    • You can click Project properties from the Force.com context menu to connect the project to your Salesforce organization.
    • Because development is being done by multiple developers, most companies do nightly builds to verify the validity of check-ins (see image below)

Visualforce Interview Questions and Answers

Visualforce Interview Questions and Answers

Q). What are expressions used in pages  to bind in controllers? 
      Using methods we can bind.
     Getter:Will return value from controller to vf page
     Setter:Will pass value from vf page to controller
     Action:Will redirect to another page.

Q). What is the purpose of controllers?
 Controllers provide the data and actions that are available to a Visualforce page.

Q). Which objects have associated standard controllers?
 All standard and custom objects that can be accessed via the API have associated controllers

Q). What is included with each standard controller?
  Data: the fields for the associated object record that are API accessible, including the related records (5 up/1 down).  Actions: save, delete, view, edit, cancel.

Q). When do you need to go beyond a standard controller and code custom Apex?
 If you need data beyond the limits of what is available in the standard controller or actions that go beyond the provided standard actions.

Q).Compare and contrast custom controllers and controller extensions.  How are they the same?  How are they different?

Both allow for custom code to be used, allowing for custom data sets and custom actions.  Extensions leverage the existing data and actions within a standard or custom controller.  Custom controllers must contain all data and actions that need to be executed by the page.  Extensions that extend standard controller allow for the pages which use those extensions to be used in custom buttons, standard button overrides, and over declarative features.

Q), What identifies a controller as being an extension?
The controller must declare a constructor which takes another controller explicitly.  For example: public myControllerExtension(ApexPages.StandardController stdController) {this.acct = (Account)stdController.getRecord();  }

Q). Why are properties helpful in controllers
Properties can automatically create standard getters and setters while still allowing for their customizations.  They save you from both writing the tedious code and reading the clutter when reviewing code.

Q).In what order do methods fire within a controller?
The only rule is that setters fire before action methods.  Aside from that, there is no guaranteed order.

Q).What are some Apex classes that are commonly used within controllers?
StandardController, SelectOption, PageReference, Message, etc.

Q).   How are wizard controllers different from other controllers?
The two main issues is that they must handle multiple pages and they must maintain the state across those pages.

Q). What are the effects of using the transient key word?
The transient key word prevents the data from being saved into the view state.  This should be used for very temporary variables.

Q). When is a component controller required for custom components?
A component controller is required when business logic is required to decide how to render the component.

Q), What kind of content can be included in a Visualforce page?
Any content that can be rendered in a browser (HTML, JavaScript, etc.).

Q). What do {!expressions} refer to when used in Visualforce components?
Expressions refer to either data or actions that are made available to the page from the controller

Q).What are the ways that Visualpages can be incorporated into the rest of your user interface?
Basically, via links, buttons, tabs, and inline frames.

Q), Is it always necessary to know Apex to create Visualforce pages?  When does it become necessary?
No, it is not always necessary.  You can use standard controllers and VF component tags to accomplish quite a bit.  Apex becomes necessary when you need either a custom set of data or custom actions to be available from the page.


Q).  What are attributes?  What is the syntax for including them?
Attributes are modifiers to the main tag that belong after the tag name in the start tag.  The syntax is attributeName=“attributeValue”

Q). What are three types of bindings used in Visualforce?  What does each refer to?
Data bindings refer to the data set in the controller.  
Action bindings refer to action methods in the controller. 
Component bindings refer to other Visualforce components

Q).What is the main difference between using dataTable vs. pageBlockTable tags?
 PageBlock: For default salesforce standard format.
dataTable:To design customformats

Q).Which tag is used with both radio buttons and picklists to create the selectable values?
 <Apex:selectoption> tag

Q).How many controllers can a page have?  Where is the controller for a page assigned?
One main controller (of course, it could have extensions or custom components could have controllers, etc.).  The controller is assigned in the <apex:page> tag.

Q).There are a series of layout components that all help recreate the traditional Salesforce page layout style very easily.  What name do they share?
   pageBlock.

Q), Which tags should be used to automatically bring in the Salesforce label and default widget for a field?
Pageblock

Q). What are static resources?
Static resources are a new type of storage in Salesforce specifically designed for use in Visualforce pages.  They are ways to store images, flash files, stylesheets, and other web resources on the Salesforce servers that can be cached for better page performance. 

Q). What are some examples of JavaScript Events?
 Onmouseover, onclieck etc.

Q). What is AJAX typically used for in Visualforce
AJAX is primarily used for partial page updates in Visualforce.  In s-controls, the AJAX toolkit was the soap (XML over HTTP) client that gave you access to the force.com Web Services API.

Q). What is the purpose of <script> tags?
Script tags allow you to create JavaScript (or other types) functions that can be used within your pages

Q), What are the different AJAX action tags?  What does each do?
·         actionStatus: used to display start and stop statuses of AJAX requests.
·         actionSupport: used to call a second component when an event happens to the first component.
·         actionPoller: similar to actionSupport, but the event is based on a timer instead of a user action.
·         actionFunction: provides support for invoking a controller action from JavaScript code using an AJAX request by defining a new JavaScript function.
·         actionRegion: used to demarcate which parts of the page the server should reprocess.

Q), How can you create partial page refreshes? 
 Basically, you need to define the section of the page that is going to refresh (typically with a panel of sorts), and then define the event that will cause the refresh.  The method changes depending on if the area being refreshed is the same as the one handling the event.  It also depends on if you are just processing something on the server, or if you need the UI to change.

Q). Which tag is used with both radio buttons and picklists to create the selectable values?<apex:selectOption>

Q). What is the purpose of creating attributes on components? 
 By allowing the component to take parameters via an attribute, you can make the component more flexible and reusable

Q). How can you access visualforce components values into a JavaScript?
Using Component global variable, we can access visualforce components in javascript. Let us suppose, we want to use id of an apex field with id=”afield”.
So, we can use the {!$Component.afield} syntax to use properties of the field in javascript.
Let us suppose, we want to store the field’s value in java script, then we can use like below:
<script>
Var a =’ document.getElementById('{!$component.afield}').value’;
</script>

Q), What are the Gov Limits in Salesforce.com?
Because Apex runs in a multitenant environment, the Apex runtime engine strictly enforces a     number of limits to ensure that runaway scripts do not monopolize shared resources. These limits, or governors, track and enforce the statistics outlined in the following table. If a script ever exceeds a limit, the associated governor issues a runtime exception that cannot be handled.
Governor limits can be extended from release to release.

Trigger
Class
Test
Total number of SOQL’s
20
100
100
    Total number of                SOSL’s
0
20
20
Total number of records Retrieved by single SOQL Query
1000
10000
500
Total number of records Retrieved by single SOSL Query
0
200
200
Total Number Of  Call out Methods
10
10
10
Total number of send email methods allowed
10
10
10
Total Heap Size
300000 Bytes
3MB
1.5MB






Q).What are the Global Key words?
We have global keywords like component,User,url,current page etc., to access various values from      components on page, from user object or from url or from current page fields. To access value from each source, we have different global keywords. One such keyword is explained in above question(!$component)
Various global keywords are:
i. URL
ii.USER
iii. PROFILE
iv. Resource
v. Component
vi.Current page
vii.Page reference etc.

What is Waterfall Model in SDLC?


The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases.

Waterfall model is the earliest SDLC approach that was used for software development .

The waterfall Model illustrates the software development process in a linear sequential flow; hence it is also referred to as a linear-sequential life cycle model. This means that any phase in the development process begins only if the previous phase is complete. In waterfall model phases do not overlap.

Waterfall Model design

Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.

SDLC Waterfall Model
The sequential phases in Waterfall model are:

  • Requirement Gathering and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
  • System Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
  • Implementation: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
  • Integration and Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
  • Deployment of system: Once the functional and non functional testing is done, the product is deployed in the customer environment or released into the market.
  • Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like a waterfall) through the phases. The next phase is started only after the defined set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model phases do not overlap.

Waterfall Model Application

Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are:
  • Requirements are very well documented, clear and fixed.
  • Product definition is stable.
  • Technology is understood and is not dynamic.
  • There are no ambiguous requirements.
  • Ample resources with required expertise are available to support the product.
  • The project is short.

Waterfall Model Pros & Cons

Pros
Cons
Simple and easy to understand and use
No working software is produced until late during the life cycle.
Easy to manage due to the rigidity of the model . each phase has specific deliverables and a review process.
High amounts of risk and uncertainty.
Phases are processed and completed one at a time.
Not a good model for complex and object-oriented projects.
Works well for smaller projects where requirements are very well understood.
Works well for smaller projects where requirements are very well understood.
Clearly defined stages.
Not suitable for the projects where requirements are at a moderate to high risk of changing. So risk and uncertainty is high with this process model.
Well understood milestones.
It is difficult to measure progress within stages.
Easy to arrange tasks.
It is difficult to measure progress within stages.
Process and results are well documented.
Cannot accommodate changing requirements.

No working software is produced until late in the life cycle.

Adjusting scope during the life cycle can end a project.


What is Agile Methodology and What is Agile SDLC Model.

Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product.
Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Every iteration involves cross functional teams working simultaneously on various areas like planning, requirements analysis, design, coding, unit testing, and acceptance testing.
What is Agile?
Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In agile the tasks are divided to time boxes (small time frames) to deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.

SDLC Agile Model

Following are the Agile Manifesto principles


  • Individuals and interactions - in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.

  • Working software - Demo working software is considered the best means of communication with the customer to understand their requirement, instead of just depending on documentation.
  • Customer collaboration - As the requirements cannot be gathered completely in the beginning of the project due to various factors, continuous customer interaction is very important to get proper product requirements.
  • Responding to change - agile development is focused on quick responses to change and continuous development.

Agile Vs Traditional SDLC Models

Agile is based on the adaptive software development methods where as the traditional SDLC models like waterfall model is based on predictive approach.
Predictive teams in the traditional SDLC models usually work with detailed planning and have a complete forecast of the exact tasks and features to be delivered in the next few months or during the product life cycle. Predictive methods entirely depend on the requirement analysis and planning done in the beginning of cycle. Any changes to be incorporated go through a strict change control management and prioritization.
Agile uses adaptive approach where there is no detailed planning and there is clarity on future tasks only in respect of what features need to be developed. There is feature driven development and the team adapts to the changing product requirements dynamically. The product is tested very frequently, through the release iterations, minimizing the risk of any major failures in future.
Customer interaction is the backbone of Agile methodology, and open communication with minimum documentation are the typical features of Agile development environment. The agile teams work in close collaboration with each other and are most often located in the same geographical location.

Agile Model Pros and Cons


Pros
Cons
Is a very realistic approach to software development
Not suitable for handling complex dependencies.
Promotes teamwork and cross training.
More risk of sustainability, maintainability and extensibility.
Functionality can be developed rapidly and demonstrated.
An overall plan, an agile leader and agile PM practice is a must without which it will not work.
Resource requirements are minimum.
An overall plan, an agile leader and agile PM practice is a must without which it will not work.
Suitable for fixed or changing requirements
Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
Good model for environments that change steadily.
Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.
Minimal rules, documentation easily employed.
There is very high individual dependency, since there is minimum documentation generated.
Enables concurrent development and delivery within an overall planned context.
There is very high individual dependency, since there is minimum documentation generated.
Little or no planning required
Transfer of technology to new team members may be quite challenging due to lack of documentation.
Gives flexibility to developers