Wednesday, August 19, 2015

Software Development Methodologies


Hi everyone, you all know it is important to "Follow a plan" when doing something. So as well when it is comes to software development it is really important to plan each and every step.

A software development methodology is a framework that is used to plan and control the process of developing software systems. There are several different approaches to software development in the industry: with their own recognized strengths and weaknesses. One system development methodology is not necessarily suitable for use by all projects; Each of the available methodology is best suited to specific kind of projects, based on various technical, organizational, project and team considerations.
Most methodologies share some combination of the following stages of software development:
  •     Analyzing the problem
  •     Market research
  •     Gathering requirements for the proposed business solution
  •     Devising a plan or design for the software-based solution
  •     Implementation (coding) of the software
  •     Testing the software
  •     Deployment
  •     Maintenance and bug fixing
So in this article I'm going to introduce some of the popular software development methodologies in the current industry.

1. Agile Software Development Methodology


















Agile software development is a conceptual framework for undertaking software engineering projects. There are a number of agile software development methodologies such as, Crystal Methods, Dynamic Systems Development Model (DSDM), and Scrum. Most agile methods attempt to minimize risk by developing software in short time boxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities. Agile methods emphasize real time communication, preferably face-to-face, over written documents.
Agile methodology is basically depend on some principles. They are,

  •     Customer satisfaction by early and continuous delivery of useful software
  •     Welcome changing requirements, even late in development
  •     Working software is delivered frequently (weeks rather than months)
  •     Close, daily cooperation between business people and developers
  •     Projects are built around motivated individuals, who should be trusted
  •     Face-to-face conversation is the best form of communication (co-location)
  •     Working software is the principal measure of progress
  •     Sustainable development, able to maintain a constant pace
  •     Continuous attention to technical excellence and good design
  •     Simplicity
  •     Self-organizing teams
  •     Regular adaptation to changing circumstance

There are many advantages of using agile methodology.
  • Customer satisfaction by rapid, continuous delivery of useful software.
  • People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
  • Working software is delivered frequently (weeks rather than months).
  • Face-to-face conversation is the best form of communication.
  • Close, daily cooperation between business people and developers.
  • Continuous attention to technical excellence and good design.
  • Regular adaptation to changing circumstances.
  • Even late changes in requirements are welcomed
Whenever in a project with new changes needed to be implemented, project group with some experienced people or when the project requirements are more likely to change frequently, it is advised to go with agile software development methodology.

2. Dynamic Systems Development Model (DSDM)























The Dynamic Systems Development Model(DSDM) is the evolution of rapid application development (RAD) practices. DSDM boasts the best-supported training and documentation of any of the agile software development techniques. There are basically nine principles to follow when it comes to DSDM.
  •     Active user involvement.
  •     Empowered teams that the authority to can make decisions.
  •     A focus on frequent delivery of products.
  •     Using fitness for business purpose as the essential criterion for acceptance of deliverables.
  •     Iterative and incremental development to ensure convergence on an accurate business solution.
  •     Reversible changes during development.
  •     Requirements that is baselined at a high level.
  •     Integrated testing throughout the life cycle.
  •     Collaboration and cooperation between all stakeholders.

There are many advantages in DSDM methodology, some of them are,
  •     Users are highly involved in the development of the system so, they are more likely to get a grip on the software development project.
  •     In this model basic functionality is delivered quickly, with more functionality being delivered at frequent intervals.
  •     This method provides an easy access by developers to end-users.
  •     In this kind of development approach projects are delivered on time and within a specific budget.

3. Extreme Programming Methodology (XP)

XP is a methodology for creating software within a very unstable environment. It allows flexibility within the modelling process. The main goal of XP is to lower the cost of change in software requirements. With traditional system development methodologies, like the Waterfall Methodology, the requirements for the system are determined and often “frozen” at the beginning of the development project. This means that the cost of changing the requirements at a later stage in the project - something that is very common in the real-world can be very high. It advised that Extreme Programming should only work in small teams of fewer than 12 persons. However, XP has been used successfully on teams of over a hundred developers. Some of the main advantages of using XP as a software development methodology are, 
  •     Extreme programming methodologies emphasis on customer involvement.
  •     This model helps to establish rational plans and schedules and to get the developers personally committed to their schedules which is surely a big advantage in the XP model.
  •     This model is consistent with most modern development methods so, developers are able to produce quality software.

