Programming Books


Books-Under-Review-->Computers-->Education-->Commercial Services-->Training Companies-->Programming-->16
Related Subjects:
More Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
Programming Books sorted by Average customer review: high to low .

Programming
Requirements by Collaboration: Workshops for Defining Needs
Published in Paperback by Addison-Wesley Professional (2002-04-20)
Author: Ellen Gottesdiener
List price: $54.99
New price: $35.74
Used price: $35.68

Average review score:

add it to your collection
Helpful Votes: 0 out of 0 total.
Review Date: 2007-11-15
Add this to your collection of professional development books; you likely won't be disappointed - but remember, like anyone who is good, they make it look easy.

Lots of useful Information for experienced requirements engineers
Helpful Votes: 0 out of 0 total.
Review Date: 2007-02-22
I'm a software developer and have a lot of experience writing Vision- and "Use Cases"-documents.
Writing these documents is not a big deal, however to make the customers read
"Use Case"-documents and provide feedback is much more difficult. But without feedback
it is not possible for a developer to write correct requirement documents.

I ordered this book because I liked the word "collaboration" in its title. It implies
the importance of working together with the customer in order to get the requirements right.
As I expected the author concentrates much more on the process to elicit proper requirements
rather than on the notations of requirements models such as UML. The best way to collaborate
with customers is to have structered meetings the so called workshops.

The book is divided into following three parts: "1. Overview of Requirements Workshops",
"2. Requirements Workshop Framework", "3. Requirements Workshop Design Strategies". Especially
the 2nd part contains a lot of detailed information and sometimes it is difficult not to get
lost. But part one and three are quit easy to follow.

Only in part one is a chapter which describes the different requirements models.
They are categorized according to their view, focus and level of detail. After reading this chapter you
know when to use which model. "Use Case"-Models are the most popular requirements models.
However, there are software projects in which other requirements model are more appropriate.
This chapter gives you an overview of the 19 different models.
Although a brief summary of every model is provided there is no example. If you want to know
the details of these different models you have to look for other sources of information.

The rest of the book concentrates on the prepartion and facilitation of workshops. A lot of useful
advice is given on how to manage people, content and processes in a workshop. Most of the
content of the book is aimed at facilitors of workshops. If you have nobody in your company who
has the necessary skillset to facilitate workshops, the author recommends to hire someone from
a consulting company, who can do this for your workshops.

On the author's website there several useful templates and guidelines which help you make your
workshops more successfull.

This book is a recommended reading for everyone who is responsible for the success of a software project.

How to do requirements workshops that work?
Helpful Votes: 0 out of 0 total.
Review Date: 2006-12-10
In Requirements by Collaboration, Ellen Gottesdiener shares many years of experience in running requirement workshops. In this area, Ellen might be one of the most experienced facilitators in the world.

The author provides a framework for organizing requirements workshops. The framework is based on getting six Ps right. The Ps are "Purpose, Participants, Principles, Products, Place and Process". For each step it describes typical things that need to be done. First establish a share purpose. Find the right participants for the workshop. Set the principles and ground rules. Decide what work products to create (the book provides an excellent overview of work products used in requirement analysis). Define the requirements for the location and decide where to hold the workshop and decide the process to hold it.

In each steps, the author provides great tips and insights from her experience in facilitating workshops. In the later part, some strategies of requirement analysis are presented and the book ends with some case studies.

Overall, the book is well written an easy to read. The requirement workshop framework, at times seems overly complex and certainly would need to be tailored to the specific situation. However, I think this could not have been prevented when talking about a generic way of holding requirement workshops.

In Agile Development, requirement workshops are one way of doing requirement analysis and spreading the requirement analysis over the whole project. For these kind of workshops, this book is probably the only reference, eventhough the book itself does not cover this very well. Therefore "requirements by collaboration" is a must read for anyone who wants to do requirements workshops.

Excellent book for practioners
Helpful Votes: 0 out of 0 total.
Review Date: 2006-02-07
I found this book to be an invaluable help over the last few years that I have been running workshops with business people and users. It is concise and full of tips and how to's that are of great practical value. I can not recommend this book enough. I am a technical architect who has been thrown into the requirements and the domain traditionally inhabited by Buinsess Analyst and their ilk. I have used this book as a guide to run requirements workshops, business process workshop and scoping workshops. top book.

More Effective Group Collaboration
Helpful Votes: 0 out of 0 total.
Review Date: 2004-09-28
This book is about running requirements workshops and more. Requirements workshops are an important tool for understanding what you need to build. The techniques in this book will be useful in many other group discussion settings, and will help you have more productive meetings. The book discusses, among other things, roles in workshops and decision rules (deciding how to decide). Each chapter ends with a list of excellent references that you can use to probe further on techniques. Anyone who is involved in group decision making should own a copy of this book, read it, and refer back to it often.

Programming
Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives
Published in Hardcover by Addison-Wesley Professional (2005-04-30)
Authors: Nick Rozanski and Eóin Woods
List price: $59.99
New price: $35.00
Used price: $39.58

Average review score:

One more gushing fan
Helpful Votes: 0 out of 0 total.
Review Date: 2008-07-15
At the risk of adding one more gushing review to this excellent book - let me say that this book is very good for relatively non-technical folks also. I am working as a manager of a technical team and I used this book to come up on speed on the basics of software architecture. The material layout is very clear and consistent - it helped me to get through the basic concepts quickly and come back for a more detailed reading. The book helped me to ask the relevant questions and focus the team on the right sense of issues.

Only suggestion I have for a subsequent edition is to include one full blown case study.

Excellent book on Software Architecture
Helpful Votes: 0 out of 0 total.
Review Date: 2008-06-16
Having been in the IT world for more than 25 years and studying this topic for many of those years I have found this book to be extremely accessible. I reference it often. I like the way it deals with real business world issues as opposed to on board jet navigation systems etc. I rate it right along with Craig Larman "Applying UML and Patterns".

