Software Development Life Cycles (SDLC) BY Touseef Tahir Process Project Software engineering System engineering SDLC-Software development life cycle Write a report on Extreme programming, formal methods, agile software development life cycles. Deadline : 12-09-2011 Email: touseeftahir@ciitlahore.edu.pk Email subject:? Zero Assignment 1 The spiral model A process that ◦ Identifies a risk of business loss ◦ Assesses the risk’s potential impact ◦ Determines how to handle the risk Protects physical assets from damage Protects nonphysical assets from software, network-related risks Risk Management 38 Use Prototypes ◦ Evolutionary prototypes ◦ Throw-away prototypes Phases ◦ Requirements planning ◦ RAD design workshop ◦ Implementation Why to use RAD ◦ Quick development of software Rapid application development RUP is a method of managing OO Software Development It can be viewed as a Software Development Framework which is extensible and features: ◦ Iterative Development ◦ Requirements Management ◦ Component-Based Architectural Vision ◦ Visual Modeling of Systems ◦ Quality Management ◦ Change Control Management The Rational Unified Process Online Repository of Process Information and Description in HTML format Templates for all major artifacts, including: ◦ RequisitePro templates (requirements tracking) ◦ Word Templates for Use Cases ◦ Project Templates for Project Management Process Manuals describing key processes RUP Features The Phases Recognizes the reality of changing requirements ◦ Casper Jones’s research on 8000 projects 40% of final requirements arrived after the analysis phase, after development had already begun Promotes early risk mitigation, by breaking down the system into mini-projects and focusing on the riskier elements first Allows you to “plan a little, design a little, and code a little” Encourages all participants, including testers, integrators, and technical writers to be involved earlier on An Iterative Development Process... Allows for software to evolve, not be produced in one huge effort Allows software to improve, by giving enough time to the evolutionary process itself Allows interim progress to continue through the stubbing of functionality Allows for the management of risk, by exposing problems earlier on in the development process An Incremental Development Process... Each iteration is risk-driven The primary goal of each iteration is to slowly chip away at the risk facing the project, namely: ◦ performance risks ◦ integration risks (different vendors, tools, etc.) ◦ conceptual risks (ferret out analysis and design flaws) Goals and Features of Each Iteration Identification of the risks Iterative/Incremental Development The prototype or pilot project Risk Management Inception Phase Elaboration Phase Construction Phase Transition Phase The Development Phases Initial requirements capture Cost Benefit Analysis Initial Risk Analysis Project scope definition Defining a candidate architecture Development of a disposable prototype Initial Use Case Model (10% - 20% complete) First pass at a Domain Model ◦ Class diagram in UML ◦ ModelSemanticscode (Forward Engineering) Inception Phase Requirements Analysis and Capture ◦ Use Case Analysis Use Case (80% written and reviewed by end of phase) Use Case Model (80% done) Scenarios ◦ Sequence and Collaboration Diagrams ◦ Class, Activity, Component, State Diagrams ◦ Glossary (so users and developers can speak common vocabulary) ◦ Domain Model ◦ Risk Assessment Plan revised ◦ Architecture Document Elaboration Phase Focus is on implementation of the design: ◦ cumulative increase in functionality ◦ greater depth of implementation ◦ greater stability begins to appear ◦ analysis continues, but design and coding predominate Construction Phase The transition phase consists of the transfer of the system to the user community It includes shipping, installation, training, technical support and maintenance Development team begins to shrink Control is moved to maintenance team Alpha, Beta, and final releases Software updates Integration with existing systems (legacy, existing versions, etc.) Transition Phase CASE-Computer Aided Software Engineering Software engineering tools consisted solely of translators, compilers, assemblers, linkers, loaders, etc. – Computers weren’t powerful enough or advanced yet to support higher-level functioning In the early days… Software engineering often follows specific standardized methods There are lots of diagrams and documentation involved So now computers can be used to deal with the higher-level aspects of software engineering But now… What is a CASE Environment? ◦ CASE is the use of computer-based support in the software development process. What is a CASE Tool? ◦ A CASE tool is a computer-based product aimed at supporting one or more software engineering activities within a software development process. Computer Aided Software Engineering Supply basic functionality, do routine tasks automatically Enhance productivity ◦ Generate code pieces automatically Increase software quality Intuitive use Integration with other tools Goal of using CASE tools Project management softwares System design tools Code storage Compilers Translation tools Test software What could be called a CASE tool? Code generation tools (Visual Studio .NET) Code analysis (Borland Audits) Development of data models (UML editors) Cleaning up code (refactoring tools) Bug tracker Version control (CVS, etc.) But generally… CASE tools do more than just output code Can be used to generate SE documents ◦ ◦ ◦ ◦ ◦ Database schema Data flow diagrams Entity relationship diagrams Program specifications User documentation They do THAT? Tool type Examples Planning tools PERT tools, estimation tools, spreadsheets Editing tools Text editors, diagram editors, word processors Change management tools Requirement Traceability tools, change control systems Configuration management tools Version management systems, System building tools Prototyping tools Very high level language, user interface generator Language processing tools Compliers, interpreters Program analysis tools Cross reference generators, static analyzers, dynamic analyzers Testing tools Test data generators, file comparators Debugging tools Interactive debugging systems Documentation tools Pay layout programs, image editors Reengineering tools Cross-reference systems, program restructuring systems