Introduction to Software Engineering - Software Process Models - CMPICA PDF
Document Details

Uploaded by CleanerHeliotrope744
Ms. Kritika Pandey
Tags
Summary
This document provides an introduction to software engineering, covering key concepts such as software process models, including the waterfall model, V-model, and Agile development methodologies, along with the advantages and disadvantages of each. The material also touches on topics such as API's, REST API's, and the different types of software.
Full Transcript
UNIT-1 Introduction to Software and Software Engineering A Layered Technology/software process layers Software Process Models, The Linear Sequential Model,...
UNIT-1 Introduction to Software and Software Engineering A Layered Technology/software process layers Software Process Models, The Linear Sequential Model, The Prototyping Model, Evolutionary Process Models Introduction to software process: Generic process framework activities, Umbrella activities. Prepared by : Ms. Kritika Pandey 1 Prepared by : Ms. Kritika Pandey 2 What is Software Engineering? Software engineering is a combination of two terms: software and engineering. So the very first question that strikes our minds is, What is software? Software is a program or set of programs containing instructions that provide the desired functionality. Then the next question is: What is engineering? Engineering is the process of designing and building something that serves a particular purpose and finds a cost-effective solution to problems. Prepared by : Ms. Kritika Pandey 3 Types of Software Bare Prepared by : Ms. Kritika Pandey 4 Differentiate between API’s and Rest API’s API is a broader term, whereas REST API is a specific sort of API found in mobile and cloud apps. While SOAP/XML based web services require special knowledge about XML parsing which is not easily available across all platforms (except Java). RESTAPI’s REST APIs are lightweight and simple to implement compared to other types of API. REST is based on the HTTP protocol which makes it easy to understand and implement by developers across platforms like iOS, Android, Windows Phone etc. Prepared by : Ms. Kritika Pandey 5 Prepared by : Ms. Kritika Pandey 6 Software Engineering is the process of designing, developing, testing, and maintaining software. It is a systematic and disciplined approach to software development that aims to create high-quality, reliable, and maintainable software. Software engineering includes a variety of techniques, tools, and methodologies, including requirements analysis, design, testing, and maintenance. Prepared by : Ms. Kritika Pandey 7 A Layered Technology/software process layers Prepared by : Ms. Kritika Pandey 8 1. A quality focus: It defines the continuous process improvement principles of software. It provides integrity that means providing security to the software so that data can be accessed by only an authorized person, no outsider can access the data. It also focuses on maintainability and usability. Prepared by : Ms. Kritika Pandey 9 Process activities are listed below:- Communication Planning Modelling Construction Deployment Prepared by : Ms. Kritika Pandey 10 2. Process: It is the foundation of software engineering. It is key that binds all the layers together which enables the development of software before the deadline or on time. Process defines a framework that must be established for the effective delivery of software engineering technology. The software process covers all the activities, actions, and tasks required to be carried out for software development. Prepared by : Ms. Kritika Pandey 11 Prepared by : Ms. Kritika Pandey 12 3. Method: During the process of software development the answers to all “how-to-do” questions are given by method. It has the information of all the tasks which includes communication, requirement analysis, design modeling, program construction, testing, and support. 4. Tools: Software engineering tools provide a self - operating system for processes and methods. Tools are integrated which means information created by one tool can be used by another. Prepared by : Ms. Kritika Pandey 13 Software Process Models Prepared by : Ms. Kritika Pandey 14 Software processes are the activities for designing, implementing, and testing a software system. The software development process is complicated and involves a lot more than technical knowledge. A software process model is an abstract representation of the development process. Prepared by : Ms. Kritika Pandey 15 A model will define the following: The tasks to be performed The input and output of each task The pre and post conditions for each task The flow and sequence of each task Prepared by : Ms. Kritika Pandey 16 Prepared by : Ms. Kritika Pandey 17 Software Process and Software Development Lifecycle Model: Waterfall model V model Incremental model RAD model Agile model Iterative model Spiral model Prototype model Prepared by : Ms. Kritika Pandey 18 The waterfall model is a breakdown of project activities into linear sequential phases, where each phase depends on the deliverables of the previous one and corresponds to a specialization of tasks. Prepared by : Ms. Kritika Pandey 19 Advantages and Disadvantages of Waterfall Model Advantages Dis-Advantages Before the next phase of development, each Error can be fixed only during the phase phase must be completed Suited for smaller projects where It is not desirable for complex project where requirements are well defined requirement changes frequently Elaborate documentation is done at every Documentation occupies a lot of time of phase of the software’s development cycle developers and testers Project is completely dependent on project Clients valuable feedback cannot be included team with minimum client intervention with ongoing development phase Prepared by : Ms. Kritika Pandey 20 V-model The V-model represents a development process that may be considered an extension of the waterfall model. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. V-Model also referred to as the Verification and Validation Model. Prepared by : Ms. Kritika Pandey 21 Prepared by : Ms. Kritika Pandey 22 Verification Validation Verification is the static process of Validation is the dynamic process of analyzing documents, visual designs, checking the correct is being built for the computer programs, and codes. user. It is done by the testers. It is done by the product team. The execution of codes is not included in The execution of codes is included in the the verification. validation. Verification is done before the validation. Validation is done after the verification. Verification checks "Are we building the Validation checks "Are we building the right product right"? product"? Verification targets internal aspects such as Validation targets the end product that is design. ready to be deployed. It is used to prevent errors. It is used to detect errors. Verification testing includes Quality Validation testing includes Quality Control. Assurance. Prepared by : Ms. Kritika Pandey 23 The usage of V-Model Projects initiated from a request for proposals (RFPs), the customer has a very clear documented requirements Military projects Mission Critical projects Projects with defined and clear requirements Prepared by : Ms. Kritika Pandey 24 V-Model Model Advantages Simple and easy to use. Each phase has specific deliverables. Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle. Works well for where requirements are easily understood. V-Model Improves the quality and reliability of the software. It reduces the amount of re-work because of the early detection of defects and issues. Prepared by : Ms. Kritika Pandey 25 V-Model Model Disadvantages Very inflexible, like the waterfall model. Adjusting scope is difficult and expensive. The software is developed during the implementation phase, so no early prototypes of the software are produced. Moreover, It is costly and required more time, in addition to a detailed plan. Prepared by : Ms. Kritika Pandey 26 Incremental model Prepared by : Ms. Kritika Pandey 27 The incremental build model is a method of software development where the model is designed, implemented and tested incrementally (a little more is added each time) until the product is finished. It involves both development and maintenance. This model combines the elements of the waterfall model with the iterative philosophy of prototyping. Prepared by : Ms. Kritika Pandey 28 Advantages of using Incremental process model : It is good to use when requirements are known up-front. It is good to use when projects having lengthy developments schedules. It is good to use when projects uses new Technology. It is good to use when Funding Schedule, Risk, Program Complexity, or It is more flexible and less costly to change scope and requirements. It is easy to manage each iteration. Need for early realization of benefits. Prepared by : Ms. Kritika Pandey 29 Disadvantages of using Incremental process model : It requires a good planning designing. It is costlier than waterfall model. Definition of system should be complete and clear. Prepared by : Ms. Kritika Pandey 30 Iterative Model An iterative life cycle model does not attempt to start with a full specification of requirements by first focusing on an initial, simplified set user features, which then progressively gains more complexity and a broader set of features until the targeted system is complete. Major requirements must be defined; however, some functionalities or requested enhancements may evolve with time. When adopting the iterative approach, the philosophy of incremental development will also often be used liberally and interchangeably. Prepared by : Ms. Kritika Pandey 31 Prepared by : Ms. Kritika Pandey 32 Advantages of Iterative Model: It is efficiently versatile to the forever changeable requirements of the project as well as the customer. In iterative model less time is spent on documenting and more time is given for designing. Hazards are recognized and fixed through iteration, and every iteration can be simply handled. Prepared by : Ms. Kritika Pandey 33 Disadvantages of Iterative Model: More Resources may be required. Design can be changed again and again because of imperfect requirements. Requirement changes can cause over budget. Project completion date not confirmed because of changing requirements. It is not suitable for smaller projects. Prepared by : Ms. Kritika Pandey 34 Prepared by : Ms. Kritika Pandey 35 Spiral model A spiral model looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. This model supports risk handling, and the project is delivered in loops. Each loop of the spiral is called a Phase of the software development process. The exact number of phases needed to develop the product can be varied by the project manager depending upon the project risks. Prepared by : Ms. Kritika Pandey 36 Prepared by : Ms. Kritika Pandey 37 Advantages of Spiral Model: Software is produced early in the software life cycle. Risk handling is one of important advantages of the Spiral model, it is best development model to follow due to the risk analysis and risk handling at every phase. It is good for large and complex projects. Strong approval and documentation control. It is suitable for high risk projects, where business needs may be unstable. A highly customized product can be developed using this. Prepared by : Ms. Kritika Pandey 38 Disadvantages of Spiral Model: It is not suitable for small projects as it is expensive. It is much more complex than other SDLC models. Process is complex. Too much dependable on Risk Analysis and requires highly specific expertise. Difficulty in time management. As the number of phases is unknown at the start of the project, so time estimation is very difficult. Prepared by : Ms. Kritika Pandey 39 Model/Feature Waterfall Spiral Incremental/ Iterative Specification of All the Yes Not all and Not all and Frequently Changed Requirements in the Frequently Changed beginning Long term project Inappropriate Appropriate Appropriate Complex Project Inappropriate Appropriate Appropriate Frequently Changed Inappropriate Appropriate Appropriate Requirements Cost Not costly Costly Costly Cost estimation Easy to estimate Difficult Difficult flexibility Not Flexible Flexible Simplicity Simple Intermediate Intermediate Supporting high risk Inappropriate Appropriate Appropriate projects Guarantee of Success Less High High Customer Involvement Low Low, After Each High, After Each Iteration Iteration Testing Late At the end of each After every Iteration phase Maintenance Least maintainable Maintainable Maintainable Ease of Implementation Easy Complex Easy Prepared by : Ms. Kritika Pandey 40 RAD model The Rapid Application Development Model was first proposed by IBM in the 1980s. The critical feature of this model is the use of powerful development tools and techniques. RAD is an incremental prototyping approach to software development that end users can produce better feedback when examining a live system, as opposed to working strictly with documentation. It puts less emphasis on planning and more emphasis on an adaptive process. Prepared by : Ms. Kritika Pandey 41 Prepared by : Ms. Kritika Pandey 42 Prepared by : Ms. Kritika Pandey 43 Advantages: The use of reusable components helps to reduce the cycle time of the project. Feedback from the customer is available at the initial stages. Reduced costs as fewer developers are required. The use of powerful development tools results in better quality products in comparatively shorter time spans. The progress and development of the project can be measured through the various stages. It is easier to accommodate changing requirements due to the short iteration time spans. Prepared by : Ms. Kritika Pandey 44 Disadvantages: The use of powerful and efficient tools requires highly skilled professionals. The absence of reusable components can lead to the failure of the project. The team leader must work closely with the developers and customers to close the project in time. The systems which cannot be modularized suitably cannot use this model. Customer involvement is required throughout the life cycle. It is not meant for small-scale projects as in such cases, the cost of using automated tools and techniques may exceed the entire budget of the project. Prepared by : Ms. Kritika Pandey 45 RAD MODEL SPIRAL MODEL RAD model is used between large Spiral model is used for large and medium project. project. Spiral model is a software RAD model is a software There is low amount risk in RAD There is medium to high amount development model and is development model where by model. risk in spiral model. made with features of the components or functions are incremental, waterfall or In RAD model small team size is In spiral model large team is developed in parallel as if they evolutionary prototyping required. required. were mini projects. models. Flexibility to change in RAD Flexibility to change in spiral model is Easy. model is not that difficult. Rapid development is its main High assurance is its main In RAD model overlapping of In spiral model overlapping of objective. objective. phases is possible. phases is not possible. RAD model requirements and Testing is done in RAD model Testing is done in spiral model at Spiral model requirements and after completion of coding. the end of the engineering phase. early stage planning is not early stage planning is required. necessary. Cost of spiral model is very Cost of RAD model is Low. expensive. It is necessary to have detailed Customer involvement is only at Customer involvement is high as Detailed documentation is the beginning. compared to RAD model. documentation but in a limited required. manner. RAD model is having easy Spiral model has typical maintenance. maintenance. Requirements are specified as Requirements are specified in Reusability is possible to some It offers reusability. time boxed release manner. the beginning. extent. Prepared by : Ms. Kritika Pandey 46 Agile Model The agile methodology is the opposite of the waterfall approach. Rather than treating requirements, design, and testing as large sequential steps, an agile model makes them all ongoing processes that require involvement from developers, management, and customers. Work is typically broken into 2-4 week segments known as “sprints,” in which the responsible teams tackle the major needs of their customers and perform testing as they go. Agile tends to work well in small organizations, especially startups, where speed and flexibility is essential. Prepared by : Ms. Kritika Pandey 47 Advantages of Agile Methodology : The customers are satisfied because after every Sprint working feature of the software is delivered to them. In Agile methodology the daily interactions are required between the business people and the developers. In this methodology attention is paid to the good design of the product. Changes in the requirements are accepted even in the later stages of the development. Prepared by : Ms. Kritika Pandey 48 Disadvantages of the Agile Methodology : In Agile methodology the documentation is less. Sometimes in Agile methodology the requirement is not very clear hence it’s difficult to predict the expected result. For complex projects, the resource requirement and effort are difficult to estimate. Prepared by : Ms. Kritika Pandey 49 What is Prototyping Prototyping is an experimental process where design teams implement ideas into tangible forms from paper to digital. This model is used when the customers do not know the exact project requirements beforehand. Prototyping is defined as the process of developing a working replication of a product or system that has to be engineered. In this model, a prototype of the end product is first developed, tested, and refined as per customer feedback repeatedly till a final acceptable prototype is achieved which forms the basis for developing the final product. Prepared by : Ms. Kritika Pandey 50 The Prototyping Model Prepared by : Ms. Kritika Pandey 51 The Prototyping Model is one of the most popularly used Software Development Life Cycle Models (SDLC models). This model is used when the customers do not know the exact project requirements beforehand. In this model, a prototype of the end product is first developed, tested and refined as per customer feedback repeatedly till a final acceptable prototype is achieved which forms the basis for developing the final product. Prepared by : Ms. Kritika Pandey 52 Advantages : It can be reused by the developer for more complicated projects in the future. It ensures a greater level of customer satisfaction and comfort. It helps developers and users both understand the system better. Prepared by : Ms. Kritika Pandey 53 Disadvantages: This model is costly. It has poor documentation because of continuously changing customer requirements. There may be too much variation in requirements. Customers sometimes demand the actual product to be delivered soon after seeing an early prototype. Prepared by : Ms. Kritika Pandey 54 Prototype Model RAD Model A prototype model is a software RAD model is a software development development model where a prototype is model where by the components or built, tested and then refined as per functions are developed in parallel as if they customer needs. were mini projects. Phases- 1. Requirement Analysis Phases- 2. Quick Design 1. Business Modelling 3. Build Prototype 2. Data Modelling 4. User Evaluation 3. Process Modelling 5. Refining Prototype 4. Application Generation 6. Implement and Maintain 5. Testing and Turnover In this, quick initial reviews are not possible. In this, quick initial reviews are possible. It does not support automatic code It supports automatic code generation as. generation. results in minimal code writing. In this user involvement is high. In this user Involvement is only at the beginning. Prepared by : Ms. Kritika Pandey 55 Prototype Model RAD Model End-Product cannot be developed in less End-Product can be developed in less time. time. In case of high interaction requirement If system modularization is possible for its like in online platforms and web delivery in incremental manner. interfaces from the end-users. If sufficient budget is available for automated code generation. When programmers are novice to the Availability of designers for modelling field. Expertise available with respect to domain possessing relevant and requisite Whenever end-user input in terms of knowledge In case of changing feedback on the system is required. requirements during the project. Prepared by : Ms. Kritika Pandey 56 Evolutionary Model Evolutionary model is a combination of Iterative and Incremental model of software development life cycle. Delivering your system in a big bang release, delivering it in incremental process over time is the action done in this model. Prepared by : Ms. Kritika Pandey 57 Prepared by : Ms. Kritika Pandey 58 It is better for software products that have their feature sets redefined during development because of user feedback and other factors. The Evolutionary development model divides the development cycle into smaller, incremental waterfall models in which users are able to get access to the product at the end of each cycle. Evolutionary model suggests breaking down of work into smaller chunks, prioritizing them and then delivering those chunks to the customer one by one. The number of chunks is huge and is the number of deliveries made to the customer. Prepared by : Ms. Kritika Pandey 59 Advantages: The big advantage of the evolutionary model is that the user has checked every stage during the development and it is helpful in achieving customer confidence. There are fewer chances of errors because all the modules are well seen. It helps to reduce the risk of software projects. It also reduces the cost of development. Minimize serious problems during testing. Prepared by : Ms. Kritika Pandey 60 Disadvantages: The delivery of full software can be late due to different changes by customers during development. It is difficult to divide the problem into several parts, that would be acceptable to the customer which can be incrementally implemented and delivered. Prepared by : Ms. Kritika Pandey 61 Software Engineering | Software Process Framework Tasks – focus on a small, specific objective. Action – set of tasks that produce a major work product. Activities – group of related tasks and actions for a major objective. Umbrella activities: Umbrella Activities are that take place during a software development process for improved project management and tracking. Prepared by : Ms. Kritika Pandey 62 Umbrella activities: Software project tracking and control: This is an activity in which the team can assess progress and take corrective action to maintain the schedule. Take action to keep the project on time by comparing the project’s progress against the plan. Risk management: The risks that may affect project outcomes or quality can be analyzed. Analyze potential risks that may have an impact on the software product’s quality and outcome. Software quality assurance: These are activities required to maintain software quality. Perform actions to ensure the product’s quality. Formal technical reviews: It is required to assess engineering work products to uncover and remove errors before they propagate to the next activity. At each level of the process, errors are evaluated and fixed. Prepared by : Ms. Kritika Pandey 63 Software configuration management: Managing of configuration process when any change in the software occurs. Work product preparation and production: The activities to create models, documents, logs, forms, and lists are carried out. Reusability management: It defines criteria for work product reuse. Reusable work items should be backed up, and reusable software components should be achieved. Measurement: In this activity, the process can be defined and collected. Also, project and product measures are used to assist the software team in delivering the required software. Prepared by : Ms. Kritika Pandey 64 Prepared by : Ms. Kritika Pandey 65 Prepared by : Ms. Kritika Pandey 66 Prepared by : Ms. Kritika Pandey 67