|
A complete introduction to building robust and reliable software.
Beginning Software Engineering demystifies the software engineering methodologies and techniques that professional developers use to design and build robust, efficient and consistently reliable software. Free of jargon and assuming no previous programming, development or management experience, this accessible guide explains important concepts and techniques that can be applied to any programming language. Each chapter ends with exercises that let you test your understanding and help you elaborate on the chapter`s main concepts. Everything you need to understand waterfall, Sashimi, agile, RAD, Scrum, Kanban, Extreme Programming and many other development models is inside!
Book Features:
Describes in plain English what software engineering is Explains the roles and responsibilities of team members working on a software engineering project Outlines key phases that any software engineering effort must handle to produce applications that are powerful and dependable Details the most popular software development methodologies and explains the different ways they handle critical development tasks Incorporates exercises that expand upon each chapter`s main ideas Includes an extensive glossary of software engineering terms
Table of Contents:
Introduction
Part I: Software Engineering Step-by-Step
Chapter 1: Software Engineering from 20,000 Feet
Requirements Gathering High-Level Design Low-Level Design Development Testing Deployment Maintenance Wrap-up Everything All at Once Summary
Chapter 2: Before the Beginning
Document Management Historical Documents E-mail Code Code Documentation Application Documentation Summary
Chapter 3: Project Management
Executive Support Project Management PERT Charts Critical Path Methods Gantt Charts Scheduling Software Predicting Times Get Experience Break Unknown Tasks into Simpler Pieces Look for Similarities Expect the Unexpected Track Progress Risk Management Summary
Chapter 4: Requirement Gathering
Requirements Defined Clear Unambiguous Consistent Prioritized Verifiable Words to Avoid Requirement Categories Audience-Oriented Requirements Business Requirements User Requirements Functional Requirements Nonfunctional Requirements Implementation Requirements FURPS FURPS+ Common Requirements Gathering Requirements Listen to Customers (and Users) Use the Five Ws (and One H) Who What When Where Why How Study Users Refining Requirements Copy Existing Systems Clairvoyance Brainstorm Recording Requirements UML User Stories Use Cases Prototypes Requirements Specification Validation and Verification Changing Requirements Summary
Chapter 5: High Level Design
The Big Picture What to Specify Security Hardware User Interface Internal Interfaces External Interfaces Architecture Monolithic Client/Server Component-Based Service-Oriented Data-Centric Event-Driven Rule-Based Distributed Mix and Match Reports Other Outputs Database Audit Trails User Access Database Maintenance Configuration Data Data Flows and States Training UML Structure Diagrams Behavior Diagrams Activity Diagrams Use Case Diagram State Machine Diagram Interaction Diagrams Sequence Diagram Communication Diagram Timing Diagram Interaction Overview Diagram Summary
Chapter 6: Low Level Design
OO Design Identifying Classes Building Inheritance Hierarchies Refinement Generalization Hierarchy Warning Signs Object Composition Database Design Relational Databases First Normal Form Second Normal Form Third Normal Form Higher Levels of Normalization Summary
Chapter 7: Development 143
Use the Right Tools Hardware Network Development Environment Source Code Control Profilers Static Analysis Tools Testing Tools Source Code Formatters Refactoring Tools Training Selecting Algorithms Effective Efficient Predictable Simple Prepackaged Top-Down Design Programming Tips and Tricks Be Alert Write for People, Not the Computer Comment First Write Self-Documenting Code Keep It Small Stay Focused Avoid Side Effects Validate Results Practice Offensive Programming Use Exceptions Write Exception Handers First Don`t Repeat Code Defer Optimization Summary
Chapter 8: Testing
Testing Goals Reasons Bugs Never Die Diminishing Returns Deadlines Consequences It`s Too Soon Usefulness Obsolescence It`s Not a Bug It Never Ends It`s Better Than Nothing Fixing Bugs Is Dangerous Which Bugs to Fix Levels of Testing Unit Testing Integration Testing Automated Testing Component Interface Testing System Testing Acceptance Testing Other Testing Categories Testing Techniques Exhaustive Testing Black-Box Testing White-Box Testing Gray-Box Testing Testing Habits Test and Debug When Alert Test Your Own Code Have Someone Else Test Your Code Fix Your Own Bugs Think Before You Change Don`t Believe in Magic See What Changed Fix Bugs, Not Symptoms Test Your Tests How to Fix a Bug Estimating Number of Bugs Tracking Bugs Found Seeding The Lincoln Index Summary
Chapter 9: Deployment
Scope The Plan Cutover Staged Deployment Gradual Cutover Incremental Deployment Parallel Testing Deployment Tasks Deployment Mistakes Summary
Chapter 10: Metrics
Wrap Party Defect Analysis Kinds of Bugs Discoverer Severity Time Created Age at Fix Task Type Ishikawa Diagrams Software Metrics Qualities of Good Attributes and Metrics Using Metrics Process Metrics Project Metrics Things to Measure Size Normalization Function Point Normalization Count Function Point Metrics Multiply by Complexity Factors Calculate Complexity Adjustment Value Calculate Adjusted FP Summary
Chapter 11: Maintenance
Maintenance Costs Task Categories Perfective Tasks Feature Improvements New Features The Second System Effect Adaptive Tasks Corrective Tasks Preventive Tasks Clarification Code Reuse Improved Flexibility Bug Swarms Bad Programming Practices Individual Bugs Not Invented Here Task Execution Summary
Part II: Process Models
Chapter 12: Predective Models
Model Approaches Prerequisites Predictive and Adaptive Success and Failure Indicators Advantages and Disadvantages Waterfall Waterfall with Feedback Sashimi Incremental Waterfall V-Model Systems Development Life Cycle Summary
Chapter 13: Iterative Models
Iterative Versus Predictive Iterative Versus Incremental Prototypes Types of Prototypes Pros and Cons Spiral Clarifications Pros and Cons Unified Process Pros and Cons Rational Unified Process Cleanroom Summary
Chapter 14: RAD
RAD Principles James Martin RAD Agile Self-Organizing Teams Agile Techniques Communication Incremental Development Focus on Quality XP XP Roles XP Values XP Practices Have a Customer On Site Play the Planning Game Use Standup Meetings Make Frequent Small Releases Use Intuitive Metaphors Keep Designs Simple Defer Optimization Refactor When Necessary Give Everyone Ownership of the Code Use Coding Standards Promote Generalization Use Pair Programming Test Constantly Integrate Continuously Work Sustainably Use Test-Driven and Test-First Development Scrum Scrum Roles Scrum Sprints Planning Poker Burndown Velocity Lean Lean Principles Crystal Crystal Clear Crystal Yellow Crystal Orange Feature-Driven Development FDD Roles FDD Phases Develop a Model Build a Feature List Plan by Feature Design by Feature Build by Feature FDD Iteration Milestones Agile Unified Process Disciplined Agile Delivery DAD Principles DAD Roles DAD Phases Dynamic Systems Development Method DSDM Phases DSDM Principles DSDM Roles Kanban Kanban Principles Kanban Practices Kanban Board Summary
Apeendix: Solutions to Exercises Glossary IndexISBN - 9788126555376
|
|
Pages : 418
|