A set of processes, structured to be applied to develop a software projects, in order to produce a product or service, which meets customer expectations and gain customer Satisfaction, Gladness and Ecstasy. Lifecycle Methodology
Lifecycle Principles Instantiate each process and execute activities Instantiate each process and execute activities Instantiate each process and execute activities <ul><li>Software lifecycle </li></ul><ul><li>Software Process </li></ul><ul><li>Software Development Process </li></ul>Process is a group of Activities or Tasks Process is a group of Activities or Tasks Process-modle like a class is a group of Activities and Tasks <ul><li>Process-models </li></ul><ul><li>Like a class </li></ul><ul><li>Descriptive </li></ul><ul><li>Perspective </li></ul><ul><li>Explanatory </li></ul>Activity has deliverables <ul><li>All of them are the same </li></ul><ul><li>The lifecycle composed of a group of processes </li></ul><ul><li>Each Process composed of group of Activities </li></ul><ul><li>Each Activity composed of a group of tasks </li></ul><ul><li>Each Activity has a group of deliverables </li></ul>Instantiate each process and execute activities <ul><li>The process-model is a description at the level of type </li></ul><ul><li>The process-model is to prescribe how things must/should/could be done </li></ul><ul><li>The process-model is roughly what the process will look like. </li></ul><ul><li>The process is an instantiation of the process-model </li></ul><ul><li>The process is really what happen </li></ul>
Lifecycle Models vs. Lifecycle Standardization ISO 9001 (ISO 12207) + Defined, Understood and matured by CMMI Organization QMS Quality Management System Org. Level Lifecycle Tailored Lifecycle for each project <ul><li>Waterfall (SDLC) </li></ul><ul><li>Prototyping </li></ul><ul><li>Iterative </li></ul><ul><li>Spiral </li></ul><ul><li>Chaos </li></ul><ul><li>RAD Rapid Application Development </li></ul><ul><li>Component Assembly </li></ul><ul><li>RUP </li></ul><ul><li>EUP </li></ul><ul><li>XP </li></ul><ul><li>Scrum </li></ul>Software
Organization Eagle View of using Methodologies ISO Is it engaged in a paper based system? Does it have all the standard processes? CMMI Is it mature enough? Does it define Processes well enough to be understood? Does it reach to the goals of each key process area? Project Management Does it have the Knowledge, Techniques, Tools and Skills to be applied on diverse activities of the project? Lifecycle model Does it run the project activities within a certain lifecycle that results in a Customer Ecstasy, Gladness or Satisfaction?
ISO 9000 does not guarantee the compliance (and therefore the quality) of the final product. It just certifies that a consistent business processes are being applied. ISO 9001 is one of the standards in the ISO 9000 family ISO9001 does not guarantee that the company delivers superior or even decent quality ISO 9001 certifies that the company engaged internally in a paperwork that was prescribed by the standard ISO 12207 is the standard of the software lifecycle processes Compliance with ISO9001 for the software sector and its special problem of defining a lifecycle There are 23 Processes, 95 Activities, 325 Tasks and 224 Outcomes 3 types of processes (Basic, Support & Organizational) Primary life cycle processes : -Acquisition process -Supply process -Development process -Operation process -Maintenance process Supporting life cycle processes: -Audit process -Configuration Management -Joint review process -Documentation process -Quality assurance process -Problem solving process -Verification process -Validation process Organizational processes: -Management process -Infrastructure process -Improvement process -Training process ISO Overview
Activities Initiation System, Business and needs ISO 12207 Acquisition process Request for proposal Contract milestones and supplier auditing Prepare contract Supply or develop. Negotiate changes Update contract Supplier monitoring Acceptance and completion Define acceptance criteria Conduct configuration management
Activities Define Software requirement ISO 12207 Development process Create High Level Design Create Module Design Coding Execute Module Test Execute Integration Test Execute System Test
Today there exist many process libraries for software development . As example, we have MSF (Microsoft Framework), RUP (Rational Unified Process), and OpenUP (Open Unified Process). Most of the process libraries are augmented by process editing tools and process support tools. Process Editing Tools: One of the common problems of process definition is inconsistencies and hence errors. Process editing tools make editing visual, structured and consistent. EPF (Eclipse Process Framework), Rational Method composer are a famous examples. Process Support Tools: MSF is supported by TFS. A sophisticated and integrated solution for software teams to collaborate and organize their work. RUP also come with many of Rational sophisticated tools such as Rational Requisite Pro to manage requirements, Rational ClearCase for version control. EPF as an open source can be supported by many open source tools such as OSRT for requirements management and Subversion for configuration management. Process support tools manage the work items greatly and can easily provide detailed reporting and statistics, however it requires a steep learning curve and formal training. Reference: http://ahm507.blogspot.com/2008/02/openup-and-eclipse-process-framework.html Microsoft Team System Lifecycle Libraries/Frameworks Open Unified Process Rational Unified Process + RUP
Waterfall Model This is also known as Classic Life Cycle Model (or) Linear Sequential Model (or) Waterfall Method. This model has the following activities. Business (user perspective) View Feasibility (ability to be done) Study client/server technology, the number of tiers needed for the package architecture, the database design, the data structure design etc... are all defined in this phase. The software should be developed to accommodate changes that could happen during the post implementation period
Prototyping Model This is a cyclic version of the linear model. In this model, once the requirement analysis is done and the design for a prototype is made, the development process gets started. Once the prototype is created, it is given to the customer for evaluation. The 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 . This is the most popular development model in the contemporary IT industry. Most of the successful software products have been developed using this model - as it is very difficult (even for a whiz kid!) to comprehend all the requirements of a customer in one shot. There are many variations of this model skewed with respect to the project management styles of the companies. New versions of a software product evolve as a result of prototyping.
RAD - Rapid Application Development Model The RAD model is a linear sequential software development process that emphasizes an extremely short development cycle. The RAD model is a "high speed" adaptation of the linear sequential model in which rapid development is achieved by using a component-based construction approach. 1. Business modeling The 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? 2. Data modeling The information flow defined as part of the business modeling phase is refined into a set of data objects that are needed to support the business. The characteristic (called attributes) of each object is identified and the relationships between these objects are defined. 3. Process modeling The 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. 4. Application generation The RAD model assumes the use of the RAD tools like VB, VC++, Delphi etc... rather than creating software using conventional third generation programming languages. The RAD model works 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. 5. Testing and turnover Since the RAD process emphasizes reuse, many of the program components have already been tested. This minimizes the testing and development time.
Component Assembly Model Object technologies provide the technical framework for a component-based process model for software engineering. The object oriented paradigm emphasizes the creation of classes that encapsulate both data and the algorithm that are used to manipulate the data. If properly designed and implemented, object oriented classes are reusable across different applications and computer based system architectures. Component Assembly Model leads to software reusability. The integration/assembly of the already existing software components accelerate the development process. Nowadays many component libraries are available on the Internet. If the right components are chosen, the integration aspect is made much simpler.
<ul><li>The spiral model, also known as the spiral lifecycle model, is a systems development method (SDM) used in information technology (IT). This model of development combines the features of the prototyping model and the waterfall model . The spiral model is intended for large, expensive, and complicated projects. </li></ul><ul><li>The steps in the spiral model can be generalized as follows: </li></ul><ul><li>The new system requirements are defined in as much detail as possible. This usually involves interviewing a number of users representing all the external or internal users and other aspects of the existing system. </li></ul><ul><li>A preliminary design is created for the new system. </li></ul><ul><li>A first prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the characteristics of the final product. </li></ul><ul><li>A second prototype is evolved by a fourfold procedure: </li></ul><ul><ul><li>evaluating the first prototype in terms of its strengths, weaknesses, and risks; </li></ul></ul><ul><ul><li>defining the requirements of the second prototype; </li></ul></ul><ul><ul><li>planning and designing the second prototype; </li></ul></ul><ul><ul><li>constructing and testing the second prototype. </li></ul></ul><ul><li>At the customer's option, the entire project can be aborted if the risk is deemed too great. Risk factors might involve development cost overruns, operating-cost miscalculation, or any other factor that could, in the customer's judgment, result in a less-than-satisfactory final product. </li></ul><ul><li>The existing prototype is evaluated in the same manner as was the previous prototype, and, if necessary, another prototype is developed from it according to the fourfold procedure outlined above. </li></ul><ul><li>The preceding steps are iterated until the customer is satisfied that the refined prototype represents the final product desired. </li></ul><ul><li>The final system is constructed, based on the refined prototype. </li></ul><ul><li>The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime. </li></ul>Spiral Model
<ul><li>The project is divided in four phases: inception, elaboration, construction and transition. In each phase are used one or more disciplines. The phase are divided in least one iteration. The number of iterations depends of the complexity and risk of the project. The major risks are attacked more early possible, in first iterations. </li></ul><ul><li>The RUP Phases are: </li></ul><ul><li>Inception phase : are defined the objectives, initial requirements and scope of the project. </li></ul><ul><li>Elaboration phase : the requisites are refined and completed. The architect design software solutions to the requisites (functional solution) </li></ul><ul><li>Construction phase : software solution is constructed by developers. </li></ul><ul><li>Transition phase : the components are deployed and users are trained </li></ul><ul><li>The RUP Disciplines are: </li></ul><ul><li>Business Modeling : maps the company business witch relates to the project. More used in large or complex projects. </li></ul><ul><li>Requirements : collect requisites of the key users. </li></ul><ul><li>Analysis & Design : design the software requisites in UML models </li></ul><ul><li>Implementation : implements the software solution in software components and database components </li></ul><ul><li>Test : test the constructed components </li></ul><ul><li>Deployment : install components and train users in your use </li></ul><ul><li>Configuration & Change Management : maintain and manage the artifacts produced by the software team </li></ul><ul><li>Project Management : manage, plan and distribute activities of the team, focusing in quality, schedule, budget and risk attack. </li></ul><ul><li>Environment : maintain tools configuration and environment aspects in order to the development team. </li></ul>RUP
EUP – Enterprise Unified Process Tailor RUP prior of tailoring EUP The EUP is an extension to the RUP. The figure depicts the EUP lifecycle. People familiar with RUP can see that the extensions include two new phases, Production and Retirement, and several new disciplines: Operations and Support and the seven enterprise disciplines (Enterprise Business Modeling, Portfolio Management, Enterprise Architecture, Strategic Reuse, People Management, Enterprise Administration, and Software Process Improvement).