Software Engineering Lecture Notes

Transcription

Software Engineering Lecture notesSOFTWAREENGINEERING– Lecture Notes for Engineering StudentsG. PULLAIAH COLLEGE OF ENGINEERING AND TECHNOLOGYNAAC – Accredited Grade A, ISO 9001- 2008 Certified,Permanently affiliated to JNTUA, Ananthapuram,Nandikotkur Road, Kurnool, Andhra PradeshGPCET, Department of CSE

Software Engineering Lecture notesPrefaceThe SOFTWARE ENGINEERING – Lecture Notes for Engineering Students is an epitomizedform of SOFTWARE ENGINEERING – A Practitioners approach, authored byRoger S.Pressmen.The book is designed as per the requirements of B.Tech Computer Science students fulfilling thesyllabus (Regulations 15) demands of Software Engineering subject prescribed by JNTUA,Ananthapuramu. The book guides and narrates every topic related to Software Engineering.This book besides enlightening, enriching the caliber of student, it also boosts up theirconfidence levels in executing software projects successfully. The topics discussed in the book,not only help academics but also can be applied practically in IT industry while handling thereal time projects.The book is compiled keeping the student psychology in view which encompasses various topicsrelated to Software Engineering. It consists of bits, short questions and answers, importantquestions, previous internal and external question papers and also the Topics with their sideheading for easy remembrance.AcknowledgementsMy compilation work of the book SOFTWARE ENGINEERING – Lecture Notes for EngineeringStudents is do e forthe literature of Roger S. Pressmen for whom I am indebted. I proudlyannounce that my inspirers are my students for whom the work is done and It is an opportunityto express my regards to the entire student community. I express my regards to all the facultymembers of Computer Science and Engineering Department of G. Pullaiah college ofEngineering and Technology, Ravindra College of Engineering for Women, Kurnool for theirtechnical support. I am grateful to the Principal, Heads of various departments for theirencouraging words. Above all, I thank the management for their motivational and thoughtprovoking words which drive to do miraculous works. Thank you one and all who directly andindirectly supported for bringing out this lecture notes.Dr. S. Prem KumarGPCET, Department of CSE

Software Engineering Lecture notesTABLE OF CONTENTSContentPage NoUNIT 11.0 SOFTWARE AND SOFTWARE ENGINEERING1.1 THE NATURE OF SOFTWARE1.2 THE UNIQUE NATURE OF WEBAPPS1.3SOFTWARE ENGINEERING1.4 THE SOFTWARE PROCESS1.5 SOFTWARE ENGINEERING PRACTICE1.6 SOFTWARE MYTHS1.7 A GENERIC PROCESS MODEL1.8 PROCESS ASSESSMENT AND IMPROVEMENT1.9 PRESCRIPTIVE PROCESS MODELS1.10 SPECIALIZED PROCESS MODELS1.11 The UNIFIED PROCESS1.12 PERSONAL AND TEAM PROCESS MODELS1.13 PROCESS TECHNOLOGY1.14 PRODUCT AND PROCESS1.15 WHAT IS AGILITY?1.16 AGILITY AND THE COST OF CHANGE1.17 WHAT IS AN AGILE PROCESS1.18 EXTREME PROGRAMMING (XP)1.19 OTHER AGILE PROCESS MODELS12678101214171825262729293131323538UNIT 22.0 UNDERSTANDING REQUIREMENTS2.1 REQUIREMENTS ENGINEERING2.2 ESTABLISHING THE GROUNDWORK2.3 ELICITING REQUIREMENTS2.4 DEVELOPING USE CASES2.5 BUILDING THE REQUIREMENTS MODEL2.6 NEGOTIATING REQUIREMENTS2.7 VALIDATING REQUIREMENTS2.8 REQUIREMENTS MODELING (SCENARIOS,INFORMATION AND ANALYSIS CLASSES)2.9 REQUIREMENTS MODELING (FLOW, BEHAVIOR,PATTERNS AND WEBAPPS)2.10 PATTERNS FOR REQUIREMENTS MODELING2.11 REQUIREMENTS MODELING FOR WEBAPPSGPCET, Department of CSE444546474950535354707679

