We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 48
Unit 2
Introduction to Software Enginering
• In software development the art of programming is no longer sufficient to construct large programs. • Series problems in the cost, timeliness, maintenance, and quality of s/w • S/w engineering has the objective of solving this problems by producing good quality, maintainable s/w, on time with in budget.
Definition of s/w engineering.
A discipline whose aim is the production of quality s/w, s/w that is delivered on time , within budget and that’s satisfies its requirements. • Program Vs Software • Documentation manual • What is a software process • Software Characteristics: • The following are the characteristics of software: • Brief introduction about product and process • In software engineering, any software developed as per the requirements of the client is referred to as a product. In other words, a product is the outcome of a planned and controlled software project. • A software product consists of several entities such as requirement specifications, design and test documents, source code and user manuals. • What is a Process? • In software development, process is defined as a set of steps to be followed to develop a software product. It acts as a template that is used to direct the project. • Software Metrics • A software metric is a measure of software characteristics which are measurable or countable. Software metrics are valuable for many reasons, including measuring software performance, planning work items, measuring productivity, and many other uses.Within the software development process, many metrics are that are all connected. • Classification of Software Metrics • Software metrics can be classified into two types as follows: • 1. Product Metrics: These are the measures of various characteristics of the software product. The two important software characteristics are: 1.Size and complexity of software. 2.Quality and reliability of software. • 2. Process Metrics: These are the measures of various characteristics of the software development process. For example, the efficiency of fault detection. They are used to measure the characteristics of methods, techniques, and tools that are used for developing software. • Examples • of product metrics are size, reliability, complexity, functionality etc. Software Life Cycle Models • SDLC is a process that defines the various stages involved in the development of software for delivering a high-quality product. SDLC stages cover the complete life cycle of a software. • Software Development Life Cycle Models • A software life cycle model is a descriptive representation of the software development cycle. SDLC models might have a different approach but the basic phases and activity remain the same for all the models. • Build and fix model or ad hoc model • In the build and fix model (also referred to as an ad hoc model), the software is developed without any specification or design. An initial product is built, which is then repeatedly modified until it (software) satisfies the user. That is, the software is developed and delivered to the user. The user checks whether the desired functions ‘are present. If not, then the software is changed according to the needs by adding, modifying or deleting functions. • This model includes the following two phases. • Build: In this phase, the software code is developed and passed on to the next phase. • Fix: In this phase, the code developed in the build phase is made error free. Also, in addition to the corrections to the code, the code is modified according to the user’s requirements • Waterfall Model • Waterfall model is the simplest model of software development paradigm. It says the all the phases of SDLC will function one after another in linear manner. That is, when the first phase is finished then only the second phase will start and so on. • 1. Requirements analysis and specification phase: The aim of this phase is to understand the exact requirements of the customer and to document them properly. Both the customer and the software developer work together so as to document all the functions, performance, and interfacing requirement of the software. It describes the "what" of the system to be produced and not "how."In this phase, a large document called Software Requirement Specification (SRS) document is created which contained a detailed description of what the system will do in the common language. • During testing, the code is thoroughly examined and modified. Small modules are tested in isolation initially. After that these modules are tested by writing some overhead code to check the interaction between these modules and the flow of intermediate output. • 4. Integration and System Testing: This phase is highly crucial as the quality of the end product is determined by the effectiveness of the testing carried out. The better output will lead to satisfied customers, lower maintenance costs, and accurate results. Unit testing determines the efficiency of individual modules. However, in this phase, the modules are tested for their interactions with each other and with the system. • 5. Operation and maintenance phase: Maintenance is the task performed by every user once the software has been delivered to the customer, installed, and operational. • Advantages of the Waterfall Model: • Waterfall model is the simple model which can be easily understood and is the one in which all the phases are done step by step. • Deliverables of each phase are well defined, and this leads to no complexity and makes the project easily manageable. • Disadvantages of Waterfall model: • Waterfall model is time-consuming & cannot be used in the short duration projects as in this model a new phase cannot be started until the ongoing phase is completed. • Waterfall model cannot be used for the projects which have uncertain requirement or wherein the requirement keeps on changing as this model expects the requirement to be clear in the requirement gathering and analysis phase itself and any change in the later stages would lead to cost higher as the changes would be required in all the phases. • Increment Process Models Increment process models are effective in the situations where requirements are defined precisely and there is no confusion about the functionality of the final product. After every cycle, a usable product is given to the customer. For example, the university automation software, library automation module May be delivered in the first phase and examination automation module in the second phase and so on. Every new cycle will have an additional functionality. Increment process models are popular particularly when we have to quickly deliver a limited functionality system. Two types: 1) Iterative Enhancement Models 2)RAD model • Iterative Enhancement Models • This model has the same phases as the waterfall model, but with fewer restrictions. Generally the phases occur in the same order as in the waterfall model, but they may be conducted in several cycles. • A Usable product is released at the end of each cycle, with each release providing additional functionality. Customers and developers specify as many requirements as possible and prepare a SRS document. • Developers and customers then prioritize these requirements Developers implement the specified requirements in one or more cycles of design, implementation and test based on the defined priorities. • Advantages: • Results are obtained early and periodically. • Parallel development can be planned. • Progress can be measured. • Less costly to change the scope/requirements. • Disadvantages: • Not suitable for smaller projects. • Management complexity is more. • End of project may not be known which is a risk. • More resources may be required. • Rapid application development model (RAD) • 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. • A software project can be implemented using this model if the project can be broken down into small modules wherein each module can be assigned independently to separate teams. • These modules can finally be combined to form the final product. Development of each module involves the various basic steps as in the waterfall model i.e analyzing, designing, coding, and then testing, etc.
Requirements User description construction Cut over
planning • This model consists of 4 basic phases: 1.Requirements Planning – It involves the use of various techniques used in requirements elicitation like brainstorming, task analysis, form analysis, user scenarios, FAST (Facilitated Application Development Technique), etc. It also consists of the entire structured plan describing the critical data, methods to obtain it, and then processing it to form a final refined model. 2.User Description – This phase consists of taking user feedback and building the prototype using developer tools. In other words, it includes re-examination and validation of the data collected in the first phase. The dataset attributes are also identified and elucidated in this phase. 3.Construction – In this phase, refinement of the prototype and delivery takes place. It includes the actual use of powerful automated tools to transform process and data models into the final working product. All the required modifications and enhancements are too done in this phase. 4.Cutover – All the interfaces between the independent modules developed by separate teams have to be tested properly. The use of powerfully automated tools and subparts makes testing easier. This is followed by acceptance testing by the user. • The process involves building a rapid prototype, delivering it to the customer, and taking feedback. After validation by the customer, the SRS document is developed and the design is finalized. • 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. • 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. • Applications: 1.This model should be used for a system with known requirements and requiring a short development time. 2.It is also suitable for projects where requirements can be modularized and reusable components are also available for development. 3.The model can also be used when already existing system components can be used in developing a new system with minimum changes. • Evolutionary process model • Evolutionary process model in software engineering is also referred as the incremental model of software development. • This model is mainly used in Agile approach of software development. The whole product is developed in iterative and incremental manner. • In evolutionary process model software requirements are broken in several sub modules like M1, M2, M3……Mn. These sub modules are designed and developed in form of release. In first iteration module M1 is developed and delivered. • In second iteration module M2 is developed and integrated with module M1. • Now this increment M1+M2 is delivered to customer after second iteration. In the same way whole software is developed and in the end final software product is delivered to customer. • Advantage • Evolutionary process model is very helpful in building the large software product. • This model also provides a chance to user to experiment with a partially developed software much before the complete version of the system is delivered. It becomes easy for the developer to remove the bugs and defects in early stages of software development. • Evolutionary process model helps to accurately elicit user requirements during the delivery of different versions of the software. • In evolutionary model, this is easy to modify and add new functionality during the development of the software. • Evolutionary Model approach is Agile Approach for Software Development. • Disadvantages of Evolutionary Model • This is Difficult sometime to divide the problem into several modules in such a way that these would be acceptable by the customer and which can be implemented in incremental and iterative manner.
• Following are the evolutionary process models.
1. The prototyping model
2. The spiral model • Prototype Model • The prototype model requires that before carrying out the development of actual software, a working prototype of the system should be built. A prototype is a toy implementation of the system. • A prototype usually turns out to be a very crude version of the actual system, possible exhibiting limited functional capabilities, low reliability, and inefficient performance as compared to actual software. • In many instances, the client only has a general view of what is expected from the software product. In such a scenario where there is an absence of detailed information regarding the input to the system, the processing needs, and the output requirement, the prototyping model may be employed. • Steps of Prototype Model 1.Requirement Gathering and Analyst 2.Quick Decision 3.Build a Prototype 4.Assessment or User Evaluation 5.Prototype Refinement 6.Engineer Product •. • Prototyping Model has following six SDLC phases as follow: • Step 1: Requirements gathering and analysis • A prototyping model starts with requirement analysis. In this phase, the requirements of the system are defined in detail. During the process, the users of the system are interviewed to know what is their expectation from the system. • Step 2: Quick design • The second phase is a preliminary design or a quick design. In this stage, a simple design of the system is created. However, it is not a complete design. It gives a brief idea of the system to the user. The quick design helps in developing the prototype. • Step 3: Build a Prototype • In this phase, an actual prototype is designed based on the information gathered from quick design. It is a small working model of the required system. • Step 4: Initial user evaluation • In this stage, the proposed system is presented to the client for an initial evaluation. It helps to find out the strength and weakness of the working model. Comment and suggestion are collected from the customer and provided to the developer. • Step 5: Refining prototype • If the user is not happy with the current prototype, you need to refine the prototype according to the user’s feedback and suggestions. • This phase will not over until all the requirements specified by the user are met. Once the user is satisfied with the developed prototype, a final system is developed based on the approved final prototype. • Step 6: Implement Product and Maintain • Once the final system is developed based on the final prototype, it is thoroughly tested and deployed to production. The system undergoes routine maintenance for minimizing downtime and prevent large-scale failures. • Advantage of Prototype Model 1.Reduce the risk of incorrect user requirement 2.Good where requirement are changing/uncommitted 3.Regular visible process aids management 4.Support early product marketing 5.Reduce Maintenance cost. 6.Errors can be detected much earlier as the system is made side by side • Disadvantage of Prototype Model 1.An unstable/badly implemented prototype often becomes the final product. 2.Require extensive customer collaboration 1. Costs customer money 2. Needs committed customer 3. Difficult to finish if customer withdraw 4. May be too customer specific, no broad market 3.Difficult to know how long the project will last. 4.Easy to fall back into the code and fix without proper requirement analysis, design, customer evaluation, and feedback. 5.Prototyping tools are expensive. 6.Special tools & techniques are required to build a prototype. 7.It is a time-consuming process. Spiral Model • What is Spiral Model? • Spiral Model is a risk-driven software development process model. It is a combination of waterfall model and iterative model. • Spiral Model helps to adopt software development elements of multiple process models for the software project based on unique risk patterns ensuring efficient development process. • Each phase of spiral model in software engineering begins with a design goal and ends with the client reviewing the progress. The spiral model in software engineering was first mentioned by Barry Boehm in his 1986 paper. • The development process in Spiral model in SDLC, starts with a small set of requirement and goes through each development phase for those set of requirements. • The software engineering team adds functionality for the additional requirement in every-increasing spirals until the application is ready for the production phase. Spiral Model Phases
Spiral Model Phases Activities performed during phase
•It includes estimating the cost, schedule and
resources for the iteration. It also involves Planning understanding the system requirements for continuous communication between the system analyst and the customer
Risk Analysis •Identification of potential risk is done while risk
mitigation strategy is planned and finalized
Engineering •It includes testing, coding and deploying software at
the customer site
•Evaluation of software by the customer. Also, includes
Evaluation identifying and monitoring risks such as schedule slippage and cost overrun • When to use Spiral Model? • A Spiral model in software engineering is used when project is large • When releases are required to be frequent, spiral methodology is used • When creation of a prototype is applicable • When risk and costs evaluation is important • Spiral methodology is useful for medium to high-risk projects • When requirements are unclear and complex, Spiral model in SDLC is useful • When changes may require at any time • When long term project commitment is not feasible due to changes in economic priorities • Selection of life cycle model • Selection Process parameters plays an important role in software development as it helps to choose the best suitable software life cycle model. Following are the parameters which should be used to select a SDLC. • 1. Requirements characteristics : • Reliability of Requirements • How often the requirements can change • Types of requirements • Number of requirements • Can the requirements be defined at an early stage • Requirements indicate the complexity of the system • 2. Development team : • Team size • Experience of developers on similar type of projects • Level of understanding of user requirements by the developers • Environment • Domain knowledge of developers • Experience on technologies to be used • Availability of training • 3. User involvement in the project : • Expertise of user in project • Involvement of user in all phases of the project • Experience of user in similar project in the past • 4. Project type and associated risk : • Stability of funds • Tightness of project schedule • Availability of resources • Type of project • Size of the project • Expected duration for the completion of project • Complexity of the project • Level and the type of associated risk