Sunday, 4 September 2011

Explain about spiral model

5. Explain about spiral model? 

Spiral Model - A New Approach Towards Software Development













The Waterfall model is the most simple and widely accepted/followed software development model, but like any other system, Waterfall model does have its own pros and cons. Spiral Model for software development  was designed in order to overcome the disadvantages of the Waterfall Model.
we discussed about "Waterfall Model", which is one of the oldest and most simple model designed and followed during software development process. But "Waterfall Model" has its own disadvantages such as there is no fair division of phases in the life cycle, not all the errors/problems related to a phase are resolved during the same phase, instead all those problems related to one phase are carried out in the next phase and are needed to be resolved in the next phase, this takes much of time of the next phase to solve them. The risk factor is the most important part, which affects the success rate of the software developed by following "The Waterfall Model".

In order to overcome the cons of "The Waterfall Model", it was necessary to develop a new Software Development Model, which could help in ensuring the success of software project. One such model was developed which incorporated the common methodologies followed in "The Waterfall Model", but it also eliminated almost every possible/known risk factors from it. This model is referred as "The Spiral Model" or "Boehm’s Model".

There are four phases in the "Spiral Model" which are: Planning, Evaluation, Risk Analysis and Engineering. These four phases are iteratively followed one after other in order to eliminate all the problems, which were faced in "The Waterfall Model". Iterating the phases helps in understating the problems associated with a phase and dealing with those problems when the same phase is repeated next time, planning and developing strategies to be followed while iterating through the phases. The phases in "Spiral Model" are:

Plan: In this phase, the objectives, alternatives and constraints of the project are determined and are documented. The objectives and other specifications are fixed in order to decide which strategies/approaches to follow during the project life cycle.

Risk Analysis: This phase is the most important part of "Spiral Model". In this phase all possible (and available) alternatives, which can help in developing a cost effective project are analyzed and strategies are decided to use them. This phase has been added specially in order to identify and resolve all the possible risks in the project development. If risks indicate any kind of uncertainty in requirements, prototyping may be  used to proceed with the available data and find out possible solution in order to deal with the potential changes in the requirements.

Engineering: In this phase, the actual development of the project is carried out. The output of this phase is passed through all the phases iteratively in order to obtain improvements in the same.

Customer Evaluation: In this phase, developed product is passed on to the customer in order to receive customer’s comments and suggestions which can help in identifying and resolving potential problems/errors in the software developed. This phase is very much similar to TESTING phase.

The process progresses in spiral sense to indicate iterative path followed, progressively more complete software is built as we go on iterating through all four phases. The first iteration in this model is considered to be most important, as in the first iteration almost all possible risk factors, constraints, requirements are identified and in the next iterations all known strategies are used to bring up a complete software system. The radical dimensions indicate evolution of the product towards a complete system.

However, as every system has its own pros and cons, "The Spiral Model" does have its pros and cons too. As this model is developed to overcome the disadvantages of the "Waterfall Model", to follow "Spiral Model", highly skilled people in the area of planning, risk analysis and mitigation, development, customer relation etc. are required. This along with the fact that the process needs to be iterated more than once demands more time and is somehow expensive task.


Six major activities of each designing spirals are represented by six major tasks:
1. Customer Communication
2. Planning
3. Risk Analysis
4. Software Designing Engineering
5. Construction and Release
6. Customer Evolution
Advantages
1. It facilities high amount of risk analysis.
2. This software designing model is more suitable for designing and managing large software projects.
3. The software is produced early in the software life cycle.

Disadvantages
1. Risk analysis requires high expertise.
2. It is costly model to use
3. Not suitable for smaller projects.
4. There is a lack of explicit process guidance in determining objectives, constraints and alternatives..
5. This model is relatively new. It does not have many practioners unlike the waterfall model or prototyping model.

                                                         1.22          Prototype model

1.22          Explain about Prototype model


/* In development the web based Applications before we start coding we develop a prototype and deliver a prototype to client or customer.
What is Prototype?
Ans:  Prototype is a dummy project developed by HTML Developers to get the approval of customer. Once the customer has approved the project prototype based on the project prototype we develop the code. Our Team Lead or project manager is the responisible to give the prototype to the developer. In the real time projects we develop the java code based on the Prototypes given by the Team Leads.  */
Prototyping is a technique that provides a reduced functionality or limited performance version of the eventual software to be delivered to the user in the early stages of the software development process. If used judiciously, this approach helps to solidify user requirements earlier, thereby making the waterfall approach more effective.
What is done is that before proceeding with design and coding, a throw away prototype is built to give user a feel of the system. The development of the software prototype also involves design and coding, but this is not done in a formal manner. The user interacts with the prototype as he would do with the eventual system and would therefore be in a better position to specify his requirements in a more detailed manner. The iterations occur to refine the prototype to satisfy the needs of the user, while at the same time enabling the developer to better understand what needs to be done.
Disadvantages
1. In prototyping, as the prototype has to be discarded, so might argue that the cost involved is higher.
2. At times, while designing a prototype, the approach adopted is “quick and dirty” with the focus on quick development rather than quality.
3. The developer often makes implementation compromises in order to get a prototype working quickly.



