Software Engineering Lecture notesContentPage NoUNIT 33.1 DESIGN WITHIN THE CONTEXT OF SOFTWARE ENGINEERING853.2 THE DESIGN PROCESS863.3 DESIGN CONCEPTS883.4 THE DESIGN MODEL933.5 SOFTWARE ARCHITECTURE973.6 ARCHITECTURAL STYLES1003.7 ARCHITECTURAL DESIGN1043.8 ASSESSING ALTERNATIVE ARCHITECTURAL DESIGNS1073.9 ARCHITECTURAL MAPPING USING DATA FLOW1083.10 Component-Level Design1123.11 DESIGNING CLASS-BASED COMPONENTS1163.12 COMPONENT-LEVEL DESIGN FOR WEBAPPS1233.14 COMPONENT-BASED DEVELOPMENT126UNIT 44.0 USER INTERFACE DESIGN1304.1 THE GOLDEN RULES1314.2 USER INTERFACE ANALYSIS AND DESIGN1334.3 INTERFACE ANALYSIS1354.4 INTERFACE DESIGN STEPS1394.5 WEBAPP INTERFACE DESIGN1424.6 DESIGN EVALUATION1464.7 WEBAPP DESIGN1474.8 CONTENT DESIGN1514.9 ARCHITECTURE DESIGN1524.10 NAVIGATION DESIGN1554.11 COMPONENT-LEVEL DESIGN1554.12 OBJECT-ORIENTED HYPERMEDIA DESIGN METHOD (OOHDM)156GPCET, Department of CSE

Software Engineering Lecture notesContentPage NoUNIT 55.0 SOFTWARE TESTING1585.1 A STRATEGIC APPROACH TO SOFTWARE TESTING1595.2 STRATEGIC ISSUES1625.3 TEST STRATEGIES FOR CONVENTIONAL SOFTWARE1635.4 TEST STRATEGIES FOR OBJECT-ORIENTED SOFTWARE1705.5 TEST STRATEGIES FOR WEBAPPS1725.7 SYSTEM TESTING1745.8 THE ART OF DEBUGGING1755.9 TESTING CONVENTIONAL APPLICATIONS1795.10 TESTING FOR SPECIALIZED ENVIRONMENTS, ARCHITECTURES,197APPLICATIONS5.11 PATTERNS FOR SOFTWARE TESTING1995.12 TESTING OBJECT ORIENTED APPLICATIONS2015.13 INTERCLASS TEST-CASE DESIGN209SHORT ANSWERS212BIT QUESTIONS AND ANSWERS230INTERNAL AND EXTERNAL QUESTION PAPERS234QUESTION BANK242TOPICS TO REMEMBER245GPCET, Department of CSE

Software Engineering Lecture notesDedicated to all my Studentswho constantly inspires me withtheir brilliant acts and deeds-Dr. S. Prem KumarGPCET, Department of CSE

JAWAHARLAL NEHRU TECHNOLOGICAL UNIVERSITY ANANTAPURB. Tech II - II sem (C.S.E)T3Tu1C3(15A05401) SOFTWARE ENGINEERINGCourse Objectives To understand the software life cycle models. To understand the software requirements and SRS document. To understand the importance of modeling and modeling languages. To design and develop correct and robust software products. To understand the quality control and how to ensure good quality software. To understand the planning and estimation of software projects. To understand the implementation issues, validation and verification procedures. To understand the maintenance of softwareCourse Outcomes Define and develop a software project from requirement gathering to implementation. Ability to code and test the software Ability to plan, Estimate and Maintain software systemsUnit I:Software and Software Engineering: The Nature of Software, The Unique Nature ofWebApps, Software Engineering, The Software Process, Software Engineering Practice,Software MythsProcess Models: A Generic Process Model, Process Assessment and Improvement, PrescriptiveProcess Models, Specialized Process Models, The Unified Process, Personal and Team ProcessModels, Process Technology, Product and Process.Agile Development: Agility, Agility and the Cost of Change, Agile Process, ExtremeProgramming, Other Agile Process ModelsUnit II:Understanding Requirements: Requirements Engineering, Establishing the groundwork,Eliciting Requirements, Developing Use Cases, Building the requirements model, NegotiatingRequirements, Validating Requirements.Requirements Modeling (Scenarios, Information and Analysis Classes): RequirementsAnalysis, Scenario-Based Modeling, UML Models that Supplement the Use Case, DataModeling Concepts, Class-Based Modeling.Requirements Modeling (Flow, Behavior, Patterns and WEBAPPS): RequirementsModeling Strategies, Flow-Oriented Modeling, Creating a Behavioral Model, Patterns forRequirements Modeling, Requirements Modeling for WebApps.

