Fundamentals of Software Engineering /

Mall, Rajib.

Fundamentals of Software Engineering / Rajib Mall - 3rd ed. - New Delhi : PHI Learnings , 2010. - xxii, 441 p.

1. INTRODUCTION
1.1 The Software Engineering Discipline—^Its Evolution and Impact
1.1.1 Evolution of an Art into an Engineering Discipline
1.1.2 A Solution to the Software Crisis
1.2 Software Development Projects
1.2.1 Programs versus Products
1.2.2 Types of Soft%vare Development Projects
1.2.3 Software Projects being Undertaken by Indian Companies
1.3 What is Wrong with the Exploratory Style of Software Development?
1.3.1 Perceived Problem Complexity: An Interpretation Based on
Human Cognition Mechanism
1.3.2 Principles Deployed by Software Engineering to Overcome
Human Cognitive Limitations
1.3.3 Why Study Software Engineering?
1.4 Emergence of Software Engineering
1.4.1 Early Computer Programming
1.4.2 High-Level Language Programming
1.4.3 Control Flow-Based Design
1.4.4 Data Structure-Oriented Design
1.4.5 Data Flow-Oriented Design
1.4.6 Object-Oriented Design
1.4.7 What Next?
1.4.8 Other Developments
1.5 Notable Changes in Software Development Practices
1.6 Computer Systems Engineering
2. SOFTWARB LIFE CYCLE MODELS
2.1 Why Use a Life Cycle Model?
2.1.1 Why Dociiment a Life Cycle Model?
2.1.2 Phase Entry and Exit Criteria
2.2 Classical Waterfall Model
2.2.1 Phases of Classical Waterfall Model.
2.2.2 Shortcomings of the Classical WaterfEtll Model.
2.2.3 Is the Classical-Waterfall Model Useful at All?
2.3 Iterative Waterfall Model
2.3.1 Phase Containment of Errors ....
2.3.2 Shortcomings of the Iterative Waterfall Model..
2.4 Prototyping Model
2.5 Evolutionary Model
2.5.1 Life Cycle Activities ....
2.6 Spiral Model
2.6.1 Bisk Handling in Spiral Model
2.6.2 Phases of the Spiral Model
2.6.3 Pros and Cons of the Spiral Model
2.6.4 Spiral Model as a Meta Model
2.7 Comparison of Different Life Cycle Models .
2.7.1 Selecting an Appropriate Life Cycle Model for a Project.
8. SOFTWARE PROJECT MANAGEMENT
3.1 Responsibilities of a Software Project Manager
3.1.1 Job Responsibilities of a Software Project Manager.
3.1.2 Skills Necessary for Software Project Management...
3.2 Project Planning
3.2.1 The SPMP Document
3.3 Metrics for Project Size Estimation
3.3.1 Lines of Code (LOC)
3.3.2 Function Point Metric
3.4 Project Estimation Techniques
3.4.1 Empirical Estimation Techniques .<
3.4.2 Heuristic Tedmiques
3.4.3 Analytical Estimation Tedmiques ....
3.5 Empiricd Estimation Techniques
3.5.1 Expert Judgement Technique
3.5.2 Delphi Cost Estimation
3.6 COCOMO—A Heuristic Estimation Technique
3.6.1 Basic COCOMO Model ,
3.6.2 Intermediate COCOMO .
3.6.3 Complete COCOMO
3.6.4 COCOMO 2 ..:
3.7 Halstead's Software Science—An Analytical Technique.......
3.7.1 Length and Vocabulary
3.7.2 Program Volume
3.7.3 Potential Minimum Volume
3.7.4 Effort and Time
3.7.5 Length Estimation
3.8 Staffing Level Estimation r.
3.8.1 Norden's Work
3.8.2 Putnam's Work
3.8.3 Effect of Schedule Change on Cost
3.8.4 Jensen's Model
3.9 Scheduling
3.9.1 Work Breakdown Structure
3.9.2 Activity Networks and Critical Path Method
3.9.3 Gantt Charts
3.9.4 PERT Charts
3.9.5 Project Monitoring and Control
3.10 Organization and Team Structures
3.10.1 Organization Structure
3.10.2 Team Structure
3.11 Staffing
3.11.1 Who is a Good Software Engineer? .
3.12 Risk Management
3.12.1 Risk Identification
3.12.2 Risk Assessment
3.12.3 Risk Containment
3.13 Software Configuration Management
3.13.1 Necessity of Software Configuration Management
3.13.2 Configuration Management Activities
3.13.3 Source Code Control System (SCCS) and RCS
3.14 Miscellaneous Plans
4. REQUIREMENTS ANALYSIS AND SPECIFICATION .....
4.1 Requirements Gathering and Analysis
4.1.1 Requirements Gathering
4.1.2 Requirements Analysis
4.2 Software Requirements Specification (SRS)
4.2.1 Characteristics of a Good SRS Document
4!2.2 Examples of Bad SRS Documents
4.2.3 Important Categories of Customer Requirements ,
4.2.4 Functional Requirements
4.2.5 How to Identify the Functional Requirements?
4.2.6 How to Document the Functional Requirements?
4.2.7 Traceability
4.2.8 Organization of the SRS Document
4.2.9 Techniques for Representing Complex Logic..,
4.3 Formal System Specification
4.3.1 What is a Formal Technique?
4.3.2 Model versus Property-Oriented Methods
4.3.3 Operational Semantics
4.3.4 Merits and Limitations of Formal Methods ...
4.4 Axiomatic Specification
4.5 Algebraic Specification
4.5.1 Properties of Algebraic Specifications .
4.5.2 Auxiliary Functions
4.5.3 Structured Specification
4.5.4 Pros and Cons of Algebraic Specifications ....
4.6 Executable Specification and 4GL
SOFTWARE DESIGN
5.1 Outcome of a Design Process
5.1.1 Classification of Design Activities,
5.1.2 Classification of Design Methodologies
5.1.3 Analysis versus Design
5.2 How can We Characterize a Good Software Design? .
5.3 Cohesion and Coupling
5.3.1 Coupling
5.3.2 Cohesion
5.3.3 Functional Independence
5.3.4 Classification of Cohesiveness
5.3.5 Classification of CoupUng
5.4 Layered Arrangement of Modules
5.5 Approaches to Software Design
5.5.1 Function-Oriented Design
5.5.2 Object-Oriented Design
5.6 Object-Oriented versus Function-Oriented Design Approaches
5.6.1 Automated Fire-Alarm System—Customer Requirements
5.6.2 Function-Oriented Approach
5.6.3 Object-Oriented Approach
6. FUNCTION-ORIENTED SOFTWARE DESIGN.
6.1 Overview of SA/SD Methodology
6.2 Structured Analysis
6.3 Data Flow Diagrams (DFDs)
6.3.1 Primitive Symbols Used for Constructing DFDs
6.3.2 Some Important Concepts Associated with Constructing
DFD Models
6.3.3 Developing the DFD Model of a System.
6.3.4 Shortcomings of the DFD Model
6.4 Extending DFD Technique to Make it Applicable to Real-Time Systems
6.5 Structmred Design
6.5.1 Flow Chart versus Structure Chart...
6.5.2 Transformation of a DFD Model into Structmre Uhart .
6.5.3 Transform Analysis ..
6.5.4 Transaction Analysis
6.6 Detailed Design...,
6.7 Design Review
7. OBJECT MODELLING USING UML.
7.1 Overview of Basic Object-Orientation Concepts .
7.1.1 Basic Mechanisms
7.1.2 Key Concepts
7.1.3 Related Technical Terms
7.1.4 Advantages of OOD
7.2 Unified Modelling Language (UML)..
7.3 UML Diagrams ...
7.4 Use Case Model..
7.4.1 Representation of Use Cases
7.4.2 Why Develop the Use Case Diagram?..
7.4.3 How to Identify the Use Cases of a System?
7.4.4 Essential versus Real Use Case
lA.b Factoring of Connnonality among Use Cases
7.4.6 Use Case Packaging
7.5 Class Diagrams
7.6 Interaction Diagrams .
7.7 Activity Diagrams
7.8 State Chart Diagram .
7.9 Postscript
7.9.1 Package and Deployment Diagrams .
7.9.2 UML 2.0
8. OBJECT-ORIENTED SOFTWARE DEVELOPMENT
8.1 Patterns
8.1.1 Basic Pattern Concepts
8.1.2 Types of Patterns
8.1.3 More Pattern Concepts
8.2 Some Common Design Patterns
8.2.1 Expert
8.2.2 Creator
8.2.3 Facade Pattern
8.2.4 Model View Separation Patterns
8.2.5 Observer Pattern
8.2.6 Model-View-Controller (MVC) Pattern
8.2.7 Publish-Subscribe Pattern
8.2.8 Intermediary (or Proxy) Pattern
8.3 An Object-Oriented Analysis and Design Methodology
8.3.1 The Unified Process
8.3.2 Overview of the OOAD Methodology ..
8.3.3 Use Case Model Development
8.3.4 Domain Modelling
8.3.5 Identification of Entity Objects
8.3.6 Booch's Object Identification Method..
8.4 Interaction Modelling.
8.4.1 CRC Cards....
8.5 Applications of the Analysis and Design Process .
8.6 OOD Goodness Criteria
9. USER INTERFACE DESIGN
9.1 Characteristics of a Good User Interface....
9.2 Basic Concepts
9.2.1 User Guidance and Online Help
9.2.2 Mode-based versus Modeless Interface
9.2.3 Graphical User Interface (GUI) vs. Text-based User Interface
9.3 Types of User Interfaces
9.3.1 Command Language-based Interface
9.3.2 Menu-based Interface
9.3.3 Direct Manipulation Interfaces
. 9.4 Fundamentals of Component-based GUI Development..
9.4.1 Window System
9.4.2 Types of Widgets
9.4.3 An Overview of X-Window/MOTIF
9.4.4 X Architecture
9.4.5 Visual Programming
9.4.6 Size Measurement of a Component-based GUI
9.5 A User Interface Design Methodology
9.5.1 Imphcations of Human Cognition Capabilities on
User Interface Design
9.5.2 A GUI Design Methodology
9.5.3 Task and Object Modelling
9.5.4 Selecting a Metaphor
9.5.5 Interaction Design and Rough Layout
9.5.6 User Interface Inspection
10. CODING AND TESTING
10.1 Coding
10.1.1 Coding Standards and Guidelines
10.2 Code Review ••••
10.2.1 Code Walkthrough
10.2.2 Code Inspection
10.2.3 Clean Room Testing
10.3 Software Docmnentation
10.3.1 Internal Docmnentation
10.3.2 External Documentation
10.3.3 Gmming's Fog Index
10.4 Testing
10.4.1 Basic Concepts and Terminologies
10.4.2 Why Design Test Oases?
10.5 Testing in the Large versus Testing in the Small.
10.6 Unit Testing
10.6.1 Driver and Stub Modules
10.7 Black-Box Testing
10.7.1 Equivalence Class Partitioning.
10.7.2 Boimdary Value Analysis
10.7.3 Summary of the Black-Box Test Suite Design Approach
10.8 White-Box Testing
10.8.1 Basic Concepts
10.8.2 Statement Coverage
10.8.3 Branch Coverage.....
10.8.4 Condition Coverage
10.8.5 Path Coverage
10.8.6 McCabe's Cyclomatic Complexity Metric
10.8.7 Data Flow-based Testing
10.8.8 Mutation Testing
10.9 Debugging
10.9.1 Debugging Approaches....
10.9.2 Debugging Guidelines
10.10 Program Analysis Tools
10.10.1 Static Analysis Tools
10.10.2 Dynamic Analysis Tools .
10.11 Integration Testing
10.11.1 Phased versus Incremental Integration Testing
10.12 Testing Object-Oriented Programs
10.12.1 What is a Suitable Unit for Testing Object-Oriented
Programs?
10.12.2 Do Various Object-Orientation Concepts Make Testing Easy?
10.12.3 Why are Traditional Techniques Considered Unsatisfactory
for Testing Object-Oriented Programs?
10.12.4 Grey-Box Testing of Object-Oriented Programs ..
10.12.5 Integration Testing of Object-Oriented Programs
10.13 System Testing
10.13.1 Performance Testing .
10.13.2 Error Seeding
10.14 Some General Issues Associated with Testing
10.14.1 Test Documentation.
10.14.2 Regression Testing ...
11. SOFTWARE RELIABILITY AND QUALITY MANAGEMENT
11.1 Software Reliability
11.1.1 Hardware versus Software Reliability
11.1.2 Reliability Metrics
11.1.3 Reliability Growth Modelling..
11.2 Statistical Testing
11.3 Software Quality
11.4 Software Quality Management System.
11.4.1 Evolution of Quality Systems..
11.4.2 Product Metrics versus Process Metrics
11.5 ISO 9000
11.5.1 What is ISO 9000 Certification?
11.5.2 ISO 9000 for Software Industry
11.5.3 Why Get ISO 9000 Certification?
11.5.4 How to Get ISO 9000 Certification? ....
11.5.5 Siuninary of ISO 9001 Requirements
11.5.6 Salient Features of ISO 9001 Reqmrements
11.5.7 ISO 9000-2000
11.5.8 Shortcomings of ISO 9000 Certification
11.6 SEI Capability Maturity Model
11.6.1 Comparison between ISO 9000 Certification and SEI/CMM
11.6.2 Is SEI CMM Applicable to Small Organizations? ..
11.6.3 CMMI
11.7 Personal Software Process (PSP)
11.8 Six Sigma
12. COMPUTER AIDED SOFTWARE ENGINEERING .
12.1 Case and its Scope
12.2 Case Environment
12.2.1 Benefits of CASE
12.3 CASE Support in Software Life Cycle...
12.3.1 Prototyping Support
12.3.2 Structured Analysis and Design
12.3.3 Code Generation
12.3.4 Test Case Generator
12.4 Other Characteristics of CASE Tools ....
12.4.1 Hardware and Environmental Requirements
12.4.2 Docmnentation Support
. 12.4.3 Project Management
12.4.4 External Interface
12.4.5 Reverse Engineering Support
12.4.6 Data Dictionary Interface
12.4.7 Tutorial and Help
12.5 Towards Second Generation CASE Tool ..
12.6 Architecture of a CASE Environment
13. SOFTWARE MAINTENANCE
13.1 Characteristics of Software Maintenance..
13.1.1 Types of Software Maintenance
13.1.2 Characteristics of Software Evolution
13.1.3 Special Problems Associated with Software Maintenance
13.2 Software Reverse Engineering
13.3 Software Maintenance Process Models
13.4 Estimation of Maintenance Cost
14. SOFTWARE REUSE
14.1 What can be Reused?
14.2 Why Almost no Reuse so Far?
14.3 Basic Issues in any Reuse Program .
14.4 A Reuse Approach
14.4.1 Domain Analysis
14.4.2 Component Classification
14.4.3 Searching
14.4.4 Repository Maintenance
14.4.5 Reuse without Modifications
14.5 Reuse at Organization Level
14.5.1 Current State of Reuse
15. EMERGING TRENDS
15.1 Client-Server Software
15.1.1 Advantages of Client-Server Software ....
15.1.2 Disadvantages of Client-Server Software
15.1.3 Client-Server Architectures ..
15.1.4 COKBA
15.1.5 COM/DCOM
15.2 Service-Oriented Architecture (SOA)
15.3 Software £is a Service (SaaS)

9788120338197 (pb)


Computer Science.
Software Engineering.
Logics and Meanings of Programs.

005.1 / MAL/F
SIKKIM UNIVERSITY
University Portal | Contact Librarian | Library Portal

Powered by Koha