Simply Excellent!
Helpful Votes: 0 out of 1 total.
Review Date: 2008-05-06
It is a very thorough and well written book. Authors have introduced idea of perspectives (viewpoints related to cross-cutting concerns) and I totally agree with authors on benefits of using perspectives rather than treating them as viewpoints. My AD of new project is based on viewpoints and perspectives separation suggested by authors.

A Must Read for Software Architects!
Helpful Votes: 0 out of 1 total.
Review Date: 2008-03-02
If you are a software architect or aspire to be one, you should read this book. Rozanski and Woods do an excellent job of explaining the whys and hows of creating software architectures. Their pragmatic, no-nonsense approach makes this book extremely readable. The book is divided into two main sections: an explanation of the viewpoints and perspectives concepts (208 pages) and a catalog of viewpoints and perspectives (195 pages). This makes the book a relatively quick read, but also very useful as a day-to-day reference. If only every software architect would read this book, we might not have as many software quality issues as we have today!

Brings many things together
Helpful Votes: 4 out of 5 total.
Review Date: 2006-07-13
I was impressed with this book's unique perspective of blending the business and technical needs into a single focus, and it continued to maintain the human considerations. It does an excellent job of describing how to support business decisions through architecture at a macro level in a style where "the rubber hits the road."

If you are a systems analyst or a software development manager, this shouldn't be on your book shelf - it should be on your desk for regular reference.

Programming
Admin911: SQL Server 2000
Published in Paperback by McGraw-Hill Companies (2001-05-21)
Author:
List price: $39.99
New price: $30.08
Used price: $21.50

Average review score:

A concise and friendly reference
Helpful Votes: 1 out of 1 total.
Review Date: 2002-02-27
This book is a concise and friendly guide that is great for admins. It proved itself the first time that I had a problem allowing me to quickly find the answer I needed.

Must Have for SQL Server DBA
Helpful Votes: 4 out of 4 total.
Review Date: 2002-09-03
This is one of those most have books for any SQL Server DBAs reference library.

Brian Knight covers a LOT of different items and goes into sufficient detail on all topics. Probably the best real world book on SQL Server administration out there. I've worked with SQL Server for over 5 years and have been a senior DBA over a large enterprise SQL Server farm but I still learned a great deal from this book.

Good resource
Helpful Votes: 6 out of 6 total.
Review Date: 2003-07-21
This is an excellent book. The coverage of SQL Server is very solid. However, if you plan to purchase the author's newest book, SQL Server 2000 for Experienced DBAs, DO NOT purchase this book. The newer book covers everything this book covers, in addition to the topic of high availability. Owning both books would be completly redundant, a mistake I personally made.

Great book, but not so much 911 in it really
Helpful Votes: 7 out of 7 total.
Review Date: 2002-03-25
If you're thinking of buying this book, because you've tried everything in Microsoft's online manual "Microsoft SQL Server 7.0 Performance Tuning Guide" and are still having some performance problems, then this book could be your solution.

It helped me solve some of the problems I was having with our productive server and helped me understand some basics a bit better than before. It does not contain everything you need to know, but gives you some ideas how you have to look for further information and what you have to look for.

It contains some good reference material, but not all of the hidden features. As with every book under 1000 pages this is not THE bible for the DBA but is a complementary book that will provide some invaluable information not found elsewhere. This book was well worth the price..

SQL Server 2000 Database Admin MUST HAVE !!!
Helpful Votes: 7 out of 7 total.
Review Date: 2002-03-21
SQL Server 2000 Administration headaches? ... Well if you need a rapid reference on system administrative functions that could not only save your company $$$ on downtime and system availability but improve your response to difficult situations this is a DBA must have. I have purchased more books attempting to get reliable information and tips to make my Administration of SQL Server Database systems robust, reliable, and rapid on response I have finally found the information I needed in "One" book. I would recommend this book for Mid to Senior level Database Administrators and as a guide for training Junior level DBA's to prevent bad habits and teach the proper habits of monitoring, managing and maintaining SQL Server databases overall. Oh and the nice touch is that TIPS: and CAUTION: notices throughout the book educate the creative "out of the box" approach to proper system risk management. I hope Mr. Knight considers sharing his talent with future Administrative Guides !!!

Programming
Advanced Windows Debugging (The Addison-Wesley Microsoft Technology Series)
Published in Paperback by Addison-Wesley Professional (2007-11-08)
Authors: Mario Hewardt and Daniel Pravat
List price: $59.99
New price: $45.15
Used price: $46.21

Average review score:

This is the book
Helpful Votes: 0 out of 0 total.
Review Date: 2008-07-15
This book has completely smashed every possible expectation I had when I set out to read it.

Let me put it simply. There comes a time in every software developers' life when he contemplates the age old question of, "If I were to be stranded on an island and I could bring only 3 things with me, what would they be?" Well, this would be one of the 3 items. (The other two would be Windows Internals by Russinovich and some other obvious classic like the Windows via C/C++ by Richter, or UNIX Network Programming by Stevens). This book is easily on the same playing field as such classics as those, and its only flaw is that it is not 1,000 pages because when a book like this comes along, you really just don't want it to end. There is so much useful information in here.

The chapter on LPC debugging is worth the price of the book alone, as LPC is completely undocumented and you literally will not find this type of information anywhere else. Every single chapter in this book is filled with gems, and with the plethora of average books being released recently, it really took me by surprise to read such a well thought out book that hits all the right topics in all the right ways.

That being said, it is advanced. Yes, I realize the title says it, but too many books come out with the word Advanced in the title that are merely Intermediate. You need some assembly language, you need to be comfortable with native code, you need to not be frightened at the thought of debugging something for which you have no source code. But for those that meet the pre-requisites, this is a must-have in every sense of the word for the serious developers' bookshelf.

Must have for any serious Windows programmer
Helpful Votes: 0 out of 0 total.
Review Date: 2008-06-10
Chapters on debugging heap/stack corruptions are simply invaluable. Worth reading even if you think you know everything about those issues, this book will easily prove you wrong.

Hands on book
Helpful Votes: 0 out of 0 total.
Review Date: 2008-05-04
A very good hands on book with many gems of knowledge. It walks you through the processes of different debugging techniques with easy to follow screen shots. I definitely recommend this to anyone writing Windows OS dependent code and it is even a very good book to read even if you are a .Net or Java developer on the windows platform. Even if you consider yourself advanced in this area you will still find a few new tricks.

