| ||||||||||||||||||
|
There is a newer edition of this item:
|
Software engineering has come a long way since 1968, when the term was first used at a NATO conference. And software itself has entered our lives in ways that few had anticipated, even a decade ago. So a firm grounding in software engineering theory and practice is essential for understanding how to build good software and for evaluating the risks and opportunities that software presents in our everyday lives. This text represents the blending of the two current software engineering worlds: that of the practitioner, whose main focus is to build high-quality products that perform useful functions, and that the researcher, who strives to find ways to improve the quality of products and the productivity of those who build them.
Designed for an undergraduate software engineering curriculum, this book paints a pragmatic picture of software engineering research and practices. Examples speak to a student's limited experience but illustrate clearly how large software development projects progress from need to idea to reality.
The book is also suitable for a graduate course offering an introduction to software engineering concepts and practices, or for practitioners wishing to expand their knowledge of the subject. It includes examples that represent the many situations readers are likely to experience: large projects and small, object-oriented and procedural, real-time and transaction processing, development and maintenance. In particular, Chapters 12, 13, and 14 present thought-provoking material designed to interest graduate students in current research topics. KEY FEATURES
This text has many key features that distinguish it from other books.
Unlike other software engineering books that consider measurement a separate issue, this book blends measurement with software engineering. Measurement issues are considered as an integral part of software engineering strategy, rather than as a separate discipline. This approach shows students how to involve quantitative assessment and improvement in their daily activities. They can evaluate their progress on an individual, team, and project basis. Similarly, concepts such as reuse, risk management, and quality engineering are embedded in the software engineering activities that are affected by them, instead of treating them as separate issues. Each chapter applies its concepts to two common examples: one that represents a typical information system, and another that represents a real-time system. Both examples are based on actual projects. The information system example describes the software needed to determine the price of advertising time for a large British television company. The real-time system is the control software for the Ariane-5 rocket; we look at the problems reported, and explore how software engineering techniques could have helped to locate and avoid some of them. Students can follow the progress of two typical projects, seeing how the various practices described in the book are merged into the technologies used to build systems. At the end of every chapter, the results are expressed in three ways: what the content of the chapter means for development teams, what it means for individual developers, and what it means for researchers. The student can easily review the highlights of each chapter and see the chapter's relevance to both research and practice. The book has an associated Web page, containing current examples from the literature, links to Web pages for relevant tool and method vendors, and a study guide for students. It is on the Web that students can find real requirements documents, designs, code, test plans, and more, so they can see real software engineering project artifacts. Students seeking additional in-depth information are pointed to reputable accessible publications and Web sites. The Web pages are updated regularly to keep the material in the textbook current and include a facility for feedback to the author and the publisher. The book is replete with case studies and examples from the literature. Many of the one-page case studies shown as sidebars in the book are expanded on the Web page. The student can see how the book's theoretical concepts are applied to real-life situations. Each chapter ends with thought-provoking questions about legal and ethical issues in software engineering. Students see software engineering in its social and political contexts. As with other sciences, software engineering decisions must be viewed in terms of the people their consequences will affect. Every chapter addresses both procedural and object-oriented development. In addition, a new chapter on object-oriented development explains the steps of an object-oriented development process. Using UML for common notation, each step is applied to a common example, from requirements specification through program design. The book has an annotated bibliography that points to many of the seminal papers in software engineering. In addition, the Web page points to annotated bibliographies and discussion groups for specialized areas, such as software reliability, fault tolerance, computer security, and more. The book has a solutions manual, available from Prentice Hall, as are PowerPoint slides with the figures, tables, and sample instructional slides. Each chapter includes a description of a term project, involving development of software for a mortgage processing system. The instructor may use this term project, or a variation of it, in class assignments. Each chapter ends with a list of key references for the concepts in the chapter, enabling students to find in-depth information about particular tools and methods discussed in the chapter. CONTENTS AND ORGANIZATION
This text is organized in three parts. The first part (Chapters 1 to 3) motivates the reader, explaining why knowledge of software engineering is important to practitioners and researchers alike. Part I also discusses the need for understanding process issues and for doing careful project planning. Part II (Chapters 4 to 11) walks through the major steps of development and maintenance, regardless of the process model used to build the software: eliciting and checking the requirements, designing a solution to the problem, writing and testing the code, and turning it over to the customer. Part III (Chapters 12 to 14) focuses on evaluation and improvement. It looks at how we can assess the quality of our processes and products, and how to take steps to improve them. Chapter 1: Why Software Engineering?
In this chapter we address our track record, motivating the reader and highlighting where in later chapters certain key issues are examined. In particular, we look at Wasserman's key factors that help define software engineering: abstraction, analysis and design methods and notations, modularity and architecture, software life cycle and press, reuse, measurement, tools and integrated environments, and user interface and prototyping. We discuss the difference between computer science and software engineering, explaining some of the major types of problems that can be encountered, and laying the groundwork for the rest of the book. We also explore the need to take a systems approach to building software, and we introduce the two common examples that will be used in every chapter. We also introduce the context for the term project. Chapter 2: Modeling the Process and Life Cycle
In this chapter, we present an overview of different types of process and life-cycle models, including the waterfall model, the V -model, the spiral model, and various prototyping models. We also describe several modeling techniques and tools, including systems dynamics, SADT, and other commonly-used approaches. Each of the two common examples is modeled in part with some of the techniques introduced here. Chapter 3: Planning and Managing the Project
Here, we look at project planning and scheduling. We introduce notions such as activities and milestones, work breakdown structure, activity graphs, risk management, and costs and cost estimation. Estimation models are used to estimate the cost and schedule of the two common examples. We focus on actual case studies, including management of software development for the F-16 airplane and for Digital's alpha AXP programs. Chapter 4: Capturing the Requirements
In this chapter, we look at requirements analysis and specification. We explain the difference between functional and nonfunctional requirements, present several ways to describe different kinds of requirements, and discuss how to prototype requirements. We see how several types of formal methods can be used in specifying and evaluating requirements. Other topics discussed include requirements documentation, requirements reviews, requirements quality and how to measure it, requirements testability, and how to select a specification method. The chapter ends with application of some of the methods to the two common examples. Chapter 5: Designing the System
This chapter focuses on architectural issues, and we begin by discussing Shaw and Garlan's fra --This text refers to an out of print or unavailable edition of this title.
Product Details
Would you like to update product info or give feedback on images?
|
|
Share your thoughts with other customers:
|
||||||||||||||||||||||
|
Most Helpful Customer Reviews
6 of 6 people found the following review helpful:
4.0 out of 5 stars
Covers all the essentials of Software Engineering,
By
This review is from: Software Engineering: Theory and Practice (2nd Edition) (Hardcover)
Shari Pfleeger knows what she is talking about.I read this book for a distance learning course and found it entirely possible to grasp the concepts of software engineering, although Pfleeger presents a lot of complex mathematical models and programming examples (as well as many easier models). The book requires some re-reading to fully grasp. Pfleeger uses a lot of interesting drawings, tables, charts, and diagrams to illustrate concepts. I found this useful in most circumstances. Pfleeger's writing style is fairly straightforward and I didn't have any difficulty understanding her grammar. There were no syntax errors that I noticed in the book. The book covers a lot of material including (from the table of contents): The only drawback to this book is perhaps that Pfleeger goes waaaay into detail on EVERYTHING. For some people this is great (including me). This book is for professionals and for people that are very interested in software engineering (not beginners, or the casual reader) and can wade through a lot of (oftentimes boring) material.
14 of 17 people found the following review helpful:
5.0 out of 5 stars
Thorough and Practical,
This review is from: Software Engineering: Theory and Practice (Hardcover)
I really enjoyed this book. I had the added benefit of being a student in this author's class. Her book is simple enough reading that an undergraduate can understand it, yet, at the same time it is in-depth enough to be usefull to professionals. There is considerable information on how to analyze and evaluate evidence. The book also benefits from a clear writing style. Thankfully, despite the fact that this book was written in a "user-friendly" manner, the irritating attempts at humor that waste space in otherwise good books was absent in this book.I liked the book.
6 of 7 people found the following review helpful:
5.0 out of 5 stars
I love/Hate this Book (but give it 5 stars),
By A Customer
This review is from: Software Engineering: Theory and Practice (2nd Edition) (Hardcover)
I got this book for my PMP CAQ-ITS test. The book is well written, but gets so technical, it turns your mind to jelly in no time. It is the most complete reference on software engineering I have seen in 30 years in the IT profession. It leaves no stone unturned. The bad news it that it leaves no stone unturned. The book incorporates a LOT of best practices that should be followed everywhere (but never are).I struggled with this book, but I can honestly say that this is the first book I will pick up if I am ever assigned to a software development project.
Share your thoughts with other customers: Create your own review
|
|
Suggested Tags from Similar Products(What's this?)Be the first one to add a relevant tag (keyword that's strongly related to this product).
|
|
This product's forum
Active discussions in related forums
Search Customer Discussions
|
Related forums
|