Presentation on SOFTWARE ENGINEERING(17513) Course Code:- CM5G Subject Teacher :- Mr. Shailesh D. Patre Dept :- Computer Technology G. H. Raisoni polytechnic college, Nagpur 1 Lecture-01 UNIT : 01 Overview Of Software Engineering And The Software Development Process 2 Introduction to Software Engineering What is Software? The product that software professionals build and then support over the long term. Software encompasses: (1) instructions (computer programs) that when executed provide desired features, function, and performance; (2) data structures that enable the programs to adequately store and manipulate information and (3) documentation that describes the operation and use of the programs. Software products Generic products Stand-alone systems that are marketed and sold to any customer who wishes to buy them. Examples – PC software such as editing, graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists. Customized products Software that is commissioned by a specific customer to meet their own needs. Examples – embedded control systems, air traffic control software, traffic monitoring systems. 3 Characteristics /Features of Software? Its characteristics that make it different from other things human being build. Features of such logical system: Software is developed or engineered, it is not manufactured in the classical sense which has quality problem. Software doesn't "wear out.” but it deteriorates (due to change). Hardware has bathtub curve of failure rate ( high failure rate in the beginning, then drop to steady state, then cumulative effects of dust, vibration, abuse occurs). Although the industry is moving toward component-based construction (e.g. standard screws and off-the-shelf integrated circuits), most software continues to be custom-built. Modern reusable components encapsulate data and processing into software parts to be reused by different programs. E.g. graphical user interface, window, pull-down menus in library etc. 4 Go to Question Types / Categories / Changing nature of Software 1. System software: such as compilers, editors, file management utilities 2. Application software: stand-alone programs for specific needs. 3. Engineering/scientific software: Characterized by “number crunching”algorithms. such as automotive stress analysis, molecular biology, orbital dynamics etc 4. Embedded software: resides within a product or system. (key pad control of a microwave oven, digital function of dashboard display in a car) 5. Product-line software: focus on a limited marketplace to address mass consumer market. (word processing, graphics, database management) 6. Web Application software: network centric software. As web 2.0 emerges, more sophisticated computing environments is supported integrated with remote database and business applications. 7. Artficial Intelligence: software uses non-numerical algorithm to solve complex problem. Robotics, expert system, pattern recognition game playing 5 Go to Question Essential attributes of good software 6 Product characteristic Description Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment. Dependability and security Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system. Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc. Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use. Software Engineering - A Layered Technology Lecture-02 tools methods process model a “quality” focus 7 Any engineering approach must rest on organizational commitment to quality which fosters a continuous process improvement culture. Process layer as the foundation defines a framework with activities for effective delivery of software engineering technology. Establish the context where products (model, data, report, and forms) are produced, milestone are established, quality is ensured and change is managed. Method provides technical how-to’s for building software. It encompasses many tasks including communication, requirement analysis, design modeling, program construction, testing and support. Tools provide automated or semi-automated support for the process and methods. Software Process Communication: communicate with customer to understand objectives and gather requirements. Planning: creates a “map” defines the work by describing the tasks, risks and resources, work products and work schedule. Modeling: Create a “sketch”, what it looks like architecturally, how the constituent parts fit together and other characteristics. Construction: code generation and the testing. Deployment: Delivered to the customer who evaluates the products and provides feedback based on the evaluation. These five framework activities can be used to all software development regardless of the application domain, size of the project, complexity of the efforts etc, though the details will be different in each case. For many software projects, these framework activities are applied iteratively as a project progresses. Each iteration produces a software increment that provides a subset of overall software features and functionality. 8 Go to Question Activities of a Generic Process framework Lecture-03 Process framework A common process framework is estsblished by defing a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. Umbrella activities are independent of any one framework activity and occur through the process. Framework activities A common process framework is established by defining a small number of framework activities. Software process framework can be used to all software projects. It consist of a number of task sets. Each set is a collection of software engineer work tasks, project milestone, work product and quality assurance points. 9 Go to Question Umbrella Activities Complement the five process framework activities and help team manage and control progress, quality, change, and risk. Software project tracking and control: assess progress against the plan and take actions to maintain the schedule. Risk management: assesses risks that may affect the outcome and quality. Software quality assurance: defines and conduct activities to ensure quality. Technical reviews: assesses work products to uncover and remove errors before going to the next activity. Measurement: define and collects process, project, and product measures to ensure stakeholder’s needs are met. Software configuration management: manage the effects of change throughout the software process. Reusability management: defines criteria for work product reuse and establishes mechanism to achieve reusable components. Work product preparation and production: create work products such as models, 10 documents, logs, forms and lists. Software Process framework Software Process Process framework Umbrella Activity Framework Activity #1 Task-1 Set-1 Software Engineering Action #1 Task-N Set-N Framework Activity #N Task-1 Set-1 Software Engineering Action #N Task-N 11 Set-N Lecture-04 Personal and Team process model Personal and team process model are required while developing software process. These model are useful to significant adaption to meet the requirement of the project team. In the given model team itself will design its own process, and simultaneously meet very small need and the broader requirement of the organization. t is said that it is possible to create a personal software process and or a team software process. to develop these both type of processes, coordination and hard work training is required. These both help a lot and contribute significantly in successful software development process. 12 Personal Software Process (PSP) The PSP process is designed for individual use. It helps you and your organization meet the increasing demands for high quality and timely software. As a software professional, you are responsible for your personal process. You should measure, track, and analyze your work. You should learn from your performance variations. You should incorporate lessons learned into your personal practices. The quality of a software component is governed by the individual who developed The key to quality is the individual developer’s skill, commitment, and personal process discipline. 13 Go to Question Activities defined in PSP With this PSP makes the practitioner get actually involve and make responsible for project planning. The main goal of PSP is personal measurement of both the work product that is produced and the resultant quality of that work product. There are five framework activities are defined in PSP Planning High level design High level design review Development Postmortem 14 Team Software Process (TSP) The team should be self-directed team that can plan and track their own work, establish their own goals and their own process and plans. The TSP builds and guides cross-functional teams. It provides – a defined team building process – a team working framework – a supportive management environment It includes – a full set of process forms, scripts, and standards – standard team-member roles – a structured launch and tracking process – a team and engineer support system 15 Go to Question Activities defined in PSP Requirements •TSP projects can start on any phase. •The strategy is to – overlap phases – develop in increments – balance team workload – accelerate tasks wherever possible High-Level Design Implementation Integration and Test Postmortem 16 Adapting a Process Model Lecture-05 Prescriptive and Agile Process Models The prescriptive process models stress detailed definition, identification, and application of process activates and tasks. Intent is to improve system quality, make projects more manageable, make delivery dates and costs more predictable, and guide teams of software engineers as they perform the work required to build a system. Unfortunately, there have been times when these objectives were not achieved. If prescriptive models are applied dogmatically and without adaptation, they can increase the level of bureaucracy. e.g. Waterfall model, Incremental model, RAD model, spiral model, prototyping. Agile process models emphasize project “agility” and follow a set of principles that lead to a more informal approach to software process. It emphasizes maneuverability and adaptability. It is particularly useful when Web applications are engineered. 17 Waterfall Model It is the oldest paradigm for Software Engineering. When requirements are well defined and reasonably stable, it leads to a linear fashion. In some respect, waterfall is the ”common sense” approach introduced by Royce 1970. The classic life cycle suggests a systematic, sequential approach to software development. This process begins with customer specification of requirement and progress through different activities like planning, modeling, construction and deployment and ends in complete software product. A variation of waterfall model depicts the relationship of quality assurance actions to the actions associated with communication, modeling and early code construction activates. 18 The Waterfall Lifecycle Workflow Communication requirement gathering Planning Estimating, Scheduling, Tracking Modeling Analysis design Construction Code test Deployment Delivery, support, feedback 19 Go to Question Communication: communicate with customer to understand objectives and gather requirements. Planning: creates a “map” defines the work by describing the tasks, risks and resources, work products and work schedule. Modeling: Create a “sketch”, what it looks like architecturally, how the constituent parts fit together and other characteristics. Construction: code generation and the testing. Deployment: Delivered to the customer who evaluates the products and provides feedback based on the evaluation. Advantages 1. 2. 3. 4. 5. 20 Easy to understand and implement. Widely used and known. Reinforces good habits: define-before- design, design-before-code Identifies deliverables and milestones Works well on mature products and weak teams. Disadvantages 1. 2. 3. 4. 5. 6. 7. 21 Idealised, doesn’t match reality well. Doesn’t reflect iterative nature of exploratory development. Unrealistic to expect accurate requirements so early in project Software is delivered late in project, delays discovery of serious errors. Difficult to integrate risk management Difficult and expensive to make changes to documents, ”swimming upstream”. Significant administrative overhead, costly for small teams and projects. Go to Question Lecture-06 Incremental Model In the incremental model, software is developed in a series of steps. When initial requirements are reasonably well defined, but the overall scope of the development effort precludes a purely linear process. A compelling need to expand a limited set of new functions to a later system release. It combines elements of linear and parallel process flows. Each linear sequence produces deliverable increments of the software. The first increment is often a core product with many supplementary features. Users use it and evaluate it with more modifications to better meet the needs. 22 Incremental Model 23 Go to Question Advantages Initial product delivery is faster. Lower initial delivery cost. Core product is developed first i.e main functionality is added in the first increment. After each iteration, regression testing should be conducted. During this testing, faulty elements of the software can be quickly identified because few changes are made within any single iteration. It is generally easier to test and debug than other methods of software development because relatively smaller changes are made during each iteration. This allows for more targeted and rigorous testing of each element within the overall product. With each release a new feature is added to the product. Customer can respond to feature and review the product. Risk of changing requirement is reduced 24 Disadvantages • Requires good analysis. • Resulting cost may exceed the cost of the organization. • Each phase of an iteration is rigid and do not overlap each other. • As additional functionality is added to the product, problems may arise related to system architecture which were not evident in earlier prototypes. 25 Go to Question Lecture-07 Rapid application development (RAD) Model Rapid application development RAD is incremental software development process model that allows usable systems to be built in as early as possible. RAD model is an incremental software software process model that focuses on short development cycle time. This model is a high speed model which adopts many steps from waterfall model in which rapid development is achieved by using component based construction approach. The RAD model used for information systems development. RAD approaches to software development put less emphasis on planning tasks and more emphasis on development. In contrast to the waterfall model, which emphasizes rigorous specification and planning. 26 T-n Modeling Construction Communication T-2 Modeling Planning Deployment Construction T-1 Modeling Construction 27 Advantages Quick initial reviews are possible Constant integration isolate problems and encourage customer feedback Well defined project, easy to run Disadvantages Requires a systematic approach for modularized Requires highly skilled and well-trained developers 28 Go to Question Lecture-08 Evolutionary Models: Prototyping Customer defines a set of general objectives but does not identify detailed requirements for functions and features. Or Developer may be unsure of the efficiency of an algorithm, the form that human computer interaction should take. Begins with communication by meeting with stakeholders to define the objective, identify whatever requirements are known, outline areas where further definition is mandatory. A quick plan for prototyping and modeling (quick design) occur. Quick design focuses on a representation of those aspects the software that will be visible to end users. ( interface and output). Design leads to the construction of a prototype which will be deployed and evaluated. Stakeholder’s comments will be used to refine requirements. Both stakeholders and software engineers like the prototyping paradigm. Users get a feel for the actual system, and developers get to build something immediately. However, engineers may make compromises in order to get a prototype working quickly. The less-than-ideal choice may be adopted forever after you get used to it. 29 Prototyping Advantages Quick plan communication Modeling Quick design Accelerated Delivery Makes User Commit Look like feel Disadvantages Deployment delivery & feedback 30 Construction of prototype Availability of specialist skills Maintenance over long term Benefits of Software Prototyping It makes the developers clear about the missing requirements. Lets the developers know what actually the users want. Reduces the loss by bringing the manufacturer to a conclusion weather the system which we are about to build is feasible or not rather than building the whole system and finding it . One can have a working system in before hand. It brings the user to get involved in the system design 31 Go to Question Spiral Model It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of software intensive systems. Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of definition and implementation while decreasing its degree of risk. The other is a set of anchor point milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions. A series of evolutionary releases are delivered. During the early iterations, the release might be a model or prototype. During later iterations, increasingly more complete version of the engineered system are produced. The first circuit in the clockwise direction might result in the product specification; subsequent passes around the spiral might be used to develop a prototype and then progressively more sophisticated versions of the software. Each pass results in adjustments to the project plan. Cost and schedule are adjusted based on feedback. Also, the number of iterations will be adjusted by project manager. 32 Good to develop large-scale system as software evolves as the process progresses and risk should be understood and properly reacted to. Prototyping is used to reduce risk. However, it may be difficult to convince customers that it is controllable as it demands considerable risk assessment expertise. Since end-user requirements are hard to obtain/define, it is natural to develop software in an experimental way. This loop approach gives rise to structured iterative lifecycle models. In 1988 Boehm developed the spiral model as an iterative model which includes risk analysis and risk management. Key idea: on each iteration identify and solve the sub-problems with the highest risk. 33 Spiral Model 34 Go to Question Each cycle follows a waterfall model by: 1. 2. 3. 4. 5. 6. 7. Determining objectives Specifying constraints Generating alternatives Identifying risks Resolving risks Developing next-level product Planning next cycle Advantages 1. 2. 3. 4. 35 Realism: the model accurately reflects the iterative nature of software development on projects with unclear requirements Flexible: incoporates the advantages of the waterfal and rapid prototyping methods Comprehensive model decreases risk Good project visibility. Disadvantages 36 Needs technical expertise in risk analysis to really work Model is poorly understood by non-technical management, hence not so widely used Complicated model, needs competent professional management. High administrative overhead. Go to Question Question Bank 1. Describe Changing Nature of Software.(S-13) (W-14) 2. What are the core principles of software Engineering? (W-14) 3. What are the characteristics of software Engineering? (W-12) 4. Explain TSP and PSP .(W-14) (S-13) (S-12) 5. List any four software characteristics and describe failure curve for software.(S-12) 6. Draw and Explain Spiral model. (S-14) .(W-14) 7. Draw and Explain Waterfall Model. (W-13) 8. Explain incremental model with neat diagram. (S-14) (W-14) (W-13) 9. Describe prototyping in detail. (W-14) 10.Explain software process framework. (S-12) .(W-14) 11.Explain in brief software engineering a layered technology.(W-12) (W-14) 12.Explain RAD model with neat diagram. (W-14) 13.Explain objectives of TSP. (W-12) Sample Question Paper-17513 - Software Engineering 37