Excellent, but does not cover Visual Studio
Helpful Votes: 0 out of 0 total.
Review Date: 2008-04-07
The focus is on debugging using tools other than Visual Studio. There is still a lot of useful information about other tools, but if you want to learn how to debug with the Visual Studio debugger, this is not the book to get.

An indispensable resource for professional software developers
Helpful Votes: 0 out of 0 total.
Review Date: 2008-03-01
Have you ever tried to debug a problem in a productive environment? Do you know how hard this can be, especially when you are not allowed to install or use your full Visual Studio environment? Or did you ever try to debug a problem which only happens at the customer's side? This book shows you how to do all of this, and much more. It shows you, for example, how to create and use a memory dump and how to set up and use remote debugging.

And this is a very concentrated book. It covers a very wide area of expertise. It is an indispensable companion for every real world programmer. It explains in detail some of the lesser-known areas of programming infrastructure, like stacks and heaps and the RPC (DCOM) infrastructure, the possible error symptoms and their analysis.

Did you know about the powerful tools in the Debugging Tools for Windows package? This book begins with an introduction to these tools. It shows you how to set up and use them. It introduces you to the user-mode and kernel-mode debuggers, the Global Flags, the Application Verifier and many other tools. All of them are available for free. And you can easily give them to your customers or to the IT department of your productive environment.

Programming
The Cognitive Dynamics of Computer Science: Cost-Effective Large Scale Software Development
Published in Hardcover by Wiley-IEEE Computer Society Pr (2006-07-31)
Author: Szabolcs de Gyurky
List price: $90.50
New price: $54.99
Used price: $45.00

Average review score:

Be prepared to see the world differently ... a book far beyond software management!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-06-21
Despite its title this book is an easy and entertaining read for a broad audience. While specifically written from the perspective of management of software projects, the book actually addresses management at large. It makes a concise case showing how dangerous and detrimental it is (to the successful outcome of large scale (software) projects that is, defined by the author as a "quality product on time and on budget") to separate technical leadership/management from personnel leadership/management, as so often mandated by many organizations. The "manager-architect," as termed by the author in his book, is key to success. Consequently not everybody can be up for this task, and only few who dare to try will succeed at it, as evidenced by the disconcerting fact that many "top level managers" manage nothing but major budgetary overruns (be they hidden or not), for which they are "held accountable" by society by being hailed as "America's Best Leaders." This book puts an end to such phoniness and provides especially the inexperienced/naive reader with a skill set to reveal/uncover such mismanagement and the individuals responsible.

The book is a true eye opener for aspiring and "want-to-be" managers alike. Also, having posters on "true leadership" pinned to the office wall does not magically inhale the ability of leadership into the office occupant. Leadership is an ability rather than a skill as clarified by the author. It is just like playing an instrument: it only gets you so far if you do not have it in you and practice every day. Chapter 12 "The Impact of Leadership on Software Development" should be read by any manager (aspiring, "want-to-be", or acting alike), and in particular by those who confuse management with suddenly having power over people. Moreover, management does not and should not mean "tenure" along the lines of "now I have made it, now I can relax" or "now I am in power." Rather the "Old Fritz" (Friedrich II, Prussian King) statement, simple yet true, comes to mind: "I am the first servant of the country" ("Ich bin der erste Diener meines Staates"), and serves as a good guide.

The author puts forth an interesting concept for true autonomy founded on the philosophical considerations of the human mind, upon which the AI-(IF-THEN-ELSE)-community will most likely have to choke. In doing so, the author outlines nicely the profound difference between automation and autonomy, two terms, which are often confused, intermixed, or misunderstood, even by so-called experts in the field.

If management is done right, as exemplified/laid out in this book and practiced by its author in an exemplary fashion, managers would rather have to be pitied because of their huge added responsibility for their people/troops and the projects they manage/lead (in that order!). Special attention should be paid throughout the book and in particular throughout Chapter 12 to the "Machiavellian Prince," as this kind of "leader" unfortunately exists (and not in small numbers!), and, while striving only for personal power and gain, causes a lot of damage to otherwise noble causes.

Dynamite Answers!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-03-30
The author of this book has deep insights and wisdom for any level of interface with computer science applications. You simply cannot go wrong for putting your weight down on patterns to follow from someone who has had success in the field. The techniques in this book go beyond basic head knowledge, into the live action of software development where the rubber meets the road. Only an experienced person can give these insights. I am very impressed with the advanced mapping, made simple. This book seems to be written for people who are looking to find answers to every day problems in a rapidly moving computer world, without fear.

The Congnitive Dynamics of Computer Science..etc
Helpful Votes: 1 out of 1 total.
Review Date: 2007-03-03
Mr. deGyurky gives a great overview of his experience at JPL in organizing and developing large, complex, software systems, and delivering them on schedule, on cost. Mr. deGyurky demonstrated that the most important contribution to software management is that of leadership in life, carries over in software development also.

If you are thinking of becoming a manager of a software development project, you should check this book out, and You will be a step ahead of the game!

Software Development and the Hegelian Dialectic
Helpful Votes: 2 out of 2 total.
Review Date: 2006-11-29
The author has given us a framework for conceptualizing, organizing and developing large, complex, software systems, and delivering them on schedule, on cost.

His approach to software development emphasizes two basic ideas. Unique is his application to the development process of the cognitive philosophies of the great Nineteenth Century German cognitive philosophers, principally Schopenhauer, Kant and Hegel, which De Gyurky has studied for years (- in the original Nineteenth Century High German). De Gurky also emphasizes to an extraordinary degree the active role of personal leadership required of the successful software development manager.

Far from being a purely theoretical work, the book is richly illustrated with pungent examples from De Gyurky's near-incredibly varied experience both in the US military as a Special Forces officer commanding a detachment of Montaignards in the mountains of Vietnam, as an action officer at NATO Headquarters, and as the civilian developer of very large military flight-schedule management systems as well as spacecraft software command and control systems.

