(P2) You can have it fast, you can have it right or you can have it cheap. Pick two!

(P3) 
People bet their jobs, their comforts, their safety, their entertainment, their decisions and their very lives on computer software;

This book presents a framework that can be used by those who build computer software - people who must get it right;

(P5) If you want to reduce software deterioration, you'll have to do better software design;

(P9) "You can't always predict, but you can always prepare";

(P10) 
Every software engineer must recognize that change is natural. Don't try to fight it;

"By the time we see any sort of stabilization the Web will have turned into something completely different" - Louis Monier;

(P11) Performance - If a WebApp user must wait too long (for access, for server-side processing, for client-side formatting and display), he or she may decide to go elsewhere;

(P12) 
Software Engineering Realities:
1. Understand the problem before you build a solution;
2. Design is a pivotal software engineering activity;
3. Both quality and maintainability are on outgrowth of good design;

(P14) 
Software Engineering Layers:
Tools --> Methods --> Process --> A Quality Focus;

(P15) Any complicated journey can be simplified if a map exists;

(P16) Software process adoptation is essential for project success;

(P19) 
Before beginning a software project, be sure the software has a business purpose and that users perceive value in it;

A software system exists for one reason : to provide value to its users;

Placing clear, complete thought before action almost always produces better results;

(P22) Work very hard to understand what you have to do before you start. You may not be able to develop every detail, but the more you know, the less risk you take;

(P49) If a market window is missed, the software project itself may be meaningless;

(P57) "A person who is successful has simply formed the habit of doing things that unsuccessful people will not do" - Dexter Yager;

(P69) Working software is important, but don't forget that it must also exhibit a variety of quality attributes including reliability, usability and maintainability;

(P72) Extreme Programming (XP) - The most widely used approach to agile software development;

(P73) Refactoring allows a software engineer to improve the internal structure of a design (or source code) without changing its external functionality or behavior. In essence, refactoring can be used to improve the efficiency, readability or performance of a design or the code that implements a design;

(P99) "The truth of the matter is that you always know the right thing to do. The hard part is doing it" - General H. Norman Schwarzkopf;

(P105) We create models to gain a better understanding of the actual entity to be built;

(P128) "He who asks a question is a fool for five minutes, he who does not ask a question is a fool forever" - Chinese Proverb;

(P199) 
UML Tools:
ArgoUML - 开源工具;
Enterprise Architect - 由 Sparx Systems 开发;
Power Designer - 由 Sybase 开发;
Rational Rose - 由 Rational Corporation 开发;
System Architect - 由 Popkin Software 开发;
UML Studio - 由 Pragsoft Corporation 开发;
Visio - 由 Microsoft 开发;
Visual UML - 由 Visual Object Modelers 开发;

(P205) Requirements analysis does take time, but solving the wrong problem takes even more time;

(P216) "The most common miracle of software engineering is the transition from analysis to design and design to code" - Richard Due;

(P245) You effect should focus on architectural representations that will guide all other aspects of design. Spend the time to carefully review the architecture. A mistake here will have a longterm negative impact;

(P248) "Programming without an overall architecture or design in mind is like exploring a cave with only a flashlight : You don't know where you've been, you don't know where you're going, and you don't know quite where you are" - Danny Thorpe;

(P258) "The structure of a software system provide the ecology in which code is born, matures and dies. A well-designed habital allows for the successful evolution of all the components needed in a software system" - R. Pattis;

(P298) Structured Programming is a design technique that constrains logic flow to three constructs : sequence, condition and repetition;

(P441) Spend your time focusing on things that really matter, but first be sure that you understand what really matters!

(P475) Set a time limit, say two hours, on the amount of time you spend trying to debug a problem on your own. After that, get help!

(P652) "If you want to be incrementally better : Be competitive. If you wangt to be exponentially better : Be Cooperative" - Author unknown;

(P817) "The proper artistic response to digital technology is to embrace it as a new window on everything that's eternally human, and to use it with passion, wisdom, fearlessness and joy" - Ralph Lombreglia;

(P835) "The best preparation for good work tomorrow is to do good work today" - Elbert Hubbard;