What Every Engineer Should Know about Software Engineering 2nd Edition by Phillip A Laplante, Mohamad Kassab – Ebook PDF Instant Download/Delivery: 9781032103181 ,1032103183
Full download What Every Engineer Should Know about Software Engineering 2nd Edition after payment
Product details:
ISBN 10: 1032103183
ISBN 13: 9781032103181
Author: Phillip A Laplante, Mohamad Kassab
What Every Engineer Should Know about Software Engineering 2nd Edition Table of contents:
1 The Profession of Software Engineering
Outline
1.1 Introduction
1.2 Software Engineering as an Engineering Profession
1.2.1 What Is Software Engineering?
1.2.2 Is Software Engineering an Engineering Discipline?
1.2.3 What Is the Difference between Software Engineering and Systems Engineering?
1.2.4 What Is the History of Software Engineering?
1.2.5 What Is the Role of the Software Engineer?
1.2.6 How Do Software Engineers Spend Their Time on the Job?
1.2.7 What Is the Difference between a Software Engineer and a Systems Developer?
1.2.8 What Kind of Education Do Software Engineers Need?
1.2.9 What Kind of Education Do Software Engineers Typically Have?
1.2.10 I Know Someone Who Is an “XYZ Certified Engineer”; Are They a Software Engineer?
1.2.11 Why Are There So Many Software Engineers without the Proper Education?
1.2.12 Can Software Engineering Programs Be Accredited?
1.2.13 What Are Some of the Popular Certificates in Demand for Software Engineers?
1.3 Standards and Certifications
1.3.1 Are There Standards for Software Engineering Practices, Documentation, and So Forth?
1.3.2 What Is the Software Engineering Body of Knowledge?
1.3.3 Are There Any “Fundamental Theorems” of Software Engineering?
1.4 Misconceptions about Software Engineering
1.4.1 Why Is Software So Buggy and Unreliable?
1.4.2 I Write Software as Part of My Job; Does That Make Me a Software Engineer?
1.4.3 But Isn’t Software System Development Primarily Concerned with Programming?
1.4.4 Can’t Software Tools and Development Methods Solve Most or All of the Problems Pertaining to Software Engineering?
1.4.5 Isn’t Software Engineering Productivity a Function of System Complexity?
1.4.6 Once the Software Is Delivered, Isn’t the Job Finished?
1.4.7 Aren’t Errors an Unavoidable Side Effect of Software Development?
Further Reading
2 Software Properties, Processes, and Standards
Outline
2.1 Introduction
2.2 Characteristics of Software
2.2.1 How Do Software Engineers Characterize Software?
2.2.2 What Is Software Quality?
2.2.3 What Are the Consequences of Ignoring Quality Attributes While Building Software?
2.2.4 What Are the Different Qualities That Can Characterize Software?
2.2.5 What Is Software “Security”?
2.2.6 What Is Software “Performance”?
2.2.7 What Is Software “Usability”?
2.2.8 What Is Software “Portability”?
2.2.9 What Is Software “Interoperability”?
2.2.10 What Is Software “Testability”?
2.2.11 What Is Software “Modifiability”?
2.2.12 What Is Software “Reliability”?
2.2.13 How Do You Measure Software Reliability?
2.2.14 What Is a Failure Function?
2.2.15 What Is a “Bathtub Curve”?
2.2.16 But Software Doesn’t Wear Out, So Why Would It Conform to the Bathtub Curve?
2.2.17 Can the Traditional Quality Measures of MTFF or MTBF Be Used to Stipulate Reliability in the Software Requirements Specification?
2.2.18 What Is Meant by the “Correctness” of Software?
2.2.19 What Is “Traceability” in Software Systems?
2.2.20 Are There Other Software Qualities?
2.3 Software Processes and Methodologies
2.3.1 What Is a Software Process?
2.3.2 Isn’t Every Software Process Model Just an Abstraction?
2.3.3 What Benefits Are There to Using a Software Process Model?
2.3.4 What Is a Software Methodology?
2.3.5 Aren’t Software Process Models and Methodologies the Same?
2.3.6 What Is the Waterfall Life Cycle Model?
2.3.7 How Many Phases Should the Waterfall Model Have?
2.3.8 What Happens during the Software Conception Phase of the Waterfall Process Model?
2.3.9 Does the Software Conception Phase Really Happen?
2.3.10 What Happens during the Requirements Specification Phase of the Waterfall Process Model?
2.3.11 Do Any Test Activities Occur during the Requirements Specification Phase?
2.3.12 What Happens during the Software Design Phase of the Waterfall Process Model?
2.3.13 Do Any Test Activities Occur during the Software Design Phase?
2.3.14 What Happens during the Software Development Phase of the Waterfall Process Model?
2.3.15 What Test Activities Occur during the Software Development Phase?
2.3.16 When Does the Software Development Phase End?
2.3.17 What Happens during the Testing Phase of the Waterfall Process Model?
2.3.18 When Does the Testing Phase End?
2.3.19 What Happens during the Software Maintenance Phase of the Waterfall Process Model?
2.3.20 How Are Maintenance Corrections Supposed to Be Handled?
2.3.21 The Waterfall Model Looks Artificial. Is There No Backtracking?
2.3.22 What Is the V Model for Software?
2.3.23 What Is the Spiral Model for Software?
2.3.24 What Are Evolutionary Models?
2.3.25 Are There Any Downsides to Using Evolutionary Models?
2.3.26 What Is the Incremental Software Model?
2.3.27 What Is the Difference between Incremental and Evolutionary Models?
2.3.28 Why Use the Incremental Model?
2.3.29 Are There Any Downsides to the Incremental Model?
2.3.30 What Is the Unified Process Model?
2.3.31 Where Is the UPM Used?
2.3.32 What Are Agile Methodologies?
2.3.33 What Are the Principles behind the Agile Manifesto?
2.3.34 What Are the Benefits of Agile Software Development?
2.3.35 What Are Some Agile Methodologies?
2.3.36 What Is Extreme Programming?
2.3.37 What Is Scrum?
2.3.38 What Is Kanban?
2.3.39 What Is Lean Development?
2.3.40 What Are DevOps Practices?
2.3.41 What Is Scaled Agile Framework?
2.3.42 When Should Agile Methodologies Be Used?
2.3.43 Is There a Case to Be Made for Not Using Agile Methods?
2.3.44 All of These Process Models Look Rather Simplistic, Artificial, or Too Prescriptive. Should They Really Be Used?
2.4 Software Standards
2.4.1 Who Publishes Software Standards?
2.4.2 What Is the DOD-STD-2167A Standard?
2.4.3 What Is the DOD-STD-498 Standard?
2.4.4 What Is the ISO 9000 Standard?
2.4.5 Which Part of ISO 9000 Applies to Software?
2.4.6 Who Uses This Standard?
2.4.7 What Is in the ISO 90003 Standard?
2.4.8 How Specific Is ISO 90003 for Software?
2.4.9 What Is ISO/IEC Standard 12207?
Notes
Further Reading
3 Software Requirements Engineering
Outline
3.1 Introduction
3.2 Requirements Engineering Concepts
3.2.1 What Is a “Requirement”?
3.2.2 What Is the Requirements Specification?
3.2.3 What Are the Different Types of Requirements?
3.2.4 What are the “Functional Requirements”?
3.2.5 What Are “Non-Functional Requirements”?
3.2.6 What Are “Domain Requirements”?
3.2.7 When Does Requirements Engineering Start?
3.2.8 What Are the Core Activities of Requirements Engineering?
3.3 Requirements Elicitation/Discovery
3.3.1 What Is “Requirements Elicitation”?
3.3.2 What Are the Obstacles That May Challenge the Requirements Elicitation?
3.3.3 How Should We Prepare for the Requirements Elicitation Process?
3.3.4 What Are the Common Requirements Elicitation Techniques?
3.4 Requirements Representation and Documentation
3.4.1 What Is the Role of the SRS?
3.4.2 Who Uses the Requirements Documents?
3.4.3 What Is Semi-Formal Representation?
3.4.4 What Is UML/SysML?
3.4.5 What Is Formal Representation?
3.4.6 What Advantage Is There in Applying a Layer of Potentially Complex Mathematics to the Already Complicated Problem of Behavioral Description?
3.4.7 Which Notations to Select?
3.4.8 What Is the Correct Format for an SRS?
3.4.9 What Is the Recommended Format to Write Each Requirement?
3.5 Requirements Validation and Verification
3.5.1 What Is Requirements Risk Management?
3.5.2 What Is the Difference between Validation and Verification?
3.5.3 What Are the Techniques to Perform Validations and Verifications on Requirements?
3.5.4 Are There Any Tools to Support the Validation and Verification?
3.5.5 What Are the Standards for Validation and Verification?
3.5.6 What Are the Qualities That Must Exist in Requirements according to IEEE 29148?
3.5.7 What Does a Traceability Matrix Look Like?
3.6 Requirements Management and Tools
3.6.1 What Is Requirements Management?
3.6.2 What Are the Challenges to Requirements Management?
3.6.3 What Are the Existing Approaches to Reach Consensus among Different Stakeholders?
3.6.4 What Are Popular Tools to Support RE Activities?
3.7 Requirements Engineering in an Agile Environment
3.7.1 How Is RE Different in Agile?
3.7.2 How Is Requirements Engineering Performed in XP?
3.7.3 How Is Requirements Engineering Performed in Scrum?
3.7.4 How Are the User Stories Gathered?
3.7.5 How Are the User Stories Written?
3.7.6 How Are the User Stories Estimated?
3.7.7 How Are the User Stories Prioritized?
Notes
Further Reading
4 Software Architecture
Outline
4.1 Introduction
4.2 Basic Concepts
4.2.1 What Is Software Architecture?
4.2.2 So, Software System Architecture Is a Set of Structures, and a Structure Can Be Represented through Different Views. What Are the Types of Views?
4.2.3 Can You Illustrate the Point with an Example?
4.2.4 Why Is Software Architecture Significant?
4.2.5 Can Software Architecture Influence the Structure of the Development Team or Even the Organization Itself?
4.2.6 What Makes One Architecture Superior to the Other?
4.2.7 What Is the Difference between Architecture and Programming?
4.2.8 What Is the Course of Evolution of Software Architecture as a Discipline?
4.3 Architectural Drivers
4.3.1 What Are Architectural Drivers?
4.3.2 How Do We Generate the Architectural Drivers?
4.3.3 Can You Illustrate This with an Example?
4.4 Architectural Decisions
4.4.1 What Is a Tactic?
4.4.2 What Is a Pattern?
4.4.3 What Is the State of Practice on Using Architectural Patterns?
4.4.4 What Is the Relationship between Tactics and Patterns?
4.5 Architecture Design Process
4.5.1 What Is Attribute-Driven Design?
4.5.2 Can You Give an Illustrative Example?
4.6 Architecture Documentation
4.6.1 Is There a Recommended Template to Follow to Document the Architecture?
4.6.2 What Are Some Points to Keep in Mind While Documenting Architecture?
4.6.3 Which Notations Can an Architect Use to Represent the Architecture?
4.6.4 What Are the Basic Principles of Good Architectural Documentation?
4.6.5 What Are Some of the Common Bad Practices When Documenting Software Architecture?
4.7 Architecture Evaluation
4.7.1 Why Is It Important to Evaluate the Architecture?
4.7.2 What Are the Challenges in Evaluating Architecture?
Further Reading
5 Designing Software
Outline
5.1 Introduction
5.2 Software Design Concepts
5.2.1 What Is Software Design?
5.2.2 What Is the Difference between Software Architecture and Software Design?
5.2.3 What Are the Principal Activities of Software Design?
5.3 Basic Software Engineering Principles
5.3.1 How Do Rigor and Formality Enter into Software Engineering?
5.3.2 What Is Separation of Concerns?
5.3.3 Can Modular Design Lead to Separation of Concerns?
5.3.4 What Is Cohesion?
5.3.5 What Is Coupling?
5.3.6 What Is Parnas Partitioning?
5.3.7 How Do I Do Parnas Partitioning?
5.3.8 Can You Give an Example of Parnas Partitioning?
5.3.9 Can You Do Parnas Partitioning in Object-Oriented Design?
5.3.10 How Can Changes Be Anticipated in Software Designs?
5.3.11 How Does Generality Apply to Software Design?
5.3.12 How Does Incrementality Manifest in Software Design?
5.4 Software Design Modeling
5.4.1 What Standard Methodologies Can Be Used for Software Design?
5.4.2 What Is Procedural-Oriented Design?
5.4.3 What Is SD?
5.4.4 What Is the Difference between SA and SD?
5.4.5 How Do I Go from SA to SD?
5.4.6 What Is OOD?
5.4.7 What Are the Benefits of Object Orientation?
5.4.8 What Are the Basic Rules of OOD?
5.4.9 What Is the UML?
5.4.10 How Does the UML Help Us with Software Design?
5.4.11 Can You Give an Example of an OOD?
5.5 Pattern-Based Design
5.5.1 What Is a Pattern?
5.5.2 What Is the History of Patterns?
5.5.3 Why Do We Need Patterns?
5.5.4 What Are the Benefits of Patterns?
5.5.5 What Do Patterns Look Like?
5.5.6 What Are the “GRASP” Patterns?
5.5.7 What Are the Gang of Four Patterns?
5.5.8 What Are Creational Patterns?
5.5.9 What Are Structural Patterns?
5.5.10 What Are Behavioral Patterns?
5.5.11 Are There Any Other Pattern Sets?
5.5.12 What Are the Drawbacks of Patterns?
5.6 Design Documentation
5.6.1 Is There a Standard Format for SDS?
5.6.2 How Do I Achieve Traceability from Requirements through Design and Testing?
5.6.3 Can You Give an Example of a Design Document?
Further Reading
6 Software Construction
Outline
6.1 Introduction
6.2 Programming Languages
6.2.1 Is the Study of Programming Languages Really of Interest to the Software Engineer?
6.2.2 What Happens When Software Behaves Correctly but Is Poorly Written?
6.2.3 But I Have Been Writing Code since My First Programming Course in College. Surely I Don’t Need Any Lessons in Programming Languages, Do I?
6.2.4 What about Working with Legacy Code?
6.2.5 So How Many Programming Languages Are There?
6.2.6 Programming Language Landscape
6.2.7 Programming Features and Evaluation
6.2.8 Brief Survey of Languages
6.3 Web-Oriented Programming
6.3.1 What Is Web-Oriented Programming?
6.3.2 What Is the Role of the HTTP Protocol in the WOP?
6.3.3 What Is SOAP?
6.3.4 Can You Say Something about RESTful Services?
6.4 Software Construction Tools
6.4.1 What Is the Value Proposition for Using Software Construction Tools?
6.4.2 What Is a Compiler?
6.4.3 Can You Describe Further the Compilation Process?
6.4.4 How Do I Deal with Compiler Warnings and Errors?
6.4.5 Do You Have Any Debugging Tips?
6.4.6 Is There Any Way to Automatically Debug Code?
6.4.7 What Are Symbolic Debuggers and How Are They Used?
6.4.8 Can You Give Me an Example of a Debugging Session?
6.4.9 What Is a Version Control System?
6.4.10 What Are the Benefits of Using VCS?
6.4.11 What Is a Centralized VCS?
6.4.12 What Is a Distributed VCS?
6.4.13 Are There Open-Source, Free VCSs?
6.4.14 What Is Log Management Software?
6.4.15 Can You Give Examples of Log Management Tools?
6.4.16 What Is a Build Tool?
6.4.17 What Are the Requirements to Look at When Selecting a Build Tool?
6.4.18 Are There Other Tools That I Can Use, Particularly When Debugging Embedded Systems?
6.4.19 What Are In-Circuit Emulators?
6.4.20 How Are ICEs Used?
6.4.21 What Are Software Simulators and When Are They Used?
6.4.22 When Is Hardware Prototyping Useful?
6.4.23 What Are Integrated Development Environments?
6.4.24 What about Other Tools?
6.5 Open Source
6.5.1 What Is Open-Source Software?
6.5.2 What Is an Open-Source Software License?
6.5.3 Where Did OSS Come From?
6.5.4 What Kinds of Code Can Be Found as Open Source?
6.5.5 What Is the Value Proposition for OSS?
6.5.6 Who Contributes to OSS Systems?
6.5.7 Where Can I Find OSS Projects?
6.5.8 Can Companies Use OSS?
6.5.9 What Are the Characteristics of the OSS Development Model?
6.5.10 How Does Software Requirements Engineering Occur in OSS?
6.5.11 How Do the Software Design and Build Processes Take Place in Open-Source Systems?
6.5.12 How Are OSS Projects Managed?
6.5.13 Are There Downsides to Using OSS?
6.6 Becoming a Better Code Developer
6.6.1 How Can I Become a Better Developer of Code?
6.6.2 Code Smells
6.6.3 Refactoring
6.6.4 Coding Standards
Note
Further Reading
7 Software Quality Assurance
Outline
7.1 Introduction
7.2 Quality Models and Standards
7.2.1 What Is Software Quality?
7.2.2 What Is a Quality Model?
7.2.3 What Is the Capability Maturity Model?
7.2.4 What Is ISO 9000?
7.2.5 What Are the ISO 90003 Principal Areas of Quality Focus?
7.2.6 What Does ISO 90003 Look Like?
7.2.7 How Does ISO/IEC 12207 Help Promote Software Quality?
7.2.8 What Is Six Sigma?
7.2.9 What Is the IT Infrastructure Library?
7.2.10 Can ITIL Help with Software Quality Programs?
7.2.11 How Does ITIL Help with Software Quality Management?
7.2.12 Can Anything Bad Come of a Software Quality Initiative?
7.2.13 What Are the Symptoms of Slash-and-Burn Approaches?
7.2.14 What Is the Best Way to Promote Software Quality Improvement without Triggering a Slash-and-Burn Frenzy?
7.3 Software Testing
7.3.1 What Is the Role of Testing with Respect to Software Quality?
7.3.2 Is There a Difference between an Error, a Defect, a Bug, a Fault, and a Failure?
7.3.3 Is There a Difference between Verification and Validation?
7.3.4 What Is the Purpose of Testing?
7.3.5 What Is a Good Test?
7.3.6 What Are the Basic Principles of Software Testing?
7.3.7 How Do I Start Testing Activities during the Requirements Engineering Process?
7.3.8 What Test Activities Occur during Software Design and Code Development?
7.3.9 What Different Types of Testing Can Be Performed?
7.3.10 What Are the Different Testing Accessibilities?
7.3.11 What Is Black Box Testing?
7.3.12 Are There Any Disadvantages to Black Box Testing?
7.3.13 What Is White Box Testing?
7.3.14 What Are the Different Testing Levels?
7.3.15 What Is Unit-Level Testing?
7.3.16 What Is System Integration Testing?
7.3.17 What Is Incremental Integration Testing?
7.3.18 What Is the Difference between Top-Down and Bottom-Up Testing?
7.3.19 What Is Sandwich Integration Testing?
7.3.20 What Is Cleanroom Testing?
7.3.21 What Is Interface Testing?
7.3.22 What Kinds of Interfaces Can Be Tested?
7.3.23 What Kinds of Errors Can Occur at the Interfaces?
7.3.24 What Are Some Guidelines for Testing Interfaces?
7.3.25 What Are System and Acceptance Testing?
7.3.26 What Are the Different Characteristics to Test For?
7.3.27 What Is Object-Oriented Testing?
7.3.28 How Are Object Classes Tested?
7.3.29 How Can Clusters of Cooperating Objects Be Tested?
7.3.30 What Is Scenario Testing?
7.3.31 What Is Software Fault Injection?
7.3.32 When Should You Stop Testing?
7.3.33 What Are Test Coverage Metrics?
7.3.34 How Do I Write a Test Plan?
7.3.35 Are There Automated Tools for Testing That Can Make the Job Easier?
7.3.36 What Are Some Testing Tools That I Can Use?
7.3.37 What Is the Current State of Practice in Software Testing in the Industry?
7.4 Metrics
7.4.1 What Are Some Motivations for Measurement?
7.4.2 What Kinds of Metrics Exist for Tracking System Tests?
7.4.3 What Are the Metrics for Monitoring Test Execution?
7.4.4 What Are the Metrics for Monitoring Defects?
7.4.5 What Is the Spoilage Metric?
7.4.6 In Addition to Test Execution Metrics, What Other Kinds of Things Can We Measure in Software?
7.4.7 Is the “Lines of Code” Metric Useful?
7.4.8 What Are the Disadvantages of the LOC Metric?
7.4.9 What Are the Delta Lines of Code Metric?
7.4.10 What Is McCabe’s Metric?
7.4.11 How Does McCabe’s Metric Measure Software Complexity?
7.4.12 Can You Help Me Visualize the Cyclomatic Complexity?
7.4.13 Can the Computation of McCabe’s Metric Be Automated?
7.4.14 What Are Halstead’s Metrics?
7.4.15 Are Halstead’s Metrics Still Used?
7.4.16 What Are Function Points?
7.4.17 What Are the Primary Drivers for FPs?
7.4.18 How Do I Interpret the FP Value?
7.4.19 How Widely Is the FP Metric Used?
7.4.20 What Are Feature Points?
7.4.21 Are There Special Metrics for Object-Oriented Software?
7.4.22 What Are Some Method-Level Metrics?
7.4.23 What Are Commonly Used Class-Level Metrics?
7.4.24 What Are Some Package-Level Metrics?
7.4.25 Are There Other Kinds of Object-Oriented Metrics?
7.4.26 What Are Object Points?
7.4.27 What Are Use Case Points?
7.4.28 This Is All So Confusing. Which Metrics Should I Use?
7.4.29 What Are Some Objections to Using Metrics?
7.5 Fault Tolerance
7.5.1 What Are Checkpoints?
7.5.2 What Are Recovery Blocks?
7.5.3 What Are Software Black Boxes?
7.5.4 What Is N-Version Programming?
7.5.5 What Is Built-in-Test Software?
7.5.6 How Should Built-in-Test Software Include CPU Testing?
7.5.7 Should Built-in-Test Software Test Memory?
7.5.8 What about Testing Other Devices?
7.6 Maintenance and Reusability
7.6.1 What Is Meant by Software Maintenance?
7.6.2 What Is Reverse Engineering?
7.6.3 What Is an Appropriate Model for Software Reengineering?
7.6.4 Since You Like Models So Much, Can You Give Me a Maintenance Process Model?
7.6.5 What Is System Release Planning?
7.6.6 What Is Software Reuse?
7.6.7 Are There Special Techniques for Achieving Reuse in Procedural Languages?
7.6.8 Are There Special Techniques for Achieving Reuse in Object-Oriented Languages?
7.6.9 When Is It Appropriate Not to Reuse Software?
7.6.10 What Is Pareto’s Principle and How Does It Apply to Software Engineering?
7.6.11 What Is the “Second System Effect”?
Note
Further Reading
8 Managing Software Projects and Software Engineers
Outline
8.1 Introduction
8.2 Software Engineers Are People Too
8.2.1 What Personnel Management Skills Does the Software Project Manager Need?
8.2.2 But What’s the Big Deal with “People Issues”?
8.2.3 How Does Team Chemistry Affect Software Projects?
8.2.4 Why Is Team Chemistry So Hard to Manage?
8.2.5 Management Styles
8.2.6 Dealing with Problems
8.2.7 Hiring Software Engineering Personnel
8.2.8 Agile Development Teams
8.3 Project Management Basics
8.3.1 What Is a Project?
8.3.2 What Makes a Software Project Different from Any Other Kind of Project?
8.3.3 Is Software Project Management Similar to Systems Project Management?
8.3.4 What Does the Software Project Manager Control?
8.3.5 What Do You Mean by Resources?
8.3.6 What about the Schedule?
8.3.7 What about Product Functionality?
8.3.8 How Does the Project Manager Put All of These Control Factors Together?
8.4 Antipatterns in Organization Management
8.4.1 What Do You Mean by Antipatterns in Organizations?
8.4.2 What Do You Mean by Management Antipatterns?
8.4.3 Can You Give Some Examples of the Management Antipatterns?
8.4.4 What Do You Mean by Metric Abuse?
8.4.5 What Do You Mean by Mushroom Management?
8.4.6 What Do You Mean by Environmental Antipatterns?
8.4.7 Can You Give Some Examples of Environmental Antipatterns?
8.4.8 What Do You Mean by Divergent Goals?
8.4.9 What Is Meant by Process Clash?
8.5 Tracking and Reporting Progress
8.5.1 What Is a Work Breakdown Structure and Why Is It Important in Project Tracking?
8.5.2 What Is the Level of Detail of the Tasks in the WBS?
8.5.3 What Is the Role of the WBS in Project Planning?
8.5.4 Are There Any Drawbacks to the Traditional WBS?
8.5.5 Are There Any Alternatives to Using the WBS?
8.5.6 How Are Work and Progress Tracked in Software Projects?
8.5.7 What Is a Gantt Chart?
8.5.8 What Does the Gantt Chart Look Like?
8.5.9 Can the Gantt Chart Be Used for Large Projects?
8.5.10 How Can the Gantt Chart Be Used for Ongoing Project Management?
8.5.11 What Is the CPM?
8.5.12 What Are the Steps in CPM Planning?
8.5.13 Can You Illustrate the Technique Using the Baggage Inspection System?
8.5.14 Are There Downsides to Using CPM?
8.5.15 What Is PERT?
8.5.16 How Do You Build the PERT Diagram?
8.5.17 Can You Show Me an Example?
8.5.18 Are There Any Downsides to Using PERT?
8.5.19 Are Commercial Products Available for Building These Charts?
8.5.20 Can You Recommend the Best Tool to Use?
8.5.21 Is Becoming an Expert in Using the Project Planning Tools the Key to Being a Good Software Project Manager?
8.6 Software Cost Estimation
8.6.1 Are There Well-Known and Respected Tools for Doing Software Project Cost Estimation?
8.6.2 What Is Basic COCOMO?
8.6.3 Can You Give Me an Example Using COCOMO?
8.6.4 Where Do the Source Code Estimates Come From?
8.6.5 Should I Use More than One Estimate?
8.6.6 What about the Intermediate and Detailed COCOMO Models?
8.6.7 What Is the Adaptation Adjustment Factor?
8.6.8 What Is the Effort Adjustment Factor?
8.6.9 What Do These Adjustment Factors Look Like?
8.6.10 How Widely Used Is COCOMO?
8.6.11 What Are the Downsides to Using COCOMO?
8.6.12 What Is COCOMO II?
8.6.13 What Is WEBMO?
8.7 Project Cost Justification
8.7.1 Is Software an Investment or an Expense?
8.7.2 What Is Software Return on Investment and How Is It Defined?
8.7.3 What Is an Example of a Project ROI Justification?
8.7.4 Yes, but How Do You Measure ROI?
8.7.5 OK, So How Can You Represent the Net Benefit and Initial Cost?
8.7.6 What Is NPV and How Can I Use It?
8.7.7 Can You Give an Example of an NPV Calculation for a Software Situation?
8.7.8 What Is the Answer to the Question of Acquiring the Testing Tool?
8.7.9 What Is an IRR?
8.7.10 Can You Give an Example of an ROI Calculation?
8.7.11 What Is a PI?
8.7.12 How Can PI Sub-optimize the Decision?
8.7.13 Should I Use PI at All?
8.7.14 What Is Payback?
8.7.15 How Can Payback Be Applied in a Software Project Setting?
8.7.16 This Seems Simplistic. Is Payback Really Used?
8.7.17 What Is Discounted Payback?
8.7.18 Can You Give an Example?
8.8 Risk Management
8.8.1 What Are Software Risks?
8.8.2 How Do Risks Manifest in Software?
8.8.3 How Does the Project Manager Identify, Mitigate, and Manage Risks?
8.8.4 What Are Some Other Ways That the Software Project Manager Can Mitigate Risk?
8.8.5 Is There a Predictive Model for the Likelihood of Any of These Risks?
8.8.6 Do You Have Any Other Advice about Managing Risk in Software Projects?
8.8.7 How Does Prototyping Mitigate Risk?
8.8.8 Are There Risks to Software Prototyping?
8.8.9 Are There Other Ways to Discover Risks So That They Can Be Mitigated?
Notes
Further Reading
9 Software Engineering Roadmap to the Future1
Outline
9.1 Introduction
9.2 Global Software Engineering
9.2.1 What Are Some of the Problems When Dealing with Global Software Engineering?
9.2.2 What Is the Difference between Internationalization and Distribution?
9.2.3 What Are the Issues to Consider When Dealing with Internationalization?
9.2.4 What Are the Issues to Consider When Dealing with a Distributed Team?
9.2.5 How Can Tools Play a Role in Globally Distributed Software Engineering Processes?
9.3 Software Engineering Practices in Small Businesses
9.3.1 What Is a Small Business?
9.3.2 What Characterizes Software Engineering Practices in Small Businesses?
9.4 Software Engineering and Disruptive Technologies
9.4.1 Software Engineering and the Internet of Things
9.4.2 Software Engineering and Blockchain
9.4.3 Software Engineering and Artificial Intelligence
9.4.4 Software Engineering and Cloud Computing
9.4.5 Software Engineering and Affective Computing
Note
Further Reading
Appendix A: Software Requirements for a Wastewater Pumping Station Wet Well Control System (rev. 02.01.00)
Reference
Appendix B: Software Design for a Wastewater Pumping Station Wet Well Control System (rev. 02.01.00)
References
Appendix C: Object Models for a Wastewater Pumping Station Wet Well Control System
Appendix D: Unified Modeling Language
References
Index
People also search for What Every Engineer Should Know about Software Engineering 2nd Edition:
what skills software engineer should have
what every software engineer should know
things every software engineer should know
what every engineer should know about risk engineering and management
what should every software engineer know
Tags: Phillip A Laplante, Mohamad Kassab, Every Engineer, Know, Software Engineering