1.23          Evolutinary model


Evolutionary prototyping model

Evolutionary prototyping model is a software development lifecycle model in which software prototype created for demonstration and requirements elaboration. Evolutionary prototyping model includes the four main phases:




  • Definition the basic requirements





  • Creating the working prototype




  • Verification of the working prototype




  • Changing or elaboration the requirements



  • Evolutionary prototyping model allows create working software prototypes fast and may be applicable to projects where:





  • System requirements early are not known in advance




  • Creating fundamentally new software 
  • Explain about the phases in Water fall model

    4. Explain about the phases in Water fall model?

    1.21          Iterative water fall model

    PHASES IN WATERFALL MODEL:


    The simplest, oldest and most widely used process model for software designing is the waterfall model. It was proposed by Royce in 1970.
    The essence of this software paradigm is that the process of software designing consists of linear set of distinct phases.
    These phases are:
    Stage1: Feasibility Study
    The goal of feasibility study is to evaluate alternative systems and to purpose the most feasible and desirable system for designing. Five types of feasibility are addressed in this study.
    1. Technical feasibility
    2. Economic Feasibility
    3. Motivational Feasibility
    4. Schedule Feasibility
    5. Operational Feasibility
    Stage2: Requirement Analysis and Specification
    The goal of this phase is to understand the exact requirements of the customers and to document them properly. This activity is usually executed together with the customers, as the goal is to document all functions, performance and interfacing requirements for the software designing and management. The requirements describe “what” of a system. This phase produces a large document containing a description of what the system will do without describing how it will be done. This document is known as software requirement specification (SRS) document.

    SRS DOCUMENTS:
    • This baseline are the references to the future level
    • Once the step is completed
    • Which can be performed
    • Change of people
    • We are not making is necessary
    • Civil engineering, different people are do different tasks same thing happens to the software also
    • Different steps can be followed
    • This document also plays a key role to the
    • Natural development
    • When the requirements are clearly defined this is the best System engineering step
    ·        Where u try to understand the overall problem identify which of the problem handled by the software
    ·        Its possible certain requirements may n
    ·        Certain requirements may need to be done manually, because  automation may not possible whereas other phases can be done automation(sw)
    ·        Main intention of this step is Understand the overall problem of the context then, identify the responsibilities

    Analysis phase

    ·        We understand the problems in details we understands. Generally this phase is done by the Business Analysists(BA) or Analysists
    ·        What kind of information is involved, What kind of data is involved
    ·        What function need to be performed, what are the performances and information is required
    ·        This part is the analyst part: whose purpose is to identify the clearly defined the requirements which are to be performed to development of the software
    ·        Along with the analysist you also try to carry out project planning either the part of the same step or if it I s a large project the project planning step may be for separate step
    ·        And the ……is to identify , how to carry out the project
    ·        What are the different steps what are the deliverables and what would be the time framed, what would be the resources allocated that is what the project planning is
    ·        After the analysist is done this step leads to ‘SOFTWRE DESIGN ‘ phase

    Software design:
    • in this step we translate the requirements into the software architecture
    •  and we prepare the database design and so on and this is primarily a technical step
    • you may have the Detailed Design document this document may specify individual units   different people will implemented
    • and this step the requirements are translated into a implementation framework which will be implemented in the next phase the CODING PHASE, in which the actual programming and implementation is done.
    • So you have a design and design is followed by a implementation infact as its notes
    • The design itself is divided into two stages (i) high level design and (ii)detailed design , again this would depend the complexity of the task
    • you may have the Detailed Design document this document may specify individual units   different people will implemented
    • After you have done the implementation
    • This work is documented and is known as Software Design Description (SDD document).
    • Design document is also very important for future maintenance
    • Next phase is coding phase

    CODING PHASE
    • The information contained in SDD is sufficient to begin the coding Phase
    • The source is one of the important deliverable and deliverable which is an executable plan
    • at the end of the each step if you recall as I said every step ends with a validation and proper tested.
    • Similarly in the waterfall model when we move from one step to another there would be such reviews each step usually end with a review
    • These review reports are very important inputs for identifying whether the development proceeded as What are the short comings whether the defects will be detected or addressed so review reports basically a catalog of the how the development went through and its an important inputs to the development team as well as the management team.
    • So these are the different deliverables, many of them are very important of which SRS is the one of the baseline
    • The coding Phase of software designing involves translation of design specification into a machine readable form(i.e programs).
    •  If design is performed in a detailed manner, code generation can be finished easily. 
    • This phase is also known as the implementation phase. Here, each component of the design is implemented as a program module.
    • The individual units of software are ready
    • You get into the next phase

    TESTING AND INTEGRATION PHASE
    • Each of these program modules is unit tested. The purpose of unit testing is to determine the correct working of individual modules.
    • In this all the individual pieces of software are tested and then whole software will put together
    • Here objective is to test first ‘the logic ‘ of the individual module
    • And then when we put all of them put together then we want to test the interfaces so that they work correctively in a manner on which they intended to work
    • So this is the testing and integration phase
    • This is followed the actual deployment of the software
    • Now the software is ready
    • Then the user take the software and take controlling
    • So the deployment takes place and we release the software to use people and
    • After the deployment there is a ongoing maintenance phase

    MAINTENANCE PHASE

    • On the maintenance phase we have to make the necessary changes
    • If any errors are encountered we have to remove the errors
    • If the software is not meeting the performance requirements we may have to review the software and may have to go back to design whether the design have modified or is there any something else to be done in order to improve the performance
    • So this is the ongoing step which we generally we call the maintenance phase and this either the software enhanced or is perfected or to be ported new hardware, this is ongoing step which needs to done through the life of the software.

    Advantages
    1. Simple and easy to use
    2. Easily manageable
    3. The phase of the model are processed and completed one at a time.
    4. Works very well for smaller software projects.
    Disadvantages
    1. It is often difficult for the customer to state all the requirements explicitly.
    2. Real projects rarely follow the sequential flow that the software model proposes.
    3. The customer must have patience, as the product is delivered very late in this software process.
    4. The model is not suitable for long time software projects.

    Now each of these steps are certain deliverables in waterfall Model. Let us talk the different deliverables come out in a given sequence when we perform the various steps
    One of the important is the
      • Project plan and feasibility report:
      • We will be carrying out the project according to the plan
    • plan needs to be reviewed as we
    The feasibility report defines the cost effectiveness of approach and the whole software project, whether we are investing good or not whether the software is cost effective means the software will give the benefits .
    • so the project plan is one deliverable and the feasibility is one deliverable
    • one of the important deliverable is the REQUIREMENT DOCUMENT which is also called the Software Requirement Specification(SRS)
    • SRS is very important baseline it defines the functions that the software will perform for us
    • Obviously this out put SRS will comes from the Analyst Step
    • And the next step is the design the document



    • The above figure shows the cost effect distribution as we run thru the different spects in the waterfall model . there are different steps are shown here
    • Some of the earlier steps I have smaller efforts costs than the subsequent steps
    • For example the detailed design , implementation are very effort intensive steps
    • The line here is the cumulative have seen its increases rapidly as we progress development
    • So accumulated cost increases dramatically as we go from initial steps . because as we move steps to along the time of the programmers , technical people , all these are cost effective factors
    • This effort distribution is important to understand because it clearly bringsout that we must take all efforts to remove errors as earlier possible in the life cycle
    • We must discover and fix this bugs as early as possible because fixing them subsequently is very costly operation
    • Suppose there is a misunderstanding or analysis phase have not clearly identified the functional requirement that if it is not detected at the Review phase by the analysists would be carried over into design, detailed design , implementation and if it is not possible that mistake during the operation time when the user have started using the software . Now inorder to make the corrections we will have to undo the code, deisign etc., go back right upto the analysis phase and identify what have the missed out what are the wrongly understood and carryout the design and implementation and testing again so . Its important such errors are captured as early as possible and they are not allowed to kept into subsequent steps
    • So in any software development approach its important to understand how the cost have distributed not only for project planning and emphasizing the error free activity in each step
    • Now there are some short coming to the Water Fall Model
    • One of the main criticism is for waterfall model is that it goes linearly
    • And it assumes all the requirements clearly defined during the analysist phase
    • There are many situation where Requirements may not be clearly known, this often      happen there is no manual counterpart for that the problem that we are solving if a manual counterpart exists that means the function business function is already been carried out manually and we are planning to automated that then in this case it  is easy to
    • Here is an example we know that the Railway Reservation is now is in online before that the manual system existed we knew what is the tasks or what are the goal are involved in railway reservation that you want to reserve a seat on a particular train you may want to cancel it , you may get wait listed , wait list have to be arranged and there is a method for arranging all those things were we already defined as functional activities and therefore one can say the is the railway reservation is concerned the manual system existed and therefore it is possible to clearly define the requirements in this case
    But there can be other examples where there can be no manual part for example a Central Bank wants to build a knowledge management system it believes that there is so much knowledge that is available its


    What is Waterfall model- advantages, disadvantages and when to use it?
    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 fully before the next phase can begin. This type of model is basically used for the for the project which is small and there are no uncertain requirements. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. In this model the testing starts only after the development is complete. In waterfall model phases do not overlap.

    DEPLOYMENT PHASE

    In the real time applications(projects) we have different types of servers. They are:
    1. Development Server
    2. Integration Server
    3. QA Server (Quality Assurance)
    4. Production Server
    Development Server: It is used by every developer(programmers) to perform unit testing. And every developer’s computer development server is installed.

    Integration Server: it is used by all the developers of that project. This server is used to perform Integration testing between modules.

    QA Server: is used by the tester to perform the quality check on the project.

    Production Server: This is the server used to deploy the final project for customer. Generally this server is available in client’s location.

     

    5. Explain about spiral model?