Fundamentals Of Software Engineering, Fourth Edition .

Transcription

******Created by ebook converter - www.ebook-converter.com******RAJIB MALLProfessorDepartment of Computer Science and EngineeringIndian Institute of Technology KharagpurDelhi-110 0922014******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******FUNDAMENTALS OF SOFTWARE ENGINEERING, Fourth EditionRajib Mall 2014 by PHI Learning Private Limited, Delhi. All rights reserved. No part of this book may be reproduced inany form, by mimeograph or any other means, without permission in writing from the publisher.ISBN-978-81-203-4898-1The export rights of this book are vested solely with the publisher.Thirty-first Printing (Fourth Edition). . . . .April, 2014Published by Asoke K. Ghosh, PHI Learning Private Limited, Rimjhim House, 111, Patparganj IndustrialEstate, Delhi-110092 and Printed by Rajkamal Electric Press, Plot No. 2, Phase IV, HSIDC, Kundli-131028,Sonepat, Haryana.******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******ToBapa, Maa,andmy beloved wife Prabina******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******CONTENTSList of Figures.xvPreface.xixPreface to the First Edition.xxi1.INTRODUCTION .1–321.1.Evolution—From an Art Form to an Engineering Discipline.31.1.1.Evolution of an Art into an Engineering Discipline.31.1.2.Evolution Pattern for Engineering Disciplines.41.1.3.A Solution to the Software Crisis.51.2.Software Development Projects.61.2.1.Types of Software Development Projects.71.2.2.Software Projects Being Undertaken by Indian Companies.81.3.Exploratory Style of Software Development.91.3.1.Perceived Problem Complexity: An Interpretation Based onHuman Cognition Mechanism.111.3.2.Principles Deployed by Software Engineering to OvercomeHuman Cognitive Limitations.141.4.Emergence of Software Engineering.171.4.1.Early Computer Programming.171.4.2.High-level Language Programming.181.4.3.Control Flow-based Design.181.4.4.Data Structure-oriented Design.221.4.5.Data Flow-oriented Design.221.4.6.Object-oriented Design.231.4.7.What Next?.241.4.8.Other Developments.251.5.Notable Changes in Software Development Practices.251.6.Computer Systems Engineering.27Summary.28Exercises.292.Software Life Cycle Models.33–842.1.A Few Basic Concepts.34******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******2.2.Waterfall Model and its Extensions.382.2.1.Classical Waterfall Model.382.2.2.Iterative Waterfall Model.462.2.3.V-Model.502.2.4.Prototyping Model.522.2.5.Incremental Development Model.552.2.6.Evolutionary Model.572.3.Rapid Application Development (RAD).592.3.1.Working of RAD.602.3.2.Applicability of RAD Model.602.3.3.Comparison of RAD with Other Models.622.4.Agile Development Models.622.4.1.Essential Idea behind Agile Models.642.4.2.Agile versus Other Models.652.4.3.Extreme Programming Model.662.4.4.Scrum Model.692.5.Spiral Model.692.5.1.Phases of the Spiral Model.712.6.A Comparison of Different Life Cycle Models.722.6.1.Selecting an Appropriate Life cycle Model for a Project.73Summary.74Exercises.753.SOFTWARE PROJECT MANAGEMENT.85–1533.1.Software Project Management Complexities.863.2.Responsibilities of a Software Project Manager.873.2.1.Job Responsibilities for Managing Software Projects.873.2.2.Skills Necessary for Managing Software Projects.883.3.Project Planning.893.3.1.Sliding Window Planning.903.3.2.The SPMP Document of Project Planning.903.4.Metrics for Project Size Estimation.923.4.1.Lines of Code (LOC).923.4.2.Function Point (FP) Metric.943.5.Project Estimation Techniques.993.5.1. Empirical Estimation Techniques.993.5.2. Heuristic Techniques.993.5.3. Analytical Estimation Techniques.100******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******3.6.Empirical Estimation Techniques.1003.6.1.Expert Judgement.1003.6.2.Delphi Cost Estimation.1013.7.COCOMO—A Heuristic Estimation Technique.1013.7.1.Basic COCOMO Model.1023.7.2.Intermediate COCOMO.1073.7.3.Complete COCOMO.1083.7.4.COCOMO 2.1093.8.Halstead’s Software Science—An Analytical Technique.1123.8.1.Length and Vocabulary.1133.8.2.Program Volume.1133.8.3.Potential Minimum Volume.1133.8.4.Effort and Time.1143.8.5.Length Estimation.1143.9.Staffing Level Estimation.1163.9.1.Norden’s Work.1163.9.2.Putnam’s Work.1173.9.3.Jensen’s Model.1193.10.Scheduling.1193.10.1.Work Breakdown Structure.1213.10.2.Activity Networks.1223.10.3.Critical Path Method (CPM).1243.10.4.PERT Charts.1263.10.5.Gantt Charts.1283.11.Organisation and Team Structures.1293.11.1.Organisation Structure.1293.11.2.Team Structure.1323.12.Staffing.1353.13.Risk Management.1363.13.1.Risk Identification.1373.13.2.Risk Assessment.1383.13.3.Risk Mitigation.1383.14.Software Configuration Management.1403.14.1.Necessity of Software Configuration Management.1403.14.2.Configuration Management Activities.1423.15.Miscellaneous Plans.144Summary .144******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - EMENTS ANALYSIS AND SPECIFICATION.154–2004.1.Requirements Gathering and Analysis.1554.1.1.Requirements Gathering.1564.1.2.Requirements Analysis .1594.2.Software Requirements Specification (SRS).1614.2.1.Users of SRS Document.1614.2.2.Why Spend Time and Resource to Develop an SRSDocument?.1624.2.3.Characteristics of a Good SRS Document.1634.2.4.Attributes of Bad SRS Documents.1644.2.5.Important Categories of Customer Requirements.1654.2.6.Functional Requirements.1674.2.7.How to Identify the Functional Requirements?.1704.2.8.How to Document the Functional nisation of the SRS Document.1734.2.11.Techniques for Representing Complex Logic.1804.3.Formal System Specification.1824.3.1.What is a Formal Technique?.1834.3.2.Operational Semantics.1844.4.Axiomatic Specification.1864.5.Algebraic Specification.1884.5.1.Auxiliary Functions.1914.5.2.Structured Specification.1924.6.Executable Specification and 4GL.193Summary.193Exercises.1935.SOFTWARE DESIGN.201–2225.1.Overview of the Design Process.2015.1.1.Outcome of the Design Process.2015.1.2.Classification of Design Activities.2025.1.3.Classification of Design Methodologies.2035.2.How to Characterise a Good Software Design?.2045.2.1.Understandability of a Design: A Major Concern.2055.3.Cohesion and Coupling.208******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******5.3.1.Classification of Cohesiveness.2095.3.2.Classification of Coupling.2115.4.Layered Arrangement of Modules.2125.5.Approaches to Software Design.2145.5.1.Function-oriented Design.2145.5.2.Object-oriented TED SOFTWARE DESIGN.223–2756.1.Overview of SA/SD Methodology.2246.2.Structured Analysis.2256.2.1.Data Flow Diagrams (DFDs).2256.3.Developing the DFD Model of a System.2296.3.1.Context Diagram.2296.3.2.Level 1 DFD.2316.3.3.Extending DFD Technique to Make it Applicable to Real-Time.Systems.2466.4.Structured Design.2476.4.1.Transformation of a DFD Model into Structure Chart.2486.5.Detailed Design.2536.6.Design Review.253Summary.254Exercises.2547.Object Modelling Using UML.276–3347.1.Basic Object-Orientation Concepts.2777.1.1.Basic Concepts.2777.1.2.Class Relationships.2817.1.3.How to Identify Class Relationships?.2887.1.4.Other Key Concepts.2897.1.5.Related Technical Terms.2947.1.6.Advantages and Disadvantages of OOD.2957.2.Unified Modelling Language (UML).2967.2.1.Origin of UML.2967.2.2.Evolution of UML.2987.3.UML Diagrams.300******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******7.4.Use Case Model.3027.4.1.Representation of Use Cases.3037.4.2.Why Develop the Use Case Diagram?.3077.4.3.How to Identify the Use Cases of a System?.3077.4.4.Essential Use Case versus Real Use Case.3077.4.5.Factoring of Commonality among Use Cases.3087.4.6.Use Case Packaging.3107.5.Class Diagrams.3117.6.Interaction Diagrams.3187.7.Activity Diagram.3207.8.State Chart Diagram.3227.9.Postscript.3237.9.1.Package, Component, and Deployment Diagrams.3237.9.2.UML 2.0.325Summary.327Exercises.3288.Object-Oriented Software Development.335–3728.1.Patterns.3378.1.1.Basic Pattern Concepts.3378.1.2.Types of Patterns.3388.1.3.More Pattern Concepts.3408.2.Some Common Design Patterns.3418.3.An Object-Oriented Analysis and Design (OOAD) Methodology.3498.3.1.Unified Process.3498.3.2.Overview of The OOAD Methodology.3508.3.3.Use Case Model Development.3518.3.4.Domain Modelling.3538.3.5.Identification of Entity Objects.3578.3.6.Booch’s Object Identification Method.3578.3.7.Interaction or (CRC) Cards.3608.4.Applications of the Analysis and Design Process.3618.5.OOD Goodness Criteria.364Summary.369Exercises.369******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******9.USER INTERFACE DESIGN.373–3969.1.Characteristics of a Good User Interface.3749.2.Basic Concepts.3769.2.1.User Guidance and On-line Help.3769.2.2.Mode-based versus Modeless Interface.3779.2.3.Graphical User Interface (GUI) versus Text-based UserInterface.3779.3.Types of User Interfaces.3789.3.1.Command Language-based Interface.3789.3.2.Menu-based Interface.3799.3.3.Direct Manipulation Interfaces.3819.4.Fundamentals of Component-based GUI Development.3819.4.1.Window System.3829.4.2.Types of Widgets.3859.4.3.An Overview of X-Window/MOTIF.3869.4.4.X Architecture.3879.4.5.Size Measurement of a Component-based GUI.3889.5.A User Interface Design Methodology.3889.5.1.Implications of Human Cognition Capabilities on User InterfaceDesign.3899.5.2.A GUI Design Methodology.389Summary.393Exercises.39410.Coding and Testing.397–45610.1.Coding.39810.1.1.Coding Standards and Guidelines.39910.2.Code Review.40010.2.1.Code Walkthrough.40110.2.2.Code Inspection.40210.2.3.Clean Room Testing.40310.3.Software Documentation.40310.3.1.Internal Documentation.40410.3.2.External Documentation.40410.4.Testing.40510.4.1.Basic Concepts and Terminologies.40610.4.2.Testing Activities.410******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******10.4.3.Why Design Test Cases?.41110.4.4.Testing in the Large versus Testing in the Small.41210.5.Unit Testing.41310.6.Black-box Testing.41310.6.1.Equivalence Class Partitioning.41410.6.2.Boundary Value Analysis.41510.6.3.Summary of the Black-box Test Suite Design Approach.41710.7.White-Box Testing.41710.7.1.Basic Concepts.41710.7.2.Statement Coverage.41910.7.3.Branch Coverage.41910.7.4.Multiple Condition Coverage.42010.7.5.Path Coverage.42110.7.6.McCabe’s Cyclomatic Complexity Metric .42310.7.7.Data Flow-based Testing.42510.7.8.Mutation Testing.42610.8.Debugging.42710.8.1.Debugging Approaches.42710.8.2.Debugging Guidelines.42810.9.Program Analysis Tools.42810.9.1.Static Analysis Tools.42810.9.2.Dynamic Analysis Tools.42910.10.Integration Testing.43010.10.1.Phased versus Incremental Integration Testing.43110.11.Testing Object-Oriented Programs.43210.11.1.What is a Suitable Unit for Testing Object-OrientedPrograms?.43210.11.2.Do Various Object-Orientation Features Make TestingEasy?.43310.11.3.Why are Traditional Techniques Considered Not Satisfactory.for Testing Object-Oriented Programs?.43410.11.4.Grey-Box Testing of Object-Oriented Programs.43410.11.5.Integration Testing of Object-oriented Programs.43510.12.System Testing.43510.12.1.Smoke Testing.43610.12.2.Performance Testing.43610.12.3.Error Seeding.43810.13.Some General Issues Associated with Testing.439******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - 44011.Software Reliability and Quality Management.457–48411.1.Software Reliability.45811.1.1.Hardware versus Software Reliability.45911.1.2.Reliability Metrics of Software Products.46011.1.3.Reliability Growth Modelling.46211.2.Statistical Testing.46311.2.1.Steps in Statistical Testing.46311.3.Software Quality.46411.4.Software Quality Management System.46511.4.1.Evolution of Quality Systems.46611.4.2.Product Metrics versus Process Metrics.46711.5.ISO 9000.46711.5.1.What is ISO 9000 Certification?.46711.5.2.ISO 9000 for Software Industry.46811.5.3.Why Get ISO 9000 Certification?.46911.5.4.How to Get ISO 9000 Certification?.46911.5.5.Summary of ISO 9001 Requirements.47011.5.6.Salient Features of ISO 9001 Requirements.47211.5.7.ISO 9000-2000.47211.5.8.Shortcomings of ISO 9000 Certification.47211.6.SEI Capability Maturity Model .47311.6.1.Comparison between ISO 9000 Certification and SEI/CMM.47611.6.2.Is SEI CMM Applicable to Small Organisations?.47611.6.3.Capability Maturity Model Integration (CMMI).47711.7.Few Other Important Quality Standards.47711.7.1.Software Process Improvement and Capability.Determination (SPICE).47711.7.2.Personal Software Process (PSP).47711.8.Six Sigma.479Summary.480Exercises.48112.Computer Aided Software Engineering.485–493******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******12.1.Case and its Scope.48512.2.Case Environment.48512.2.1.Benefits of CASE.48712.3.CASE Support in Software Life Cycle.48712.3.1.Prototyping Support.48712.3.2.Structured Analysis and Design.48812.3.3.Code Generation.48812.3.4.Test Case Generator.48912.4.Other Characteristics of Case Tools.48912.4.1.Hardware and Environmental Requirements.48912.4.2.Documentation Support.48912.4.3.Project Management.49012.4.4.External Interface.49012.4.5.Reverse Engineering Support.49012.4.6.Data Dictionary Interface.49012.4.7.Tutorial and Help.49012.5.Towards Second Generation CASE Tool.49012.6.Architecture of a Case Environment.491Summary.492Exercises.49213.Software Maintenance.494–50213.1.Characteristics of Software Maintenance.49413.1.1.Characteristics of Software Evolution.49513.1.2.Special Problems Associated with Software Maintenance.49613.2.Software Reverse Engineering.49613.3.Software Maintenance Process Models.49713.4.Estimation of Maintenance Cost.500Summary.501Exercises.50114.SOFTWARE REUSE.503–51214.1.What can be Reused?.50314.2.Why Almost No Reuse So Far?.50414.3.Basic Issues in any Reuse Program.50414.4.A Reuse Approach.50514.4.1.Domain Analysis.50514.4.2.Component Classification.50614.4.3.Searching.507******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******14.4.4.Repository Maintenance.50714.4.5.Reuse without Modifications.50814.5.Reuse at Organisation Level.50814.5.1.Current State of Reuse.510Summary.510Exercises.51115.EMERGING TRENDS.513–52515.1.Client-Server Software.51415.2.Client-server Architectures.51615.3.CORBA.51815.3.1.CORBA Reference Model.51815.3.2.CORBA ORB Architecture.51915.3.3.CORBA Implementations.52115.3.4.Software Development in M.52215.5.Service-Oriented Architecture (SOA).52215.5.1.Service-oriented Architecture (SOA): Mitty Gritty.52315.6.Software as a Service (SaaS).524Summary.524Exercises.525ReferenWces. 527–530Index.531–534******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******LIST OF FIGURES1.1.Evolution of technology with time.41.2.Relative changes of hardware and software costs over time.51.3.Exploratory program development.91.4.Increase in development time and effort with problem size.101.5.Human cognition mechanism model.121.6.Schematic representation.141.7.An abstraction hierarchy classifying living organisms.161.8.An example of (a) Unstructured program (b) Corresponding structuredprogram.191.9.Control flow graphs of the programs in Figures 1.8(a) and (b).191.10.CFG of a program having too many GO TO statements.201.11.Data flow model of a car assembly plant.231.12.Evolution of software design techniques.241.13.Computer systems engineering.282.1.Classical waterfall model.392.2.Relative effort distribution among different phases of a typicalproduct.402.3.Iterative waterfall model.462.4.Distribution of effort for various phases in the iterative waterfallmodel.482.5.V-model.512.6.Prototyping model of software development.542.7.Incremental software development.552.8.Incremental model of software development.562.9.Evolutionary model of software development.582.10.Spiral model of software development.703.1.Precedence ordering among planning activities.903.2.System function as a mapping of input data to output data.953.3.Person-month curve.1043.4.Effort versus product size.1053.5.Development time versus size.1063.6.Rayleigh curve.116******ebook converter DEMO - www.ebook-converter.com*******

******Created by ebook converter - www.ebook-converter.com******3.7.Work breakdown structure of an MIS problem.1213.8.Activity network representation of the MIS problem.1233.9.AoN for MIS problem with (ES,EF).1253.10.AoN of MIS problem with (LS,LF).1263.11.PERT chart representation of the MIS problem.1273.12.Gantt chart representation of the MIS problem.1283.13.Schematic representation of the functional and projectorganisation.1303.14.Matrix organisation.1323.15.Chief programmer team structure.1333.16.Democratic team structure.1343.17.Mixed team structure.

RAJIB MALL Professor Department of Computer Science and Engineering Indian Institute of Technology Kharagpur Delhi-110 092 2014 *****