All the examples are exquisitely pertinent to the software development process. But in addition, four detailed programmatic examples are presented, together with comments, figures and schedules. The author's application of the principles he developed is wholly consistent and unfailingly pertinent, if sometimes challenging, due to the likely unfamiliarity on the part of the typical software engineering reader with the application of the philosophical concepts.

In fact, the single characteristic of the book which may challenge the typical software developer is the accessibility of some of the concepts. Some of the most powerful concepts discussed, e.g., the dialectical process by which an ill-formed idea becomes an object that reflects the meeting of the minds of the design team, are likely to be unfamiliar. However this process has profound implications for the organization of the design team, its management, team-member responsibilities, and on and on. It might have been helpful if the author had expanded on these key concepts, perhaps in context closer to their original use. It would be demanding on the reader, but probably no more so than parts of the book itself.

This unique contribution is recommended to software developers interested in on-time, on-cost development of large software systems, and willing to invest in the intellectual effort required to understand the author's unique contribution. They will be well rewarded.

The Science and Ethics of Computer System Development
Helpful Votes: 2 out of 2 total.
Review Date: 2006-11-27
I have read many books on systems and software development and management principles over the years. The ones that most influenced me were: "More Reliable Software Through Composite Design" by Glen Meyers; "Up the Organization" by Robert Townsend; and "Reengineering the Corporation" by Michael Hammer and James Champy. And of course no system developer's library would be complete without "Managing the Software Process" and other books by Watts Humphry, a giant in our industry. Mr. Szabolcs Michael deGyurky's book will occupy a place along side these on my bookshelf.

In this book, Mr. deGyurky has provided a completely different and refreshing, but no less important, viewpoint on systems development. As different as all the above mentioned books are, the one theme common to all of them is their focus on the "real" problem by differentiating between the truly important and the seemingly important - commonly referred to as separating the wheat from the chaff..

"The Cognitive Dynamics of Computer Science" focuses on strength of character as being indispensable to successful completion of complex systems development projects, which not only satisfy the "real" requirements, but ensure the system is delivered within an agreed to budget and schedule. This book draws on the philosophy of such estimable historical figures as Kant, Hegel and Schopenhauer, among others, in defining the behavioral characteristics of successful leaders and managers. Personal experiences in real world projects by Jet Propulsion Laboratory (JPL) provide a substantive backdrop for Mr. deGyurky's approach to managing systems development.

It is impossible to adequately relay the impact of such a book in so short a review, but I do come away with some points which derive more meaning because of my own experience: 1) Design from the user in, but develop from the inside out, in layers, 2) Don't implement until you have an initial design documented and understood by the development team - expect that to change, 3) Manage change through the Project Implementation Plan (PIP), which is the Project Manager's equivalent to the Software Development Folder, 4) Don't hire staff until you have their tasks well defined (control burn rate and you have controlled your budget), 5) Make sure you understand exactly what your customer wants through constant customer involvement, 6) make your customer's goal, your goal, then incentivize the entire development team to focus on that goal as the highest priority, 7) There shall be no implementation without documented, repeatable process and standards, which should be tailored to the individual project, but at no time should process and standards replace common sense in a dynamically changing development environment, 8) Employ tools and ensure the team is involved in their selection, 9) Ensure the development team is trained in methodology, process, standards, tools and system requirements, and 10) the manager should place the needs of his customer and his team ahead of his personal goals.

All of this is done in concert with the philosophical teachings of our great philosophers, who would encourage strict honesty and ethics in dealing with our customer, subordinates, colleagues, company management, even if it means being fired. Of course, one does not fit all the meaning of a 300-page book into such a short review, and one could easily list another 10 or more points of interest.

I agree with almost everything in this excellent book, but may differ on the role played by Computer Aided Software Engineering (CASE) and Computer Aided Design (CAD) in systems development. Since CASE tools became mature enough to use effectively, I personally selected my tools, then built my process and standards around them. This includes the way I modify process and standards (including DoD) to conform to streamlining development and associated documentation. The CASE tool, when used with discipline can ensure that interface errors are avoided during the design process, as provided through automatic leveling and validation as the system design progresses. Fixed price contracts caused me to gravitate to using the latest tools available and build around them each time.

I am certain that Autonomous Cognitive systems are in our future, but not without application of increasingly sophisticated CASE tools and compilers (Autonomous Cognitive Compilers), which can parse complex combinations of Boolean expressions with many operations per expression to simulate the human thought system in making decisions. Neither can these systems be built without addressing the transducers (sensors), which would connect to and provide stimuli to be interpreted and processed by any autonomous system as the 5 senses (sight, hearing, touch, smell and taste). I look forward to Mr. deGuyrky's next book, which may address this highly complex problem.

I would only close this review with one last comment, directed to JPL. Mr. deGyurky and his team were on the right track with Ada. It is unfortunate that JPL didn't adopt this very highly typed and disciplined high order language as their standard development language. I believe it would have saved more than one failed project. Based on my 40 plus years of developing computer systems, I would humbly suggest that JPL require mandatory use of Ada in all "Class A" development projects.

Programming
Competitive Engineering: A Handbook For Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage
Published in Kindle Edition by Butterworth-Heinemann (2005-06-25)
Author: Tom Gilb
List price: $41.95
New price: $33.56

Average review score:

Packed with great info!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-11-16
Planguage is a word and concept that combines Planning and LANGUAGE and is rooted in the author's experience since 1960. The core tenant of Competitive Engineering is that well structured specifications have a dramatic cost reduction over down-stream error correction. The defect prevention process (DPP) is used to clean up early stages specs, or preferably measure defects and motivate lower defect injection, in specifications and the attendant issues instead of relying solely on defect detection andcorrection once actual development has begun. Competitive Engineering provides focus and skills to dramatically increase how productive many of us have been in the past.

The centrality of quality specifications means significant gains for the broadest spectrum of stake-holders who stand to win with the System Of Interest (SOI). Take this specification as an example to clean up:

"The new system will use Foo language running on OS Bar and ensure top industry quality response time on web requests."