Unit III:Design Concepts: Design with Context of Software Engineering, The Design Process, DesignConcepts, The Design Model.Architectural Design: Software Architecture, Architecture Genres, Architecture Styles,Architectural Design, Assessing Alternative Architectural Designs, Architectural Mapping UsingData Flow.Component-Level Design: Component, Designing Class-Based Components, ConductingComponent-level Design, Component Level Design for WebApps, Designing TraditionalComponents, Component-Based Development.Unit IV:User Interface Design: The Golden Rules, User Interface Analysis and Design, InterfaceAnalysis, Interface Design Steps, WebApp Interface Design, Design Evaluation.WebApp Design: WebApp Design Quality, Design Goal, A Desigin Pyramid for WebApps,WebApp Interface Design, Aestheic Design, Content Design, Architecture Design, NavigationDesign, Component-Level Design, Object-Oriented Hypermedia Design Method(OOHMD).Unit V:Software Testing Strategies: A strategic Approach to Software Testing, Strategic Issues, TestStrategies for Conventional Software, Test Strategies for Object-Oriented Software, TestStrategies for WebApps, Validation Testing, System Testing, The Art of Debugging.Testing Conventional Applications: Software Testing Fundamentals, Internal and ExternalViews of Testing, White-Box Testing, basic Path testing, Control Structure Testing, Black-BoxTesting, Model-based Testing, Testing for Specialized Environments, Architectures andApplications, Patterns for Software Testing.Testing Object-Oriented Applications: Broadeningthe View of Testing, Testing with OOA and OOD Models, Object-Oriented Testing Strategies,Object-Oriented Testing Methods, Testing Methods Applicable at the Class level, InterclassTest-Case Design.Textbook:1. “Software engineering A practitioner’s Approach”, Roger S. Pressman, McGraw HillInternational Education, Seventh Edition, 2016.Reference Textbooks:1. Fundamentals of Software Engineering, Fourth Edition, Rajib Mall, PHI,2. Software Engineering, Ninth Edition, IAN Sommerville, Pearson, Ninth edition.3. Software Engineering, A Precise Approach, Pankaj Jalote, Wiley India,2010.4. Software Engineering, Principles and Practices, Deepak Jain, Oxford University Press.

Software Engineering Lecture notesUNIT – 1Unit I:Software and Software Engineering: The Nature of Software, The Unique Nature of WebApps,Software Engineering, The Software Process, Software Engineering Practice, Software MythsProcess Models: A Generic Process Model, Process Assessment and Improvement, PrescriptiveProcess Models, Specialized Process Models, The Unified Process, Personal and Team ProcessModels, Process Technology, Product and Process.Agile Development: Agility, Agility and the Cost of Change, Agile Process, ExtremeProgramming, Other Agile Process Models1.0 SOFTWARE AND SOFTWARE ENGINEERINGWhat is it? Computer software is the product that software professionals build and thensupport over the long term. It encompasses programs that execute within a computer ofany size and architecture, content that is presented as the computer programs execute,and descriptive information in both hard copy and virtual forms that encompass virtuallyany electronic media. Software engineering encompasses a process, a collection ofmethods (practice) and an array of tools that allow professionals to build high qualitycomputer software.Who does it? Software engineers build and support software, and virtually everyone in theindustrialized world uses it either directly or indirectly.Why is it important? Software is important because it affects nearly every aspect of ourlives and has become pervasive in our commerce, our culture, and our everyday activitiesSoftware engineering is important because it enables us to build complex systems in atimely manner and with high quality.What are the steps? You build computer software like you build any successful product,by applying an agile, adaptable process that leads to a high-quality result that meets theneeds of the people who will use the product. You apply a software engineering approach.What is the work product? From the point of view of a software engineer, the workproduct is the set of programs, content (data), and other work products that are computersoftware. But from the user’s viewpoint, the work product is the resultant information thatsomehow makes the user’s world better.GPCET, Department of CSE 1

