Thông tin tài liệu
Dooley
US $49.99
Shelve in
Software Engineering/
Software Development
User level:
Beginning–Advanced
www.apress.com
SOURCE CODE ONLINE
BOOKS FOR PROFESSIONALS BY PROFESSIONALS
®
Software Development and
Professional Practice
Make your code work harder! Software Development and Professional Practice will
show you how you can improve your coding practices and write better programs. It
teaches you:
• Characteristics of good programs
• Coding standards and how to apply them to real coding
• Debugging, unit testing, and modularity
• Object-oriented programming (OOP) design principles and great coding
Software Development and Professional Practice will help you to understand the prin-
ciples of good software design and, in turn, how to write great code. You’ll learn:
• What methods and processes are available to help you design great software
• How to apply software engineering principles to your daily coding practice
• How to apply the principles you’ve learned to specific and real-world
coding problems
• How to construct professional standard code
Software Development and Professional Practice covers many of the topics described
for the ACM Computing Curricula 2001 course C292c Software Development and
Professional Practice. Making it both an ideal textbook and authoritative manual for
the working professional.
RELATED
www.it-ebooks.info
For your convenience Apress has placed some of the front
matter material after the index. Please use the Bookmarks
and Contents at a Glance links to access them.
www.it-ebooks.info
Software Development
and Professional Practice
John Dooley
www.it-ebooks.info
Software Development and Professional Practice
Copyright © 2011 by John Dooley
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.
ISBN-13 (pbk): 978-1-4302-3801-0
ISBN-13 (electronic): 978-1-4302-3802-7
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol
with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only
in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of
the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are
not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject
to proprietary rights.
President and Publisher: Paul Manning
Lead Editor: Dominic Shakeshaft
Technical Reviewer: John Zukowski
Editorial Board: Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Jonathan Gennick,
Jonathan Hassell, Michelle Lowman, James Markham, Matthew Moodie, Jeff Olson, Jeffrey
Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft, Matt
Wade, Tom Welsh
Coordinating Editor: Adam Heath
Copy Editor: Tracy Brown
Compositor: Bytheway Publishing Services
Indexer: Toma Mulligan
Artist: April Milne
Cover Designer: Anna Ishchenko
Distributed to the book trade worldwide by Springer Science+Business Media, LLC., 233 Spring Street,
6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-
sbm.com, or visit www.springeronline.com.
For information on translations, please e-mail rights@apress.com, or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use.
eBook versions and licenses are also available for most titles. For more information, reference our
Special Bulk Sales–eBook Licensing web page at www.apress.com/info/bulksales.
The information in this book is distributed on an “as is” basis, without warranty. Although every
precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have
any liability to any person or entity with respect to any loss or damage caused or alleged to be caused
directly or indirectly by the information contained in this work.
The source code for this book is available to readers at www.apress.com. You will need to answer
questions pertaining to this book in order to successfully download the code.
www.it-ebooks.info
For Diane, wh
o is always there;
for Patrick, the best son a guy could have; and
for Margaret Teresa Hume Dooley (1926–1976),
the first one is for you, Mom.
www.it-ebooks.info
iv
Contents at a Glance
About the Author xiv
About the Technical Reviewer xv
Acknowledgments xvi
Preface xvii
Chapter 1: Introduction to Software Development 1
Chapter 2: Process Life Cycle Models 7
Chapter 3: Project Management Essentials 27
Chapter 4: Requirements 37
Chapter 5: Software Architecture 47
Chapter 6: Design Principles 59
Chapter 7: Structured Design 71
Chapter 8: Object-Oriented Analysis and Design—An Overview 87
Chapter 9: Object-Oriented Analysis and Design 99
Chapter 10: Object-Oriented Design Principles 115
Chapter 11: Design Patterns 137
Chapter 12: Code Construction 159
Chapter 13: Debugging 181
Chapter 14: Unit Testing 193
Chapter 15: Walkthroughs, Code Reviews, and Inspections 209
Chapter 16: Wrapping It all Up 221
Index 227
www.it-ebooks.info
v
Contents
About the Author xiv
About the Technical Reviewer xv
Acknowledgments xvi
Preface xvii
Chapter 1: Introduction to Software Development 1
What We’re Doing 2
So, How to Develop Software? 2
Conclusion 4
References 5
Chapter 2: Process Life Cycle Models 7
A Model That’s not a Model At All: Code and Fix 8
Cruising over the Waterfall 9
Backing Up the Waterfall 11
Loops Are Your Friend 12
Evolving the Incremental Model 13
Agile Is as Agile Does 14
eXtreme Programming (XP) 15
XP Overview 15
XP Motivation 16
The Four Variables 16
www.it-ebooks.info
CONTENTS
vi
The Four Values 17
The 15 Principles 17
The Four Basic Activities 19
Implementing XP: The 12 Practices 20
The XP Life Cycle 22
Scrum, mate 23
Conclusion 25
References 25
Chapter 3: Project Management Essentials 27
Project Planning 27
Project Organization 28
Risk Analysis 28
Resource Requirements 30
Work Breakdown and Task Estimates 31
Project Schedule 31
Project Oversight 34
Status Reviews and Presentations 34
Defects 35
The Post-Mortem 35
Conclusion 36
References 36
Chapter 4: Requirements 37
What Types of Requirements Are We Talking About Here? 37
Functional Specification? 38
But I Don’t Like Writing! 38
www.it-ebooks.info
CONTENTS
vii
That Natural Language Thing 38
Outline of a Functional Specification 39
Overview 39
Disclaimer 39
Author’s Name 39
Scenarios of Typical Usage 40
Detailed Screen-By-Screen Specifications 40
Non-requirements 40
Open Issues 41
Design and Feature Ideas 41
Backlog 41
One More Thing 42
Types of Requirements 42
User Requirements 42
Domain Requirements 42
Non-functional Requirements 43
Non-requirements 43
Requirements Digging 43
Why Requirements Digging Is Hard 44
Analyzing the Requirements 45
Conclusion 46
References 46
Chapter 5: Software Architecture 47
General Architectural Patterns 48
Pipe-and-filter Architecture 48
www.it-ebooks.info
CONTENTS
viii
An Object-Oriented Architectural Pattern 49
An MVC Example: Let’s Hunt! 51
The Problem 51
Model 52
View 52
Controller 53
Model 53
The Client-Server Architectural Pattern 53
The Layered Approach 54
The Main Program: Subroutine Architectural Pattern 56
Conclusion 57
References 58
Chapter 6: Design Principles 59
The Design Process 62
Desirable Design Characteristics (Things Your Design Should Favor) 63
Design Heuristics 64
Designers and Creativity 66
Conclusion 67
References 68
Chapter 7: Structured Design 71
Structured Programming 71
Stepwise Refinement 72
Example of Stepwise Refinement: The Eight-Queens Problem 73
Modular Decomposition 79
Example: Keyword in Context: Indexes for You and Me 80
www.it-ebooks.info
[...]... book called Software Development and Professional Practice? Why isn’t it called All About Programming or Software Engineering? After all, isn’t that what software development is? Well, no Programming is a part of software development, but it’s certainly not all of it Likewise, software development is a part of software engineering, but it’s not all of it Here’s the definition of software development. .. about estimation and scheduling The key to iterative development is “live a balanced life – learn some and think some and draw and paint and sing and dance and play and work every day some,”6 or in the software development world, analyze some and design some and code some and test some every day We’ll revisit this idea when we talk about the agile development models Evolving the Incremental Model 7... about professional practice, the ethics and the responsibilities of being a software developer, social issues, privacy, how to write secure and robust code, and the like In short, those fuzzy other things one needs in order to be a professional software developer This book covers many of the topics described for the ACM Computing Curricula 2001 course C292c Software Development and Professional Practice. .. introduction into what software development is all about and what you need to do to write great code It has its own perspective, but that’s a perspective based on 20 years writing code professionally and another 16 years trying to figure out how to teach others to do it Despite the fact that software development is only part of software engineering, software development is the heart of every software project... baseline building and scheduling, managing people, and several other things Software development is the fun part of software engineering So software development is a narrowing of the focus of software engineering to just that part concerned with the creation of the actual software And it’s a broadening of the focus of programming to include analysis, design and release issues 1 Brooks, Frederick “No Silver... software development, but it’s not the whole thing Well, then, isn’t it software engineering? Again, no Software engineering also involves a process and includes software development, but it also includes the entire management side of creating a computer program that people will use Software engineering includes project management, configuration management, scheduling and estimation, baseline building and. .. You’ll begin to understand project management, know some metrics, know how to review work products, and understand configuration management I’ll not cover everything in software development by a long stretch, and we’ll only be giving a cursory look at the management side of software engineering, but you’ll be in a much better position to visualize, design, implement, and test software of many sizes,... how to design and implement programs that solve specific problems By the way, there’s at least one person (besides me) who thinks software development is not an engineering discipline I’m referring to Alistair Cockburn, and you can read his paper, “The End of Software Engineering and the Start of Economic-Cooperative Gaming” at http://alistair.cockburn.us/The+end+of +software+ engineering +and+ the+start+of+economiccooperative+gaming... principles to the development of software. ” What are “engineering principles?” Well, first, all engineering efforts follow a defined process So we’ll be spending a bit of time talking about how you run a software development project and what phases there are to a project All engineering work has a basis in the application of science and mathematics to real-world problems So does software development As... new development tools (say that new web development framework) you’ll uncover limitations you weren’t aware of and side-effects that cause you to have to learn, for example, three other tools to understand them (That web development tool is Python based, requires a specific relational database system to run, and needs a particular configuration of Apache to work correctly.) Conclusion Software development . construct professional standard code Software Development and Professional Practice covers many of the topics described for the ACM Computing Curricula 2001 course C292c Software Development and Professional. in Software Engineering/ Software Development User level: Beginning–Advanced www.apress.com SOURCE CODE ONLINE BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® Software Development and Professional Practice Make. Coding standards and how to apply them to real coding • Debugging, unit testing, and modularity • Object-oriented programming (OOP) design principles and great coding Software Development and Professional
Ngày đăng: 29/03/2014, 19:20
Xem thêm: Software Development and Professional Practice docx, Software Development and Professional Practice docx