People in the field have seen specs like these. Hopefully you aren't writing them. There are what Gilb classifies as "Major defects" in this spec. Which web requests, the front page or all of them pulling from the various databases? Can the old system be incrementally upgraded instead of an entirely new development environment? Why use Foo and Bar if something else gets the job done better, faster, and with less resource utilization? Just how fast is "fast", anyway?

In Competitive Engineering you're told to get measureable quality requirements, record who requested that requirement, and exactly what "success" is defined as. That allows you to go back to the requester with notes such as "If we use OS Baz we'll get a 27% increase in CPU performance" and let them make a decision or escalate to the project funder. You're also encouraged to weed out "design constraints"; at least out of the mandatated and into the labelled area "Design Constraint". Wouldn't it be great if you got a specification that let you design the best you could without technical input from someone that can't use a web-browser?

See if you can understand my re-write of the above spec into Planguage.

Response Time on Front Page of Company Website.

Type: Performance Requirement
Version: 1.2
Status: Draft
Owner: F. Flintstone

Stakeholders: Marketing, Server Support, Corporate Intelligence, ,

Ambition: The front page of the corporate website should respond fast enough to keep the viewer's attention.

Description: Marketing research indicates the typical business website viewer makes an opinion on the website, and thus the company, within 20 seconds. Our corporate site pulls data from three different databases and a sizeable image library, taking an average of 26.87 seconds on a home DSL/Cable modem equivalent network. Marketing advantage can be gained if we can grab viewer attention noticibly faster than our two nearest competitors who average 23.43 and 26.09 seconds, respectively.

Vision: Enough accurate information provided quickly enough to keep the customer on our site.

Scale: Time, in Seconds, to a complete front page load on the equivalent of a 250K network connection.

Past [Front page, 1 Apr 07]: 26.87 seconds

Goal [1 November 07]: 19 seconds <- Marketing Director: BR

Stretch: 15 seconds

Wish: 9 seconds

Design Constraint: Supportability <- Server Support Manager WF Must utilize .

Design Constraint: Security <- Corporate Intelligence BB Must meet .

------------------------ end of spec example --------------------

Probably the only thing that might confuse you about that specification is the use of text within "<...>". Planguage uses that to denote a "fuzzy requirement"; something that is defined but not with the concreteness you'd like. In this example, however, it would be relatively simple to query B. Rubble for the specific guidelines her team seeks to enforce. The use of fuzzy requirements also allows for change over time; more OS versions may become supported while others are obsolete.

When I read part of an electronic copy of the text I had a problem. My antiquated home printer could not print it and if I used the work printer I view the output as a possession of my employer. The book is written as part instruction, part reference manual; I bought my own copy because I know I'm going to use it for the next few years and several employers.

Excellent Systems Engineering Book
Helpful Votes: 0 out of 0 total.
Review Date: 2007-08-28
This is one the books which has caused a great impression on me. It helps to get away from high-level, gut-feeling, fuzzy goals and descriptions to very concrete targets, unambiguous requirements and rational decisions. This strikes a chord at the heart of systems design and architecture, which consists in maximizing a set of business goals with limited resources (time, budget, personnel). I highly recommend it.

It's a very good book.
Helpful Votes: 0 out of 2 total.
Review Date: 2007-01-16
Building software systems is not easy, this book can help you to do a better job.

Thinking... further ;o)
Helpful Votes: 2 out of 2 total.
Review Date: 2006-03-12
In a period where the trend is to follow agile approaches with condensed guidance (see the 12 principles of the Agile Manifesto for instance), it could seem strange to publish a book on software development with more than 500 dense pages. You should however not be frightened by this book. Beneath the size and the structured form lies an approach based on practical experience that incorporates change and flexibility without abandoning the quest for precision and delivering value.

The main concept of Competitive Engineering is Planguage, a word created mixing plan and language. Communication is the basis for working together. This is why Tom Gilb emphasises first the creation of a common vocabulary. He states that his glossary could be considered as the best contribution of this book. Beneath the definition of a common language, for me the "hidden agenda" of the book is to help us to think... further. The common language is only a tool that helps us express our thoughts more precisely and completely.

Fortunately for us, Tom Gilb didn't only write a dictionary of system engineering. A large part of the book is devoted to the activities of system engineering and project management. Based on Planguage, Gilb gives us a framework to elicit clearer requirements. He emphasises a measurable vision ("bad numbers beat good words") and presents tools to achieve this objective. He also helps us separate requirements from design. He devotes an entire chapter to quality control. Finally, there is a presentation of the techniques of evolutionary project management that supports incremental development based on the priority and impact techniques described in previous parts of the book.

In every chapter you will find examples and case studies that help to visualise how the concepts translate into practice. There is also an "additional ideas" part that presents material for further thinking. Beneath the seriousness of the topic, Gilb also manage to place some lighter parts and you will find how to compare seriously apples with oranges.

At the end, your realise that you have a book where process is not opposed to people, structure is not opposed to flexibility, precision is not opposed to allowing change, documentation is not opposed to active refinement, Gilb's proposed solution is not opposed to customisation for your needs. It is just a book that gives you new inspiration to deliver better software solutions to your customer.

If you are interested in software process improvement, you can read this book from the beginning and find practical material to examine your current practices with a different vision. If you are a lonesome project manager or developer, you could begin by just using the index to get Gilb's view on your current activity or problem. Be cautious, because there are many chances that you will be tempted to read more material ;o)

After reading this book, I browsed again my old copy of "Principles of Software Engineering" that I bought when it was published in 1988. I saw that many ideas from "Competitive Engineering" were already presented in this book. Tom Gilb just applied to his ideas the same concepts he proposes for system engineering. He refined, expanded and structured them to get a better product. The printing industry has just prevented evolutionary delivery, but you can bet that he will find a way to include this in the future.

Best Practices in Systems Engineering and Management
Helpful Votes: 3 out of 3 total.
Review Date: 2006-04-06
My interest in the topic of competitive engineering (CE) was piqued several years ago when I heard very favorable comments about Tom Gilb's tutorial on that subject at the INCOSE 2002 Symposium in Las Vegas.