Software Engineering Lecture notes1.1 THE NATURE OF SOFTWAREToday, software takes on a dual role. It is a product, and at the same time, the vehiclefor delivering a product. As a product, it delivers the computing potential embodied bycomputer hardware or more broadly, by a network of computers that are accessible bylocal hardware.As the vehicle used to deliver the product, software acts as the basis for the control ofthe computer (operating systems), the communication of information (networks), andthe creation and control of other programs (software tools and environments).Software delivers the most important product of our time—information. It transformspersonal data so that the data can be more useful in a local context; it managesbusiness information to enhance competitiveness; it provides a gateway to worldwideinformation networks, and provides the means for acquiring information in all of itsforms.The role of computer software has undergone significant change over the last halfcentury. Dramatic improvements in hardware performance, profound changes incomputing architectures, vast increases in memory and storage capacity, and a widevariety of exotic input and output options, have all precipitated more sophisticated andcomplex computer-based systems. Sophistication and complexity can produce dazzlingresults when a system succeeds, but they can also pose huge problems for those whomust build complex systems.1.1.1 Defining Software: Software is:(1) instructions (computer programs) that when executed provide desired features,function, and performance;(2) data structures that enable the programs to adequately manipulate information, and(3) descriptive information in both hard copy and virtual forms that describes theoperation and use of the programs.Software has characteristics that are considerably different than those of hardware:1. Software is developed or engineered: it is not manufactured in the classical sense.Although some similarities exist between software development and hardwaremanufacturing, the two activities are fundamentally different. In both activities, highquality is achieved through good design, but the manufacturing phase for hardware canintroduce quality problems that are nonexistent (or easily corrected) for software.Software projects cannot be managed as if they were manufacturing projects.GPCET, Department of CSE 2

Software Engineering Lecture notes2. Software doesn’t “wear out.”: Figure 1.1 depicts failure rate as a function of timefor hardware. The relationship, often called the “bathtub curve,” indicates that hardwareexhibits relatively high failure rates early in its life; defects are corrected and the failurerate drops to a steady-state level (hopefully, quite low) for some period of time. As timepasses, however, the failure rate rises again as hardware components suffer from thecumulative effects of dust, vibration, abuse, temperature extremes, and many otherenvironmental maladies.Stated simply, the hardware begins to wear out. Software is not susceptible to theenvironmental maladies that cause hardware to wear out. In theory, therefore, thefailure rate curve for software should take the form of the “idealized curve” shown inFigure 1.2. Undiscovered defects will cause high failure rates early in the life of aprogram. However, these are corrected and the curve flattens as shown. The idealizedGPCET, Department of CSE 3

Software Engineering Lecture notescurve is a gross oversimplification of actual failure models for software. However, theimplication is clear—software doesn’t wear out. But it does deteriorate.3. Although the industry is moving toward component-based construction, mostsoftware continues to be custom built: As an engineering discipline evolves, acollection of standard design components is created. The reusable components havebeen created so that the engineer can concentrate on the truly innovative elements of adesign, that is, the parts of the design that represent something new.A software component should be designed and implemented so that it can be reused inmany different programs. Modern reusable components encapsulate both data and theprocessing that is applied to the data, enabling the software engineer to create newapplications from reusable parts.1.1.2 Software Application Domains: Today, seven broad categories of computersoftware present continuing challenges for software engineers:System software—a collection of programs written to service other programs. Somesystem software (e.g., compilers, editors, and file management utilities) processescomplex, but determinate, information structures. Other systems applications (e.g.,operating system components, drivers, networking software, telecommunicationsprocessors) process largely indeterminate data.Application software—stand-alone programs that solve a specific business need.Applications in this area process business or technical data in a way that facilitatesbusiness operations or management/technical decision making.Engineering/scientific software—has been characterized by “number crunching”algorithms. Applications range from astronomy to volcanology, from automotive stressanalysis to space shuttle orbital dynamics, and from molecular biology to automatedmanufacturing.Embedded software—resides within a product or system and is used to implement andcontrol features and functions for the end user and for the system itself.Product-line software—designed to provide a specific capability for use by manydifferent customers. Product-line software can focus on a limited and esotericmarketplace or address mass consumer markets.Web applications—called “WebApps,” this network-centric software category spans awide array of applications. In their simplest form, WebApps can be little more than a setof linked hypertext files that present information using text and limited graphics.GPCET, Department of CSE 4

