Register your product to gain access to bonus material or receive a coupon.
The phenomenal increases in processing power and memory capacity of computing hardware over recent years have allowed manufacturers to produce smaller and smaller computer systems such as palmtop PCs, smart cards and embedded control systems on domestic and industrial appliances. New techniques such as dynamic memory management and object-orientation help programming but tend to require additional memory. Standard programming techniques do not cope with these limited memory-capacity environments. This book will provide practical help for programmers developing software for this kind of environment. The major content is a series of patterns developed by the authors based on solutions which have been found to work in real-life situations. They range from small system design patterns and process management patterns, to patterns for User Interface development, compression and memory storage. This book will appeal to developers using Windows CE or building mobile telephones, smart cards, embedded devices, set-top computers - in short, all programmers working with memory-constrained systems.
Foreword.
Preface.
Acknowledgements.
Introduction.
How to Use This Book.
Introduction to Small Memory.
Introduction to Patterns.
The Patterns in this Book.
Memory Limit.
Small Interfaces.
Partial Failure.
Captain Oates.
Read-Only Memory.
Hooks.
Application Switching.
Data Files.
Resource Files.
Packages.
Paging.
Table Compression.
Difference Coding.
Adaptive Compression.
Packed Data.
Sharing.
Copy-On-Write.
Embedded Pointers.
Multiple Representations.
Fixed Allocation.
Variable Allocation.
Memory Discard.
Pooled Allocation.
Compaction.
Reference Counting.
Garbage Collection.
Forces in this Book.
Forces Related to Non-Functional Requirements.
Architectural Impact.
Development Process.
Preface
Once upon a time computer memory was one of the most expensive commodities on earth, and large amounts of human ingenuity were spent trying to simulate supernova explosions with nothing more than a future Nobel prize winner and a vast array of vacuum tubes. Nowadays many people have enough computer memory to simulate the destruction of most of the galaxy in any one of their hand-held phones, digital diaries, or microwave ovens.
But at least two things have remained constant throughout the history of computing. Software design remains hard (Gamma et al. 1995), and its functionality still expands to fill the memory available (Potter 1948). This book addresses both these issues. Patterns have proved a successful format to capture knowledge about software design; these patterns in particular tackle memory requirements.
As authors we had several additional aims in writing this book. As patterns researchers and writers we wanted to learn more about patterns and pattern writing, and as software designers and architects we wanted to study existing systems to learn from them. In particular:
¥ we wanted to gain and share an in-depth knowledge of portable small memory techniques; techniques that work in many different environments;
¥ we wanted to write a complete set of patterns dealing with one single force Ñ in this case, memory requirements;
¥ we wanted to study the relationships between patterns, and to group and order the patterns based on these mutual relationships, and lastly
¥ we wanted an approachable book, one to skim for fun rather than to suffer as a penance.
This book is the result. It's written for software developers and architects, like ourselves, whether or not you happen to be facing memory constraints in your immediate work.
To make the book more approachable (and more fun to write) we've taken a light-hearted slant in most of our examples for the patterns and with Duane Bibby's cartoons. If frivolity doesn't appeal to you, please ignore the cartoons and the paragraphs describing the examples: the remaining text is as rigorous as we can make it.
This book is still a work in progress. We have incorporated the comments of many people, and we welcome more. You can contact us at our website, http://www.smallmemory.com/
acknowledgements
No book can be the work of just its authors. First, we need to thank John Vlissides, our indefatigable series editor: we still have copies of the e-mail where he suggested this mad endeavour, and we're grateful for his many comments on our patterns, from the original EuroPLoP paper to the final drafts. Second, this book would not be the same without Duane Bibby's illustrations, and we hope you like them as much as we do.
We take the blame for this book's many weaknesses, but credit for most of its strengths goes to those members of the Memory Preservation Society (and fellow travellers) who took the time to read and comment on drafts of the patterns and the manuscript. These people include but are not limited to John Vlissides (again), Paul Dyson, Linda Rising, Klaus Marquardt, and Liping Zhao (EuroPLoP and KoalaPLoP shepherds for these patterns), Tim Bell, Jim Coplien, Frank Buschmann, Alan Dearle, Martine Devos, Martin Fowler, Nick Grattan, Neil Harrison, Benedict Heal, David Holmes, Ian Horrocks, Nick Healy, Dave Mery, Matt Millar, Alistair Moffat, Eliot Moss, Alan OÕCallaghan, Will Ramsey, Michael Richmond, Hans Rohnert, Andreas Rping, Peter Sommerlad, Laurence Vanhelsuwe, Malcolm Weir, and the Software Architecture Group at the University of Illinois and Urbana-Champaign, including: Federico Balaguer, John Brant, Alan Carrol, Ian Chai, Diego Fernandez, Brian Foote, Alejandra Garrido, John Han, Peter Hatch, Ralph Johnson, Apu Kapadia, Aaron Klish, An Le, Dragos-Anton Manolescu, Brian Marick, Reza Razavi, Don Roberts, Paul Rubel, Les Tyrrell, Roger Whitney, Weerasak Witthawaskul, Joseph W. Yoder, and Bosko Zivaljevic.
The team at Addison-Wesley UK (or Pearson Education, we forget which) have been great in dealing with two authors on opposite sides of the globe. We'd like to thank Sally Mortimore (for starting it all off), Allison Birtwell (for finishing it all up), and Katherin Ekstrom (for staying the distance). Credit goes also to two artists, George Platts for suggesting illustrations and Trevor Coard for creating many of them.
Finally, we must thank all the members of the patterns community, especially those who have attended the EuroPLoP conferences in Kloster Irsee. We are both admirers of the patterns literature (in the same way one might be might be a fan of science fiction literature) and hope this collection of patterns will be a worthy contribution to the canon.
0201596075P04062001