The book's subtitle is "A Handbook for Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage". The term "Planguage" is central to an understanding of the book. Planguage, which is derived from a union of "plan" and "language", is the methodology for implementing CE. Much of the book is devoted to describing the generalized processes, rules, and vocabulary of Planguage. Tom notes, "Planguage should be viewed as a powerful way to develop and implement strategies that will help your projects to deliver the required competitive results." Fundamentally, the book presents a new take on best practices in systems engineering and management.

The book is useful on several levels. For organizations without a formal or documented process, tailoring of Planguage would jump start the process at a high level of maturity. For organizations that have achieved CMMI level 3 status, Planguage by itself is not as useful. However, many of the ideas of CE-the Planguage methods-are worth considering for enhancement of existing organizational processes. Tom states that CE is "about technological management, risk control, and breakthrough improvement in complex business systems, projects, and processes." CE is a believable approach for delivering complex projects on time and within budget.

The book passed my value-added test, when I realized that I was photocopying several pages for future reference, to be part of my "toolkit" of helpful tips and techniques. I particularly enjoyed reading the 10 often witty, summary principles in each chapter. Two examples are:

* The Principle of `Storage of Wisdom': "If your people are not all experienced or geniuses, You need to store their hard-earned wisdom in your defined process. Capture wisdom for reuse, Fail to write it, that's abuse!"

* The Principle of `The early bird catches the worm': "Your customers will be happier with an early long-term stream of their priority improvements, than years of promises, culminating in late disaster."

About 30% of the book is the Planguage Concept Glossary, which Tom views as a central contribution of the book. I focused my attention on the other, more interesting, parts of the book, which describe the main CE/Planguage methods of Requirement Specification (RS), Design Engineering (DE), Impact Estimation (IE), Specification Quality Control (SQC), and Evolutionary Project Management (EVO, also known as Evo). RS describes an approach for identifying all types of requirements while avoiding ambiguity and also planning for change. Functional and performance requirements are distinguished. DE deals with identifying, choosing, and prioritizing the order in which design ideas are implemented and delivered. In conjunction with Evo, DE selects the design ideas most likely to provide a significant benefit for early delivery.

SQC is an eminently practical approach for evaluating the quality of any technical document via sampling measurements. An hour of SQC early in a project can save almost 10 hours of rework. SQC also provides a means to assess the success of process improvement efforts. IE provides a realistic method for evaluating-in quantitative terms-the effectiveness of designs in meeting both the requirements, especially critical performance attributes, and the resource budgets.

Evo focuses on early, frequent delivery of project results via a series of high-value, small evolutionary steps. An ideal Evo approach would divide the project into a series of cycles. Each cycle would consume 2-5% of the total financial budget and 2-5% of the total project time-while delivering some measurable, required results to the stakeholders. The next cycle is selected to deliver the best stakeholder value for its cost (highest ratio of value to cost, or highest ratio of performance to cost). Although an ideal approach can't always be realized, Tom provides some convincing examples to argue that there is always a solution to making a project evolutionary (small steps with critical deliveries first).

Perseverance pays off with Competitive Engineering. The book is not a quick read, which Tom acknowledges. You have to carefully study some of the pages to understand the concepts being presented. The reward occurs when you glean the nuggets of wisdom from the numerous practical examples, case studies, and Planguage examples. Tom's way of presenting the CE concepts makes the book a useful addition to the systems engineer's library.

Programming
Computers and Intractability: A Guide to the Theory of NP-Completeness (Series of Books in the Mathematical Sciences)
Published in Paperback by W. H. Freeman (1979-01-15)
Authors: M. R. Garey and D. S. Johnson
List price:
New price: $40.00
Used price: $25.95

Average review score:

Definitely a classic but not good for beginners
Helpful Votes: 0 out of 0 total.
Review Date: 2007-10-24
I have to say that this is a true classic. It gives a very nice treatment of what is NP-completeness in a fashion that really defends the topic well. It gives nice illustrations to show different situations and how to deal with it. But after the first couple of chapters it does get a little out there with the proofs it does. It is still approachable, but it assumes that the reader is already familiar with the basics of combinatorial complexity, especially in reductions. I would only recommend this book to readers who has gone through such books as Introduction to Algorithms by Cormen et al. or Combinatorial Complexity by Papadimitriou and Steiglitz. Those two books are more for beginners and this book should be one to help anyone interested in NP-complete problems to get more practice and depth understanding. Overall a great book for anyone interested in the topic. The grand challenge is to reduce everything to at least something within the 150 problems listed on your own.

comprehensive book for NP-completeness
Helpful Votes: 0 out of 0 total.
Review Date: 2007-09-21
The book is excellent in explaining NP-completeness problem. Take it as a reference if you would like to do research in this field.

Published in 1979 and still the best
Helpful Votes: 0 out of 0 total.
Review Date: 2007-06-16
This is a rare example of a textbook where the authors actually go to the trouble of considering the fact that the intended reader is a non-expert. Published in 1979 and still the best.

Arrived in time, good condition
Helpful Votes: 0 out of 36 total.
Review Date: 2006-02-24
The book arrived in time, in good condition, and adequate packing.

A Beautiful Book on a Beautiful Subject
Helpful Votes: 1 out of 16 total.
Review Date: 2005-12-10
This is among the most eloquently written books that I have ever read in my life. Highly recommended.

Programming
Creating Vista Gadgets: Using HTML, CSS and JavaScript with Examples in RSS, Ajax, ActiveX (COM) and Silverlight
Published in Paperback by Sams (2008-05-15)
Author: Rajesh Lal
List price: $34.99
New price: $13.33
Used price: $22.67

Programming
Domain-Specific Application Frameworks: Frameworks Experience by Industry
Published in Hardcover by John Wiley & Sons (1999-10-18)
Author:
List price: $75.00
New price: $19.88
Used price: $19.88

Average review score:

If you want to know what's happening out there
Helpful Votes: 0 out of 0 total.
Review Date: 2003-02-28
I was mainly interested in the MES implementation part and I found those chapters quite inspiring. We are usually lead by "common practices" which form our experience and we'll use them throughout our work. But formalizing and being able to communicate a technology is always an issue (unless you're going to di it all by yourself).
Excellent.

