Friday, March 21, 2014

Advantages


  • Effort of prototype is not wasted.
  • Faster than the Waterfall model.
  • High level of user involvement from the start.
  • Technical or other problems discovered early – risk reduced.
  • A working system is available early in the process.
  • Misunderstandings between software users and developers are exposed.
  • Mainly suitable for projects with vague and unstable requirements.


Disadvantages


  • Prototype usually evolve so quickly that it is not cost- effective to produce great deal of documentation.
  • Continual change tends to corrupt the structure of the prototype system. Maintenance is therefore likely to be difficult and costly.
  • It is not clear how the range of skills which is normal in software engineering teams can be used effectively for this mode of development.
  • Languages which are good for prototyping not always best for final product.


The objective is to understand the system requirements clearly.Starts with poorly understood requirements. Once the requirements are cleared, the system will be developed from the beginning.This model is suitable if the requirements are vague but stable.


  1. Important features may have been left out of the prototype to simplify rapid implementation. In fact, it may not be possible to prototype some of the most important parts of the system such as safety-critical functions.
  2. An implementation has no legal standing as a contract between customer and contractor.
  3. Non-functional requirements such as those concerning reliability, robustness and safety cannot be adequately tested in a prototype implementation.


  1. Real projects rarely follow the sequential flow that the model proposes. Although the Waterfall model can accommodate iteration, it does so indirectly.
  2. It is often very difficult for the customer to state all requirements explicitly. The Waterfall model has the difficulty of accommodating the natural uncertainty that exists at the beginning of many projects.
  3. The customers must have patience. A working version of the program(s) will not be available until late in the project time-span. A major blunder, if undetected until the working program is reviewed, can be disastrous.
  4. The difficulty of accommodating change after the process is underway.
  5. One phase has to be complete before moving onto the next phase.
  6. Few business systems have stable requirements.
          Software Requirement Analysis and Specification

          The system’s services, constraints and goals are established with the consultation with the users. This would include the understanding of the information domain for the software, functionality, behaviour, performance, interface, security and exceptional requirements. This requirements are then specified in a manner which is understandable by both users and the development staff.

          Software design

          The design process translates requirements into a representation of the software that can be implemented using software tools. The major objectives of the design process are the identification of the software components, the software architecture, interfaces, data structures and algorithms.

          Coding (implementation)

          The design must be translated to a machine readable form.During this stage the software design is realized as a set of programs or program units. Programming languages or CASE tools can be used to develop software.

          Testing

          The testing process must ensure that the system works correctly and satisfies the requirements specified. After testing, the software system is delivered to the customer.

          Maintenance

          Software will undoubtedly undergo changes after it is delivered to the customer. Errors in the system should corrected and the system should be modified and updated to suit new user requirements.



          The Incremental development model involves developing the system in an incremental fashion. The most important part of the system is fist delivered and the other parts of the system are then delivered according to their importance.Incremental development avoids the problems of constant change which characterize evolutionary prototyping. An overall system architecture is established early in the process to act as a framework.Incremental development is more manageable than evolutionary prototyping as the normal software process standards are followed. Plans and documentation must be produced.




        1. Large software is usually designed to solve 'wicked' problems.
        2. Software engineering requires a great deal of coordination across disciplines.
        3.      -Almost infinite possibilities for design trade-offs across components.
               -Mutual distrust and lack of understanding across engineering disciplines



        4. Systems must be designed to last many years in a changing environment.
        5. The process of efficiently and effectively developing requirements.
        6. Tooling required to create the solutions, may change as quick as the clients mind.
        7. User expectations.
        8.      - User expectations increase as the technology becomes more and more sophisticated.
        9. The mythical man-month factor.

        10.      -Adding personnel to a project may not increase productivity.
               -Adding personnel to a late project will just make it later.


        11. Communications.
        12.      -Communications among the various constituencies is a difficult problem. Sometimes different constituencies speak completely different languages. For example, developers may not have the domain knowledge of clients and / or users. The larger the project, the more difficult the communications problems become.
        13. Project characteristics.
        14.     -size / complexity
              -novelty of the application
              -response-time characteristics
              -security requirements
              -user interface requirements
              -reliability / criticality requirements
                                         Distribution of costs across the different activities in the software process depends on the process used and the type of software that is being developed.Software Engineering Costs Eg: Real-time software usually requires more extensive validation and testing than web-based systems.In the waterfall approach, the cost of specification, design, implementation and integration are measured separately. System integration and testing is the most expensive development activity.Normally this is about 40% of the total development costs.


          Copyright © Software Engineering Fundamentals | Powered by Blogger
          Design by N.Design Studio | Blogger Theme by NewBloggerThemes.com