没有合适的资源?快使用搜索试试~ 我知道了~
最新美国罗格斯大学Rutgers课本《软件工程》(英文)Software Engineering
5星 · 超过95%的资源 需积分: 9 11 下载量 154 浏览量
2013-11-20
17:38:05
上传
评论
收藏 13.61MB PDF 举报
温馨提示
试读
627页
精选最新美国罗格斯大学Rutgers课本《软件工程》(英文)Software Engineering 风趣幽默的漫画图解,国际最新概念,内涵部分源代码。 留美博士研究生强烈推荐。
资源推荐
资源详情
资源评论
Last updated: September 10, 2012
Ivan Marsic
Copyright © 2012 by Ivan Marsic. All rights reserved.
Rutgers University, New Brunswick, New Jersey
Permission to reproduce or copy all or parts of this material for non-profit use is granted on the
condition that the author and source are credited. Suggestions and comments are welcomed.
Author’s address:
Rutgers University
Department of Electrical and Computer Engineering
94 Brett Road
Piscataway, New Jersey 08854
Book website: http://www.ece.rutgers.edu/~marsic/books/SE/
i
Preface
This book reviews important technologies for software development with a particular focus on
Web applications. In reviewing these technologies I put emphasis on underlying principles and
basic concepts, rather than meticulousness and completeness. In design and documentation, if
conflict arises, clarity should be preferred to precision because, as will be described, the key
problem of software development is having a functioning communication between the involved
human parties. My main goal in writing this book has been to make it useful.
The developer should always keep in mind that software is written for people, not for computers.
Computers just run software—a minor point. It is people who understand, maintain, improve, and
use software to solve problems. Solving a problem by an effective abstraction and representation
is a recurring theme of software engineering. The particular technologies evolve or become
obsolete, but the underlying principles and concepts will likely resurface in new technologies.
Audience
This book is designed for upper-division undergraduate and graduate courses in software
engineering. It intended primarily for learning, rather than reference. I also believe that the book’s
focus on core concepts should be appealing to practitioners who are interested in the “whys”
behind the software engineering tools and techniques that are commonly encountered. I assume
that readers will have some familiarity with programming languages and I do not cover any
programming language in particular. Basic knowledge of discrete mathematics and statistics is
desirable for some advanced topics, particularly in Chapters 3 and 4. Most concepts do not
require mathematical sophistication beyond a first undergraduate course.
Approach and Organization
The first part (Chapters 1–5) is intended to accompany a semester-long hands-on team project in
software engineering. In the spirit of agile methods, the project consists of two iterations. The
first iteration focuses on developing some key functions of the proposed software product. It is
also exploratory to help with sizing the effort and setting realistic goals for the second iteration.
In the second iteration the students perform the necessary adjustments, based on what they have
learned in the first iteration. Appendix G provides a worked example of a full software
engineering project.
The second part (Chapters 6–8 and most Appendices) is intended for a semester-long course on
software engineering of Web applications. It also assumes a hands-on student team project. The
focus is on Web applications and communication between clients and servers. Appendix F briefly
surveys user interface design issues because I feel that proper treatment of this topic requires a
book on its own. I tried to make every chapter self-contained, so that entire chapters can be
Ivan Marsic Rutgers University
ii
skipped if necessary. But you will not benefit the most by reading it that way. I tried to avoid
“botanical” approach, telling you in detail what is here and what is there in software engineering,
so you can start from any point and walk it over in any way. Instead, this book takes an
evolutionary approach, where new topics systematically build on previous topics.
The text follows this outline.
Chapter 2 introduces object-oriented software engineering. It is short enough to be covered in few
weeks, yet it provides sufficient knowledge for students to start working on a first version of their
software product. Appendix G complements the material of Chapter 2 by showing a practical
application of the presented concepts. In general, this knowledge may be sufficient for amateur
software development, on relatively small and non-mission-critical projects.
Chapters 3 through 5 offer more detailed coverage of the topics introduced in Chapter 2. They are
intended to provide the foundation for iterative development of high-quality software products.
Chapters 6 – 8 provide advanced topics which can be covered selectively, if time permits, or in a
follow-up course dedicated to software engineering of Web applications.
This is not a programming text, but several appendices are provided as reference material for
special topics that will inevitably arise in many software projects.
Examples, Code, and Solved Problems
I tried to make this book as practical as possible by using realistic examples and working through
their solutions. I usually find it difficult to bridge the gap between an abstract design and coding.
Hence, I include a great deal of code. The code is in the Java programming language, which
brings me to another point.
Different authors favor different languages and students often complain about having to learn yet
another language on not having learned enough languages. I feel that the issue of selecting a
programming language for a software engineering textbook is artificial. Programming language is
a tool and the software engineer should master a “toolbox” of languages so to be able to choose
the tool that best suits the task at hand.
Every chapter (except for Chapters 1 and 9) is accompanied with a set of problems. Solutions to
most problems can be found on the back of this book, starting on page 523.
Design problems are open-ended, without a unique or “correct” solution, so the reader is welcome
to question all the designs offered in this book. I have myself gone through many versions of each
design, and will probably change them again in the future, as I learn more and think more. At the
least, the designs in this book represent a starting point to critique and improve.
Additional information about team projects and online links to related topics can be found at the
book website: http://www.ece.rutgers.edu/~marsic/books/SE/ .
iii
Contents at a Glance
P
REFACE ................................................................................................................................ I
CONTENTS AT A GLANCE ..................................................................................................................... III
TABLE OF CONTENTS ........................................................................................................................... V
CHAPTER 1 INTRODUCTION .......................................................................................................... 1
CHAPTER 2 OBJECT-ORIENTED SOFTWARE ENGINEERING .............................................................. 61
CHAPTER 3 MODELING AND SYSTEM SPECIFICATION ................................................................... 170
CHAPTER 4 SOFTWARE MEASUREMENT AND ESTIMATION ............................................................. 217
CHAPTER 5 DESIGN WITH PATTERNS ......................................................................................... 246
CHAPTER 6 XML AND DATA REPRESENTATION ........................................................................... 319
CHAPTER 7 SOFTWARE COMPONENTS ....................................................................................... 361
CHAPTER 8 WEB SERVICES ..................................................................................................... 374
CHAPTER 9 FUTURE TRENDS.................................................................................................... 410
APPENDIX A JAVA PROGRAMMING ............................................................................................. 417
APPENDIX B NETWORK PROGRAMMING ...................................................................................... 419
APPENDIX C HTTP OVERVIEW ................................................................................................... 433
APPENDIX D DATABASE-DRIVEN WEB APPLICATIONS ................................................................... 442
APPENDIX E DOCUMENT OBJECT MODEL (DOM) ......................................................................... 443
APPENDIX F USER INTERFACE PROGRAMMING ............................................................................. 446
APPENDIX G EXAMPLE PROJECT: TIC-TAC-TOE GAME .................................................................. 449
APPENDIX H SOLUTIONS TO SELECTED PROBLEMS ....................................................................... 523
剩余626页未读,继续阅读
资源评论
- riky662014-01-31下载的文档可以打开,内容很棒
- m_x_he2014-12-13棒级了,正在找软件工程课的教材,基本就是它了,十分感谢!
潇潇9086
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功