excellent collection
Helpful Votes: 0 out of 0 total.
Review Date: 2002-02-19
"Domain Specific..." is another excellent book from the "Fraemwork collection". It is a set comprehensive reference books as well as a authoritative textbooks by experts in this growing research field.

The description of practical experiences as well as more conceptual descriptions, are usefull to understand the complexity of achieving high levels of software reusability.

Managers and academics, will find a lot of material to help them decide if this is the way to go. Our research group in Web Engineering at the University of Sydney (weg.ee.usyd.edu.au) will us it extensively to improve our development practices.

An excelent walk through framework technologies
Helpful Votes: 1 out of 1 total.
Review Date: 2002-03-01
An almost indispensable 3-volume reading to understand the success of framework technologies in today's software systems. The books include most of the top
articles on the subject, providing a thorough insight in both design and implementation issues regarding frameworks, also complemented with practical experience
about framework usage. Although the work is mainly concentrated on technical aspects, the articles are comprehensible enough to be taken as reference material by
a broad community, for example, software engineers, programmers, or technology managers. The books are useful for anybody planning to include
framework-based techniques in software development processes or planning to improve current object-oriented practices. It is also an excellent source for graduate
courses.

Volume 1 lays the fundamental concepts supporting object-oriented frameworks, and describes the problems and challenges that this
technology raises in software development. The book covers topics such as domain analysis, development concepts and approaches,
documentation, and management, among others. Of course, the compilation of articles makes some parts little redundant, but this is a minor detail compared with the
fruitful contributions made by the book. In particular, the articles on reusing hooks, hot-spot-driven development, composing modeling frameworks in Catalysis, and
composition problems, causes and solutions, are a sample of the outstanding level of this work. Each chapter adds at the end a number of related questions and
student projects aiming to reinforce concepts and promote further investigation. As a comment, novice readers should take the sections concerning hooks and
hot-spots carefully because these topics are presented in a slightly confusing way.

Volume 2 focuses on specific framework implementations, dealing with existing frameworks for different application domains, such as businesses, multi-agent
systems, languages and system software. In this book, the readers will find a level of detail much closer to specific implementations issues than in the previous
volume. Nonetheless, the writing style remains mostly clear and accessible for a quite broad audience. The case-studies and experience reports described by the
articles show an attractive industrial perspective of the framework approach, and more important, they go an step forward in the road of a more mature discipline for
software development. In addition, a
CD-Rom with concrete examples of these applications is included with the book.

Volume 3 completes this series with a number of domain-specific application frameworks developed by industry, showing how to apply the concepts and ideas of
the previous books in software products. In this line, it includes very interesting frameworks for manufacturing systems and distributed systems, among others. It also
goes through concrete software scenarios, illustrating the benefits of combining domain knowledge and object-orientation expertise. Although the level of the articles
is rather odd, the volume certainly provides the readers a realistic picture of the problems of building and adapting frameworks by learning from others' experience.
A CD-Rom is also included with this book.

Overall, these framework books collect the state-of-the-art on framework development, offering a comprehensive and
easy-to-understand guide for both academics and practitioners in the field. It is clear that framework technologies will not solve all the problems (perhaps they rise
more challenges than current approaches), however, taking advantage of the framework possibilities can make your development process more repeatable,
productive, and also less painful. The gains of this retrain are no doubt a good investment.

Great Reference and Compilation of Timely Material
Helpful Votes: 1 out of 1 total.
Review Date: 2000-01-06
A great reference and compilation of timely material. For anyone interested in frameworks targeted to specific application domains, this book surveys a broad spectrum of example systems while providing detailed in depth information concerning the particular requirements and features necessary for each domain.

Excellent guidelines to build OO Application Frameworks
Helpful Votes: 2 out of 2 total.
Review Date: 2002-02-27
This book in conjunction with the books "Building Applicaton Frameworks: Object-Oriented Foundations of Framework Design" and "Implementing Application Frameworks: Object-Oriented Frameworks at Work" are a series of three books that constitute a complete and necessary guide for the design and implementation of application frameworks. They are based on multiple academic and industrial contributors experience building a wide range of domain-specific application framework. These books are very easy to read and understand and you can learn from them not only what a framework and an application framework are, but also how to apply this technology to real world domains, like manufacturing, health care, distributed computing, real-time systems, simulation environments, ...

First book, "Building Application Frameworks: Object-Oriented Foundations of Framework Design" introduces application frameworks, their benefits and problems. It addresses all the fundamental concepts behind OO application frameworks and provides guidelines for OO application framework development. It is organized in eight parts. Part one provides a complete overview of OO application framework technology describing what is an application framework, what are the problems and benefits of application frameworks and how to use, develop and evaluate an application framework. Part Two presents some historical application frameworks and discusses some general guidelines to increase the reusability of application frameworks. Part Three describes how to build a framework analysing a concrete domain. The rest of the book provides all the necessary information to completely build an application framework. It presents all the concepts managed in framework development, which are the different development approaches, how to test the resulting frameworks, the problems derived from integration and a question sometimes forgotten but very important, the framework documentation.

This book, "Domain-Specific Application Frameworks: Frameworks Experience by Industry" is focused in the experience of industrial and academic contributors in the development of OO application framework in different domains. Each chapter covers step by step the complete development of an application framework in manufacturing, distributed systems, real-time systems, telecommunication, multimedia, chemistry and data visualization domains. It includes the motivation developers founded to choose application framework technology, the problems they had to solve and the final solutions they developed.

Third book, "Implementing Application Frameworks: Object-Oriented Frameworks at Work", shows step by step how to implement application frameworks in different domains. It is organized in six parts covering examples about i) Business Frameworks with different examples in sales and administrative domains, ii) Artificial Intelligence, iii) Agent Application Frameworks, presenting interesting frameworks for speech recognition, neural networks and agents. iv) Specialized tool frameworks, v) Language Specific Frameworks, vi) System Application Frameworks, which present and analyse the application of OO frameworks in combination with other methodologies as component-oriented programming, language constructs or constraint programming and vi) Experiences in Application Frameworks. This last section is very useful because analyse the lessons learned using the application framework technology.

