Déjà client ? Identifiez-vous

Mot de passe oublié ?

Nouveau client ?

CRÉER VOTRE COMPTE
The Engineering of Software
Ajouter à une liste

Librairie Eyrolles - Paris 5e
Indisponible

The Engineering of Software

The Engineering of Software

A Technical Guide for the Individual

Dick Hamlet, Joe Maybee

494 pages, parution le 01/10/2000

Résumé

In this book, the authors provide an introduction to the essential activities involved in a software engineering project. Readers will come to understand technical skills in requirements/specification, analysis, design/implementation, and testing. These methods are treated fully, with a multitude of examples for readers to emulate.

The book is divided into four parts—Software and Engineering; Requirements and Specification; Design and Coding; and Software Testing—to discuss the phases (besides coding) of the software lifecycle. It covers modern topics like Capability Maturity Model, Java, Automated and Regression testing, and Safety for mission critical projects.

This book is designed to hone the skills of the software engineer by reinforcing the methods and techniques used throughout the software lifecycle. It is also suitable for "crossover" engineers trained in other technical field who now find themselves working with software.

Contents

I. ENGINEERING AND SOFTWARE.

1. Concepts of Software Development.
Separation of Concerns.
Management vs. Technical.
Teamwork vs. Individual effort.
Different Tasks—Development Phases.
Phases of the Software Life Cycle.
Information Exchange Between Developer and End User.
Complete Problem Description (Developer Only).
Break Down into Detailed Assignments for Programming.
Programming.
Testing.
Changing the Program.
Naming the Development Phases.
The Business of Developing Software.
Time to Market.
Perceived Software Quality.
The Software Development Team.
Managing Development.
How Does It Fit?
Review Questions.
Further Reading.
References.

2. Some Principles of Software Development.
Intellectual Control.
Complexity and Control.
Language Betrays Us.
Divide and Conquer.
Independent Parts.
7+-2 Rule.
Hierarchies.
Know When to Stop.
Identify the "Customers".
Fuzzy into Focus.
Document it!
Record It or It's Lost.
Know What You've Assumed.
Traceability.
A (Document) Place for Everything and Everything in Its Place.
Documentation Isn't a Novel.
Input/Output is the Essence of Software.
Too Much Engineering Is Not a Good Thing.
If It Ain't Broke Don't Fix It.
The "Creeping Feature Creature".
Expect to deal with change.
Plan for it.
Fix it now.
Reuse past work.
Previous work well done is golden.
Create software sothat reuse is possible.
Don't reinvent the wheel.
Take responsibility.
Summary of software engineering principles.
How Does It Fit?
Review Questions.
Further Reading.
References.

3. Is it Really Engineering?
What's Different about Software?
Artificial Science.
The Analogy to Other Professions.
Civil Engineering.
Architecture.
Mechanical/Aeronautical Engineering.
Computer (Hardware) Engineering.
Medicine.
Responsibility of Software Developers.
Engineering Institutions.
Market forces.
The legal system.
Warranties.
Professional organizations.
Government regulation.
Professional engineers and accreditation.
"Software engineers" are legal only in Texas.
How Does It Fit?
Review Questions.
Further Reading.
References.

4. Management and Process.
The Controversy over "Process".
Fred Taylor's Scientific Management.
Program Development as a Formal Process.
Capability Maturity Model (CMM).
Process management isn't for every organization.
Engineering Management.
Metrics.
Estimation models.
Feedback from metrics.
How Does It Fit?
Review Questions.
Further Reading.
References.

5. The "Life Cycle" of Software.
Alternatives to the Waterfall Model.
The spiral model.
Exploratory programming.
Opportunistic development.
The Phases of Development.
Requirements.
Specification.
Design.
Code.
Testing.
Software inspection.
Inspection works.
The participants and the procedure.
Inspection is expensive.
What can an individual do?
Maintenance Throughout the Lifecycle.
Debugging.
Configuration management.
Managing a Development Lifecycle.
Progress reports.
Dividing effort among the phases.
How Does It Fit?
Review Questions.
Further Reading.
References.

6. The Test Plan.
Functional testing.
System-level functional testing.
Functional unit testing.
Normal vs. exception test cases.
Broken-box testing.
Fault-based testing.
An example.
Interface testing.
Boundary-value tests.
Test plan throughout the lifecycle.
Adding systematic testing to the plan.
After testing.
How Does It Fit?
Review Questions.
Further Reading.
References.

II. REQUIREMENTS AND SPECIFICATION.

