ICT 08012/9/2011S.G.Nambuwasam1Software Development Practices
What is SoftwareSoftware is a general term for the various kinds of programs used to operate computers and related devices. Software can be thought of as the variable part of a computer and hardware the invariable part.
Software DevelopmentIs the act of working to produce/create software. This software could be produced for a variety of purposes.
Reasons to Develop Softwareto meet specific needs of a specific client/business to meet a perceived need of some set of potential users for personal use
Software Development Life Cycle (SDLC)Market researchGathering requirements for the proposed business solutionAnalyzing the problemDevising a plan or design for the software-based solutionImplementation (coding) of the softwareTesting the softwareDeploymentMaintenance and bug fixing
Popular Software Development Models	A. System Development Life Cycle (SDLC) Model B. Prototyping Model C. Rapid Application Development Model D. Component Assembly Model
System Development Life Cycle (SDLC)The systems development life cycle (SDLC) is a sequential conceptual model used in project management that describes the stages involved in an information system development project, from an initial feasibility study through maintenance of the completed application.
Activities of SDLCSystem/Information Engineering and ModelingSoftware Requirement AnalysisSystem Analysis and DesignCode GenerationTestingMaintenance
Stages of the Waterfall Model
Requirement Analysis & DefinitionThe requirements are gathered from the end-user by consultationRequirements are analyzed for their validity and the possibility of incorporating the requirements in the system to be development is also studiedA Requirement Specification document is created which serves the purpose of guideline for the next phase of the model
Feasibility StudyAims to objectively and rationally uncover the strengths and weaknesses of the existing business or proposed venture, opportunities and threats as presented by the environment, the resources required to carry through, and ultimately the prospects for successCriteria to judge feasibility Cost required Value to be attained
Five Common Feasibility FactorsTechnology and System FeasibilityEconomic FeasibilityLegal FeasibilityOperational FeasibilitySchedule Feasibility
Other Feasibility FactorsMarket and real estate feasibilityResource feasibilityCultural feasibilityFinancial feasibility
Feasibility Study ReportThe feasibility study outputs the feasibility study reportA report detailing the evaluation criteria, the study findings, and the recommendations
System & Software DesignThe requirement specifications from first phase are studied in this phase and system design is prepared.Helps in specifying hardware and system requirementsHelps in defining overall system architectureServe as input for the next phase of the model
Implementation & Unit Testingthe work is divided in modules/units and actual coding is startedThe 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;
Integration & System Testing:Units are integrated into a complete system during Integration phase and tested to check if all modules/units coordinate between each other and the system as a whole behaves as per the specifications.After successfully testing the software, it is delivered to the customer.
Operations & Maintenance:virtually never ending phase (Very long)the issues related to the system are solved after deployment of the system
Waterfall development in actioncreate the functional specificationWhen we have a full understanding of the business the functional specification is published and distributed to as many business experts as possible for feedback.  When the functional specification is final we often convey a meeting of business experts and work through the final copy together to iron out any errors prior to sign-off.
produce a non working prototype application along with a user interface specificationWhen everybody is happy that the screens will deliver the functionality required the application can be developed and tested.When the application is complete a beta release is published and provided to the business for testing. Any  bugs found are rapidly repairedWhen no significant bugs remain and the client is happy with the application it can go live as release version 1.0.
Advantages of the waterfall methodDesign errors are captured before any software is written saving time during the implementation phase. Excellent technical documentation is part of the deliverables and it is easier for new programmers to get up to speed during the maintenance phase. The approach is very structured and it is easier to measure progress by reference to clearly defined milestones. The total cost of the project can be accurately estimated after the requirements have been defined (via the functional and user interface specifications). Testing is easier as it can be done by reference to the scenarios defined in the functional specification.
Disadvantages of the waterfall methodClients will often find it difficult to state their requirements at the abstract level of a functional specification and will only fully appreciate what is needed when the application is delivered.  It then becomes very difficult (and expensive) to re-engineer the application. The model does not cater for the possibility of requirements changing during the development cycle. A project can often take substantially longer to deliver than when developed with an iterative methodology such as the agile development method.
Prototyping ModelThe basic idea here is that instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements.prototype is developed based on the currently known requirements. By using this prototype, the client can get an "actual feel" of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system.
Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements. It is also an effective method to demonstrate the feasibility of a certain approach. might be needed for novel systems where it is not clear that constraints can be met or that algorithms can be developed to implement the requirements.
Prototyping  Model
Stages of the Prototyping Modelcyclic version of the linear modelonce the requirement analysis is done and the design for a prototype is madethe development process gets startedOnce the prototype is created, it is given to the customer for evaluationThe customer tests the package and gives his/her feed back to the developer who refines the product according to the customer's exact expectation
After a finite number of iterations, the final software package is given to the customer.In this methodology, the software is evolved as a result of periodic shuttling of information between the customer and developer. the most popular development model in the contemporary IT industry.Most of the successful software products have been developed using this model
Advantages of PrototypingUsers are actively involved in the developmentIt provides a better system to users, as users have natural tendency to change their mind in specifying requirements and this method of developing systems supports this user tendency.Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed.Errors can be detected much earlier as the system is mode side by side.
Quicker user feedback is available leading to better solutions.One of the key advantages a prototype modeled software has is the time frame of development. Instead of concentrating on documentation, more effort is placed in creating the actual software. This way, the actual software could be released in advance.
Disadvantages of the Prototyping ModelLeads to implementing and then repairing way of building systems.Since its being built out of concept, most of the models presented in the early stage are not complete.Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.integration could be very difficult for a prototype model.
Rapid Application Development ModelA linear sequential software development processAn extremely short development cycleThe RAD model is a "high speed" adaptation of the linear sequential model Rapid development is achieved by using a component-based construction approach. Used primarily for information systems applications,
Phases of RADBusiness ModelingData ModelingProcess ModelingApplication GenerationTesting and Turnover
Business ModelingThe information flow among business functions is modeled in a way that answers the following questions:
What information drives the business process?
What information is generated?
Who generates it?
Where does the information go?
Who processes it? Data ModelingThe information flow defined as part of the business modeling phase is refined into a set of data objects The characteristic (called attributes) of each object is identified and the relationships between these objects are defined.
Process ModelingThe data objects defined in the data-modeling phase are transformed to achieve the information flow necessary to implement a business function. Processing the descriptions are created for adding, modifying, deleting, or retrieving a data object.
Application GenerationWorks to reuse existing program components (when possible) or create reusable components (when necessary).In all cases, automated tools are used to facilitate construction of the software.
Testing and TurnoverThe RAD process emphasizes reuse, many of the program components have already been tested. This minimizes the testing and development time.
Advantages of RADFlexible and adaptable to changes.Prototyping applications gives users a tangible description from which to judge whether critical system requirements are being met by the system. Report output can be compared with existing reports. Data entry forms can be reviewed for completeness of all fields, navigation, data access (drop down lists,checkboxes, radio buttons, etc.). RAD generally incorporates short development cycles - users see the RAD product quickly.