Programming
Effective XML: 50 Specific Ways to Improve Your XML (Effective Software Development Series)
Published in Paperback by Addison-Wesley Professional (2003-10-02)
Author: Elliotte Rusty Harold
List price: $49.99
New price: $29.74
Used price: $22.26

Average review score:

Excellent resource for both quality control and ideas
Helpful Votes: 0 out of 0 total.
Review Date: 2007-04-03
I bought this book quite a while ago and I absolutely the format. It's a great resource to just pick up and get great ideas, verify that you are on/off the right track and generally learn how to get to the next level with XML. Highly recommended

Great gap between book knowledge and effective use...
Helpful Votes: 1 out of 3 total.
Review Date: 2004-12-06
The flexibility of XML can often mean that there's a gap between using XML and using XML effectively. Elliotte Rusty Harold's book Effective XML - 50 Specific Ways to Improve Your XML (Addison Wesley) is an excellent way to move towards the latter condition.

Chapter List: Syntax; Structure; Semantics; Implementation; Recommended Reading; Index

There are obviously a large number of books that will teach you the semantics of writing and using XML. But just because you can create an XML file doesn't mean that you've done it well or effectively. Harold's book provides a bridge to being able to create XML files that will be usable in nearly all situations. The book starts out in the introduction with explanations of terms that are often confused (element vs. tag, text vs. character data vs. markup, etc.). Then there are four parts of the book that include a total of 50 tips that will improve the quality of your XML usage. Some tips are pretty basic, like "Include an XML Declaration". Others are more complex like "Verify Documents with XML Digital Signatures". But every one is practical and useful for making sure that your XML is widely useable by all potential applications.

Excellent bridge book to read after you've learned the basics of XML. This is a book that, when taken to heart and used, will cause your coworkers to thank you.

The best XML book I've read
Helpful Votes: 11 out of 12 total.
Review Date: 2004-10-22
Effective XML is a collection of about 50 tips for working with XML. Although XML seems is simple and easy to use, it's also easy to get wrong. I've often scratched your head and wondered why things like XML Schema, for example, just doesn't feel right. But it wasn't until I read Effective XML that I understood what was really awkward with it.

Because the book is so diverse (an amazing feat considering the small page count), it is hard to single out any specific part as being a reason to read the book. The book doesn't just talk about schemas, the infoset, etc..., it digs down and really explains what is good and bad about the technologies and what the best ways to apply them are. All I can say is that I use XML day in and day out and have learned everything I know by trial an error. I've made many mistakes along the way. I've tried my best to learn from them, but Effective XML was the book that made everything click for me. The best part is that the book went well beyond just helping me see my errors. I've already applied some of the ideas to new work I've done recently and have been able to head off some of the problems I would have encountered.


Effective XML is by far the best XML book I've ever read, and quite possibly the best tech book I've read all year. I might even have to add it to my favorite tech books list. If you work with XML to any significant degree, I can't recommend this book highly enough.

How to Effectively Use XML
Helpful Votes: 4 out of 4 total.
Review Date: 2006-02-07
Elliotte Rusty Harold states in the introduction of Effective XML that the book is neither an introductory book nor an XML tutorial. Rather, it is a distillation of the author's experience using and teaching XML and how to use it effectively. The book does a great job of explaining how to use XML and its related technologies.

The book is divided into four major sections: Syntax, Structure, Semantics, and Implementation. Each of the fifty Items packs a lot of information into a few pages. The Items span topics such as why you should Include an XML Declaration (Item 1), Make Structure Explicit through Markup (Item 11), Program to Standard APIs (Item 31), and Write in Unicode (Item 38). Even the Introduction is valuable because it sets the definitions for XML-related terms used in the rest of the book that the author has found to be used interchangeably or inconsistently.

Item 24, Choose the Right Schema Language for the Job, provides a typical example of the great information contained in Effective XML. This Item discusses the strengths and weaknesses of four schema languages: W3C XML Schema Language, DTDs, RELAX NG, and Schematron. The use of programming languages to handle situations that the schema languages can't handle is also discussed. The Item ends with a set of questions to think about when selecting the schema language to use.

I found the book very readable and like that the information is presented in digestible chunks. Effective XML isn't meant to hype XML but to identify what the actual capabilities of XML and its related technologies are and how best to use them. The book does an outstanding job at this task.

Full disclosure: I received a complimentary copy of the book for review.

I wish the XML Schema working group had a copy per member
Helpful Votes: 7 out of 8 total.
Review Date: 2005-07-10
This is not a book explaining XML. This is not a book that goes into any depth on XML APIs. It is not a book explaining any one XML format like XSLT, RSS, or XSD.

Instead it is a book on how to work with XML. How to design an XML application to take full advantage of the facilties of XML: schemas, processing instructions, XSL transforms, namespaces. It is all structured to slowly introduce you into the complexities, and deserves to sit up on the bookshelf with Effective C++, Java and Enterprise Java.

If you already know the basics of XML, it is actually quite a good way to learn about some of the more esoteric concepts -from the pragmatic perspective. Too many XML books rant about how wonderful some feature like XML schema's extension stuff is, why XML is the most universal format ever, SOAP and WS-* the best protocol for distributed systems ever, and XQuery everything you need for an XML database.

This book bursts the bubble of hype with rational analysis of what makes sense, and what doesn't. Item 28: Use only what you need, is my favourite: A review of the main XML specs and analysis of what really matters, which comes down to #35, navigate with XPath.

If you are designing an XML schema/system/application, you need this book. If you have to put up with architects telling you about WS-MetadataExchange, WS-Transfer and RDF, you need a copy to roll up and hit them over the head. And, if like me, you are involved in standards bodies that produce XML related things, you need to buy a copy for all the other participants, so that what you produce will actually work.

Remember that XML is a language designed for use by people and machines. The machines have the upper hand. But with this book, and some thinking, you can design XML applications that people can use.


Books-Under-Review-->Computers-->Education-->Commercial Services-->Training Companies-->Programming-->16
Related Subjects:
More Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250