4. Feature Driven Development Methodology

Jeff De Luca and Peter Coad were both greatly involved in developing the Feature Driven Development methodology. Peter describes FDD as having just enough process to ensure scalability and repeatability while encouraging creativity and innovation.
More specifically, Feature Driven Development asserts that:
  •     A system for building systems is necessary in order to scale to larger projects.
  •     A simple, but well-define process will work best.
  •     Process steps should be logical and their worth immediately obvious to each team member.
  •     “Process pride” can keep the real work from happening.
  •     Good processes move to the background so team members can focus on results.
  •     Short, iterative, feature-driven life cycles are best.

5. Joint Application Development Methodology(JAD)






















JAD is a requirements-definition and user-interface design methodology in which end-users, executives, and developers attend intense off-site meetings to work out a system's details. So the Joint Application Development (JAD) methodology aims to involve the client in the design and development of an application. This is accomplished through a series of collaborative workshops called JAD sessions. JAD focuses on the business problem rather than technical details. It is most applicable to the development of business systems, but it can be used successfully for systems software. It produces its savings by shortening the elapsed time required to gather a system's requirements and by gathering requirements better, thus reducing the number of costly, downstream requirements changes. Its success depends on effective leadership of the JAD sessions; on participation by key end-users, executives, and developers; and on achieving group synergy during JAD sessions. Advantages are,
  •     This methodology allows for the simultaneous gathering and consolidating of large amounts of information.
  •     This software development mode effectively produces large amounts of high-quality information in a short period of time.
  •     In this methodology differences are resolved immediately with the proper assistance of the organizer.
  •     This model provides a forum to explore multiple points of view regarding a topic.

6. Lean Development Methodology(LD)















There are 12 principles of Lean Development:
  • Satisfying the customer is the highest priority.
  • Always provide the best value for the money.
  • Success depends on active customer participation.
  • Every LD project is a team effort.
  • Everything is changeable.
  • Domain, not point, solutions.
  • Complete, don't construct.
  • An 80 percent solution today instead of 100 percent solution tomorrow.
  • Minimalism is essential.
  • Needs determine technology.
  • Product growth is feature growth, not size growth.
  • Never push LD beyond its limits.
The Advantages of Lean Development are,
  •     The early elimination of the overall efficiency of the development process certainly helps to speeds up the process of entire software development which surely reduces the cost of the project.
  •     Delivering the product early is a definite advantage. It means that development team can deliver more functionality in a shorter period of time, hence enabling more projects to be delivered.
  •     Empowerment of the development team helps in developing the decision making ability of the team members which created more motivation among team members.

7. Rapid Application Development Methodology (RAD)








“Rapid-development language” is a general term that refers to any programming language that offers speedier implementation than do traditional third-generation languages such as C/C++, Pascal, or Fortran. Rapid-Development Languages (RDLs) produce their savings by reducing the amount of construction needed to build a product. By using RAD Methodology the products can be developed faster and higher quality by,
  •     Using workshops or focus groups to gather requirements.
  •     Prototyping and user testing of designs.
  •     Re-using software components.
  •     Following a schedule that defers design improvements to the next product version.
  •     Keeping review meetings and other team communication informal.
The main advantages of using RAD are,
  •     Rapid Application development model helps to reduce the risk and required efforts on the part of the software developer.
  •     This model also helps client’s to take quick reviews for the project.
  •     This methodology encourages customer feedback which always provides improvement scope for any software development project.
But when using RAD methodology, it is important to identify the exact requirements of the system to be developed. This method is not applicable for the developer to use in small budget projects as cost of modeling and automated code generation is very high. And also this methodology requires to have highly skilled developers and designers teams, and the system to be developed should be able to modularized.

8. SCRUM Methodology






