Software Engineering Lecture notesArtificial intelligence software—makes use of nonnumerical algorithms to solvecomplex problems that are not amenable to computation or straightforward analysis.Applications within this area include robotics, expert systems, pattern recognition(image and voice), artificial neural networks, theorem proving, and game playing.New ChallengesOpen-world computing—the rapid growth of wireless networking may soon lead totrue pervasive, distributed computing. The challenge for software engineers will be todevelop systems and application software that will allow mobile devices, personalcomputers, and enterprise systems to communicate across vast networks.Net sourcing—the World Wide Web is rapidly becoming a computing engine as well asa content provider. The challenge for software engineers is to architect simple andsophisticated applications that provide a benefit to targeted end-user marketsworldwide.Open source—a growing trend that results in distribution of source code for systemsapplications so that many people can contribute to its development.1.1.3 Legacy Software: These older programs—often referred to as legacy software.Legacy software systems . were developed decades ago and have been continuallymodified to meet changes in business requirements and computing platforms. Legacysoftware is characterized by longevity and business criticality.Unfortunately, there is sometimes one additional characteristic that is present in legacysoftware—poor quality. Legacy systems sometimes have inextensible designs,convoluted code, poor or nonexistent documentation, test cases and results.Legacy systems often evolve for one or more of the following reasons: The software must be adapted to meet the needs of new computing environments ortechnology. The software must be enhanced to implement new business requirements. The software must be extended to make it interoperable with other more modernsystems or databases. The software must be re-architected to make it viable within a network environment.GPCET, Department of CSE 5

Software Engineering Lecture notes1.2 THE UNIQUE NATURE OF WEBAPPSThe following attributes are encountered in the vast majority of WebApps.Network intensiveness. A WebApp resides on a network and must serve the needs ofa diverse community of clients. The network may enable worldwide access andcommunication (i.e., the Internet) or more limited access and communication (e.g., acorporate Intranet).Concurrency. A large number of users may access the WebApp at one time. In manycases, the patterns of usage among end users will vary greatly.Unpredictable load. The number of users of the WebApp may vary by orders ofmagnitude from day to day. One hundred users may show up on Monday; 10,000 mayuse the system on Thursday.Performance. If a WebApp user must wait too long, he or she may decide to goelsewhere.Availability. Although expectation of 100 percent availability is unreasonable, users ofpopular WebApps often demand access on a 24/7/365 basis. Users in Australia or Asiamight demand access during times when traditional domestic software applications inNorth America might be taken off-line for maintenance.Data driven. The primary function of many WebApps is to use hypermedia to presenttext, graphics, audio, and video content to the end user. In addition, WebApps arecommonly used to access information that exists on databases that are not an integralpart of the Web-based environmentContent sensitive. The quality and aesthetic nature of content remains an importantdeterminant of the quality of a WebApp.Continuous evolution. Unlike conventional application software that evolves over aseries of planned, chronologically spaced releases, Web applications evolvecontinuously. It is not unusual for some WebApps (specifically, their content) to beupdated on a minute-by-minute schedule or for content to be independently computedfor each request.Immediacy. Although immediacy—the compelling need to get software to marketquickly—is a characteristic of many application domains, WebApps often exhibit a timeto-market that can be a matter of a few days or weeks.Security. Because WebApps are available via network access, it is difficult, if notimpossible, to limit the population of end users who may access the application. In orderto protect sensitive content and provide secure modes of data transmission, strongsecurity measures must be implemented throughout the infrastructure that supports aWebApp and within the application itself.Aesthetics. An undeniable part of the appeal of a WebApp is its look and feel. When anapplication has been designed to market or sell products or ideas, aesthetics may haveas much to do with success as technical design.GPCET, Department of CSE 6

Software Engineering Lecture notes1.3 SOFTWARE ENGINEERINGSoftware engineering encompasses a process, methods for managing and engineeringsoftware, and tools.In order to build software that is ready to meet the challenges of the twenty-first century,few simple realities are: Software has become deeply embedded in virtually every aspect of our lives, and as aconsequence, the number of people who have an interest in the features and functionsprovided by a specific application has grown dramatically. The information technology requirements demanded by individuals, businesses, andgovernments grow increasing complex with each passing year. The complexity of thesenew computer-based systems and products demands careful attention to theinteractions of all system elements. It follows that design becomes a pivotal activity. Individuals, businesses, and governments increasingly rely on software for strategicand tactical decision making as well as day-to-day operations and control. If thesoftware fails, people and major enterprises can experience anything from minorinconvenience to catastrophic failures. As the perceived value of a specific application grows, the likelihood is that its userbase and longevity will also grow. As its user base and time-in-use increase, demandsfor adaptation and enhancement will also grow. It follows that software should bemaintainable.The IEEE has developed a more comprehensive definition when it states:Software Engineering: (1) The application of a systematic, disciplined, quantifiableapproach to the development, operation, and maintenance of software; that is, theapplication of engineering to software. (2) The study of approaches as in (1).Layered Technology: Software engineering is a layered technology. Referring toFigure 1.3, any engineering approach (including software engineering) must rest on anGPCET, Department of CSE 7

