SDLC Software Development Life Cycle SDLC Acronym for system development life cycle. Is the process of developing information systems through: – – – – – Investigation Analysis Design Implementation Maintenance SDLC Also known as: – information systems development or – application development Is a systems approach to problem solving Is made up of several phases, each comprised of multiple steps …. The Software Concept Identifies and defines a need for the new system – The existing system is evaluated – Deficiencies are identified – This can be done by: » Interviewing users of the system » Consulting with support personnel A Requirements Analysis Analyses the information needs of the end users – The new system requirements are defined – The deficiencies in the existing system must be addressed with specific proposals for improvement The Architectural Design Creates a blueprint for the design with the necessary specifications for: – – – – – – the hardware the software the people the data resources the security issues the physical construction Coding and Debugging Creates and programs the final system The new components and programs must be obtained and installed System Testing Evaluates the system's actual functionality in relation to expected or intended functionality – Users of the system must be trained in its use – All aspects of performance must be tested – If necessary, adjustments must be made at this stage System Put to Use Can be done in various ways: – The new system can be phased in, according to application or location, and the old system gradually replaced – In some cases, it may be more cost-effective to shut down the old system and implement the new system all at once System Evaluation Once the new system is up and running for a while, it should be exhaustively evaluated Maintenance must be kept up rigorously at all times Users of the system should be kept up-todate concerning the latest modifications and procedures Various SDLC Approaches The waterfall model, the original SDLC method Rapid Application Development (RAD) Joint Application Development (JAD) The fountain model The spiral model Build and fix Synchronize-and-stabilize Frequently, several models are combined into some sort of hybrid process Documentation Is crucial regardless of the type of model chosen or devised for any application Is usually done in parallel with the development process. Waterfall Model Linear and sequential Distinct goals for each phase of development Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance with no overlapping or going over previous steps Waterfall Model Does not allow for much reflection or revision Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage Joint Application Development A methodology that involves the client or end user in the design and development of an application, through a succession of collaborative workshops called JAD sessions Is thought to lead to faster development times and greater client satisfaction, because the client is involved throughout the development process Rapid Application Development A concept that products can be developed faster and of higher quality through: – Gathering requirements using workshops or focus groups – Prototyping and early, reiterative user testing of designs – The re-use of software components – A rigidly paced schedule that defers design improvements to the next product version – Less formality in reviews and other team communication Is a variation of JAD Build A build is a version of a program As a rule, a build is a pre-release version and as such is identified by a build number, rather than by a release number Reiterative (repeated) builds are an important part of the development process Build Throughout development, application components are collected and repeatedly compiled for testing purposes, to ensure a reliable final product Build tools, such as Make or Ant, enable developers to automate some programming tasks As a verb, to build can mean either to write code or to put individual coded components of a program together Synchronise and Stabilise Is a systems development life cycle model in which teams work in parallel on individual application modules They frequently synchronise their code with that of other teams They debug (stabilise) code regularly throughout the development process. Synchronise and Stabilise The sync-and-stabilize model offers advantages over the older waterfall model, which is strictly sequential in nature – Sync-and-stabilize development allows for changes at any point in the process – It can be flexible, and more easily able to respond to market requirement changes