The Scrum process is suited for projects with rapidly changing or highly emergent requirements. Scrum software development progresses via a series of iterations called sprints, which last from one to four weeks. The Scrum model suggests each sprint begins with a brief planning meeting and concludes with a review. Scrum is facilitated by a scrum master, whose primary job is to remove impediments to the ability of the team to deliver the sprint goal. The scrum master is not the leader of the team (as they are self-organizing) but acts as a productivity buffer between the team and any destabilizing influences.
The main roles in SCRUM are, Scrum Master, Scrum Team, Product Owner and Stakeholders.
The main artifacts are, Product backlog, Sprint backlog and Burn down chart.
The main meetings are, Iteration plan meeting, Daily scrum, product release meeting and scrum retrospective.
The main advantages are,
  •     In this methodology decision-making is entirely in the hands of the teams.
  •     This methodology enables project’s where the business requirements documentation is not consider very significant for the successfully development.
  •     It is a lightly controlled method which totally empathizes on frequent updating of the progress therefore project development steps is visible in this method.
  •     A daily meeting easily helps developer to make it possible to measure individual productivity. This leads to the improvement in the productivity of each of the team members.

9. Spiral Model






















The Spiral Model is sophisticated model that focuses on early identification and reduction of project risks. In this model, developers starts on a small scale then explores the risks involved in the project, makes a plan to handle the risks, and finally decides whether to take the next step of the project to do the next iteration of the spiral. The success of any Spiral Life-cycle Model depends on reliable, attentive, and knowledgeable management of the project.
Advantages of Spiral model:
  •     High amount of risk analysis hence, avoidance of possible risk is certainly reduced.
  •     This model is good for large size and critical projects.
  •     In the spiral model additional functionality can be added at a later date.
  •     It is more suited for high risk projects, where business needs may differ from time to time basis.
Disadvantages of Spiral model:
  •     It can certainly costly model to use in terms of development.
  •     The success of entire project is dependent on the risk analysis phase thus, failure in this phase may damage entire project.
  •     It is not appropriate for low risk projects.
  •     The big risk of this methodology is that it may continue indefinitely and never finish.

10. Waterfall Model






















The waterfall model is the traditional and commonly used software development life cycle model for software engineering. This model is often considered as the classic style of old method in software development life cycle. This model clarifies the software development process in a linear sequential flow that means that any phase in the development process begins only if the earlier phase is completed. This development approach does not define the process to go back to the previous phase to handle changes in requirements.
Advantages of waterfall model:
  •     Waterfall model is very simple and easy to understand and use method that is why it is really beneficial for the beginner or novice developer.
  •     It is easy to manage, because of the rigidity of the model. Moreover, each phase has specific deliverable and individual review process.
  •     In this model phases are processed and completed are at once in a time thus it saves significant amount of time.
  •     This type of development model works more effectively in the smaller projects where requirements are very well understood.
  •     The testing is easier as it can be done by reference to the scenarios defined in the earlier functional specification.
Disadvantages of waterfall model:
  •     This model can only be used when very precise up-front requirements are available.
  •     This model is not applicable for maintenance type of projects.
  •     The main drawback of this method is that once an application is in the testing stage, it is not possible to go back and edit something.
  •     There is no possibility to produce any working software until it reaches the last stage of the cycle.
  •     In this model, there is no option to know end result of the entire project.
  •     This model is good for small project but not ideal suitable for long and ongoing projects.
  •     Not ideal for the projects where requirements are very moderates, and there is great scope for modification.


2 comments:

  1. The vision that comes from process hindsight, coupled with device test data, can be a powerful tool for informing design iterations and future runs. Test data may, for example, show that a 10% over etch is acceptable for the device performance, but 15% would be too much. Taking the time to do this detailed documentation after each process run will not only capture learning during prototype iterations but also help when you are ready to move to foundry production. what is thought leadership

    ReplyDelete
  2. Software Development in Dubai
    https://www.nsreem.com/ourservices/software-development/
    NSREEM develop amazing desktop and web applications that are tailored to your specific requirements.
    NSREEM is #1 in Software Development in Dubai
    1633580694426-11

    ReplyDelete