Software Engineering Lecture notesorganizational commitment to quality. Total quality management, Six Sigma, and similarphilosophies foster a continuous process improvement culture, and it is this culture thatultimately leads to the development of increasingly more effective approaches tosoftware engineering. The bedrock of software engineering is a quality focus.The foundation for software engineering is the process layer. The software engineeringprocess is the glue that holds the technology layers together and enables rational andtimely development of computer software. Process defines a framework that must beestablished for effective delivery of software engineering technology.The software process forms the basis for management control of software projects andestablishes the context in which technical methods are applied, work products (models,documents, data, reports, forms, etc.) are produced, milestones are established, qualityis ensured, and change is properly managed.Software engineering methods provide the technical how-to’s for building software.Methods encompass a broad array of tasks that include communication, requirementsanalysis, design modeling, program construction, testing, and support. Softwareengineering methods rely on a set of basic principles that govern each area of thetechnology and include modeling activities and other descriptive techniques.Software engineering tools provide automated or semi automated support for theprocess and the methods. When tools are integrated so that information created by onetool can be used by another, a system for the support of software development, calledcomputer-aided software engineering, is established.1.4 The software ProcessA process defines who is doing what when and how to reach a certain goal.A process is a collection of activities, actions, and tasks that are performed whensome work product is to be created. An activity strives to achieve a broad objective andis applied regardless of the application domain, size of the project, complexity of theeffort, or degree of rigor with which software engineering is to be applied. An actionencompasses a set of tasks that produce a major work product. A task focuses on asmall, but well-defined objective (e.g., conducting a unit test) that produces a tangibleoutcome.A process is not a rigid rather it is an adaptable approach to choose the appropriate setof work actions and tasks. The intent is always to deliver software in a timely mannerand with sufficient quality to satisfy those who have sponsored its creation and thosewho will use it.GPCET, Department of CSE 8

Software Engineering Lecture notesA process framework establishes the foundation for a complete software engineeringprocess by identifying a small number of framework activities that are applicable to allsoftware projects, regardless of their size or complexity. In addition, the processframework encompasses a set of umbrella activities that are applicable across theentire software process. A generic process framework for software engineeringencompasses five activities:Communication. Before any technical work can commence, it is critically important tocommunicate and collaborate with the customer. The intent is to understandstakeholders’ objectives for the project and to gather requirements that help definesoftware features and functions.Planning. The planning activity creates a “map” called a software project plan—definesthe software engineering work by describing the technical tasks to be conducted, therisks that are likely, the resources that will be required, the work products to beproduced, and a work schedule.Modeling. You create a “sketch” of the thing so that you’ll understand the big picture. Asoftware engineer does the same thing by creating models to better understandsoftware requirements and the design that will achieve those requirements.Construction. This activity combines code generation and the testing that is required touncover errors in the code.Deployment. The software is delivered to the customer who evaluates the deliveredproduct and provides feedback based on the evaluation.These five generic framework activities can be used during the development of small,simple programs, the creation of large Web applications, and for the engineering oflarge, complex computer-based systems. The details of the software process will bequite different in each case, but the framework activities remain the same.That is, communication, planning, modeling, construction, and deployment are appliedrepeatedly through a number of project iterations. Each project iteration produces asoftware increment that provides stakeholders with a subset of overall software featuresand functionality.Software engineering process framework activities are complemented by a number ofumbrella activities. In general, umbrella activities are applied throughout a softwareproject.Typical umbrella activities include:Software project tracking and control—allows the software team to assess progressagainst the project plan and take any necessary action to maintain the schedule.Risk management—assesses risks that may affect the outcome of the project or thequality of the product.GPCET, Department of CSE 9

Software Engineering Lecture notesSoftware quality assurance—defines and conducts the activities required to ensuresoftware quality.Technical reviews—assesses software engineering work products in an effort touncover and remove errors before they are propagated to the next activity.Measurement—defines and collects process, project, and product measures that assistthe team in delivering software that meets stakeholders’ needs; can be used inconjunct

Software Engineering, The Software Process, Software Engineering Practice, Software Myths Process Models: A Generic Process Model, Process Assessment and Improvement, Prescriptive Process Models, Specialized Process Models, The Unified Process, Personal and Team Process Models, Process Technology, Product and Process.