Dev Process

"Process "

In addition to the technical related stuff, it is very important to focus on non-technical things such as Development Process, which could differentiate you from others, so thissection focuses on Development Process and some popular methodologies such as WaterFall, Agile , and RUP.

1 )   What is Software development life cycle ?


  • Software development life cycle
    Sample Img 1
The Systems development life cycle (SDLC), or Software development process is a process of
 creating the information systems, and the models and methodologies that people use
 to develop these systems.

The System Development Life Cycle framework provides a sequence of activities for system
 designers and developers to follow. It consists of a set of steps or phases in which
 each phase of the SDLC uses the results of the previous one. Here shows the Typical
 Software Development Life Cycle.

Systems analysis, requirements definition: Defines project goals into defined functions and
 operation of the intended application. Analyzes end-user information needs.

Systems design: Describes desired features and operations in detail, including screen
 layouts, business rules, process diagrams, pseudocode and other documentation.

Development: The real code is written here.
 Integration and testing: Brings all the pieces together into a special testing environment
 , then checks for errors, bugs and interoperability.

Acceptance, installation, deployment: The final stage of initial development, where the software
  is put into production and runs actual business.

Maintenance: What happens during the rest of the software's life: changes, correction,
 additions, moves to a different computing platform and more. This is often
 the longest of the stages.

To manage this level of complexity, a number of SDLC models or methodologies have been created,
 such as "waterfall"; "spiral"; "Agile software development"; "incremental";

2 )   Waterfall methodology ?


  • Waterfall methodology?
    Sample Img 2
The waterfall model is a sequential design process, often used in software development
processes, in which progress is seen as flowing steadily downwards (like a waterfall)
through the phases of Conception, Initiation, Analysis, Design, Construction,
Testing, Production/Implementation and Maintenance.

3 )   Agile software developmemt?


Agile software development is a group of software development methods based on
iterative and incremental development, where requirements and solutions evolve
 through collaboration between self-organizing, cross-functional teams. It promotes
 adaptive planning, evolutionary development and delivery, a time-boxed iterative
 approach, and encourages rapid and flexible response to change.
i) Agile methods break tasks into small increments with minimal planning and do not directly
involve long-term planning. Iterations are short time frames (timeboxes) that typically
last from one to four weeks.
ii) Team composition in an agile project is usually cross-functional and self-organizing.
iii) Agile methods emphasize face-to-face communication over written documents when the team is
all in the same location.
iv) Team size is typically small (5-9 people) to simplify team communication and
team collaboration.
v) Agile development emphasizes working software as the primary measure of progress.
vi) Most agile implementations use a routine and formal daily face-to-face communication
among team members.

4 )   Iterative Model ?


  • Iterative Model
    Sample Img 4
Iterative and Incremental development is at the heart of a cyclic software development
process developed in response to the weaknesses of the waterfall model. It starts
with an initial planning and ends with deployment with the cyclic interactions
in between.
Iterative and incremental development are essential parts of the Rational
Unified Process, Extreme Programming and generally the various agile software
development frameworks.

5 )   Rational Unified Process ?


  • Rational Unified Process:
    Sample Img 5
Here are some of the important features of RUP.
  • RUP is a iterative development process
  • RUP has four phases:
          i) Inception
          ii) Elaboration
          iii) Construction
          iv) Transition
Each phase is concluded with a well-defined milestone - a point in time at
which a  certain critical decisions must be made, and therefore key goals must
have been achived.
Each Iteration should go thru all of above phases, please see above diagram for more details.

6 )   Proof Of Concept

A proof of concept or (POC) or a proof of principle is a realization of a certain
 method or idea(s) to demonstrate its feasibility, or a demonstration in principle,
 whose purpose is to verify that some concept or theory has the potential of being used.
 A proof-of-concept is usually small and may or may not be complete.

7 )   What are Peer and Lead code reviews ?

Code Review is nothing but reviewing your code by some other person that could be your PEER (another developer) or Lead  in complain with the Coding Standards and Best practices, and document his findings which would be taken care you at later point.
Code Reviews play very important role in software development , as these help  us to find the coding errors sooner than later.
Most of the Enterprises have their own coding Standards to follow and make sure the code is in complains to these with these reviews.
Some of the Best Practices for Java development is as follows .
  • Should not catch Runtime Exceptions like “NullPointers”
  • Use StingBuffer instead of concatenate the String like “xyz+abc”
  • Should not have System.out statements.
  • Should not have exception.PrintStackTrace ().
  • Use ArrayList instead Vector.

8 )   Design Reviews ?

"Design Review" is nothing but reviewing the Design (High Level as well as Low Level )  and find of are there any Gaps or uncleared things exist in it before staring the Developments .

9 )   Traceability Matrix


  • Traceability Matrix ?
    Sample Img 9
A traceability matrix is a document, usually in the form of a table, that correlates any
two baselined documents that require a many to many relationship to determine the
completeness of the relationship. It is often used with high-level requirements
(these often consist of marketing requirements) and detailed requirements of the
software product to the matching parts of high-level design, detailed design, test plan,
and test cases.