7. Requirements.
Exploring Requirements.
Requirements describe a software transform.
Identification of system inputs and output.
Partitioning inputs and outputs.
Exploring relationships between inputs and outputs.
From requirements to the test plan.
Example: Printing Trees.
Pinning down the output format.
The input format.
Specifications that are not of concern to the user.
Commentary on the example.
Software "modes".
Rapid Prototyping.
Managing the Requirements Phase.
How Does It Fit?
Review Questions.
Further Reading.
References.

8. Properties of Good Requirements.
Understandable by end users.
Non-prescriptive.
Correct.
Complete.
Concise (succinct).
Precise.
Clear.
Unambiguous.
Consistent.
Traceable.
Modifiable.
Testable (verifiable).
Feasible.
Summary: how to write requirements?
How Does It Fit?
Review Questions.
Further Reading.
References.

9. Specification.
Customers and Their Needs.
Sharpening Requirements into Specifications.
When the end user "doesn't care".
Internal ("system") errors.
Using a specification as a test oracle.
Writing a specification only to discard it.
The Uses of Formalism.
Informal formalism.
The opportunity to verify.
Formal Specification and Design Methods.
Finite-state-machine design.
Object-oriented design.
Design with data-flow diagrams.
How Does It Fit?
Review Questions.
Further Reading.
References.

10. Formal Methods.
Specification Languages.
Enabling human talent.
Hard-to-use mathematics.
First-order Predicate Logic.
Example: sorting.
A first try.
Restricting the input.
Second try.
"Programming" a Specification.
Prolog: a quick introduction.
Prolog as a specification language.
Prolog and first-order logic-correct specifications.
The Controversy Over "Formal Methods".
Dangerous software.
Can formal methods make software safe?
Mathematical precision for its own sake.
Mathematical precision for proof.
The Formal Methodists' dream.
The "agnostic" position.
Formal specifications as automatic oracles.
How Does It Fit?
Review Questions.
Further Reading.
References.

III. DESIGN AND CODING.

11. Software Design.
Purposes of Design.
What Is a Design?
General Design Ideas.
Iterative Enhancement.
Step-wise Refinement.
Information Hiding.
Adding to the Test Plan in Design.
The Designer's Art.
By Engineers for Engineers.
From Requirements to Design.
Common, Needed Functions.
Major Data Structures.
Major Algorithms.
High-level ("Architectural") Design.
Designing Major Subsystems.
Traceability Matrices.
Subsystem Interfaces.
Environment Interface.
Detailed Design.
Decomposition of Subsystems into Modules.
Designing Major Modules of a Subsystem.
Defining Module Interfaces.
Specifying the Module Functions.
Module Documentation.
Formal Notations for Design.
Architectural Diagrams.
Design Formalisms.
How Does It Fit?
Review Questions.
Further Reading.
References.

12. Coding.
Programming Languages.
Strong Typing.
User-defined Types.
Encapsulation for Data Abstractions.
Run-time Checking.
Program Redundancy Checking.
Assertions.
And When a Problem is Caught-What Then?
Macro Capability.
Programming-language Libraries.
Error-prone Programming Language Constructions.
Choosing a Programming Language.
Languages for Rapid Prototyping.
Support Tools for Programming.
Language Analyzers-LCLint.
File Utilities.
Shell Command Scripts.
grep Searches.
Programmed Searches and Edits.
Comparing Files.
The make Utility.
Version-control Tools.
Adding to the Test Plan while Coding.
How Does It Fit?
Review Questions.
Further Reading.
References.

13. Pseudocode.
Designing with Pseudocode.
Example of Pseudocode: Zipf's Law.
Test Plan for the Zipf's Law Software.
Implementing Pseudocode.
C Implementation of Zipf's Law.
Implementing Zipf's Law in a Shell Script.
How Does It Fit?
Review Questions.
Further Reading.
References.

14. Finite-state Machines.
Designing with FSMs.
Formal Finite-state Automata.
Example FSM: the C scanf() Conversion.
Designing a Simple GUI as an FSM.
Test Plan for the GUI.
Model Checking.
Coding an FSM Design.
Implementation Techniques.
Implementing Transgressions of FSM Formalism.
How Does It Fit?
Further Reading.
References.