Sdpl1

  • 1.
  • 2.
    What is SoftwareSoftwareis a general term for the various kinds of programs used to operate computers and related devices. Software can be thought of as the variable part of a computer and hardware the invariable part.
  • 3.
    Software DevelopmentIs theact of working to produce/create software. This software could be produced for a variety of purposes.
  • 4.
    Reasons to DevelopSoftwareto meet specific needs of a specific client/business to meet a perceived need of some set of potential users for personal use
  • 5.
    Software Development LifeCycle (SDLC)Market researchGathering requirements for the proposed business solutionAnalyzing the problemDevising a plan or design for the software-based solutionImplementation (coding) of the softwareTesting the softwareDeploymentMaintenance and bug fixing
  • 6.
    Popular Software DevelopmentModels A. System Development Life Cycle (SDLC) Model B. Prototyping Model C. Rapid Application Development Model D. Component Assembly Model
  • 7.
    System Development LifeCycle (SDLC)The systems development life cycle (SDLC) is a sequential conceptual model used in project management that describes the stages involved in an information system development project, from an initial feasibility study through maintenance of the completed application.
  • 8.
    Activities of SDLCSystem/InformationEngineering and ModelingSoftware Requirement AnalysisSystem Analysis and DesignCode GenerationTestingMaintenance
  • 9.
    Stages of theWaterfall Model
  • 10.
    Requirement Analysis &DefinitionThe requirements are gathered from the end-user by consultationRequirements are analyzed for their validity and the possibility of incorporating the requirements in the system to be development is also studiedA Requirement Specification document is created which serves the purpose of guideline for the next phase of the model
  • 11.
    Feasibility StudyAims toobjectively and rationally uncover the strengths and weaknesses of the existing business or proposed venture, opportunities and threats as presented by the environment, the resources required to carry through, and ultimately the prospects for successCriteria to judge feasibility Cost required Value to be attained
  • 12.
    Five Common FeasibilityFactorsTechnology and System FeasibilityEconomic FeasibilityLegal FeasibilityOperational FeasibilitySchedule Feasibility
  • 13.
    Other Feasibility FactorsMarketand real estate feasibilityResource feasibilityCultural feasibilityFinancial feasibility
  • 14.
    Feasibility Study ReportThefeasibility study outputs the feasibility study reportA report detailing the evaluation criteria, the study findings, and the recommendations
  • 15.
    System & SoftwareDesignThe requirement specifications from first phase are studied in this phase and system design is prepared.Helps in specifying hardware and system requirementsHelps in defining overall system architectureServe as input for the next phase of the model
  • 16.
    Implementation & UnitTestingthe work is divided in modules/units and actual coding is startedThe 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;
  • 17.
    Integration & SystemTesting:Units are integrated into a complete system during Integration phase and tested to check if all modules/units coordinate between each other and the system as a whole behaves as per the specifications.After successfully testing the software, it is delivered to the customer.
  • 18.
    Operations & Maintenance:virtuallynever ending phase (Very long)the issues related to the system are solved after deployment of the system
  • 19.
    Waterfall development inactioncreate the functional specificationWhen we have a full understanding of the business the functional specification is published and distributed to as many business experts as possible for feedback.  When the functional specification is final we often convey a meeting of business experts and work through the final copy together to iron out any errors prior to sign-off.
  • 20.
    produce a nonworking prototype application along with a user interface specificationWhen everybody is happy that the screens will deliver the functionality required the application can be developed and tested.When the application is complete a beta release is published and provided to the business for testing. Any  bugs found are rapidly repairedWhen no significant bugs remain and the client is happy with the application it can go live as release version 1.0.
  • 21.
    Advantages of thewaterfall methodDesign errors are captured before any software is written saving time during the implementation phase. Excellent technical documentation is part of the deliverables and it is easier for new programmers to get up to speed during the maintenance phase. The approach is very structured and it is easier to measure progress by reference to clearly defined milestones. The total cost of the project can be accurately estimated after the requirements have been defined (via the functional and user interface specifications). Testing is easier as it can be done by reference to the scenarios defined in the functional specification.
  • 22.
    Disadvantages of thewaterfall methodClients will often find it difficult to state their requirements at the abstract level of a functional specification and will only fully appreciate what is needed when the application is delivered.  It then becomes very difficult (and expensive) to re-engineer the application. The model does not cater for the possibility of requirements changing during the development cycle. A project can often take substantially longer to deliver than when developed with an iterative methodology such as the agile development method.
  • 23.
    Prototyping ModelThe basicidea here is that instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements.prototype is developed based on the currently known requirements. By using this prototype, the client can get an "actual feel" of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system.
  • 24.
    Prototyping is anattractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements. It is also an effective method to demonstrate the feasibility of a certain approach. might be needed for novel systems where it is not clear that constraints can be met or that algorithms can be developed to implement the requirements.
  • 25.
  • 26.
    Stages of thePrototyping Modelcyclic version of the linear modelonce the requirement analysis is done and the design for a prototype is madethe development process gets startedOnce the prototype is created, it is given to the customer for evaluationThe customer tests the package and gives his/her feed back to the developer who refines the product according to the customer's exact expectation
  • 27.
    After a finitenumber of iterations, the final software package is given to the customer.In this methodology, the software is evolved as a result of periodic shuttling of information between the customer and developer. the most popular development model in the contemporary IT industry.Most of the successful software products have been developed using this model
  • 28.
    Advantages of PrototypingUsersare actively involved in the developmentIt provides a better system to users, as users have natural tendency to change their mind in specifying requirements and this method of developing systems supports this user tendency.Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed.Errors can be detected much earlier as the system is mode side by side.
  • 29.
    Quicker user feedbackis available leading to better solutions.One of the key advantages a prototype modeled software has is the time frame of development. Instead of concentrating on documentation, more effort is placed in creating the actual software. This way, the actual software could be released in advance.
  • 30.
    Disadvantages of thePrototyping ModelLeads to implementing and then repairing way of building systems.Since its being built out of concept, most of the models presented in the early stage are not complete.Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.integration could be very difficult for a prototype model.
  • 31.
    Rapid Application DevelopmentModelA linear sequential software development processAn extremely short development cycleThe RAD model is a "high speed" adaptation of the linear sequential model Rapid development is achieved by using a component-based construction approach. Used primarily for information systems applications,
  • 32.
    Phases of RADBusinessModelingData ModelingProcess ModelingApplication GenerationTesting and Turnover
  • 33.
    Business ModelingThe informationflow among business functions is modeled in a way that answers the following questions:
  • 34.
    What information drivesthe business process?
  • 35.
  • 36.
  • 37.
    Where does theinformation go?
  • 38.
    Who processes it?Data ModelingThe information flow defined as part of the business modeling phase is refined into a set of data objects The characteristic (called attributes) of each object is identified and the relationships between these objects are defined.
  • 39.
    Process ModelingThe dataobjects defined in the data-modeling phase are transformed to achieve the information flow necessary to implement a business function. Processing the descriptions are created for adding, modifying, deleting, or retrieving a data object.
  • 40.
    Application GenerationWorks toreuse existing program components (when possible) or create reusable components (when necessary).In all cases, automated tools are used to facilitate construction of the software.
  • 41.
    Testing and TurnoverTheRAD process emphasizes reuse, many of the program components have already been tested. This minimizes the testing and development time.
  • 42.
    Advantages of RADFlexibleand adaptable to changes.Prototyping applications gives users a tangible description from which to judge whether critical system requirements are being met by the system. Report output can be compared with existing reports. Data entry forms can be reviewed for completeness of all fields, navigation, data access (drop down lists,checkboxes, radio buttons, etc.). RAD generally incorporates short development cycles - users see the RAD product quickly.
  • 43.
    RAD involves userparticipation thereby increasing chances of early user community acceptance. RAD realizes an overall reduction in project risk. Reduce the cost to create custom system.
  • 44.
    Disadvantages of RADUnknowncost of product. As mentioned above, this problem can be alleviated by the customer agreeing to a limited amount of rework in the RAD process. It may be difficult for many important users to commit the time required for success of the RAD process.
  • 45.
    Component Assembly Modelleadsto software reusabilityThe integration/assembly of the already existing software components accelerate the development process. is an iterative development modelIt works like the Prototype model, constantly creating a prototype until a software that will cater the need of businesses and consumers is realized.has a close resemblance with the Rapid Application Development (RAD) model.
  • 46.
    7 uses the availabletools and GUIs to build software. 8 If the right components are chosen, the integration aspect is made much simpler.