15. Abstract Data Types (ADTs).
Hiding Design Decisions.
ADT Signatures and Axioms-Boolean Example.
Signature Diagram.
Algebraic Axioms.
Encapsulation and C.
Example: the ADT "IntSet".
Signature for IntSet.
English Specification.
Design of IntSet.
Testing IntSet.
Implementing an ADT.
Implementing a Boolean ADT.
Encapsulation: Header Files.
Correctness of ADT implementations.
Implementing the IntSet ADTinC.
Instrumenting the ADT's Memory Allocation.
Local Variables of the ADT Type.
How Does It Fit?
Review Questions.
Further Reading.
References.

16. Object-oriented Design.
Real Objects and Software Objects.
What is a Software Object?
The Object Paradigm.
Object-oriented requirements.
Modeling the physical world.
The role of requirements.
Booch method.
Shlaer-Mellor method.
Class-Responsibilities-Collaboration (CRC) Method.
Example: A checkbook system.
Identification of classes and patterns.
Identification of Responsibilities.
Identification of collaborators.
Polymorphism and Inheritance.
Identification and Use of Persistent Data.
Checking an Object Design for Implementation.
Object-oriented languages.
Smalltalk.
C++.
Java.
A brief introduction to Java.
Objects and Classes.
Methods and parameters.
Inheritance and polymorphism.
Implementation of the Checkbook.
Implementation of the Account class.
Implementation of the Transaction and Check classes.
How Does It Fit?
Review Questions.
Further Reading.
References.

17. Data-flow Diagrams.
Elements of data-flow diagrams.
Data transforms.
Information flows.
Information sources and sinks.
Information stores.
Example DFDs: a payroll system.
Refining DFDs.
Heritage numbers.
DFD terminology.
The data dictionary.
Checking DFDs - CASE tools.
Structure charts.
The Central Transform.
Constructing Structure Charts.
Example Construction.
Implementing a DFD.
How Does It Fit?
Review Questions.
Further Reading.
References.

18. Wrapping up Design and Coding.
Additional Design Ideas.
The Universal Modeling Language (UML).
Client-server Design.
Choosing Design Techniques.
Recognizing a Design.
Which Formal Technique(s) Should I Use?
Wrapping Up the Code.
Documenting Choices.
Defensive Coding.
Managing the Design and Coding Phases.
How Does It Fit?
Review Questions.
Further Reading.
References.

IV. TESTING.

19. Software Testing.
Get Out the Test Plan.
What Should Testing Accomplish?
The Testing Process: Unit Testing Versus System Testing.
Unit testing.
Test harness and stubs.
Subsystem testing.
System testing.
Inspection vs. testing.
Managing the Testing Phase.
How Does It Fit?
Review Questions.
Further Reading.
References.

20. Coverage - "Systematic" Testing.
Dividing the input space for failure search.
Functional (specification-based, blackbox) testing.
Structural (code-based) testing.
Generating Code-Based Tests.
Misleading the tester.
Test oracles.
Structural Test Adequacy and Marick's Recommendation.
Variations on Coverage Testing.
Control-flow graphs and their coverage.
Path coverage.
Branch coverage.
Testing "tools".
Tools to manage the testing process.
Structural-coverage measuring tools.
More Complex Structural Coverage Criteria.
Dataflow Coverage.
Mutation Coverage.
Which Coverage Is Best?
The "Subsumes" Relationship.
Choosing a Testing Method in Practice.
How Does It Fit?
Review Questions.
Further Reading.
References.

21. The Future of Testing.
Random testing.
User profile.
Random input values.
An ideal example of random testing.
Predicting Software Quality.
Reliability.
Dependability.
Automated Testing.
Regression Testing.
State of the Software Testing Art.
How Does It Fit?
Review Questions.
Further Reading.
References.

Answers and Hints for Selected Exercises.
Index.

Caractéristiques techniques

  PAPIER
Éditeur(s) Addison Wesley
Auteur(s) Dick Hamlet, Joe Maybee
Parution 01/10/2000
Nb. de pages 494
Couverture Broché
Intérieur Noir et Blanc
EAN13 9780201701036

Avantages Eyrolles.com

Livraison à partir de 0,01 en France métropolitaine
Paiement en ligne SÉCURISÉ
Livraison dans le monde
Retour sous 15 jours
+ d'un million et demi de livres disponibles
satisfait ou remboursé
Satisfait ou remboursé
Paiement sécurisé
modes de paiement
Paiement à l'expédition
partout dans le monde
Livraison partout dans le monde
Service clients sav.client@eyrolles.com
librairie française
Librairie française depuis 1925
Recevez nos newsletters
Vous serez régulièrement informé(e) de toutes nos actualités.
Inscription