Computer programming / software engineering Books

1908 products


  • Algorithms and Data Structures: The Basic Toolbox

    Springer-Verlag Berlin and Heidelberg GmbH & Co. KG Algorithms and Data Structures: The Basic Toolbox

    1 in stock

    Book SynopsisAlgorithms are at the heart of every nontrivial computer application, and algorithmics is a modern and active area of computer science. Every computer scientist and every professional programmer should know about the basic algorithmic toolbox: structures that allow efficient organization and retrieval of data, frequently used algorithms, and basic techniques for modeling, understanding and solving algorithmic problems. This book is a concise introduction addressed to students and professionals familiar with programming and basic mathematical language. Individual chapters cover arrays and linked lists, hash tables and associative arrays, sorting and selection, priority queues, sorted sequences, graph representation, graph traversal, shortest paths, minimum spanning trees, and optimization. The algorithms are presented in a modern way, with explicitly formulated invariants, and comment on recent trends such as algorithm engineering, memory hierarchies, algorithm libraries and certifying algorithms. The authors use pictures, words and high-level pseudocode to explain the algorithms, and then they present more detail on efficient implementations using real programming languages like C++ and Java. The authors have extensive experience teaching these subjects to undergraduates and graduates, and they offer a clear presentation, with examples, pictures, informal explanations, exercises, and some linkage to the real world. Most chapters have the same basic structure: a motivation for the problem, comments on the most important applications, and then simple solutions presented as informally as possible and as formally as necessary. For the more advanced issues, this approach leads to a more mathematical treatment, including some theorems and proofs. Finally, each chapter concludes with a section on further findings, providing views on the state of research, generalizations and advanced solutions.Trade Review"This is another mainstream textbook on algorithms and data structures, mainly intended for undergraduate students and professionals … . The two-layer index table is also detailed and helpful. I do enjoy reading the informative sections of historical notes and further findings at the end of each chapter. … This book is very well written, with the help of … clear figures and tables, as well as many interesting and inspiring examples." Zhizhang Shen, Zentralblatt MATH, Vol. 1146, 2008"... the book develops the basic fundamental principles underlying their design and analysis without sacrificing depth or rigor. The authors' insight, knowledge and active research on algorithms and data structures provide a very solid approach to the book. I particularly liked their "as informally as possible and as formally as necessary" writing style, and I enjoyed a lot their decision to not only discuss classical results, but to broaden the view to alternative implementations, memory hierarchies and libraries, which transmits novelty and increases interest...I think that this book will be a superb addition particularly useful for teachers of undergraduate courses, to graduate students in Computer Science, and to researchers that work, or intend to work, with algorithms." Jordi Petit, Computer Science Review 3, 2009 "Mehlhorn and Sanders write well, and the well-organized presentation reflects their experience and interest in the various topics... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. [...]This text is intended for undergraduate computer science (CS) majors, and focuses on algorithm analysis. … it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. Finally, the book contains interesting tidbits that are not readily available elsewhere." M. G. Murphy, ACM Computing Reviews, October 2008"A 'Toolbox' should be portable, practical, and useful. This book is all these, covering a nice swath of the classic CS algorithms but addressing them in a way that is accessible to the student and practitioner. Furthermore, it manages to incorporate interesting examples as well as subtle examples of wit compressed into its 300 pages. Although it is not tied to any one language or library, it provides practical references to efficient open-source implementations of many of the algorithms and data structures; these should be the first refuge of the commercial developer. I can easily recommend this book as an intermediate undergraduate text, a refresher for those of us who only dimly remember our intermediate undergraduate courses, and as a reference for the professional development craftsman." Hal C. Elrod, SIGACT News Book Review Column 42(4) 2011Table of ContentsAppetizer: Integer Arithmetics.- Representing Sequences by Arrays and Linked Lists.- Hash Tables and Associative Arrays.- Sorting and Selection.- Priority Queues.- Sorted Sequences.- Graph Representation.- Graph Traversal.- Shortest Paths.- Minimum Spanning Trees.- Generic Approaches to Optimization.

    1 in stock

    £52.24

  • Springer-Verlag Berlin and Heidelberg GmbH & Co. KG Mathematik für Informatiker: Algebra, Analysis, Diskrete Strukturen

    1 in stock

    Book SynopsisDas Buch bietet einen idealen Einstieg in die Mathematik: Jedes Kapitel beginnt mit konkreten und vertrauten Begriffen oder Situationen. Davon ausgehend abstrahieren die Autoren schrittweise bis sie zu den Begriffen der modernen Mathematik kommen. Dabei wird auf Anwendungen mit einem engen Bezug zur Informatik wie etwa Routenplaner oder Codierungstheorie eingegangen. Das Buch ist so angelegt, dass jeder der drei Teile (Algebra, Analysis und Diskrete Strukturen) unabhängig voneinander gelesen und verstanden werden kann.Trade ReviewAus den Rezensionen: “Das vorliegende Buch bietet eine klassische Einführung in die für Informatiker relevante Bereiche der Mathematik: Algebra ... Analysis ... Diskrete Strukturen ... Insgesamt handelt es sich um eine nette Bereicherung der aktuellen Literatur zu diesem Thema und ich kann es nur jedem Interessierten empfehlen.“ (G. TESCHL, Monatshefte für Mathematik, October/2010, Vol. 161, Issue 3, S. 335)Table of ContentsAlgebra.- Zahlen.- Lineare Algebra.- Analysis.- Reelle Zahlen und Folgen.- Funktionen.- Diskrete Strukturen.- Diskrete Mathematik.- Grundlagen der Mathematik.

    1 in stock

    £27.99

  • Raspberry Pi im Informatik- und

    Springer Fachmedien Wiesbaden Raspberry Pi im Informatik- und

    1 in stock

    Book SynopsisDieses Buch beschreibt erprobte und evaluierte Unterrichtssequenzen zum Experimentieren mit dem Raspberry Pi im Informatik- und Technikunterricht der Sekundarstufe. Ausgehend von den Zielen eines modernen Informatikunterrichts wird gezeigt, wie eine interessen- und motivationsfördernde Raspberry-Pi Lernumgebung aussehen kann. Neben konkreten und differenzierten Unterrichtseinheiten, mit denen sich Schülerinnen und Schüler experimentell die Grundbausteine von Algorithmen erschließen können, werden Unterrichtseinheiten für fortgeschrittene Lernende sowie Projekte vorgestellt. Die vorgestellten Konzepte unterstützen Lehrerinnen und Lehrer wirkungsvoll bei der Konzeption des eigenen Unterrichts, können aber auch als Selbstlernmodule genutzt werden.Table of ContentsDidaktik der Informatik - Die MicroBerry-Lernumgebung - Unterrichtseinheit im Rahmen der MicroBerry-Lernumgebung - Lernsequenzen zur Unterrichtseinheit „Grundelemente von Algorithmen“ - Beschreibung des Projektskripts zur Unterstützung der Projektphase - Projektideen - Evaluationsergebnisse

    1 in stock

    £25.19

  • UML 2 kompakt: mit Checklisten

    Spektrum Akademischer Verlag UML 2 kompakt: mit Checklisten

    1 in stock

    Book Synopsis

    1 in stock

    £17.09

  • Not Avail Geschichten Vom Scrum: Von Sprints,

    3 in stock

    Book Synopsis

    3 in stock

    £12.30

  • 1 in stock

    £46.42

  • Not Avail UML @ Classroom: Eine Einfhrung in Die

    1 in stock

    Book Synopsis

    1 in stock

    £22.41

  • Samurai Media Limited Bison: The Yacc-compatible Parser Generator

    1 in stock

    1 in stock

    £23.28

  • Apress Building Distributed Systems with Go and NATS

    2 in stock

    Book Synopsis1. Overview of Distributed Systems.- 2. Distributed Communication Basics.- 3. NATS Fundamentals.- 4. A Working System.- 5. Anatomy of a Service.- 6. DDD (Domain-Driven Design).- 7. Hexagonal Architecture.- 8. Sample Service.- 9. A Whole System vs a Bunch of Services.- 10. DDD for Systems.- 11. Fully Synchronous Systems.- 12. Aynchronous Systems.- 13. Reactive Systems.- 14. A Working System.

    2 in stock

    £53.99

  • APRESS L.P. Deep Learning with Rust

    7 in stock

    7 in stock

    £49.49

  • Computers and People Essays from the Profession

    John Wiley & Sons Inc Computers and People Essays from the Profession

    Book SynopsisThis book is a selection of essays on relevant topics already published in Computer. The more general essays have been selected for each section, a general introduction has been written, and each section is introduced by a fairly lengthy essay depicting the general area and serving as a prelude the more particular essays in each section.Trade Review"This collection of timeless, thought-provoking essays will appeal to computer users of all levels and ages." (CHOICE, May 2007) "The 34 essays that comprise the heart if his book reveal a humans and judicious mind dedicated to raising his profession." (Times Higher Education Supplement, 23rd February 2007) "…I enthusiastically recommend these well-written essays as food for thought for computer professionals, teachers, students, and the interested general public." (Computing Reviews.com, February 1, 2006)Table of ContentsPreface. The Context. The Background. The Chapters. 1. The Basis of Computing. 2. Computing So Far. 3. Computers and Education. 4. Computing and Professions. 5. The Potential of Computing. 6. Facing the Future. Technical Details. Index.

    £61.16

  • ModelDriven Software Development

    John Wiley & Sons Inc ModelDriven Software Development

    Book SynopsisModel-Driven Software Development (MDSD) is currently a highly regarded development paradigm among developers and researchers. With the advent of OMG's MDA and Microsoft's Software Factories, the MDSD approach has moved to the centre of the programmer's attention, becoming the focus of conferences such as OOPSLA, JAOO and OOP.Table of ContentsPart I: Introduction. 1. Introduction. 2. MDSD – Basic Ideas and Terminology. 3. Case Study: A Typical Web Application. 4. Concept Formation. 5. Classification. Part II: Domain Architectures. 6. Metamodeling. 7. MDSD-Capable Target Architectures. 8. Building Domain Architectures. 9. Code Generation Techniques. 10. Model Transformation Techniques. 11. MDSD Tools: Roles, Architecture, Selection Criteria, and Pointers. 12. The MDA Standard. Part III: Processes and Engineering. 13. MDSD Process Building Blocks and Best Practices. 14. Testing. 15. Versioning. 16. Case Study: Embedded Component Infrastructures. 17. Case Study: An Enterprise System. Part IV: Management. 18. Decision Support. 1.9 Organizational Aspects. 20. Adoption Strategies for MDSD. References. Index.

    £38.00

  • Coding Theory Algorithms Architectures and

    John Wiley & Sons Inc Coding Theory Algorithms Architectures and

    Book SynopsisOne of the most important key technologies for digital communication systems as well as storage media is coding theory. It provides a means to transmit information across time and space over noisy and unreliable communication channels.Trade Review"This text provides a unified framework for presenting coding-theory algorithms, signal-processing architectures, and accompanying applications." (Computing Reviews, June 16, 2008) "This book should provide a concise overview of channel coding and applications." (Zentralblatt MATH, 2008)Table of ContentsPreface. 1 Introduction. 1.1 Communication Systems. 1.2 Information Theory. 1.2.1 Entropy. 1.2.2 Channel Capacity. 1.2.3 Binary Symmetric Channel. 1.2.4 AWGN Channel. 1.3 A Simple Channel Code. 2 Algebraic Coding Theory. 2.1 Fundamentals of Block Codes. 2.1.1 Code Parameters. 2.1.2 Maximum Likelihood Decoding. 2.1.3 Binary Symmetric Channel. 2.1.4 Error Detection and Error Correction. 2.2 Linear Block Codes. 2.2.1 Definition of Linear Block Codes. 2.2.2 Generator Matrix. 2.2.3 Parity Check Matrix. 2.2.4 Syndrome and Cosets. 2.2.5 Dual Code. 2.2.6 Bounds for Linear Block Codes. 2.2.7 Code Constructions. 2.2.8 Examples of Linear Block Codes. 2.3 Cyclic Codes. 2.3.1 Definition of Cyclic Codes. 2.3.2 Generator Polynomial. 2.3.3 Parity Check Polynomial. 2.3.4 Dual Codes. 2.3.5 Linear Feedback Shift Registers. 2.3.6 BCH Codes. 2.3.7 Reed-Solomon Codes. 2.3.8 Algebraic Decoding Algorithm. 2.4 Summary. 3 Convolutional Codes. 3.1 Encoding of Convolutional Codes. 3.1.1 Convolutional Encoder. 3.1.2 Generator Matrix in Time-Domain. 3.1.3 State Diagram of a Convolutional Encoder. 3.1.4 Code Termination. 3.1.5 Puncturing. 3.1.6 Generator Matrix in D-Domain. 3.1.7 Encoder Properties. 3.2 Trellis Diagram and Viterbi’s Algorithm. 3.2.1 Minimum Distance Decoding. 3.2.2 Trellises. 3.2.3 Viterbi Algorithm. 3.3 Distance Properties and Error Bounds. 3.3.1 Free Distance. 3.3.2 Active Distances. 3.3.3 Weight Enumerators for Terminated Codes. 3.3.4 Path Enumerators. 3.3.5 Pairwise Error Probability. 3.3.6 Viterbi Bound. 3.4 Soft Input Decoding. 3.4.1 Euclidean Metric. 3.4.2 Support of Punctured Codes. 3.4.3 Implementation Issues. 3.5 Soft Output Decoding. 3.5.1 Derivation of APP Decoding. 3.5.2 APP Decoding in the Log-Domain. 3.6 Convolutional Coding in Mobile Communications. 3.6.1 Coding of Speech Data. 3.6.2 Hybrid ARQ. 3.6.3 EGPRS Modulation and Coding. 3.6.4 Retransmission Mechanism. 3.6.5 Link Adaptation. 3.6.6 Incremental Redundancy. 3.7 Summary. 4 Turbo Codes. 4.1 LDPC Codes. 4.1.1 Codes Based on Sparse Graphs. 4.1.2 Decoding for the Binary Erasure Channel. 4.1.3 Log-Likelihood Algebra. 4.1.4 Belief Propagation. 4.2 A First Encounter with Code Concatenation. 4.2.1 Product Codes. 4.2.2 Iterative Decoding of Product Codes. 4.3 Concatenated Convolutional Codes. 4.3.1 Parallel Concatenation. 4.3.2 The UMTS Turbo Code. 4.3.3 Serial Concatenation. 4.3.4 Partial Concatenation. 4.3.5 Turbo Decoding. 4.4 EXIT Charts. 4.4.1 Calculating an EXIT Chart. 4.4.2 Interpretation. 4.5 Weight Distribution. 4.5.1 Partial Weights. 4.5.2 ExpectedWeight Distribution. 4.6 Woven Convolutional Codes. 4.6.1 Encoding Schemes. 4.6.2 Distance Properties of Woven Codes. 4.6.3 Woven Turbo Codes. 4.6.4 Interleaver Design. 4.7 Summary. 5 Space-Time Codes. 5.1 Introduction. 5.1.1 Digital Modulation Schemes. 5.1.2 Diversity. 5.2 Spatial Channels. 5.2.1 Basic Description. 5.2.2 Spatial Channel Models. 5.2.3 Channel Estimation. 5.3 Performance Measures. 5.3.1 Channel Capacity. 5.3.2 Outage Probability and Outage Capacity. 5.3.3 Ergodic Error Probability. 5.4 Orthogonal Space-Time Block Codes. 5.4.1 Alamouti’s Scheme. 5.4.2 Extension to more than two Transmit Antennas. 5.4.3 Simulation Results. 5.5 Spatial Multiplexing. 5.5.1 General Concept. 5.5.2 Iterative APP Preprocessing and Per-Layer Decoding. 5.5.3 Linear Multi-Layer Detection. 5.5.4 Original Bell Labs Layered Space Time (BLAST) Detection. 5.5.5 QL Decomposition and Interference Cancellation. 5.5.6 Performance of Multi-Layer Detection Schemes. 5.5.7 Unified Description by Linear Dispersion Codes. 5.6 Summary. A. Algebraic Structures. A.1 Groups, Rings and Finite Fields. A.1.1 Groups. A.1.2 Rings. A.1.3 Finite Fields. A.2 Vector Spaces. A.3 Polynomials and Extension Fields. A.4 Discrete Fourier Transform. B. Linear Algebra. C. Acronyms. Bibliography. Index.

    £95.36

  • Programming MultiAgent Systems in Agentspeak

    John Wiley & Sons Inc Programming MultiAgent Systems in Agentspeak

    Book SynopsisJason is an Open Source interpreter for an extended version of AgentSpeak a logic-based agent-oriented programming language written in Java. It enables users to build complex multi-agent systems that are capable of operating in environments previously considered too unpredictable for computers to handle. Jason is easily customisable and is suitable for the implementation of reactive planning systems according to the Belief-Desire-Intention (BDI) architecture. Programming Multi-Agent Systems in AgentSpeak using Jasonprovides a brief introduction to multi-agent systems and the BDI agent architecture on which AgentSpeak is based. The authors explain Jason's AgentSpeak variant and provide a comprehensive, practical guide to using Jason to program multi-agent systems. Some of the examples include diagrams generated using an agent-oriented software engineering methodology particularly suited for implementation using BDI-based programming languages. ThTrade Review"This essential guide to ArgentSpeak and Jason will be invaluable to senior undergraduate and post-graduate students." (Zentralblatt Math 1132, August 2008)Table of ContentsPreface. 1 Introduction. 1.1 Autonomous Agents. 1.2 Characteristics of Agents. 1.3 Multi-Agent Systems. 1.4 Hello World! 2 The BDI Agent Model. 2.1 Agent-Oriented Programming. 2.2 Practical Reasoning. 2.3 A Computational Model of BDI Practical Reasoning. 2.4 The Procedural Reasoning System. 2.5 Agent Communication. 3 The Jason Agent Programming Language. 3.1 Beliefs. 3.2 Goals. 3.3 Plans. 3.4 Example: A Complete Agent Program. 3.5 Exercises. 4 Jason Interpreter. 4.1 The Reasoning Cycle. 4.2 Plan Failure. 4.3 Interpreter Configuration and Execution Modes. 4.4 Pre-Defined Plan Annotations. 4.5 Exercises. 5 Environments. 5.1 Support for Defining Simulated Environments. 5.2 Example: Running a System of Multiple Situated Agents. 5.3 Exercises. 6 Communication and Interaction. 6.1 Available Performatives. 6.2 Informal Semantics of Receiving Messages. 6.3 Example: Contract Net Protocol. 6.4 Exercises. 7 User-Defined Components. 7.1 Defining New Internal Actions. 7.2 Customising the Agent Class. 7.3 Customising the Overall Architecture. 7.4 Customising the Belief Base. 7.5 Pre-Processing Directives. 7.6 Exercises. 8 Advanced Goal-Based Programming. 8.1 BDI Programming. 8.2 Declarative (Achievement) Goal Patterns. 8.3 Commitment Strategy Patterns. 8.4 Other Useful Patterns. 8.5 Pre-Processing Directives for Plan Patterns. 9 Case Studies. 9.1 Case Study I: Gold Miners. 9.2 Case Study II: Electronic Bookstore. 10 Formal Semantics. 10.1 Semantic Rules. 10.2 Semantics of Message Exchange in a Multi-Agent System. 10.3 Semantic Rules for Receiving Messages. 10.4 Semantics of the BDI Modalities for AgentSpeak. 11 Conclusions. 11.1 Jason and Agent-Oriented Programming. 11.2 Ongoing Work and Related Research. 11.3 General Advice on Programming Style and Practice. A Reference Guide. A.1 EBNF for the Agent Language. A.2 EBNF for the Multi-Agent Systems Language. A.3 Standard Internal Actions. A.4 Pre-Defined Annotations. A.5 Pre-Processing Directives. A.6 Interpreter Configuration. Bibliography.

    £70.16

  • Metamodelling for Software Engineering

    Wiley Metamodelling for Software Engineering

    Book SynopsisThis book focuses on metamodelling as a discipline, exploring its foundations, techniques and results. It presents a comprehensive metamodel that covers process, product and quality issues under a common framework. Issues covered include: An explanation of what metamodelling is and why it is necessary in the context of software engineering.Table of ContentsPreface vii CHAPTER 1 – Software Development Methodologies and Metamodelling 1 1.1 What is a Methodology? 2 1.2 Metamodelling Needs 11 1.3 What is Metamodelling? 17 1.4 Summary 18 References 19 CHAPTER 2 – Modelling Infrastructure 21 2.1 Models and Modelling 21 2.2 Modelling Languages 26 2.3 Categorization Issues 36 2.4 The Relationship Between Models and Metamodels 42 2.5 Infrastructure 44 2.6 Summary 48 References 48 CHAPTER 3 – Using Metamodels 53 3.1 Metamodelling for Modelling Languages 53 3.2 Metamodelling for Processes 58 3.3 Metamodelling for Development Methodologies 62 3.4 Metamodelling for Model Transformation 65 3.5 Using a Metamodelling Infrastructure 68 3.6 Summary 72 References 72 CHAPTER 4 – Problems with Traditional Approaches and Current Products 75 4.1 Terminology and Culture Clashes 76 4.2 Linguistic and Ontological Metamodels 79 4.3 Process and Modelling Conflicts 83 4.4 The Quality Aspect 95 4.5 Solutions and Guidelines 104 4.6 Summary 106 References 106 CHAPTER 5 – New Approaches to Metamodelling 111 5.1 Deep Instantiation-Based Metamodelling 112 5.2 Powertype-Based Metamodelling 114 5.3 Comparison of Powertype Modelling and Potency 126 5.4 Summary 129 References 130 CHAPTER 6 – Software Engineering Metamodel for Development Methodologies 133 6.1 General Philosophy and Scope 133 6.2 High-Level View 141 6.3 Process Aspects 144 6.4 Modelling Aspects – Product Classes 148 6.5 People Aspects – Producer Classes 151 6.6 Linking Process and Product Aspects 153 6.7 Support Classes 154 6.8 Classes in ISO/IEC 24744 155 6.9 Extending the ISO/IEC 24744 Metamodel 157 6.10 Summary 161 References 161 CHAPTER 7 – Creating and Using a Methodology Generated from the Metamodel 163 7.1 Creating a Powertype-Based Methodology from its Metamodel 165 7.2 The Endeavour Domain 175 7.3 Summary 178 References 179 APPENDIX – Proposed Notation for ISO/IEC 24744 181 Index 203

    £56.00

  • VBA for Dummies

    John Wiley & Sons Inc VBA for Dummies

    Book SynopsisVBA helps you put your computer in its place Write programs that automate tasks and make Office 2007 work better for you If your computer is becoming your boss instead of your servant, start using VBA to tell it what to do! Here''s the latest on the VBA IDE and program containers, debugging and controlling your programs, working with multiple applications using a single program, and the most exciting stuff -- programming for all the Office 2007 applications. Discover how to Customize an application''s interface Quick-launch a VBA program Store and modify information Use VBA with the Ribbon Understand object-oriented programming Avoid runtime errors Table of ContentsIntroduction 1 Part I: An Overview of VBA 7 Chapter 1: Getting to Know VBA 9 Chapter 2: Your First VBA Program 33 Part II: Learning the Ropes 49 Chapter 3: Writing Structured VBA Programs 51 Chapter 4: Storing and Modifying Information 79 Chapter 5: Creating Structured Programs 111 Chapter 6: Trapping Errors and Squashing Bugs 133 Chapter 7: Interacting with the User 155 Part III: Expanding Your VBA Horizons 179 Chapter 8: Object-Oriented Programming 181 Chapter 9: Working with Arrays and Collections 205 Chapter 10: Working with Disk Files 229 Chapter 11: VBA Programming with XML 239 Part IV: Programming for Applications 255 Chapter 12: VBA Programming in Office 257 Chapter 13: VBA Programming in Word 277 Chapter 14: VBA Programming in Excel 305 Chapter 15: VBA Programming in Access 329 Chapter 16: Applications that Work Together 355 Part V: The Part of Tens 379 Chapter 17: Ten Kinds of VBA Resources 381 Chapter 18: Ten Ways to Update Your Old VBA Code Quickly 389 On the Web Bonus Chapter 1: VBA Programming in FrontPage BC1 Bonus Chapter 2: VBA Programming in Visio BC25 Bonus Chapter 3: Ten Really Cool Things You Can Do with VBA BC43 Index 397

    £22.09

  • Programming Mobile Devices

    John Wiley & Sons Inc Programming Mobile Devices

    Book SynopsisWith forewords by Jan Bosch, Nokia and Antero Taivalsaari, Sun Microsystems. Learn how to programme the mobile devices of the future! The importance of mobile systems programming has emerged over the recent years as a new domain in software development. The design of software that runs in a mobile device requires that developers combine the rules applicable in embedded environment; memory-awareness, limited performance, security, and limited resources with features that are needed in workstation environment; modifiability, run-time extensions, and rapid application development. Programming Mobile Devices is a comprehensive, practical introduction to programming mobile systems. The book is a platform independent approach to programming mobile devices: it does not focus on specific technologies, and devices, instead it evaluates the component areas and issues that are common to all mobile software platforms. This text will enable the designer to proTable of ContentsForeword by Jan Bosch. Foreword by Antero Taivalsaari. Preface. Acknowledgments. 1 Introduction. 1.1 Motivation. 1.2 Commonly Used Hardware and Software. 1.3 Development Process. 1.4 Chapter Overview. 1.5 Summary. 1.6 Exercises. 2 Memory Management. 2.1 Overview. 2.2 Strategies for Allocating Variables to Memory. 2.3 Design Patterns for Limited Memory. 2.4 Memory Management in Mobile Java. 2.5 Symbian OS Memory Management. 2.6 Summary. 2.7 Exercises. 3 Applications. 3.1 What Constitutes an Application? 3.2 Workflow for Application Development. 3.3 Techniques for Composing Applications. 3.4 Application Models in Mobile Java. 3.5 Symbian OS Application Infrastructure. 3.6 Summary. 3.7 Exercises. 4 Dynamic Linking. 4.1 Overview. 4.2 Implementation Techniques. 4.3 Implementing Plugins. 4.4 Managing Memory Consumption Related to Dynamically Linked Libraries. 4.5 Rules of Thumb for Using Dynamically Loaded Libraries. 4.6 Mobile Java and Dynamic Linking. 4.7 Symbian OS Dynamic Libraries. 4.8 Summary. 4.9 Exercises. 5 Concurrency. 5.1 Motivation. 5.2 Infrastructure for Concurrent Programming. 5.3 Faking Concurrency. 5.4 MIDP Java and Concurrency. 5.5 Symbian OS and Concurrency. 5.6 Summary. 5.7 Exercises. 6 Managing Resources. 6.1 Resource-Related Concerns in Mobile Devices. 6.2 Common Concerns. 6.3 MIDP Java. 6.4 Symbian OS. 6.5 Summary. 6.6 Exercises. 7 Networking. 7.1 Introduction. 7.2 Design Patterns for Networking Environment. 7.3 Problems with Networking Facilities and Implementations. 7.4 MIDP Java and Web Services. 7.5 Symbian OS and Bluetooth Facilities. 7.6 Summary. 7.7 Exercises. 8 Security. 8.1 Overview. 8.2 Secure Coding and Design. 8.3 Infrastructure for Enabling Secured Execution. 8.4 Security Features in MIDP Java. 8.5 Symbian OS Security Features. 8.6 Summary. 8.7 Exercises. References. Index.

    £59.80

  • Developing MultiAgent Systems with JADE Wiley

    John Wiley & Sons Inc Developing MultiAgent Systems with JADE Wiley

    Book SynopsisLearn how to employ JADE to build multi-agent systems! JADE (Java Agent DEvelopment framework) is a middleware for the development of applications, both in the mobile and fixed environment, based on the Peer-to-Peer intelligent autonomous agent approach.Trade Review"As a guide, this book is much better than online documentation because it's more comprehensive." (IEEE Distributed Systems Online) "…a comprehensive book that covers a wide range of topics related to agent-based programming with JADE." (Computing Reviews.com, October 1, 2007)Table of ContentsThe Authors ix List of Contributors xi Preface xiii 1 Introduction 1 2 Agent Technology Overview 3 2.1 About agents 3 2.2 The Foundation for Intelligent, Physical Agents (FIPA) 10 3 The JADE Platform 29 3.1 Brief history 29 3.2 JADE and the agents paradigm 30 3.3 JADE architecture 32 3.4 Compiling the software and launching the platform 34 3.5 JADE packages 37 3.6 Message transport service 39 3.7 Admin and debugging tools 42 4 Programming with JADE – Basic Features 51 4.1 Creating agents 51 4.2 Agent tasks 57 4.3 Agent communication 65 4.4 Agent discovery: the yellow pages service 72 4.5 Agents with a GUI 75 5 Programming with JADE – Advanced Features 77 5.1 Ontologies and content languages 77 5.2 Composing behaviours to create complex tasks 91 5.3 Threaded behaviours 99 5.4 Interaction protocols 100 5.5 Interacting with the AMS 107 5.6 Starting JADE from an external Java application 111 6 Agent Mobility 115 6.1 Agent mobility 115 6.2 Intra-platform mobility 117 6.3 Inter-platform mobility service 119 6.4 Usage of the JADE mobility services 121 7 JADE Internal Architecture 131 7.1 Distributed coordinated filters 131 7.2 Creating a JADE kernel service 136 8 Running JADE Agents on Mobile Devices 145 8.1 Main limitations of the mobile environment 145 8.2 The LEAP add-on 146 8.3 The split container execution mode 150 8.4 Developing MIDP agents 154 8.5 LEAP add-on advanced 161 9 Deploying a Fault-Tolerant JADE Platform 173 9.1 The main replication service 173 9.2 Attaching the DF to a relational DB 176 10 The JADE Web Services Integration Gateway 181 10.1 Web service technology 181 10.2 The utility of agent and Web service integration 182 10.3 The WSIG architecture 182 10.4 Installation requirements 184 10.5 WSIG installation procedure 185 10.6 WSIG operation 186 10.7 Example 1: Web service client invokes an agent service 193 10.8 Example 2: Agent service invokes a Web service 203 11 Agent-Society Configuration Manager and Launcher 207 11.1 Basic terms and concepts 207 11.2 Book-trading example 209 11.3 Distributed deployment 215 11.4 The XML meta-model 218 11.5 Inside the ASCML 220 11.6 Distributed monitoring, logging and debugging 222 11.7 Outlook 223 12 JADE Semantics Framework 225 12.1 FIPA-SL language 226 12.2 Interpretation engine 230 12.3 Basic semantic agent 231 12.4 Specializing the interpretation activity 234 12.5 Customizing belief handling 237 12.6 Handling Actions 240 12.7 Synthesizing standard and advanced use of the JSA 245 12.8 Conclusions 245 13 A Selection of Other Relevant Tools 247 13.1 The Bean Generator 247 13.2 Jademx 250 13.3 The Java Sniffer 251 13.4 JADEX – engineering goal-oriented agents 254 Appendix A Command Line Options 259 A.1 Syntax 259 A.2 Options to launch containers and main containers 260 A.3 General Options 261 A.4 Options of the JADE kernel-level services 262 A.5 Options related to MTPs 265 A.6 Options to configure the yellow page DF service 267 A.7 Options specific to the JADE-LEAP platform 268 A.8 Extending the command line with user-defined options 269 Appendix B List of Symbols and Acronyms 271 Bibliography 275 References 275 FIPA Specifications 278 Index 281

    £79.16

  • Developing Java Software

    John Wiley & Sons Inc Developing Java Software

    Book SynopsisThis significantly updated new edition of Developing Java Software is a thorough presentation of object-oriented design and programming concepts using the Java 5 programming language. The book takes the reader from the basics of using Java 5 to the creation of complete, object-oriented programs. Following an objects early' approach, the core elements of the Java language are covered, including the use of recently added features such as generics. The encouragement of the proper creation and use of classes, and the demonstration of the strategies used to create good quality code are at the core of this book. You will learn how Java programs work and how they can be designed and implemented in an organized and systematic way. In addition, the book addresses how a Java programming project should be managed and introduces the Ant build tool and the Subversion version control system. Testing has always been an important part of Developing Java Software. This edition provides new cTable of ContentsPreface. Part 1 Programming with Objects and Classes. 1 Introduction. 1.1 The Start. 1.2 A (Very!) Short History of Java. 1.3 Being at the Right Place at the Right Time. 1.4 What is Java? 1.5 Abstraction: The Critical Core of Programming. 1.6 The Java 2 Platform. 1.7 Java is Architecture Neutral. 1.8 Java and its Jokes. 1.9 Summary. 2 Programming Fundamentals. 2.1 Introduction. 2.2 Abstraction and the Big Picture. 2.3 Statement Sequences. 2.4 Iteration. 2.5 Selection. 2.6 State. 2.7 Writing a Simple Java Program. 2.8 Comments. 2.9 Output Statements. 2.10 Input Statements. 2.11 Interactive Programs. 2.12 Summary. Self-review Questions. Programming Exercises. Challenges. 3 Adding Structure. 3.1 Introduction. 3.2 Abstraction and Encapsulation. 3.3 Methods. 3.4 Writing Programs with Methods. 3.5 Procedural Decomposition. 3.6 Encapsulation. 3.7 Some More Operators. 3.8 Some More Control Statements. 3.9 Some More Example Programs. 3.10 Summary. 4 Introducing Containers. 4.1 Introduction. 4.2 Arrays. 4.3 Container Classes. 4.4 Data Files. 4.5 Summary. 5 Drawing Pictures. 5.1 Introduction. 5.2 Creating Drawings. 5.3 Properties of Drawings. 5.4 Drawing Text. 5.5 Example Programs. 5.6 Summary. 6 Classes and Objects. 6.1 Introduction. 6.2 Creating New Data Types. 6.3 Generic Classes. 6.4 Method Names and Scope. 6.5 Object Initialization. 6.6 Objects and References. 6.7 Static Variables and Methods. 6.8 Example Classes. 6.9 Programming with Classes and Objects. 6.10 Enumerated Types. 6.11 An Example—Creating Bridge Hands. 6.12 Summary. 7 Class Relationships. 7.1 Introduction. 7.2 Association. 7.3 Inheritance. 7.4 Reuse: Inheritance vs. Association. 7.5 Inheritance Hierarchies. 7.6 Interfaces and Type Conformance. 7.7 Comparing Objects for Equality. 7.8 Nested Classes. 7.9 Packages. 7.10 Class Matrix Revisited. 7.11 Reusability and Components. 7.12 Summary. 8 Exceptions. 8.1 What’s the Problem? 8.2 Kinds of Errors. 8.3 Representing Exceptions. 8.4 Throwing an Exception. 8.5 Catching Exceptions. 8.6 The Finally Block. 8.7 Plan to Use Exceptions. 8.8 Some Examples. 8.9 Summary. 9 Introducing Concurrency with Threads. 9.1 Doing More Than One Thing At Once. 9.2 Threads. 9.3 Using Threads. 9.4 Thread Synchronization. 9.5 Thread Scheduling. 9.6 Example Programs. 9.7 Summary. 10 User Interfaces. 10.1 Introduction. 10.2 Core GUI Concepts. 10.3 Text Input with a GUI. 10.4 A Very Simple Text Editor. 10.5 Menus. 10.6 Painting. 10.7 Summary. Part 2 The Process of Programming. 11 The Programming Process. 11.1 Introduction. 11.2 Why Object-oriented? 11.3 Development Tasks. 11.4 Testing Strategies. 11.5 UML Class, Object and Sequence Diagrams. 11.6 Practice and Experience. 11.7 Summary. 12 Unit Testing. 12.1 Introduction. 12.2 Unit Testing—A First Example. 12.3 The Core Principles of Unit Testing. 12.4 Test-driven Development. 12.5 The TestNG Framework. 12.6 Extending the Person Class. 12.7 Summary. 13 Test-driven Programming Strategies. 13.1 Introduction. 13.2 Getting Started—Searching for Files. 13.3 The GUI. 13.4 The Complete Searcher. 13.5 Summary. 14 Programming Tools. 14.1 Introduction. 14.2 Project Structure. 14.3 Ant—The Build Tool. 14.4 Version Control. 14.5 Integrated Development Environments. 14.6 Summary. Part 3 Case Studies in Developing Programs. 15 Introducing the Case Studies. 15.1 Introduction. 15.2 The Case Studies. 15.3 The Presentations of the Case Studies. 16 Contacts Book. 16.1 Introduction. 16.2 Wading In. 16.3 Stepping Back—Some Research. 16.4 Data Storage. 16.5 A GUI Design. 16.6 Displaying the List of Contacts. 16.7 Menus and Action. 16.8 More to Do. 17 Pedestrian Crossing Simulation. 17.1 Introduction. 17.2 The Initial Problem Specification. 17.3 The Initial Thinking. 17.4 A First Pass. 17.5 Getting GUI. 17.6 GUIer and GUIer. 17.7 Control… We Have a Problem. 17.8 Onward. 17.9 Summary. Part 4 The Java Programming Language in Detail. 18 A Java Language Reference. 18.1 Introduction. 18.2 Syntax and Semantics. 18.3 The Presentation. 18.4 The Example Programs. 18.5 Summary. 19 Variables, Types and Expressions. 19.1 Introduction. 19.2 Comments. 19.3 Identifiers. 19.4 Unicode Escapes. 19.5 Literals. 19.6 Types. 19.7 Scope. 19.8 Variables. 19.9 Expressions and Operators. 19.10 Source Files. 19.11 Summary. 20 Flow Control. 20.1 Introduction. 20.2 Selection. 20.3 Iteration. 20.4 Transfer Statements. 20.5 Recursion. 20.6 Summary. 21 Classes and Packages. 21.1 Introduction. 21.2 Classes. 21.3 Top-Level Classes. 21.4 Nested Classes. 21.5 Enumerated Types. 21.6 Packages. 21.7 Static Import. 21.8 Summary. 22 Inheritance and Interfaces. 22.1 Introduction. 22.2 Inheritance. 22.3 Interfaces. 22.4 Annotations. 22.5 Summary. 23 Exception Handling. 23.1 Introduction. 23.2 Summary. 24 Threads and Concurrency. 24.1 Introduction. 24.2 Class Thread. 24.3 Synchronized Methods. 24.4 Synchronized Statement. 24.5 Summary. Part 5 Endmatter. Appendix A Glossary. Appendix B The CRC Method. Appendix C The Online Documentation. Appendix D Running Java Programs. Appendix E Class Input. Appendix F Class FileInput. Appendix G Class FileOutput. Appendix H Class DrawFrame. Appendix I Class DrawPanel. Appendix J Bibliography. Index.

    £54.10

  • ObjectOriented Analysis and Design

    John Wiley & Sons Inc ObjectOriented Analysis and Design

    Book SynopsisCovering the breadth of this core topic, Object--Oriented Analysis and Design provides a thorough grounding in object--oriented concepts, the software development process, UML and multi--tier technologies.Trade Review"This is an excellent book...a book I greatly enjoyed reading..." (Visual Systems Journal, October 2005)Table of Contents1. Introduction. Part I: Setting the Scene. 2. Object Concepts. 3. Inheritance. 4. Type Systems. 5. Software Development Methodologies. Part II: Understanding the Problem. 6. Gathering Requirements. 7. Analyzing the Problem. Part III: Designing the Solution. 8. Designing the System Architecture. 9. Choosing Technologies. 10. Designing the Subsystems. 11. Reusable Design Patterns. 12. Specifying the Interfaces of Classes. 13. Continuous Testing. Appendix A: Ripple Summary. Appendix B: iCoot Case Study. Appendix C: Summary of UML Notation Used. Bibliography. Index.

    £43.65

  • Professional Java Native Interfaces with SWT

    Wiley Professional Java Native Interfaces with SWT

    Book SynopsisProfessional Java Native Interfaces takes a solutions--based approach to show how SWT/JFace works and how to harness these two interface--building tools. Each common component is discussed, providing useful, practical ideas and tips and techniques to make working easier.Table of ContentsAbout the Author. Introduction. Part I: Fundamentals. Chapter 1: Overview of Java UI Toolkits and SWT/Jface. Chapter 2: SWT/JFace Mechanisms. Chapter 3: Jump Start with SWT/Jface. Chapter 4: SWT Event Handling, Threading, and Displays. Chapter 5: Basic SWT Widgets. Chapter 6: Layouts. Part II: Design Basics. Chapter 7: Combos and Lists. Chapter 8: Text Controls. Chapter 9: Menus, Toolbars, Cool Bars, and Actions. Chapter 10: Tables. Chapter 11: Trees. Chapter 12: Dialogs. Part III: Dynamic Controls. Chapter 13: Scales, Sliders, and Progress Bars. Chapter 14: Other Important SWT Components. Chapter 15: SWT Graphics and Image Handling. Chapter 16: Drag and Drop and the Clipboard. Chapter 17: Printing. Chapter 18: JFace Windows and Dialogs. Part IV: Application Development. Chapter 19: JFace Wizards. Chapter 20: Creating a Text Editor with JFace Text. Chapter 21: Eclipse Forms. Chapter 22: Programming OLE in Windows. Chapter 23: Drawing Diagrams with Draw2D. Chapter 24: Sample Application. Index.

    £28.80

  • Puzzles for Programmers and Pros

    John Wiley & Sons Inc Puzzles for Programmers and Pros

    Book SynopsisPuzzles for Programmers and Pros.Table of ContentsAcknowledgments v Introduction xi Part I: Mind Games 1 We can't all be winners. 3 Sweet Tooth 4 Byzantine Bettors 6 A Touch of Luck 8 Information Gain 10 Reach for the Sky! 12 Pork Politics 14 Social Games 15 Escape Management 19 Flu Math 21 Imagination rules... 23 Whipping Ice 24 Optimal Jargon 29 Using Your Marbles 31 Flipping Colors 33 Scheduling Tradition 34 Fractal Biology 35 As Easy as Pie 37 Getting on the right side of luck 41 Lucky Roulette 42 Legal Logic 44 The Box Chip Game 47 Feedback Dividends 49 What are you thinking? 53 Number Clues 54 Mind Games 56 Refuse and Reveal 59 A Biting Maze 61 Mad Mix 63 Doing more with less 65 Dig That! 66 Preferential Romance 68 No Change for the Holidays 71 Quiet in the Depths 73 Solutions 74 Solution to Sweet Tooth 74 Solution to Byzantine Bettors 74 Solution to A Touch of Luck 76 Solution to Information Gain 78 Solution to Reach for the Sky! 78 Solution to Pork Politics 79 Solution to Social Games 80 Solution to Escape Management 81 Solution to Flu Math 83 Solution to Whipping Ice 84 Solution to Optimal Jargon 86 Solution to Using Your Marbles 88 Solution to Flipping Colors 89 Solution to Scheduling Tradition 90 Solution to Fractal Biology 91 Solution to As Easy as Pie 94 Solution to Lucky Roulette 96 Solution to Legal Logic 96 Solution to The Box Chip Game 97 Solution to Feedback Dividends 102 Solution to Number Clues 103 Solution to Mind Games 104 Solution to Refuse and Reveal 108 Solution to A Biting Maze 110 Solution to Mad Mix 112 Solution to Dig That! 113 Solution to Preferential Romance 116 Solution to No Change for the Holidays 117 Solution to Quiet in the Depths 118 Part II: The Secret of the Puzzle 121 Order the Ages 126 Urban Planning 128 Solution to Urban Planning 129 Finding a Schedule That Works 131 Solution to Finding a Schedule That Works 132 Picturing the Treasure 133 Solution to Picturing the Treasure 135 Sudoku 138 Solution to Sudoku 146 Number Encoding 147 Solution to Number Encoding 149 Selective Greed 150 Solution to Selective Greed 155 Sweet Packs 156 Solution to Sweet Packs 158 Revisiting a Traveling Salesman 159 Solution to Revisiting a Traveling Salesman 163 Overloaded Scheduling and Freezing Crystals 164 Solution to Overloaded Scheduling and Freezing Crystals 170 Wordsnakes 171 Solution to Wordsnakes 173 Maximal Friends 174 Solution to Maximal Friends 176 Winning at the Slots 177 Solution to Winning at the Slots 179 Understanding Dice 181 Solution to Understanding Dice 183 Bait and Switch 184 Solution to Bait and Switch 186 Part III: Faithful Foes 189 Index 221

    £14.39

  • Software Architecture

    John Wiley & Sons Inc Software Architecture

    Book SynopsisSoftware architecture is foundational to the development of large, practical software-intensive applications. This brand-new text covers all facets of software architecture and how it serves as the intellectual centerpiece of software development and evolution. Critically, this text focuses on supporting creation of real implemented systems. Hence the text details not only modeling techniques, but design, implementation, deployment, and system adaptation -- as well as a host of other topics -- putting the elements in context and comparing and contrasting them with one another. Rather than focusing on one method, notation, tool, or process, this new text/reference widely surveys software architecture techniques, enabling the instructor and practitioner to choose the right tool for the job at hand. Software Architecture is intended for upper-division undergraduate and graduate courses in software architecture, software design, component-based software engineering, and distributed systemsTable of Contents1 The Big Idea 1 1.1 The Power of Analogy: The Architecture of Buildings, 2 1.1.1 Limitations of the Analogy, 5 1.1.2 So, What’s the Big Idea?, 6 1.2 The Power and Necessity of Big Ideas: The Architecture of the Web, 7 1.3 The Power of Architecture in the Small: Architecture on the Desktop, 12 1.4 The Power of Architecture in Business: Productivity and Product Lines, 15 1.5 End Matter, 20 1.6 Review Questions, 21 1.7 Exercises, 21 1.8 Further Reading, 21 2 Architectures in Context: The Reorientation of Software Engineering 23 2.1 Fundamental Understandings, 24 2.2 Requirements, 25 2.3 Design, 29 2.3.1 Design Techniques, 31 2.4 Implementation, 33 2.4.1 Implementation Strategies, 35 2.5 Analysis and Testing, 38 2.6 Evolution and Maintenance, 40 2.7 Processes, 42 2.7.1 The Turbine Visualization, 43 2.7.2 Example Process Depictions, 49 2.8 End Matter, 52 2.9 Review Questions, 53 2.10 Exercises, 54 2.11 Further Reading, 55 3 Basic Concepts 57 3.1 Terminology, 58 3.1.1 Architecture, 58 3.1.2 Component, 68 3.1.3 Connector, 70 3.1.4 Configuration, 72 3.1.5 Architectural Style, 72 3.1.6 Architectural Pattern, 73 3.2 Models, 75 3.3 Processes, 75 3.4 Stakeholders, 79 3.5 End Matter, 79 3.6 Review Questions, 80 3.7 Exercises, 80 3.8 Further Reading, 81 4 Designing Architectures 83 4.1 The Design Process, 85 4.2 Architectural Conception, 87 4.2.1 Fundamental Conceptual Tools, 87 4.2.2 The Grand Tool: Refined Experience, 90 4.3 Refined Experience in Action: Styles and Architectural Patterns, 91 4.3.1 Domain Specific Software Architectures, 93 4.3.2 Architectural Patterns, 94 4.3.3 Introduction to Styles, 99 4.3.4 Simple Styles, 102 4.3.5 More Complex Styles, 124 4.3.6 Discussion: Patterns and Styles, 137 4.3.7 Design Recovery, 139 4.4 Architectural Conception in Absence of Experience: Unprecedented Design, 144 4.5 Putting it All Together: Design Processes Revisited, 149 4.5.1 Insights from Requirements, 150 4.5.2 Insights from Implementation, 151 4.6 End Matter, 152 4.7 Review Questions, 153 4.8 Exercises, 154 4.9 Further Reading, 154 5 Connectors 157 5.1 Connectors in Action: A Motivating Example, 159 5.2 Connector Foundations, 161 5.3 Connector Roles, 163 5.4 Connector Types and Their Variation Dimensions, 164 5.4.1 Procedure Call Connectors, 165 5.4.2 Event Connectors, 166 5.4.3 Data Access Connectors, 167 5.4.4 Linkage Connectors, 168 5.4.5 Stream Connectors, 169 5.4.6 Arbitrator Connectors, 170 5.4.7 Adaptor Connectors, 170 5.4.8 Distributor Connectors, 171 5.5 Example Connectors, 172 5.5.1 Event-Based Data Distribution Connectors, 173 5.5.2 Grid-Based Data Distribution Connectors, 174 5.5.3 Client-Server–Based Data Distribution Connectors, 175 5.5.4 P2P-Based Data Distribution Connectors, 176 5.6 Using the Connector Framework, 176 5.6.1 Selecting Appropriate Connectors, 177 5.6.2 Detecting Mismatches, 180 5.7 End Matter, 181 5.8 Review Questions, 182 5.9 Exercises, 183 5.10 Further Reading, 183 6 Modeling 185 6.1 Modeling Concepts, 186 6.1.1 Stakeholder-Driven Modeling, 186 6.1.2 Basic Architectural Concepts, 188 6.1.3 Elements of the Architectural Style, 189 6.1.4 Static and Dynamic Aspects, 190 6.1.5 Functional and Non-Functional Aspects, 191 6.2 Ambiguity, Accuracy, and Precision, 191 6.2.1 Ambiguity, 192 6.2.2 Accuracy and Precision, 192 6.3 Complex Modeling: Mixed Content and Multiple Views, 194 6.3.1 Views and Viewpoints, 194 6.3.2 Consistency among Views, 196 6.4 Evaluating Modeling Techniques, 198 6.5 Specific Modeling Techniques, 199 6.5.1 Generic Techniques, 199 6.5.2 Early Architecture Description Languages, 209 6.5.3 Domain- and Style-Specific ADLs, 221 6.5.4 Extensible ADLs, 229 6.6 When Systems Become Too Complex to Model, 242 6.7 End Matter, 243 6.8 Review Questions, 246 6.9 Exercises, 246 6.10 Further Reading, 246 7 Visualization 249 7.1 Visualization Concepts, 250 7.1.1 Canonical Visualizations, 250 7.1.2 Textual Visualizations, 251 7.1.3 Graphical Visualizations, 253 7.1.4 Hybrid Visualizations, 255 7.1.5 The Relationship between Visualizations and Views, 255 7.2 Evaluating Visualizations, 259 7.2.2 Constructing a Visualization, 261 7.2.3 Coordinating Visualizations, 264 7.2.4 Beyond Design: Using Visualization Dynamically, 266 7.3 Common Issues in Visualization, 268 7.3.1 Same Symbol, Different Meaning, 268 7.3.2 Differences without Meaning, 269 7.3.3 Decorations without Meaning, 269 7.3.4 Borrowed Symbol, Different Meaning, 270 7.4 Evaluating Visualization Techniques, 272 7.5 Techniques, 272 7.5.1 Textual Visualizations, 272 7.5.2 Informal Graphical Editors, 274 7.5.3 UML: The Unified Modeling Language, 276 7.5.4 Rapide, 280 7.5.5 The Labeled Transition State Analyzer (LTSA), 282 7.5.6 xADL 2.0, 284 7.6 End Matter, 288 7.7 Review Questions, 289 7.8 Exercises, 290 7.9 Further Reading, 290 8 Analysis 291 8.1 Analysis Goals, 295 8.1.1 Completeness, 295 8.1.2 Consistency, 296 8.1.3 Compatibility, 302 8.1.4 Correctness, 303 8.2 Scope of Analysis, 303 8.2.1 Component- and Connector-Level Analysis, 304 8.2.2 Subsystem- and System-Level Analysis, 305 8.2.3 Data Exchanged in the System or Subsystem, 307 8.2.4 Architectures at Different Abstraction Levels, 308 8.2.5 Comparison of Two or More Architectures, 310 8.3 Architectural Concern being Analyzed, 310 8.4 Level of Formality of Architectural Models, 312 8.5 Type of Analysis, 313 8.6 Level of Automation, 314 8.7 System Stakeholders, 315 8.8 Analysis Techniques, 317 8.8.1 Inspections and Reviews, 317 8.8.2 Model-Based Analysis, 322 8.8.3 Simulation-Based Analysis, 328 8.9 End Matter, 333 8.10 Review Questions, 334 8.11 Exercises, 335 8.12 Further Reading, 336 9 Implementation 337 9.1 Concepts, 338 9.1.1 The Mapping Problem, 338 9.1.2 Architecture Implementation Frameworks, 340 9.1.3 Evaluating Frameworks, 343 9.1.4 Middleware, Component Models, and Application Frameworks, 343 9.1.5 Building a New Framework, 346 9.1.6 Concurrency, 347 9.1.7 Generative Technologies, 348 9.1.8 Ensuring Architecture-to-Implementation Consistency, 349 9.2 Existing Frameworks, 350 9.2.1 Frameworks for the Pipe-and-Filter Architectural Style, 350 9.2.2 Frameworks for the C2 Architectural Style, 352 9.3 Examples, 360 9.3.1 Implementing Lunar Lander in the Pipe-and-Filter Style using the java.io Framework, 360 9.3.2 Implementing Lunar Lander in the C2-Style Using the Lightweight C2 Framework, 366 9.4 End Matter, 377 9.5 Review Questions, 378 9.6 Exercises, 378 9.7 Further Reading, 379 10 Deployment and Mobility 381 10.1 Overview of Deployment and Mobility Challenges, 385 10.2 Software Architecture and Deployment, 387 10.2.1 Basic Concepts, 388 10.2.2 Deployment Activities, 388 10.2.3 Tool Support, 402 10.3 Software Architecture and Mobility, 405 10.3.1 Basic Concepts, 405 10.3.2 Mobility Paradigms, 405 10.3.3 Challenges in Migrating Code, 406 10.4 End Matter, 408 10.5 Review Questions, 409 10.6 Exercises, 409 10.7 Further Reading, 410 11 Applied Architectures and Styles 413 11.1 Distributed and Networked Architectures, 414 11.1.1 Limitations of the Distributed Systems Viewpoint, 415 11.2 Architectures for Network-Based Applications, 416 11.2.1 The REpresentational State Transfer Style (REST), 416 11.2.2 Commercial Internet-Scale Applications, 422 11.3 Decentralized Architectures, 424 11.3.1 Shared Resource Computation: The Grid World, 425 11.3.2 Peer-to-Peer Styles, 426 11.3.3 Summary Notes on Latency and Agency, 432 11.4 Service-Oriented Architectures and Web Services, 433 11.5 Architectures from Specific Domains, 437 11.5.1 Robotics, 437 11.5.2 Wireless Sensor Networks, 443 11.6 End Matter, 443 11.7 Review Questions, 445 11.8 Exercises, 445 11.9 Further Reading, 446 12 Designing for Non-Functional Properties 447 12.1 Efficiency, 450 12.1.1 Software Components and Efficiency, 451 12.1.2 Software Connectors and Efficiency, 453 12.1.3 Architectural Configurations and Efficiency, 455 12.2 Complexity, 459 12.2.1 Software Components and Complexity, 460 12.2.2 Software Connectors and Complexity, 463 12.2.3 Architectural Configurations and Complexity, 464 12.3 Scalability and Heterogeneity, 467 12.3.1 Software Components and Scalability, 468 12.3.2 Software Connectors and Scalability, 471 12.3.3 Architectural Configurations and Scalability, 473 12.4 Adaptability, 475 12.4.1 Software Components and Adaptability, 475 12.4.2 Software Connectors and Adaptability, 476 12.4.3 Architectural Configurations and Adaptability, 477 12.5 Dependability, 478 12.5.1 Software Components and Dependability, 480 12.5.2 Software Connectors and Dependability, 480 12.5.3 Architectural Configurations and Dependability, 481 12.6 End Matter, 483 12.7 Review Questions, 484 12.8 Exercises, 484 12.9 Further Reading, 485 13 Security and Trust 487 13.1 Security, 489 13.2 Design Principles, 492 13.3 Architectural Access Control, 497 13.3.1 Access Control Models, 498 13.3.2 Connector-Centric Architectural Access Control, 499 13.4 Trust Management, 508 13.4.1 Trust, 509 13.4.2 Trust Model, 510 13.4.3 Reputation-Based Systems, 510 13.4.4 Architectural Approach to Decentralized Trust Management, 514 13.5 End Matter, 522 13.6 Review Questions, 523 13.7 Exercises, 523 13.8 Further Reading, 524 14 Architectural Adaptation 525 14.1 Concepts of Architecture-Centric Adaptation, 526 14.1.1 Sources and Motivations for Change, 526 14.1.2 Shearing Layers, 529 14.1.3 Structural Elements Subject to Change, 532 14.1.4 Change Agents and Context, 535 14.1.5 Architecture: The Central Abstraction, 539 14.2 A Conceptual Framework for Architectural Adaptation, 539 14.3 Techniques for Supporting Architecture-Centric Change, 542 14.3.1 Basic Techniques Corresponding to Activities of the Conceptual Framework, 542 14.3.2 Architectures/Styles that Support Adaptation, 551 14.3.3 The Special Problems of On-the-Fly and Autonomous Adaptation, 557 14.4 End Matter, 561 14.5 Review Questions, 562 14.6 Exercises, 563 14.7 Further Reading, 563 15 Domain-Specific Software Engineering 565 15.1 Domain-Specific Software Engineering in a Nutshell, 570 15.1.1 Similar Problems, Similar Solutions, 570 15.1.2 Viewing DSSE through the Prism of Domain, Business, and Technology, 573 15.2 Domain-Specific Software Architecture, 574 15.2.1 Domain Knowledge, 574 15.2.2 Canonical Requirements, 585 15.2.3 Canonical Solution Strategies—Reference Architectures, 588 15.2.4 Product Lines and Architecture, 591 15.2.5 Product-Line Concepts, 592 15.2.6 Specifying the Architecture of a Product Line, 594 15.2.7 Capturing Variations over Time, 559 15.2.8 Using Product Lines as Tools for What-If Analysis, 600 15.2.9 Implementing Product Lines, 602 15.2.10 Unifying Product Architectures with Different Intellectual Heritage, 604 15.2.11 Organizational Issues in Creating and Managing Product Lines, 606 15.3 DSSAs, Product Lines, and Architectural Styles, 606 15.4 DSSE Examples, 608 15.4.1 Koala and Consumer Electronics, 608 15.4.2 Software-Defined Radios, 611 15.5 End Matter, 616 15.6 Review Questions, 618 15.7 Exercises, 618 15.8 Further Reading, 619 16 Standards 621 16.1 What Are Standards?, 622 16.1.1 Why Use Standards?, 623 16.1.2 Drawbacks of Standards, 624 16.1.3 When to Adopt, 625 16.2 Specific Standards, 627 16.2.1 Conceptual Standards, 627 16.2.2 Notational Standards, 639 16.2.3 SysML, 641 16.2.4 Standard Tools, 645 16.2.5 Telelogic System Architect, 647 16.3 Process Standards, 648 16.3.1 Rational Unified Process, 648 16.3.2 Model-Driven Architecture, 650 16.4 End Matter, 651 16.5 Review Questions, 653 16.6 Exercises, 653 16.7 Further Reading, 654 17 People, Roles, and Teams 655 17.1 Who Are Software Architects?, 657 17.1.1 Architect as a Software Designer, 658 17.1.2 Architect as a Domain Expert, 658 17.1.3 Architect as a Software Technologist, 659 17.1.4 Architect as a Standards Compliance Expert, 660 17.1.5 Architect as a Software Engineering Economist, 661 17.1.6 Some Bad Habits, 661 17.2 What Do Software Architects Do?, 663 17.2.1 Develop Project Strategy, 663 17.2.2 Design Systems, 664 17.2.3 Communicate with Stakeholders, 664 17.2.4 Lead, 664 17.3 How Do Software Architects Work?, 665 17.3.1 Balance of Skills, 665 17.3.2 Allegiance to the Project, 666 17.3.3 Allegiance to the Organization, 667 17.3.4 Duration of Involvement, 668 17.3.5 Team Structure, 669 17.4 How Do Software Architects Relate to Other Stakeholders?, 669 17.4.1 Architects and Engineers, 670 17.4.2 Architects and Managers, 671 17.4.3 Other Stakeholders, 671 17.5 Remaining Challenges, 673 17.6 End Matter, 673 17.7 Review Questions, 674 17.8 Further Reading, 674 Bibliography 675 Index 691

    £138.65

  • Mastering UNIX Shell Scripting 2e Bash Bourne and

    John Wiley & Sons Inc Mastering UNIX Shell Scripting 2e Bash Bourne and

    Book SynopsisUNIX expert Randal K. Michael guides you through every detail of writing shell scripts to automate specific tasks. Each chapter begins with a typical, everyday UNIX challenge, then shows you how to take basic syntax and turn it into a shell scripting solution. Covering Bash, Bourne, and Korn shell scripting, this updated edition provides complete shell scripts plus detailed descriptions of each part. UNIX programmers and system administrators can tailor these to build tools that monitor for specific system events and situations, building solid UNIX shell scripting skills to solve real-world system administration problems.Table of ContentsAcknowledgments xxv Introduction xxvii Part One The Basics of Shell Scripting Chapter 1 Scripting Quick Start and Review 3 Chapter 2 24 Ways to Process a File Line-by-Line 67 Chapter 3 Automated Event Notification 131 Chapter 4 Progress Indicators Using a Series of Dots, a Rotating Line, or Elapsed Time 143 Part Two Scripts for Programmers, Testers, and Analysts Chapter 5 Working with Record Files 157 Chapter 6 Automated FTP Stuff 187 Chapter 7 Using rsync to Efficiently Replicate Data 219 Chapter 8 Automating Interactive Programs with Expect and Autoexpect 291 Chapter 9 Finding Large Files and Files of a Specific Type 325 Chapter 10 Process Monitoring and Enabling Pre-Processing, Startup, and Post-Processing Events 335 Chapter 11 Pseudo-Random Number and Data Generation 369 Chapter 12 Creating Pseudo-Random Passwords 401 Chapter 13 Floating-Point Math and the bc Utility 433 Chapter 14 Number Base Conversions 475 Chapter 15 hgrep: Highlighted grep Script 515 Chapter 16 Monitoring Processes and Applications 527 Part Three Scripts for Systems Administrators Chapter 17 Filesystem Monitoring 553 Chapter 18 Monitoring Paging and Swap Space 603 Chapter 19 Monitoring System Load 641 Chapter 20 Monitoring for Stale Disk Partitions (AIX-Specific) 677 Chapter 21 Turning On/Off SSA Identification Lights 697 Chapter 22 Automated Hosts Pinging with Notification of Failure 723 Chapter 23 Creating a System-Configuration Snapshot 741 Chapter 24 Compiling, Installing, Configuring, and Using sudo 777 Chapter 25 Print-Queue Hell: Keeping the Printers Printing 809 Chapter 26 Those Pesky Sarbanes-Oxley (SOX) Audits 851 Chapter 27 Using Dirvish with rsync to Create Snapshot-Type Backups 867 Chapter 28 Monitoring and Auditing User Keystrokes 935 Appendix A What’s on the Web Site 955 Index 977

    £54.62

  • C 2008 For Dummies For Dummies S

    John Wiley & Sons Inc C 2008 For Dummies For Dummies S

    Book SynopsisCompanion Web site has sample code and extra stuff Create console apps, discover delegates and events, and explore interfaces C# is a powerful programming language that has become a favorite tool of Visual Studio programmers, and this friendly guide will get you up to speed on the newest version -- painlessly.Table of ContentsIntroduction. Part I: Getting Started with C#. Chapter 1: Creating Your First C# Console Application. Part II: Basic C# Programming. Chapter 2: Living with Variability — Declaring Value-Type Variables. Chapter 3: Smooth Operators. Chapter 4: Getting into the Program Flow. Chapter 5: Lining Up Your Ducks with Collections. Chapter 6: Pulling Strings. Part III: Using Objects. Chapter 7: Showing Some Class. Chapter 8: We Have Our Methods. Chapter 9: Let Me Say This about this. Chapter 10: Object-Oriented Programming — What’s It All About? Part IV: Object-Oriented Programming. Chapter 11: Holding a Class Responsible. Chapter 12: Inheritance — Is That All I Get? Chapter 13: Poly-what-ism? Chapter 14: Interfacing with the Interface. Part V: Now Showing in C# 3.0. Chapter 15: Delegating Those Important Events. Chapter 16: Mary Had a Little Lambda Expression. Chapter 17: LINQing Up with Query Expressions. Part VI: The Part of Tens. Chapter 18: Ten Common Build Errors (And How to Fix Them). Index.

    £21.24

  • Introductory Programming with Simple Games

    John Wiley & Sons Inc Introductory Programming with Simple Games

    7 in stock

    Book SynopsisThis is an excellent resource for programmers who need to learn Java but aren't interested in just reading about concepts.Introduction toJava Programming with Gamesfollows a spiral approach to introduce concepts and enable them to write game programs as soon as they start. It includes code examples and problems that are easy to understand and motivates them to work through to find the solutions. This game-motivated presentation will help programmers quickly apply what they've learned in order to build their skills.Table of ContentsAcknowledgments. Forward. 1 Getting Started: What's in a Game? 1.1 Learning From Simple Computer Games. 1.2 What's In a Game? 1.3 Active and Passive: Rule Followers. 1.4 Running a Game. 1.5 Strategies: Winning a Game. 1.6 What Is in a Computer Program? 1.7 Summary. 1.8 Chapter Review Exercises. 2 Designing Your First Program. 2.1 BasketBall. 2.2 Java. 2.3 Creating Executable Programs. 2.4 Problem Solving. 2.5 FANG. 2.6 Finishing Up BasketBall. 2.7 Summary. 2.8 Chapter Review Exercises. 2.9 Programming Problems. 3 FANG: A Survey of Classes. 3.1 How Computers Work. 3.2 FANG Basics. 3.3 Examining a Public Protocol. 3.4 Summary. 3.5 Chapter Review Exercises. 3.6 Programming Problems. 4 Deciding What Happens: if. 4.1 A Simplest Game. 4.2 Computer Program (Game) Design. 4.3 Sequence. 4.4 Selection. 4.5 Finishing NewtonsApple. 4.6 Summary. 4.7 Chapter Review Exercises. 4.8 Programming Problems. 5 Components: Names, Types, Expressions. 5.1 Chance in Games. 5.2 One More Sprite: CompositeSprite. 5.3 Java Types. 5.4 Calculating with the Computer. 5.5 Naming Things in Java. 5.6 Finishing EasyDice. 5.7 Summary. 5.8 Chapter Review Exercises. 5.9 Programming Problems. 6 Rules: Methods, Parameters, and Design. 6.1 A Simple Arcade Game: SoloPong. 6.2 Top-down Design. 6.3 Delegation: Methods. 6.4 Expressions Redux. 6.5 Finishing Up SoloPong. 6.6 Summary. 6.7 Chapter Review Exercises. 6.8 Programming Problems. 7 Components Meet Rules: Classes. 7.1 Playing Together. 7.2 Abstraction: Defining New Types. 7.3 Finishing the Game. 7.4 Summary. 7.5 Chapter Review Exercises. 7.6 Programming Problems. 8 Collections: ArrayList and Iteration. 8.1 Flu Pandemic Simulator. 8.2 Console I/O: The System Object. 8.3 Iteration. 8.4 Collections: One and Many. 8.5 ArrayList Is an Object. 8.6 Finishing the Flu Simulation. 8.7 Summary. 8.8 Chapter Review Exercises. 8.9 Programming Problems. 9 Multidimensional Data Structures. 9.1 Rescue Mission. 9.2 Inheritance. 9.3 Multidimensional Collections. 9.4 Animation. 9.5 Finishing Rescue Mission. 9.6 Summary. 9.7 Chapter Review Exercises. 9.8 Programming Problems. 10 Scanner and String: Character Input. 10.1 Designing Hangman. 10.2 Starting Programs. 10.3 Different Iteration. 10.4 String Manipulation. 10.5 Reading Files. 10.6 Finishing Hangman. 10.7 Summary. 10.8 Chapter Review Exercises. 10.9 Programming Problems. 11 Console I/O: Games without FANG. 11.1 Another Dice Game: Pig. 11.2 Pure Console I/O. 11.3 Sorting a Collection. 11.4 Finishing Pig. 11.5 Summary. 11.6 Chapter Review Exercises. 11.7 Programming Problems. 12 More Streams: Separating Programs and Data. 12.1 Outsmarting the Player: Twenty Questions. 12.2 Reading and Writing Files. 12.3 Data-driven Programs. 12.4 Encoding Objects to Read or Write Them. 12.5 Finishing the Game. 12.6 Summary. 12.7 Chapter Review Exercises. 12.8 Programming Problems. 13 Lists of Lists and Collision Detection. 13.1 Designing BlockDrop. 13.2 Software Engineering: Managing Complexity. 13.3 When It's Safe to Move: Collision Detection. 13.4 Finishing BlockDrop. 13.5 Summary. 13.6 Chapter Review Exercises. 13.7 Programming Problems. 14 String Processing: Interactive Fiction. 14.1 Back to the Future: Interactive Fiction. 14.2 Escape from T-Hall. 14.3 Reading the Data. 14.4 Attribute-Value Pairs. 14.5 Incremental Development. 14.6 Finding a Match. 14.7 Making It a Real Game. 14.8 Summary. 14.9 Chapter Review Exercises. 14.10 Programming Problems. A Java Language Keywords. B References. C Java Templates. D FANG Color Names. Index.

    7 in stock

    £145.76

  • F for Scientists

    John Wiley & Sons Inc F for Scientists

    Book SynopsisThis book covers introductory material in the areas of functional programming,. NET and scientific computing. It covers the basic syntax and main aspects of the language without in depth computer science, making the information as accessible as possible and providing practically-important and enlightening examples.Trade Review"The hardbound book is a really solid treatment." (Computing Reviews, February 5, 2009)Table of ContentsForeword. Preface. Acknowledgments. List of Figures. List of Tables. Acronyms. 1. Introduction. 1.1 Programming guidelines. 1.2 A brief history of F#. 1.3 Benefits of F#. 1.4 Introducing F#. 1.5 Imperative programming. 1.6 Functional programming. 2. Program Structure. 2.1 Nesting. 2.2 Factoring. 2.3 Modules. 2.4 Objects. 2.5 Functional design patterns. 2.6 F# development. 3. Data Structures. 3.1 Algorithmic complexity. 3.2 Arrays. 3.3 Lists. 3.4 Sets. 3.5 Hash tables. 3.6 Maps. 3.7 Choosing a data structure. 3.8 Sequences. 3.9 Heterogeneous containers. 3.10 Trees. 4. Numerical Analysis. 4.1 Number representation. 4.2 Algebra. 4.3 Interpolation. 4.4 Quadratic solutions. 4.5 Mean and variance. 4.6 Other forms of arithmetic. 5. Input and Output. 5.1 Printing. 5.2 Generic printing. 5.3 Reading from and writing to files. 5.4 Serialization. 5.5 Lexing and parsing. 6. Simple Examples. 6.1 Functional. 6.2 Numerical. 6.3 String related. 6.4 List related. 6.5 Array related. 6.6 Higher-order functions. 7. Visualization. 7.1 Windows Forms. 7.2 Managed DirectX. 7.3 Tesselating objects into triangles. 8. Optimization. 8.1 Timing. 8.2 Profiling. 8.3 Algorithmic optimizations. 8.4 Lower-level optimizations. 9. Libraries. 9.1 Loading .NET libraries. 9.2 Charting and graphing. 9.3 Threads. 9.4 Random numbers. 9.5 Regular expressions. 9.6 Vectors and matrices. 9.7 Downloading from the Web. 9.8 Compression. 9.9 Handling XML. 9.10 Calling native libraries. 9.11 Fourier transform. 9.12 Mataprogramming. 10. Databases. 10.1 Protein data bank. 10.2 Web services. 10.3 Relational databases. 11. Interoperability. 11.1 Excel. 11.2 MATLAB. 11.3 Mathematica. 12. Complete Examples. 12.1 Fast Fourier transform. 12.2 Semi-circle law. 12.3 Finding n th.-nearest neighbors. 12.4 Logistic map. 12.5 Real-time particle dynamics. Appendix A: Troubleshooting. A.1 Value restriction. A.2 Mutable array contents. A.3 Negative literals. A.4 Accidental capture. A.5 Local and non-local variable definitions. A.6 Merging lines. A.7 Applications that do not die. A.8 Beware of "it". Glossary. Bibliography. Index.

    £79.16

  • The Comsoc Guide to Managing Telecommunications

    John Wiley & Sons Inc The Comsoc Guide to Managing Telecommunications

    Book SynopsisThis pocket guide provides an overview of the telecommunications environment as it has evolved over the past few years, illustrating the need for project management, the significance of project success to the companies, and the application of key project management processes within the telecom environment. Topics covered include: scope management, time management, cost management, procurement management, risk management, communications, quality, human resources, and Integration. It offers professionals a brief and accessible guide to managing telecommunication projects in the 21st century.Trade Review "This book is for those involved in line and staff functions at telecommunications companies who manage projects of any size. It will also be of interest to manufacturers and suppliers who serve the telecommunications industry, Internet providers, and companies that make products for the datacom industry. The book begins with an overview of the role of project management in the telecommunications industry, then gives advice on how to define the project scope. It outlines the procurement cycle, reviews issues of project risk, and addresses core aspects of project management such as building a schedule and budgeting." (Reference and Research Book News, February 2011) Table of ContentsPreface ix Acronyms xiii Chapter 1 Evolution of The Telecommunications Industry 1 Monopoly Status 1 Competition for Long Distance Services 3 Competition for Local Services 4 Competition Starts to Spread 5 Internet and Multimedia Disrupt the Basic Networks 6 A New Telecom Environment 7 What About the Future? 10 Chapter 2 Why is PM Important, Especially in Telecommunications? 11 Team Diversity 11 Resource Limitations 12 Time Constraints and Limitations 12 Risk Management 12 Ensuring Quality 12 Scope Definition 13 Project Objectives 15 What About Telecom Projects? 17 Tehnologies 17 Services 18 Companies in the Business 18 Regulatory Environment 18 Successful Business Model 19 Internal Corporate Structures 19 Customers 19 The Best Way to Market 20 Service Models 20 Network Architecture 20 Conclusion 21 Chapter 3 Project Management Basics 25 Integration 31 Project Scope Management 32 Time Management 32 Cost Management 32 Procurement Management 33 Risk Management 33 Communications Management 33 Human Resources Management 34 Quality Management 34 Chapter 4 Getting Started on Your Project 37 Why Do Projects? 37 The Requirements 41 What Happens Before the Team Arrives? 42 Setting Project Objectives 44 General Description, Skills Analysis, and Stakeholders, and Risk Analysis 44 Chapter 5 Who Is Involved? 45 Project Sponsor 45 Stakeholders 46 Management 48 Functional Managers 48 The Type of Company Hosting the Project 49 Chapter 6 Setting Business and Project Objectives 51 SMART Objectives 52 Specific 53 Measurable 53 Achievable 53 Realistic 54 Time-Bound 54 Chapter 7 What Is to be Included? 55 Building the Charter 55 Scope Description 56 Scope Management Plan 64 Where Will the Resources Come From? 70 The Work Breakdown Structure 71 Chapter 8 Going Outside the Company for Products and Services 77 Definition of Requirements 78 Solicitation 78 RFI 78 RFP 80 RFQ 83 Vendor Selection 83 Contract Management 83 Chapter 9 Managing Risk in Telecom Projects 85 Risk Management 85 Contingency is Expected to be Spent 94 Chapter 10 Who Tells What to Whom? 97 Communications Management 97 General Communications 98 Chapter 11 Creating the Timelines 103 Task Duration 103 Dependencies 104 Finish–Start Dependency 105 Start–Start Dependency 105 Finish–Finish Dependency 105 Start–Finish Dependency 105 Mandatory and Discretionary Dependencies 108 Lags and Leads 108 Project Logic Diagram 109 Critical Path 112 Forward Pass 114 Backward Pass 116 Float 117 Showing the Schedule 118 Including Contingency 118 Collapsing the Schedule 121 Effort-Driven and Duration-Driven Tasks 122 And then . . . 123 Chapter 12 Managing the Costs 125 Types of Costs 127 Profitability Measures 128 Estimating the Costs 130 Project Budgets and Planning the Project Cost 132 Managing the Costs 139 Project Communications Planning and the Communications Matrix 139 Status Reporting 141 Meetings 142 Preparing the Agenda 143 Inviting the Right People 144 Informing the People of Their Roles at the Meeting 146 Using the Meeting Time Effectively 147 Motivating People to Communicate Properly 150 Electronic Tools for Communications 150 Monitor and Control 151 Some Suggestions 152 Chapter 13 Managing the Developments 155 Chapter 14 Managing the People 163 Organization Structures for Projects 164 Management Styles 167 Autocratic 168 Paternalistic 169 Democratic 169 Laissez-faire 169 Leadership 170 Team Building 172 Motivation 174 Conflict 175 Learning Organization 177 Managing the Workloads of the Team Members 178 Some Suggestions for Good Participation and Good Management 178 Chapter 15 What Is the Gain? 181 Good People 181 Understanding the Value of the Product 182 Clear Project Objectives 182 Clearly Defined Scope 182 Good Planning 183 Strong Change Control 183 Well-Connected Team 184 Effective Communication 184 References 185 Index 187

    £53.96

  • Windows Powershell 2 for Dummies

    John Wiley & Sons Inc Windows Powershell 2 for Dummies

    1 in stock

    Book SynopsisPrepare for the future of Microsoft automation with this no-nonsense guide Windows PowerShell 2 is the scripting language that enables automation within the Windows operating system.Table of ContentsIntroduction 1 Part I: Getting a Bird’s-Eye View of PowerShell 2 9 Chapter 1: The Windows PowerShell Rap Sheet 11 Chapter 2: Customizing and Shortcutting the Environment 21 Chapter 3: A Pinch of Shell, a Pound of Power 37 Part II: PowerShell’s Basic Structure and Syntax 47 Chapter 4: Shelling Out Commands and Scripts 49 Chapter 5: When Dollars Turn into Variables 61 Chapter 6: A Bit of Logic to Save the Day 77 Chapter 7: Working on a Pipeline 89 Part III: Complex Data Description and Sharing 97 Chapter 8: Working with Windows Management Instrumentation 99 Chapter 9: Bringing Strings into the Limelight 117 Chapter 10: I’ll Take Numbers for $100, Please 137 Chapter 11: Grouping Data Using Arrays and Hash Tables 147 Chapter 12: Readin’ and Writin’ Files 159 Chapter 13: Going On a Date with PowerShell 175 Part IV: Controlling Where and How You Operate PowerShell 185 Chapter 14: Using Functions to Divide and Conquer 187 Chapter 15: PowerShell Ninjas: Running Jobs Remotely or in the Background 209 Chapter 16: Making Your Script Speak Different Languages 223 Chapter 17: Smashing Those Bugs 231 Part V: Real-World Windows Administration Using PowerShell 245 Chapter 18: Mission Control: All Systems Go 247 Chapter 19: Taming the Windows Registry 261 Chapter 20: Reaching Out to Active Directory 273 Chapter 21: PowerShell Lockdown 287 Chapter 22: Converting Your Old Scripts: Out with the Old, In with the New 301 Part VI: Configuring and Reporting Via PowerShell 317 Chapter 23: Controlling Your Network Configuration 319 Chapter 24: Managing Your Hardware 331 Chapter 25: Making Reporting Easy 345 Part VII: The Part of Tens 357 Chapter 26: The Ten Most Important Cmdlets 359 Chapter 27: Ten Common PowerShell Mistakes 365 Bonus Chapter 1: Handling Exceptions 1 Index 375

    1 in stock

    £20.39

  • UML 2 Semantics and Applications

    John Wiley & Sons Inc UML 2 Semantics and Applications

    Book SynopsisWith an up-to-date view of the results of UML semantics and the practical applications of semantics development, this book presents the only coherent and integrated account of the leading UML 2 semantics work and its applications.Table of ContentsCONTRIBUTORS. PREFACE. 1 INTRODUCTION TOTHE UNIFIED MODELING LANGUAGE ( Kevin Lano). 1.1 Introduction. 1.2 Class Diagrams. 1.3 Object Diagrams. 1.4 Use Cases. 1.5 State Machines. 1.6 Object Constraint Language. 1.7 Interaction Diagrams. 1.8 Activity Diagrams. 1.9 Deployment Diagrams. 1.10 Relationships Between UML Models. 1.11 Summary. 2 THE ROLE OF SEMANTICS ( Kevin Lano). 2.1 Introduction. 2.2 Different Semantic Approaches. 2.3 Applications of Semantics. 2.4 UML Semantics. 2.5 Applications of Semantics to UML. 2.6 Application of Semantics to the Use of UML. 2.7 Summary. 3 CONSIDERATIONS AND RATIONALE FOR A UML SYSTEM MODEL ( Manfred Broy, Maria Victoria Cengarle, Hans Gronniger, and Bernhard Rumpe). 3.1 Introduction. 3.2 General Approach to Semantics. 3.3 Structuring the Semantics of UML. 3.4 The Math Behind the System Model. 3.5 What Is the System Model? 3.6 Usage Scenarios. 3.7 Concluding Remarks. 4 DEFINITION OF THE SYSTEM MODEL ( Manfred Broy, Maria Victoria Cengarle, Hans Gronniger, and Bernhard Rumpe). 4.1 Introduction. 4.2 Notational Conventions. 4.3 Static Part of the System Model. 4.4 Control Part of the System Model. 4.5 Messages and Events in the System Model. 4.6 Object State. 4.7 Event-Based Object Behavior. 4.8 Timed Object Behavior. 4.9 The System Model Definition. Appendix A.1 State Transition Systems. Appendix A.2 Timed State Transition Systems. 5 FORMAL DESCRIPTIVE SEMANTICS OF UML AND ITS APPLICATIONS ( Hong Zhu, Lijun Shan, Ian Bayley, and Richard Amphlett). 5.1 Introduction. 5.2 Definition of Descriptive Semantics in FOPL. 5.3 The LAMBDES Tool. 5.4 Applications Using Model and Metamodel Analysis. 5.5 Conclusions. 6 AXIOMATIC SEMANTICS OF UML CLASS DIAGRAMS ( Kevin Lano). 6.1 Introduction. 6.2 Real-Time Action Logic. 6.3 Semantics of Class Diagrams. 6.4 Application of the Semantics. 6.5 Related Work. 6.6 Conclusions. 7 OBJECT CONSTRAINT LANGUAGE: METAMODELING SEMANTICS ( Anneke Kleppe). 7.1 Introduction. 7.2 Metamodeling Semantics. 7.3 OCL Semantics: Types and Values. 7.4 OCL Semantics: Expressions and Evaluations. 7.5 Summary and Conclusions. 8 AXIOMATIC SEMANTICS OF STATE MACHINES ( Kevin Lano and David Clark). 8.1 Introduction. 8.2 State Machine Semantics. 8.3 Extended State Machines. 8.4 Semantics for Extended State Machines. 8.5 Solutions for Semantic Problems. 8.6 Structured Behavior State Machines. 8.7 Related Work. 8.8 Summary. 9 INTERACTIONS ( Maria Victoria Cengarle, Alexander Knapp, and Heribert Muhlberger). 9.1 Introduction. 9.2 Trace-Based Semantics. 9.3 Alternative Semantics. 9.4 Implementation and Refinement. 9.5 Verification and Validation. 10 CO-ALGEBRAIC SEMANTIC FRAMEWORK FOR REASONING ABOUT INTERACTION DESIGNS ( Sun Meng and Luis S. Barbosa). 10.1 Introduction. 10.2 Why Co-algebras? 10.3 A Semantics for UML Sequence Diagrams. 10.4 New Sequence Diagrams from Old. 10.5 Coercions and Designs. 10.6 A Calculus for Interactions. 10.7 Concluding Remarks. 11 SEMANTICS OF ACTIVITY DIAGRAMS ( Kevin Lano). 11.1 Introduction. 11.2 Semantics of Structured Activities. 11.3 Semantics of Intermediate Activities. 11.4 Data Flow Semantics. 11.5 Semantic Analysis. 11.6 Related Work. 11.7 Summary. 12 VERIFICATION OF UML MODELS ( Kevin Lano). 12.1 Introduction. 12.2 Class Diagrams. 12.3 State Machine Diagrams. 12.4 Sequence Diagrams. 12.5 Summary. 13 DESIGN VERIFICATION WITH STATE INVARIANTS ( Emil Sekerinski). 13.1 Introduction. 13.2 Preliminaries. 13.3 Statechart Structure. 13.4 Configurations and Operations. 13.5 State Invariant Verification. 13.6 Accumulated Invariants. 13.7 Verification Condition Generation. 13.8 Priority Among Transitions. 13.9 Conclusions. 14 MODELTRANSFORMATION SPECIFICATION AND VERIFICATION ( Kevin Lano). 14.1 Introduction. 14.2 Categories of Model Transformation. 14.3 Specification of Model Transformations. 14.4 Refinement Transformations. 14.5 Quality Improvement Transformations. 14.6 Design Patterns. 14.7 Enhancement Transformations. 14.8 Implementation of Model Transformations. 14.9 Summary. INDEX .

    £109.76

  • Beginning Python

    John Wiley & Sons Inc Beginning Python

    Book SynopsisBeginning Python: Using Python 2.6 and Python 3.1 introduces this open source, portable, interpreted, object-oriented programming language that combines remarkable power with clear syntax. This book enables you to quickly create robust, reliable, and reusable Python applications by teaching the basics so you can quickly develop Web and scientific applications, incorporate databases, and master systems tasks on various operating systems, including Linux, MAC OS, and Windows. You''ll get a comprehensive tutorial that guides you from writing simple, basic Python scripts all the way through complex concepts, and also features a reference of the standard modules with examples illustrating how to implement features in the various modules. Plus, the book covers using Python in specific program development domains, such as XML, databases, scientific applications, network programming, and Web development.Table of ContentsIntroduction xxvii Part I: Dipping Your Toe into Python 1 Chapter 1: Programming Basics and Strings 3 How Programming is Different from Using a Computer 3 The First Steps 5 Beginning to Use Python — Strings 7 Putting Two Strings Together 11 Putting Strings Together in Different Ways 12 Summary 13 Exercises 14 Chapter 2: Numbers and Operators 15 Different Kinds of Numbers 15 Program Files 18 Using Numbers 24 Summary 28 Exercises 29 Chapter 3: Variables — Names for Values 31 Referring to Data — Using Names for Data 31 Using More Built-in Types 34 Other Common Sequence Properties 43 Summary 47 Exercises 48 Part II: Python Language and the Standard Library 49 Chapter 4: Making Decisions 51 Comparing Values — Are They the Same? 51 Doing the Opposite — Not Equal 53 Comparing Values — Which One Is More? 54 Reversing True and False 56 Looking for the Results of More Than One Comparison 56 Repetition 60 Handling Errors 65 Summary 67 Exercises 69 Chapter 5: Functions 71 Putting Your Program into Its Own File 71 Functions: Grouping Code under a Name 73 Layers of Functions 88 Summary 89 Exercises 90 Chapter 6: Classes and Objects 93 Thinking About Programming 93 Defining a Class 96 Summary 107 Exercises 108 Chapter 7: Organizing Programs 111 Modules 112 Packages 118 Modules and Packages 120 Basics of Testing Your Modules and Packages 124 Summary 124 Exercises 125 Chapter 8: Files and Directories 127 File Objects 127 Paths and Directories 131 Exceptions in os 132 Summary 142 Exercises 142 Chapter 9: Other Features of the Language 143 Lambda and Filter: Short Anonymous Functions 143 Map: Short-Circuiting Loops 144 Decisions within Lists — List Comprehension 145 Generating Iterators for Loops 146 Special String Substitution Using Dictionaries 148 Featured Modules 149 Summary 156 Exercises 156 Chapter 10: Building a Module 157 Exploring Modules 157 Creating Modules and Packages 162 Working with Classes 163 Finishing Your Modules 166 Creating a Whole Module 179 Installing Your Modules 183 Summary 187 Exercises 188 Chapter 11: Text Processing 189 Why Text Processing Is So Useful 189 Navigating the File System with the os Module 192 Working with Regular Expressions and the re Module 199 Summary 203 Exercises 204 Part III: Putting Python to Work 205 Chapter 12: Testing 207 Assertions 208 Test Cases and Test Suites 209 Test Fixtures 213 Putting It All Together with Extreme Programming 216 Formal Testing in the Software Life Cycle 224 Summary 225 Chapter 13: Writing a GUI with Python 227 GUI Programming Toolkits for Python 228 Tkinter Introduction 229 Creating GUI Widgets with Tkinter 229 Summary 238 Exercises 238 Chapter 14: Accessing Databases 239 Working with DBM Persistent Dictionaries 240 Working with Relational Databases 245 Using the Python Database APIs 252 Summary 262 Exercises 263 Chapter 15: Using Python for XML 265 What Is XML? 265 What Is a Schema/DTD? 268 Document Type Definitions 268 Schemas 270 XPath 272 HTML as a Subset of XML 272 XML Libraries Available for Python 274 What Is SAX? 274 Why Use SAX or DOM 275 SAX and DOM Parsers Available for Python 276 Intro to XSLT 280 What Is lxml? 280 Element Classes 281 Parsing with lxml 283 Summary 285 Exercises 285 Chapter 16: Network Programming 287 Understanding Protocols 289 Sending Internet E-mail 293 Retrieving Internet E-mail 305 Socket Programming 314 Introduction to Sockets 314 Binding to an External Hostname 316 Other Topics 332 Summary 334 Exercises 335 Chapter 17: Extension Programming with C 337 Extension Module Outline 338 Building and Installing Extension Modules 340 Passing Parameters from Python to C 342 Returning Values from C to Python 345 The LAME Project 346 The LAME Extension Module 350 Using Python Objects from C Code 363 Summary 366 Exercises 366 Chapter 18: Numerical Programming 367 Numbers in Python 368 Mathematics 374 Complex Numbers 378 Arrays 380 Summary 384 Exercises 384 Chapter 19: An Introduction to Django 387 What Are Frameworks and Why Would I Use One? 388 Other Features of Web Frameworks 388 Django — How It All Began 389 Understanding Django’s Architecture 390 Working with Templates 396 Using Templates and Views 398 Creating a Model: Creating an Application 403 Working with Models: Installation 404 Summary 405 Exercises 406 Chapter 20: Web Applications and Web Services 407 REST: The Architecture of the Web 408 HTTP: Real-World REST 411 CGI: Turning Scripts into Web Applications 417 HTML Forms’ Limited Vocabulary 422 Safety When Accessing Form Values 423 Building a Wiki 428 Web Services 441 REST Web Services 442 XML-RPC 456 SOAP 465 Documenting Your Web Service API 472 Choosing a Web Service Standard 478 Web Service Etiquette 479 Summary 480 Exercises 480 Chapter 21: Integrating Java with Python 481 Scripting within Java Applications 482 Comparing Python Implementations 483 Installing Jython 483 Running Jython 484 Running Jython on Your Own 488 Packaging Jython-Based Applications 488 Integrating Java and Jython 489 Testing from Jython 506 Embedding the Jython Interpreter 507 Handling Differences between C-Python and Jython 510 Summary 511 Exercises 512 Part IV: Appendices 513 Appendix A: Answers to the Exercises 515 Appendix B: Online Resources 549 Appendix C: What’s New in Python 3.1 553 Appendix D: Glossary 559 Index 569

    £27.20

  • Software Performance and Scalability A

    John Wiley and Sons Ltd Software Performance and Scalability A

    Book SynopsisGives the reader the ability to set up a proper test environment and conduct software performance and scalability tests. Uses many examples showing software performance problems and applicable solutions. Contains a number of case studies to assist the reader with comprehending all aspects of software performance and scalability.Table of ContentsPREFACE xv ACKNOWLEDGMENTS xxi Introduction 1 Performance versus Scalability 1 PART 1 THE BASICS 3 1. Hardware Platform 5 1.1 Turing Machine 6 1.2 von Neumann Machine 7 1.3 Zuse Machine 8 1.4 Intel Machine 9 1.5 Sun Machine 17 1.6 System Under Test 18 1.7 Odds Against Turing 30 1.8 Sizing Hardware 35 1.9 Summary 37 2. Software Platform 41 2.1 Software Stack 42 2.2 APIs 44 2.3 Multithreading 47 2.4 Categorizing Software 535 2.5 Enterprise Computing 55 2.6 Summary 63 3. Testing Software Performance and Scalability 65 3.1 Scope of Software Performance and Scalability Testing 67 3.2 Software Development Process 83 3.3 Defining Software Performance 86 3.4 Stochastic Nature of Software Performance Measurements 95 3.5 Amdahl’s Law 97 3.6 Software Performance and Scalability Factors 99 3.7 System Performance Counters 111 3.8 Software Performance Data Principles 129 3.9 Summary 131 PART 2 APPLYING QUEUING THEORY 135 4. Introduction to Queuing Theory 137 4.1 Queuing Concepts and Metrics 139 4.2 Introduction to Probability Theory 143 4.3 Applying Probability Theory to Queuing Systems 145 4.4 Queuing Models for Networked Queuing Systems 153 4.5 Summary 172 5. Case Study I: Queuing Theory Applied to SOA 177 5.1 Introduction to SOA 178 5.2 XML Web Services 179 5.3 The Analytical Model 181 5.4 Service Demand 183 5.5 MedRec Application 188 5.6 MedRec Deployment and Test Scenario 189 5.7 Test Results 191 5.8 Comparing the Model with the Measurements 198 5.9 Validity of the SOA Performance Model 200 5.10 Summary 200 6. Case Study II: Queuing Theory Applied to Optimizing and Tuning Software Performance and Scalability 205 6.1 Analyzing Software Performance and Scalability 207 6.2 Effective Optimization and Tuning Techniques 220 6.3 Balanced Queuing System 240 6.4 Summary 244 PART 3 APPLYING API PROFILING 249 7. Defining API Profiling Framework 251 7.1 Defense Lines Against Software Performance and Scalability Defects 252 7.2 Software Program Execution Stack 253 7.3 The PerfBasic API Profiling Framework 254 7.4 Summary 260 8. Enabling API Profiling Framework 263 8.1 Overall Structure 264 8.2 Global Parameters 265 8.3 Main Logic 266 8.4 Processing Files 266 8.5 Enabling Profiling 267 8.6 Processing Inner Classes 270 8.7 Processing Comments 271 8.8 Processing Method Begin 272 8.9 Processing Return Statements 274 8.10 Processing Method End 275 8.11 Processing Main Method 276 8.12 Test Program 277 8.13 Summary 279 9. Implementing API Profiling Framework 281 9.1 Graphics Tool—dot 281 9.2 Graphics Tool—ILOG 284 9.3 Graphics Resolution 286 9.4 Implementation 287 9.5 Summary 300 10. Case Study: Applying API Profiling to Solving Software Performance and Scalability Challenges 303 10.1 Enabling API Profiling 304 10.2 API Profiling with Standard Logs 313 10.3 API Profiling with Custom Logs 320 10.4 API Profiling with Combo Logs 325 10.5 Applying API Profiling to Solving Performance and Scalability Problems 333 10.6 Summary 337 APPENDIX A STOCHASTIC EQUILIBRIUM AND ERGODICITY 339 A.1 Basic Concepts 339 A.2 Classification of Random Processes 343 A.3 Discrete-Time Markov Chains 345 A.4 Continuous-Time Markov Chains 349 A.5 Stochastic Equilibrium and Ergodicity 351 A.6 Birth–Death Chains 357 APPENDIX B MEMORYLESS PROPERTY OF THE EXPONENTIAL DISTRIBUTION 361 APPENDIX C M/M/1 QUEUES AT STEADY STATE 363 C.1 Review of Birth–Death Chains 363 C.2 Utilization and Throughput 364 C.3 Average Queue Length in the System 365 C.4 Average System Time 365 C.5 Average Wait Time 366 INDEX 367

    £87.26

  • Professional XMPP Programming with JavaScript and

    John Wiley & Sons Inc Professional XMPP Programming with JavaScript and

    Book SynopsisCreate real-time, highly interactive apps quickly with the powerful XMPP protocol XMPP is a robust protocol used for a wide range of applications, including instant messaging, multi-user chat, voice and video conferencing, collaborative spaces, real-time gaming, data synchronization, and search.Table of ContentsIntroduction. Part I: XMPP Protocol and Architecture. Chapter 1: Getting to Know XMPP. Chapter 2: Designing XMPP Applications. Part II: The Applications. Chapter 3: Saying Hello: The First Application. Chapter 4: Exploring the XMPP Protocol: A Debugging Console. Chapter 5: Microblogging in Real Time: An Identica Client. Chapter 6: Talking with Friends: One‑on‑One Chat. Chapter 7: Exploring Services: Service Discovery and Browsing. Chapter 8: Group Chatting: A Multi‑User Chat Client. Chapter 9: Publishing and Subscribing: A Shared Sketch Pad Introduction. Chapter 10: Writing with Friends: A Collaborative Text Editor. Chapter 11: Playing Games: Head to Head Tic-Tac-Toe. Part III: Advanced Topics. Chapter 12: Getting Attached: Bootstrapping BOSH. Chapter 13: Deploying XMPP Applications. Chapter 14: Writing Strophe Plug-ins. Appendix A: Getting Started with jQuery. Appendix B: Setting Up a BOSH Connection Manager. Index.

    £40.38

  • Enterprise Software Architecture and Design

    John Wiley & Sons Inc Enterprise Software Architecture and Design

    Book SynopsisThis book fills a gap between high-level overview texts that are often too general and low-level detail oriented technical handbooks that lose sight the big picture.This book discusses SOA from the low-level perspective of middleware, various XML-based technologies, and basic service design.It also examines broader implications of SOA, particularly where it intersects with business process management and process modeling.Concrete overviews will be provided of the methodologies in those fields, so that students will have a hands-on grasp of how they may be used in the context of SOA.Table of ContentsList of Figures xv Acknowledgements xxiii 1. Introduction 1 References / 6 2. Middleware 7 2.1 Enterprise Information Systems / 7 2.2 Communication / 12 2.3 System and Failure Models / 21 2.4 Remote Procedure Call / 34 2.5 Message-Oriented Middleware / 42 2.6 Web Services and Service-Oriented Architecture (SOA) / 46 2.7 Cloud Computing / 52 2.8 Naming and Discovery / 55 2.9 Further Reading / 56 References / 57 3. Data Modeling 59 3.1 Entities and Relationships / 60 3.1.1 Concepts and Entities / 60 3.1.2 Attributes and Relationships / 61 3.1.3 Properties of Relationship Types / 65 3.1.4 Special Relationship Types / 69 3.2 XML Schemas / 74 3.3 Defining New Types / 79 3.3.1 Defining Simple Types / 79 3.3.2 Defining Complex Types / 82 3.4 Derived Types / 85 3.4.1 Derived Simple Types / 86 3.4.2 Derived Complex Types / 87 3.5 Document Hierarchies / 94 3.6 Relationship Types in XML Schemas / 98 3.7 Metaschemas and Metamodels / 100 3.8 Further Reading / 102 References / 102 4. Data Processing 104 4.1 Processing XML Data / 104 4.1.1 Tree Processing / 105 4.1.2 Schema Binding / 109 4.1.3 Stream Processing / 114 4.1.4 External Processing / 119 4.2 Query Languages and XQuery / 122 4.3 XML Databases / 134 4.3.1 Storage as Relational Tables / 135 4.3.2 Storage as Large Strings / 137 4.3.3 Native XML Storage / 137 4.4 Web Services / 138 4.4.1 SOAP: (not so) Simple Object Access Protocol / 139 4.4.2 WSDL: Web Services Description Language / 145 4.4.3 Web Service Policy / 155 4.5 Presentation Layer: JSON and JQUERY / 159 References / 166 5. Domain-Driven Architecture 167 5.1 Software Architecture / 167 5.2 Domain-Driven Design / 168 5.3 Application Frameworks / 175 5.4 Domain-Specific Languages (DSLs) / 180 5.5 An Example API for Persistent Domain Objects / 188 5.6 Domain-Driven Architecture / 197 5.7 Further Reading / 205 References / 205 6. Service-Oriented Architecture 207 6.1 Services and Procedures / 207 6.2 Service-Oriented Architecture (SOA) / 211 6.3 Service Design Principles / 216 6.4 Service-Oriented Architecture (SOA) Governance / 218 6.5 Standardized Service Contract / 221 6.5.1 Operations Contract / 222 6.5.2 Data Contract / 223 6.5.3 Policy Contract / 224 6.5.4 Binding Contract / 226 6.5.5 Contract Versioning / 231 6.6 Service Loose Coupling / 237 6.6.1 Motivation for Loose Coupling / 237 6.6.2 Contract Development / 239 6.6.3 Loose Coupling Patterns / 242 6.6.4 Cost of Loose Coupling / 246 6.7 Service Abstraction / 248 6.7.1 Platform Abstraction / 248 6.7.2 Protocol Abstraction / 249 6.7.3 Procedural Abstraction / 261 6.7.4 State Abstraction / 264 6.7.5 Data Abstraction / 269 6.7.6 Endpoint Abstraction / 278 6.8 Service Reusability / 278 6.8.1 Parameterization and Bounded Polymorphism / 279 6.8.2 Subtyping, Inheritance, and Contracts / 284 6.8.3 Does Service-Oriented Architecture Require Subtyping? / 289 6.8.4 Patterns for Service Reusability / 292 6.9 Service Autonomy / 299 6.9.1 Replicating Computation / 300 6.9.2 Replicating State / 303 6.9.3 Sources of Errors and Rejuvenation / 308 6.9.4 Caching / 313 6.10 Service Statelessness / 323 6.10.1 Contexts and Dependency Injection / 331 6.11 Service Discoverability / 336 6.11.1 Global Discovery / 336 6.11.2 Local Discovery / 337 6.11.3 Layered Naming / 347 6.12 Further Patterns / 351 6.13 Further Reading / 352 References / 352 7. Resource-Oriented Architecture 359 7.1 Representational State Transfer / 359 7.2 RESTful Web Services / 369 7.3 Resource-Oriented Architecture (ROA) / 379 7.4 Interface Description Languages / 387 7.4.1 Web Services Description Language (WSDL) / 387 7.4.2 Web Application Description Language (WADL) / 390 7.5 An Example Application Program Interface (API) for Resource-Oriented Web Services / 396 7.6 Hypermedia Control and Contract Conformance / 406 7.7 Concluding Remarks / 412 7.8 Further Reading / 414 References / 414 Appendix A: Introduction to Haskell 416 A.1 Types and Functions / 416 A.2 Type Classes and Functors / 425 A.3 Monads / 431 A.4 Further Reading / 436 References / 436 Appendix B: Time in Distributed Systems 437 B.1 What Time Is It? / 437 B.2 Time and Causality / 443 B.3 Applications of Logical and Vector Time / 450 B.3.1 Mutual Exclusion / 450 B.3.2 Quorum Consensus / 451 B.3.3 Distributed Logging / 456 B.3.4 Causal Message Delivery / 458 B.3.5 Distributed Snapshots / 463 B.4 Virtual Time / 468 B.5 Further Reading / 470 References / 470 Index 473

    £107.06

  • Music Navigation with Symbols and Layers

    John Wiley & Sons Inc Music Navigation with Symbols and Layers

    Book SynopsisMusic is much more than listening to audio encoded in some unreadable binary format. It is, instead, an adventure similar to reading a book and entering its world, complete with a story, plot, sound, images, texts, and plenty of related data with, for instance, historical, scientific, literary, and musicological contents. Navigation of this world, such as that of an opera, a jazz suite and jam session, a symphony, a piece from non-Western culture, is possible thanks to the specifications of new standard IEEE 1599, IEEE Recommended Practice for Defining a Commonly Acceptable Musical Application Using XML, which uses symbols in language XML and music layers to express all its multimedia characteristics. Because of its encompassing features, this standard allows the use of existing audio and video standards, as well as recuperation of material in some old format, the events of which are managed by a single XML file, which is human and machine readable - musical symbols have been reTable of ContentsPreface xi A Brief Introduction to the IEEE 1599 Standard xv Denis L. Baggi and Goffredo M. Haus List of Contributors xvii 1 THE IEEE 1599 STANDARD 1 Denis L. Baggi and Goffredo M. Haus 1.1 Introduction 1 Important Features of IEEE 1599 2 Examples of Applications of IEEE 1599 to Increase Music Enjoyment 3 Example I: A Score with Different Versions: “King Porter Stomp,” by Jelly Roll Morton 6 Example II: A Jazz Piece with No Score: “Crazy Rhythm” 6 Example III: An Opera Using the Composer’s Manuscript: Tosca, by Giacomo Puccini 9 Example IV: “Peaches en Regalia,” by Frank Zappa 9 Example V: “Il mio ben quando verrà,” by Giovanni Paisiello 12 Example VI: Brandenburg Concerto No. 3, by J.S. Bach 14 Example VII: Blues, a Didactical Tool to Learn Jazz Improvisation 14 Example VIII: “La caccia,” from Antonio Vivaldi’s Four Seasons (“Autumn”) 16 Example IX: A Musicological Fantasy: Tauhid, a Piece of Free Jazz 17 Conclusions 19 Acknowledgments 19 References 19 2 ENCODING MUSIC INFORMATION 21 Luca A. Ludovico 2.1 Introduction 21 2.2 Heterogeneous Descriptions of Music 22 2.3 Available File Formats 23 2.4 Key Features of IEEE 1599 24 2.5 Multi-Layer Structure 25 2.6 The Logic Layer 27 2.7 The Spine 29 2.7.1 Inter-layer and Intra-layer Synchronization 31 2.7.2 Virtual Timing and Position of Events 32 2.7.3 How to Build the Spine 33 References 36 3 STRUCTURING MUSIC INFORMATION 37 Adriano Baratè and Goffredo M. Haus 3.1 Introduction 37 3.2 Music Objects and Music Algorithms 38 3.2.1 Music Objects 38 3.2.2 Music Algorithms 38 3.2.3 Music Objects and Music Algorithms in IEEE 1599 39 3.3 Petri Nets 39 3.3.1 Petri Nets Extension: Hierarchy 40 3.3.2 Petri Nets Extension: Probabilistic Arc Weights 43 3.4 Music Petri Nets 44 3.4.1 Music Petri Nets in IEEE 1599 47 3.5 Music Analysis Using Music Petri Nets 47 3.6 Real-Time Interaction with Music Petri Nets 50 3.7 Conclusions 55 References 55 4 MODELING AND SEARCHING MUSIC COLLECTIONS 57 Alberto Pinto 4.1 Introduction 57 4.2 Describing Music Content 58 4.2.1 Music Search Engines 59 4.3 Music Description in IEEE 1599 60 4.3.1 Chord Grid Objects 64 4.3.2 Petri Net Objects 65 4.3.3 Analysis Objects 65 4.3.4 MIR Objects 66 4.4 The Theoretical Framework 66 4.4.1 The Model Perspective 66 4.4.2 Categories 67 4.5 Music Modeling and Retrieval in IEEE 1599 67 4.5.1 MIR Model 68 4.5.2 MIR Object 69 4.5.3 MIR Subobject 70 4.5.4 MIR Morphisms 70 4.5.5 MIR Features 70 4.5.6 GraphXML Encoding 71 4.6 Case Study: Graph-Categorial Modeling 72 4.6.1 Content Description 72 4.6.2 Content Retrieval 72 4.6.3 MIR Model 73 4.6.4 MIR Object and Subobject 74 4.6.5 MIR Morphism 75 References 75 5 FEATURE EXTRACTION AND SYNCHRONIZATION AMONG LAYERS 77 Antonello D’Aguanno, Goffredo M. Haus, and Davide A. Mauro 5.1 Introduction 77 5.2 Encoding Synchronization Information 78 5.2.1 Extraction of Synchronization Data 82 5.2.2 Case Study 84 5.3 Overview of Synchronization Algorithms 84 5.4 VarSi: An Automatic Score-to-Audio Synchronization Algorithm Based on the IEEE 1599 Format 88 5.4.1 Score Analysis 89 5.4.2 Audio Analysis 90 5.4.3 Decisional Phase 91 References 94 6 IEEE 1599 AND SOUND SYNTHESIS 97 Luca A. Ludovico 6.1 Introduction 97 6.2 From Music Symbols to Sound Synthesis 98 6.2.1 Translating Symbols into a Performance Language 99 6.2.2 Interpretative Models 105 6.2.3 Audio Rendering and Synchronization 106 6.3 From Sound Synthesis to Music Symbols 108 6.4 An Example of Encoding 110 6.5 Conclusions 113 References 114 7 IEEE 1599 APPLICATIONS FOR ENTERTAINMENT AND EDUCATION 115 Adriano Baratè and Luca A. Ludovico 7.1 Introduction 115 7.2 IEEE 1599 for Entertainment 116 7.3 IEEE 1599 for Music Education 117 7.4 IEEE 1599-Based Music Viewers 118 7.5 Case Studies 120 7.5.1 Navigating and Interacting with Music Notation and Audio 120 7.5.2 Musicological Analysis 121 7.5.3 Instrumental and Ear Training 126 7.5.4 IEEE 1599 Beyond Music 132 References 132 8 PAST PROJECTS USING SYMBOLS FOR MUSIC 133 Denis L. Baggi 8.1 Brief History 133 8.2 Bass Computerized Harmonization (BA-C-H) 134 8.3 Harmony Machine 135 8.4 NeurSwing, an Automatic Jazz Rhythm Section Built with Neural Nets 141 8.5 The Paul Glass System 145 8.6 A Program That Finds Notes and Type of a Chord and Plays It 147 8.7 Summary of Projects 149 8.8 Conclusions 150 References 150 Appendix A. Brief History of IEEE 1599 Standard, and Acknowledgments 151 Appendix B. IEEE Document-Type Defi nitions (DTDs) 153 Appendix C. IEEE 1599 Demonstration Videos 177 Index 179

    £75.56

  • Professional Test Driven Development with C

    John Wiley & Sons Inc Professional Test Driven Development with C

    Book SynopsisHands-on guidance to creating great test-driven development practice Test-driven development (TDD) practice helps developers recognize a well-designed application, and encourages writing a test before writing the functionality that needs to be implemented. This hands-on guide provides invaluable insight for creating successful test-driven development processes. With source code and examples featured in both C# and .NET, the book walks you through the TDD methodology and shows how it is applied to a real-world application. You'll witness the application built from scratch and details each step that is involved in the development, as well as any problems that were encountered and the solutions that were applied. Clarifies the motivation behind test-driven development (TDD), what it is, and how it works Reviews the various steps involved in developing an application and the testing that is involved prior to implementing the functionality DiscussesTable of ContentsINTRODUCTION xxv PART I: GETTING STARTED CHAPTER 1: THE ROAD TO TEST-DRIVEN DEVELOPMENT 3 The Classical Approach to Software Development 4 A Brief History of Software Engineering 4 From Waterfall to Iterative and Incremental 5 A Quick Introduction to Agile Methodologies 6 A Brief History of Agile Methodologies 6 The Principles and Practices of Test-Driven Development 7 The Concepts Behind TDD 8 TDD as a Design Methodology 8 TDD as a Development Practice 8 The Benefi ts of TDD 9 A Quick Example of the TDD Approach 10 Summary 17 CHAPTER 2: AN INTRODUCTION TO UNIT TESTING 19 What Is a Unit Test? 19 Unit Test Definition 20 What Is Not a Unit Test? 20 Other Types of Tests 22 A Brief Look at NUnit 24 What Is a Unit Test Framework? 24 The Basics of NUnit 25 Decoupling with Mock Objects 28 Why Mocking Is Important 28 Dummy, Fake, Stub, and Mock 29 Best and Worst Practices 35 A Brief Look at Moq 36 What Does a Mocking Framework Do? 36 A Bit About Moq 36 Moq Basics 36 Summary 40 CHAPTER 3: A QUICK REVIEW OF REFACTORING 41 Why Refactor? 42 A Project’s Lifecycle 42 Maintainability 43 Code Metrics 43 Clean Code Principles 45 OOP Principles 45 Encapsulation 45 Inheritance 46 Polymorphism 48 The SOLID Principles 49 The Single Responsibility Principle 50 The Open/Close Principle 50 The Liskov Substitution Principle 51 The Interface Segregation Principle 51 The Dependency Inversion Principle 52 Code Smells 52 What Is a Code Smell? 52 Duplicate Code and Similar Classes 53 Big Classes and Big Methods 54 Comments 55 Bad Names 56 Feature Envy 57 Too Much If/Switch 58 Try/Catch Bloat 59 Typical Refactoring 60 Extract Classes or Interfaces 60 Extract Methods 62 Rename Variables, Fields, Methods, and Classes 66 Encapsulate Fields 67 Replace Conditional with Polymorphism 68 Allow Type Inference 71 Summary 71 CHAPTER 4: TEST-DRIVEN DEVELOPMENT: LET THE TESTS BE YOUR GUIDE 73 It Starts with the Test 74 Red, Green, Refactor 76 The Three Phases of TDD 77 The Red Phase 77 The Green Phase 78 The Refactoring Phase 79 Starting Again 79 A Refactoring Example 79 The First Feature 80 Making the First Test Pass 83 The Second Feature 83 Refactoring the Unit Tests 85 The Third Feature 87 Refactoring the Business Code 88 Correcting Refactoring Defects 91 The Fourth Feature 93 Summary 94 CHAPTER 5: MOCKING EXTERNAL RESOURCES 97 The Dependency Injection Pattern 98 Working with a Dependency Injection Framework 99 Abstracting the Data Access Layer 108 Moving the Database Concerns Out of the Business Code 108 Isolating Data with the Repository Pattern 108 Injecting the Repository 109 Mocking the Repository 112 Summary 113 PART II: PUTTING BASICS INTO ACTION CHAPTER 6: STARTING THE SAMPLE APPLICATION 117 Defi ning the Project 118 Developing the Project Overview 118 Defi ning the Target Environment 119 Choosing the Application Technology 120 Defi ning the User Stories 120 Collecting the Stories 120 Defi ning the Product Backlog 122 The Agile Development Process 123 Estimating 124 Working in Iterations 124 Communication Within Your Team 126 Iteration Zero: Your First Iteration 127 Testing in Iteration Zero 127 Ending an Iteration 128 Creating the Project 129 Choosing the Frameworks 129 Defi ning the Project Structure 131 Organizing Project Folders 131 Creating the Visual Studio Solution 132 Summary 134 CHAPTER 7: IMPLEMENTING THE FIRST USER STORY 137 The First Test 138 Choosing the First Test 138 Naming the Test 139 Writing the Test 140 Implementing the Functionality 148 Writing the Simplest Thing That Could Possibly Work 148 Running the Passing Test 157 Writing the Next Test 158 Improving the Code by Refactoring 165 Triangulation of Tests 166 Summary 166 CHAPTER 8: INTEGRATION TESTING 169 Integrate Early; Integrate Often 170 Writing Integration Tests 171 How to Manage the Database 171 How to Write Integration Tests 172 Reviewing the ItemTypeRepository 173 Adding Ninject for Dependency Injection 174 Creating the Fluent NHibernate Confi guration 177 Creating the Fluent NHibernate Mapping 179 Creating the Integration Test 183 End-to-End Integration Tests 191 Keeping Various Types of Tests Apart 191 When and How to Run Integration Tests 191 Summary 192 PART III: TDD SCENARIOS CHAPTER 9: TDD ON THE WEB 197 ASP.NET Web Forms 197 Web Form Organization 198 ASPX Files 198 Code-Behind Files 198 Implementing Test-Driven Development with MVP and Web Forms 199 Working with the ASP.NET MVC 210 MVC 101 211 Microsoft ASP.NET MVC 3.0 212 Creating an ASP.NET MVC Project 212 Creating Your First Test 213 Making Your First Test Pass 215 Creating Your First View 216 Gluing Everything Together 217 Using the MVC Contrib Project 220 ASP.NET MVC Summarized 220 Working with JavaScript 220 JavaScript Testing Frameworks 221 Summary 226 CHAPTER 10: TESTING WINDOWS COMMUNICATION FOUNDATION SERVICES 227 WCF Services in Your Application 228 Services Are Code Too 228 Testing WCF Services 228 Refactoring for Testability 229 Introducing Dependency Injection to Your Service 231 Writing the Test 236 Stubbing the Dependencies 239 Verifying the Results 243 Trouble Spots to Watch 244 Summary 244 CHAPTER 11: TESTING WPF AND SILVERLIGHT APPLICATIONS 245 The Problem with Testing the User Interface 246 The MVVM Pattern 246 How MVVM Makes WPF/Silverlight Applications Testable 248 Bringing It All Together 261 Summary 263 PART IV: REQUIREMENTS AND TOOLS CHAPTER 12: DEALING WITH DEFECTS AND NEW REQUIREMENTS 267 Handling Change 268 Change Happens 268 Adding New Features 268 Addressing Defects 269 Starting with a Test 270 Changing the Code 272 Keeping the Tests Passing 276 Summary 276 CHAPTER 13: THE GREAT TOOL DEBATE 279 Test Runners 279 TestDriven.NET 280 Developer Express Test Runner 280 Gallio 281 Unit Testing Frameworks 282 MSTest 282 MbUnit 283 xUnit 284 Mocking Frameworks 285 Rhino Mocks 285 Type Mock 287 Dependency Injection Frameworks 289 Structure Map 289 Unity 291 Windsor 293 Autofac 294 Miscellaneous Useful Tools 295 nCover 295 PEX 295 How to Introduce TDD to Your Team 296 Working in Environments That Are Resistant to Change 297 Working in Environments That Are Accepting of Change 297 Summary 297 CHAPTER 14: CONCLUSIONS 299 What You Have Learned 299 You Are the Client of Your Code 300 Find the Solutions Step by Step 300 Use the Debugger as a Surgical Instrument 300 TDD Best Practices 301 Use Signifi cant Names 301 Write at Least One Test for One Unit of Functionality 301 Keep Your Mocks Simple 302 The Benefi ts of TDD 302 How to Introduce TDD in Your Team 303 Summary 304 APPENDIX: TDD KATAS 307 Working with TDD Katas 307 Share Your Work 308 OSIM User Stories 308 INDEX 311

    £27.99

  • Lean Architecture for Agile Software Development

    John Wiley & Sons Inc Lean Architecture for Agile Software Development

    Book SynopsisMore and more Agile projects are seeking architectural roots as they struggle with complexity and scale - and they're seeking lightweight ways to do it. This book helps you to find your own path.Trade Review'...a book of advice that is broad, enabling, and concrete. (Lean Magazine, January 2010).Table of ContentsAbout the Authors xii Preface xiii 1 Introduction 1 1.1 The Touchstones: Lean and Agile 1 1.2 Lean Architecture and Agile Feature Development 4 1.3 Agile Production 7 1.3.1 Agile Builds on Lean 7 1.3.2 The Scope of Agile Systems 8 1.3.3 Agile and DCI 9 1.4 The Book in a Very Small Nutshell 10 1.5 Lean and Agile: Contrasting and Complementary 11 1.5.1 The Lean Secret 14 1.6 Lost Practices 14 1.6.1 Architecture 15 1.6.2 Handling Dependencies between Requirements 15 1.6.3 Foundations for Usability 16 1.6.4 Documentation 16 Code Does Not Stand Alone 17 Capturing the ‘‘Why’’ 19 1.6.5 Common Sense, Thinking, and Caring 19 1.7 What this Book is Not About 21 1.8 Agile, Lean – Oh, Yeah, and Scrum and Methodologies and Such 22 1.9 History and Such 24 2 Agile Production in a Nutshell 27 2.1 Engage the Stakeholders 27 2.2 Define the Problem 29 2.3 Focusing on What the System Is: The Foundations of Form 30 2.4 Focusing on What the System Does: The System Lifeblood 32 2.5 Design and Code 33 2.6 Countdown: 3, 2, 1. . . 34 3 Stakeholder Engagement 35 3.1 The Value Stream 35 3.1.1 End Users and Other Stakeholders as Value Stream Anchors 36 3.1.2 Architecture in the Value Stream 37 3.1.3 The Lean Secret 38 3.2 The Key Stakeholders 41 3.2.1 End Users 43 Psyching Out the End Users 44 Don’t Forget Behavior 46 The End User Landscape 47 3.2.2 The Business 47 A Special Note for Managers 48 3.2.3 Customers 50 . . . As Contrasted with End Users 50 ‘‘Customers’’ in the Value Stream 52 3.2.4 Domain Experts 52 No Ivory Tower Architects 53 Experts in Both Problemand Solution Domains 54 3.2.5 Developers and Testers 55 3.3 Process Elements of Stakeholder Engagement 57 3.3.1 Getting Started 58 3.3.2 Customer Engagement 60 3.4 The Network of Stakeholders: Trimming Wasted Time 61 3.4.1 Stovepipe Versus Swarm 61 3.4.2 The First Thing You Build 64 3.4.3 Keep the Team Together 65 3.5 No Quick Fixes, but Some Hope 66 4 Problem Definition 67 4.1 What’s Agile about Problem Definitions? 68 4.2 What’s Lean about Problem Definitions? 68 4.3 Good and Bad Problem Definitions 70 4.4 Problems and Solutions 72 4.5 The Process Around Problem Definitions 73 4.5.1 Value the Hunt Over the Prize 73 4.5.2 Problem Ownership 74 4.5.3 Creeping Featurism 75 4.6 Problem Definitions, Goals, Charters, Visions, and Objectives 76 4.7 Documentation? 77 5 What the System Is, Part 1: Lean Architecture 79 5.1 Some Surprises about Architecture 80 5.1.1 What’s Lean about This? 82 Deliberation and ‘‘Pull’’ 83 Failure-Proof Constraints or Poka-Yoke 83 The Lean Mantras of Conservation, Consistency, and Focus 84 5.1.2 What’s Agile about Architecture? 84 It’s All About Individuals and Interactions 84 Past Excesses 85 Dispelling a Couple of Agile Myths 86 5.2 The First Design Step: Partitioning 88 5.2.1 The First Partition: Domain Form Versus Behavioral Form 89 5.2.2 The Second Partitioning: Conway’s Law 90 5.2.3 The Real Complexity of Partitioning 93 5.2.4 Dimensions of Complexity 94 5.2.5 Domains: A Particularly Interesting Partitioning 94 5.2.6 Back to Dimensions of Complexity 96 5.2.7 Architecture and Culture 100 5.2.8 Wrap-Up on Conway’s Law 100 5.3 The Second Design Step: Selecting a Design Style 100 5.3.1 Contrasting Structuring with Partitioning 102 5.3.2 The Fundamentals of Style: Commonality and Variation 104 5.3.3 Starting with Tacit Commonality and Variation 105 5.3.4 Commonality, Variation, and Scope 108 5.3.5 Making Commonalities and Variations Explicit 111 Commonality Categories 112 Next Steps 114 5.3.6 The Most Common Style: Object Orientation 114 Just What is Object Orientation? 115 5.3.7 Other Styles within the Von NeumannWorld 117 5.3.8 Domain-Specific Languages and Application Generators 120 The State of the Art in DSLs 121 DSLs’ Place in Architecture 121 5.3.9 Codified Forms: Pattern Languages 122 5.3.10 Third-Party Software and Other Paradigms 124 5.4 Documentation? 127 5.4.1 The Domain Dictionary 128 5.4.2 Architecture Carryover 128 5.5 History and Such 129 6 What the System Is, Part 2: Coding It Up 131 6.1 The Third Step: The Rough Framing of the Code 131 6.1.1 Abstract Base Classes 133 6.1.2 Pre-Conditions, Post-Conditions, and Assertions 137 Static Cling 142 6.1.3 Algorithmic Scaling: The Other Side of Static Assertions 144 6.1.4 Form Versus Accessible Services 146 6.1.5 Scaffolding 147 6.1.6 Testing the Architecture 149 Usability Testing 149 Architecture Testing 149 6.2 Relationships in Architecture 153 6.2.1 Kinds of Relationship 153 6.2.2 Testing the Relationships 155 6.3 Not Your Old Professor’s OO 155 6.4 How much Architecture? 159 6.4.1 Balancing BUFD and YAGNI 159 6.4.2 One Size Does Not Fit All 160 6.4.3 When Are You Done? 160 6.5 Documentation? 162 6.6 History and Such 163 7 What the System Does: System Functionality 165 7.1 What the System Does 166 7.1.1 User Stories: A Beginning 166 7.1.2 Enabling Specifications and Use Cases 167 7.1.3 Helping Developers, Too 169 7.1.4 Your Mileage may Vary 170 7.2 Who is Going to Use Our Software? 171 7.2.1 User Profiles 171 7.2.2 Personas 171 7.2.3 User Profiles or Personas? 172 7.2.4 User Roles and Terminology 173 7.3 What do the Users Want to Use Our Software for? 173 7.3.1 Feature Lists 173 7.3.2 Dataflow Diagrams 174 7.3.3 Personas and Scenarios 174 7.3.4 Narratives 174 7.3.5 Behavior-Driven Development 175 7.3.6 Now that We’re Warmed Up. . . 175 Prototypes 176 Towards Foundations for Decisions 176 Known and Unknown Unknowns 176 Use Cases as a Decision Framework 177 7.4 Why Does the User Want to Use Our Software? 177 7.5 Consolidation of What the System Does 178 7.5.1 The Helicopter View 181 Habits: The Developer View and the User View 182 Trimming the Scope 185 7.5.2 Setting the Stage 186 7.5.3 Play the Sunny Day Scenario 187 Business Rules 191 7.5.4 Add the Interesting Stuff 193 7.5.5 Use Cases to Roles 200 Roles from the Use Case 201 Bridging the Gap between the Business and the Programmer 202 7.6 Recap 203 7.6.1 Support the User’s Workflow 203 7.6.2 Support Testing Close to Development 203 7.6.3 Support Efficient Decision-Making about Functionality 204 7.6.4 Support Emerging Requirements 204 7.6.5 Support Release Planning 204 7.6.6 Support Sufficient Input to the Architecture 205 7.6.7 Support the Team’s Understanding of What to Develop 205 7.7 ‘‘It Depends’’: When Use Cases are a Bad Fit 206 7.7.1 Classic OO: Atomic Event Architectures 206 7.8 Usability Testing 208 7.9 Documentation? 209 7.10 History and Such 211 8 Coding It Up: Basic Assembly 213 8.1 The Big Picture: Model-View-Controller-User 214 8.1.1 What is a Program? 214 8.1.2 What is an Agile Program? 215 8.1.3 MVC in More Detail 217 8.1.4 MVC-U: Not the End of the Story 217 A Short History of Computer Science 218 Atomic Event Architectures 219 DCI Architectures 220 8.2 The Form and Architecture of Atomic Event Systems 220 8.2.1 Domain Objects 221 8.2.2 Object Roles, Interfaces, and the Model 221 Example 223 8.2.3 Reflection: Use Cases, Atomic Event Architectures, and Algorithms 224 8.2.4 A Special Case: One-to-Many Mapping of Object Roles to Objects 225 8.3 Updating the Domain Logic: Method Elaboration, Factoring, and Re-factoring 226 8.3.1 Creating New Classes and Filling in Existing Function Placeholders 227 Example 228 8.3.2 Back to the Future: This is Just Good Old-Fashioned OO 229 8.3.3 Analysis and Design Tools 229 8.3.4 Factoring 231 8.3.5 A Caution about Re-Factoring 231 8.4 Documentation? 231 8.5 Why All These Artifacts? 232 8.6 History and Such 233 9 Coding it Up: The DCI Architecture 235 9.1 Sometimes, Smart Objects Just Aren’t Enough 235 9.2 DCI in a Nutshell 236 9.3 Overview of DCI 238 9.3.1 Parts of the User Mental Model We’ve Forgotten 239 9.3.2 Enter Methodful Object Roles 240 9.3.3 Tricks with Traits 242 9.3.4 Context Classes: One Per Use Case 243 9.4 DCI by Example 246 9.4.1 The Inputs to the Design 246 9.4.2 Use Cases to Algorithms 247 9.4.3 Methodless Object Roles: The Framework for Identifiers 250 9.4.4 Partitioning the Algorithms Across Methodful Object Roles 253 Traits as a Building Block 253 In Smalltalk 253 In C++ 254 In Ruby 256 Coding it Up: C++ 257 Coding Up DCI in Ruby 259 9.4.5 The Context Framework 261 The Ruby Code 263 The C++ Code 265 Making ContextsWork 267 Habits: Nested Contexts in Methodful Object Roles 277 9.4.6 Variants and Tricks in DCI 283 Context Layering 283 Information Hiding 283 Selective Object Role Injection 284 9.5 Updating the Domain Logic 285 9.5.1 Contrasting DCI with the Atomic Event Style 286 9.5.2 Special Considerations for Domain Logic in DCI 287 9.6 Context Objects in the User Mental Model: Solution to an Age-Old Problem 290 9.7 Why All These Artifacts? 294 Why not Use Classes Instead of ‘‘Methodful Object Roles’’? 295 Why not Put the Entire Algorithm Inside of the Class with which it is Most Closely Coupled? 295 Then Why not Localize the Algorithm to a Class and Tie it to Domain Objects as Needed? 296 Why not Put the Algorithm into a Procedure, and Combine the Procedural Paradigm with the Object Paradigm in a Single Program? 296 If I Collect Together the Algorithm Code for a Use Case in One Class, Including the Code for All of its Deviations, Doesn’t the Context Become Very Large? 296 So, What do DCI and Lean Architecture Give Me? 297 And Remember. . . 297 9.8 Beyond C++: DCI in Other Languages 297 9.8.1 Scala 298 9.8.2 Python 299 9.8.3 C# 299 9.8.4 . . . and Even Java 299 9.8.5 The Account Example in Smalltalk 300 9.9 Documentation? 300 9.10 History and Such 301 9.10.1 DCI and Aspect-Oriented Programming 302 9.10.2 Other Approaches 302 10 Epilog 305 Appendix A Scala Implementation of the DCI Account Example 307 Appendix B Account Example in Python 311 Appendix C Account Example in C# 315 Appendix D Account Example in Ruby 321 Appendix E Qi4j 327 Appendix F Account Example in Squeak 331 F.1 Testing Perspective 333 F.2 Data Perspective 333 F.2.1 BB5Bank 333 F.2.2 BB5SavingsAccount 334 F.2.3 BB5CheckingAccount 334 F.3 Context Perspective 335 F.3.1 BB5MoneyTransferContext 335 F.4 Interaction (RoleTrait) Perspective 336 F.4.1 BB5MoneyTransferContextTransferMoneySource 336 F.4.2 BB5MoneyTransferContextMyContext 337 F.4.3 BB5MoneyTransferContextTransferMoneySink 337 F.5 Support Perspective (Infrastructure Classes) 337 F.5.1 BB1Context (common superclass for all contexts) 337 F.5.2 BB1RoleTrait (all RoleTraits are instances of this class) 339 Bibliography 341 Index 351

    £23.99

  • Mobile Middleware

    John Wiley & Sons Inc Mobile Middleware

    1 in stock

    Book SynopsisThis book offers a unified treatment of mobile middleware technology Mobile Middleware: Architecture, Patterns and Practiceprovides a comprehensive overview of mobile middleware technology. The focus is on understanding the key design and architectural patterns, middleware layering, data presentation, specific technological solutions, and standardization. The author addresses current state of the art systems including Symbian, Java 2 Micro Edition, W3C technologies and many others, and features a chapter on widely deployed middleware systems. Additionally, the book includes a summary of relevant mobile middleware technologies, giving the reader an insight into middleware architecture design and well-known, useful design patterns. Several case studies are included in order to demonstrate how the presented patterns, solutions, and architectures are applied in practice. The case studies pertain to mobile service platforms, mobile XML processing, thin clients, rich clientTable of ContentsAbout the Authors. List of Contributors. Preface. 1. Introduction. 1.1 Mobile Middleware. 1.2 Mobile Applications and Services. 1.3 Middleware Services. 1.4 Transparencies. 1.5 Mobile Environment. 1.6 Context-Awareness. 1.7 Mobility. 1.8 Example Use Case. 1.9 Requirements for Mobile Computing. 1.10 Mobile Platforms. 1.11 Organization of the Book. Bibliography. 2. Architectures and Platforms. 2.1 Overview. 2.2 Networking. 2.3 Naming and Addressing. 2.4 Middleware and Platforms. 2.5 Overview of Platforms. 2.6 Mobile Platforms. Bibliography. 3. Support Technologies. 3.1 Session Initiation Protocol (SIP). 3.2 IP Multimedia Subsystem (IMS). 3.3 Web Services. 3.4 Other Technologies. 3.5 Service Discovery. 3.6 Mobility Solutions. 3.7 Advanced Topics. 3.8 Fuego: Example Middleware Platform. Bibliography. 4. Principles and Patterns. 4.1 Definitions. 4.2 Principles. 4.3 Cross-layer design. 4.4 Model Driven Architecture. 4.5 Architectural Patterns. 4.6 General Patterns. 4.7 Patterns for Mobile Computing. 4.8 Summary. Bibliography. 5. Interoperability and Standards. 5.1 Interoperability. 5.2 Standardization. 5.3 Wireless Communications Standards. 5.4 W3C Standards. 5.5 IETF Standards. 5.6 Emerging Internet Standards. Bibliography. 6. Mobile Messaging. 6.1 Messaging Fundamentals. 6.2 Messaging Architectures. 6.3 Mobile and Wireless Communication. 6.4 Security. 6.5 Reliability. 6.6 Java Message Service. 6.7 CORBA and CORBA Messaging. 6.8 XMPP. 6.9 Web Services. 6.10 The Web and REST. Bibliography. 7. Publish/Subscribe. 7.1 Overview. 7.2 Router Topologies. 7.3 Interest Propagation. 7.4 Routing Decision. 7.5 Standards. 7.6 Research Systems. 7.7 Advanced Topics. Bibliography. 8. Data Synchronization. 8.1 Synchronization Models. 8.2 File Systems and Version Control. 8.3 Synchronization in Middleware. 8.4 Case Studies. Bibliography. 9. Security. 9.1 Basic Principles. 9.2 Cryptography. 9.3 Public Key Infrastructure. 9.4 Network Security. 9.5 802.11X. 9.6 AAA, RADIUS, Diameter. 9.7 Transport-layer Security. 9.8 Web Services Security. 9.9 Security Tokens. 9.10 SAML. 9.11 XACML. 9.12 Single Sign-On (SSO). 9.13 Generic Bootstrapping Architecture (GBA). 9.14 Trusted Platform Module. 9.15 OpenID, OAuth, MicroID. 9.16 Spam. 9.17 Downloaded Code. Bibliography. 10. Application and Service Case Studies. 10.1 Mobile Services. 10.2 Mobile Server. 10.3 Mobile Advertisement. 10.4 Mobile Push Email. 10.5 Mobile Video. 10.6 Mobile Widgets and WidSets. 10.7 Airline Services. 10.8 Revisiting Mobile Patterns. 10.9 Summary. Bibliography. 11. Conclusions. Index.

    1 in stock

    £67.46

  • Adapting Configuration Management for Agile Teams

    John Wiley & Sons Inc Adapting Configuration Management for Agile Teams

    Book SynopsisAdapting Configuration Management for Agile Teams provides very tangible approaches on how Configuration Management with its practices and infrastructure can be adapted and managed in order to directly benefit agile teams. Written by Mario E.Table of ContentsPublisher’s Acknowledgements xv Preface xvii Acknowledgements xix About the Author xxi Contributor Biography xxiii 1 Introduction: Racing with Confidence 1 1.1 Focus of this Book 4 1.2 Who should Use this Book 4 1.3 Navigation through this Book 5 1.4 Value of this Book 7 2 CM Primer 9 2.1 Brief History of CM 10 2.2 CM Values 11 2.2.1 Identification 12 2.2.2 Control 12 2.2.3 Audit 14 2.2.4 Report 15 2.3 CM Practices 15 2.3.1 CM Planning Practice 16 2.3.2 Version Control Practice 18 2.3.3 Change Control Practice 19 2.3.4 Build Management Practice 20 2.3.5 Release Practice 21 2.3.6 Problem Management Practice 21 2.3.7 Audit Practice 22 2.3.8 Report Practice 23 2.3.9 Other Practices 24 2.4 Benefits of CM 24 2.4.1 Benefits of CM to Management 24 2.4.2 Benefits of CM to Development Staff 24 2.4.3 Benefits of CM for CM and QA/Test Personnel 25 2.5 CM Roles 25 2.6 CM Mindset 29 2.6.1 Thinking Modular 29 2.6.2 Thinking Integrity 29 2.6.3 Thinking ‘‘Get It Done’’ 30 2.6.4 Thinking Improvement 30 2.7 Relationship of CM to Culture, Methods, & Governance 30 2.7.1 Relationship of Culture to CM 31 2.7.2 Relationship of Governance to CM 33 2.7.3 Relationship of Methods to CM 33 2.7.4 Avoiding Mistakes in CM Adoption 34 2.8 CM Resource Guide 35 2.8.1 CM Books 35 2.8.2 CM websites 35 3 Agile Primer 37 3.1 Brief History of Agile 40 3.2 Agile Values (a.k.a., Manifesto) 41 3.3 Agile Methods 42 3.3.1 Scrum 42 3.3.1.1 Scrum Roles 43 3.3.1.2 Scrum Practices and Artifacts 43 3.3.2 Extreme Programming (XP) 45 3.3.2.1 XP Roles 45 3.3.2.2 XP Practices and Rules 45 3.3.3 Other Methods that Support Agile 47 3.3.3.1 DSDM 47 3.3.3.2 Feature-Driven Development (FDD) 48 3.3.3.3 Agile Unified Process 48 3.4 Benefits of Agile 49 3.5 Agile Personality Types 50 3.5.1 Innovator 51 3.5.2 Champion 51 3.5.3 Workhorse 52 3.5.4 Bandwagon 53 3.5.5 Cowboy 53 3.5.6 Deceiver 54 3.5.7 Denier 55 3.5.8 Summarizing the Types 55 3.6 Agile Roles 55 3.6.1 Agile Coach 56 3.6.2 Agile Project Manager/ScrumMaster 56 3.6.3 Agile Project Team 57 3.6.4 Product Owner/Manager 57 3.6.5 Customer 58 3.7 Agile Mindset 58 3.7.1 Thinking Small 59 3.7.2 Thinking Business Value 59 3.7.3 Thinking Continuous 59 3.7.4 Thinking Self-Empowered Team 59 3.7.5 Thinking Collaboration 60 3.8 Moving to an Agile Culture 61 3.8.1 Targeting the Sweet Spot 61 3.8.2 Targeting the Product Level 62 3.8.3 Actions for Agile Change 63 3.8.3.1 Promoting a Dedicated Team 63 3.8.3.2 Ensure Continuous Customer Participation 63 3.8.3.3 Advocating for an Agile Coach 64 3.8.3.4 Promoting Co-Location 64 3.8.3.5 Introducing Agile Terminology 64 3.8.3.6 Promoting Agile Practices 65 3.8.3.7 Minimizing Project Reporting 65 3.8.3.8 Embracing Change 65 3.8.3.9 Praising Cancelled Projects 65 3.8.3.10 Removing Formality and Ceremony 66 3.8.4 Determining Agile Readiness 66 3.8.5 Measuring your Move Toward Agile 67 3.8.6 Avoiding Mistakes in Agile Adoption 68 3.9 Agile Resource Guide 69 3.9.1 Agile Books 69 3.9.2 Agile Websites 70 4 How CM and Agile Values Work Together 71 4.1 Aligning Agile and CM Mindsets 72 4.1.1 Challenges of Aligning the Minds 73 4.2 Supporting Agile and CM Values without Sacrifice 74 4.3 Value of Retrospective to CM 75 4.4 Agile Perspective of CM Practices 76 4.4.1 Value Ranking of CM Practices by CM Professionals 76 4.4.2 Value Rating of CM Practices by Agile Professionals 77 4.4.2.1 Agile Perspective of CM Tools in General 78 4.4.2.2 Agile Perspective of CM Planning 79 4.4.2.3 Agile Perspective for Version Control 81 4.4.2.4 Agile Perspective for Build Management 81 4.4.2.5 Agile Perspective of Change Control 82 4.4.2.6 Agile Perspective of Problem Management 82 4.4.2.7 Agile Perspective of CM Audit 82 4.4.2.8 Agile Perspective of CM Reporting 83 4.4.2.9 Agile Perspective of Release Engineering 83 5 Approaching Infrastructure for Agile 85 5.1 Guiding Principles for Approaching Infrastructure 86 5.2 Considerations for Approaching Infrastructure 87 5.2.1 Iteration 0 87 5.2.2 Agile Team as Customer of Infrastructure 87 5.2.3 Architecture Envisioning 88 5.2.4 To Envision or to Refactor 90 5.3 Infrastructure Envisioning 90 5.3.1 Initiating an Iteration 0 at the Beginning 91 5.3.2 Thinking Iterations 91 5.3.3 Tasks in Product Backlog or Infrastructure Backlog 93 5.3.4 Reflections on Infrastructure Envisioning 94 5.4 Infrastructure Refactoring 94 5.4.1 Iteration Planning or Iteration 0 96 5.4.2 Thinking in Iterations 96 5.4.3 Tasks in Product Backlog or Infrastructure Backlog 97 5.4.4 Reflections on Infrastructure Refactoring 98 5.5 Owning on Premises or Renting in the Clouds 99 5.5.1 Renting in the Clouds 100 5.5.2 Owning Server and Renting Space (a.k.a., Co-location as a Service) 102 5.5.3 Owning on Premises 103 5.5.4 Reflections on Premises or in the Clouds 104 6 Approaching the CM Implementation for Agile 105 6.1 CM Envisioning 105 6.1.1 Strategizing for the Whole with Iteration 0 106 6.1.1.1 Owning CM Infrastructure on Premises 107 6.1.1.2 Renting CM Infrastructure in the Clouds 107 6.1.1.3 Sharing through CM Co-op Environments 108 6.1.2 Implementing Incrementally 109 6.1.3 CM in Product Backlog or CM Backlog 110 6.2 CM Refactoring 110 6.2.1 Iteration Planning or Iteration 0 111 6.2.2 Think in Iterations 112 6.2.3 CM in Product Backlog or CM Backlog 112 6.3 Automate, Automate, Automate for Agile 112 6.3.1 Benefits of CM Automation to Agile 114 6.3.2 Chunks, Iterations, and Increments 116 6.3.2.1 Advantages of Smaller Chunks and Increments 116 6.3.2.2 Disadvantages of Smaller Chunks and Increments 117 6.3.3 Location, Location, Location 118 6.3.3.1 Co-location of Team 118 6.3.3.2 Co-location of Infrastructure 120 6.3.3.3 Co-location of Functionality 121 6.3.3.4 CM Considerations for Co-location and Agile 122 7 Adapting CM Practices for Agile 125 7.1 Adapting to Continuous Integration and Build 126 7.1.1 The ‘‘Continuous’’ Cultural Shift 128 7.1.1.1 How ‘‘Continuous’’ Adds Stress and Load to CM 130 7.1.2 Right-Size Branching for Agile 131 7.1.2.1 ABCs of Branching 131 7.1.2.2 Private Workspace 135 7.1.2.3 Factors for an Agile Branching Strategy 138 7.1.2.4 Understanding Codelines 141 7.1.2.5 Branching Scenarios 142 7.1.2.6 Branching Challenges 145 7.1.2.7 Branching Summary 146 7.1.3 Shifting Responsibilities for Merge and Build Activities 147 7.1.4 Effective Merge for Agile 147 7.1.4.1 Merge Challenges 149 7.1.5 Effective Build for Agile 150 7.1.5.1 Build Levels 150 7.1.5.2 Build Automation for Continuous Integration 152 7.1.6 Continuous Testing with Teeth 153 7.1.6.1 Unit Testing 153 7.1.6.2 Smoke Testing 153 7.1.7 Reflections on Continuous Integration and Build 154 7.2 Adapting CM Planning 155 7.2.1 Balancing Agile Values with Organization Needs 155 7.2.2 Getting Started with Iteration 0 156 7.2.3 Evolutionary CM Plan 157 7.2.4 Reusable CM Plan 158 7.2.5 Inherited CM Plan 159 7.2.6 Types of CM Planning Formats 160 7.2.7 Adapting CM Roles and Responsibilities for Agile 164 7.2.7.1 CM as Holistic Part of the Agile Team 165 7.2.7.2 Adjusting CM Responsibilities 166 7.2.8 Reflections on CM Planning for Agile 168 7.3 Adapting to Support Refactoring 168 7.3.1 Reflections on Refactoring 170 7.4 Adapting to Support Pair Programming 170 7.4.1 Reflections on Pair Programming 173 7.5 Adapting to Support Test Driven Development (TDD) 173 7.5.1 Reflections on Test-Driven Development 175 7.6 Adapting to Support Agile Distributed Teams 175 7.6.1 Distributed Analysis for Distributed Teams 175 7.6.2 Code Access Approaches 176 7.6.3 Reflections on Approaching Agile Distributed Teams 180 7.7 Adapting Change Control, Traceability, and Baselines 180 7.7.1 Tracking Requirements or Stories and their Changes 181 7.7.2 Adjusting the Notion of Baseline 182 7.7.2.1 Baseline Considerations for Agile 183 7.7.2.2 Baselines for Agile 183 7.7.3 Approaching Traceability for Agile 185 7.7.3.1 Traceability for the Right Reasons 185 7.7.3.2 Traceability Considerations for Agile 186 7.7.4 Reflections on Change Control, Traceability, and Baselines for Agile 187 7.8 Adapting CM Audit 187 7.8.1 Agile Considerations for Audit 188 7.8.1.1 Trust or Verification 188 7.8.1.2 What Baselines to Audit Against 188 7.8.1.3 Challenges with BEUF Specifications 189 7.8.1.4 Audit after the Third Iteration 189 7.8.2 Approaching Audit for Agile 189 7.8.2.1 Automating Code to Build Baselines 189 7.8.2.2 Move the Process Audit to the Retrospective 190 7.8.2.3 Move the Baseline Audit to the Review 190 7.8.2.4 Giving Cadence to Industry Standards 190 7.8.3 Reflections on CM Audit for Agile 191 7.9 Adapting Problem Management 192 7.9.1 Establishing Problem Management Upfront 192 7.9.2 From Phase to Iteration 192 7.9.3 Problem Management for Pair Programming 193 7.9.4 Problem Management Automation 193 7.9.5 Reflections on Problem Management for Agile 193 7.10 Adapting CM Report and Review 194 7.10.1 Moving CM Report and Review into the Retrospective 194 7.10.2 Adjusting CM Metrics that Help Deliver Value 195 7.10.3 Constructing a Value-Added Metric 195 7.10.3.1 Metric Building Blocks 196 7.10.3.2 Considering the Benefit of the Metric 196 7.10.3.3 Determining Effort to Collect the Metric 197 7.10.3.4 Assessing the Value of the Metric 198 7.10.3.5 Comparing amongst Potential Metrics 199 7.10.3.6 Monitoring of the Metric 199 7.10.4 Waste and Examples of Value-Added CM Metrics 200 7.10.5 Reflections on Adapting CM Report and Review for Agile 202 8 CM Tool as a Strategic Agile Partner 203 8.1 CM Tool Support for Software Development 204 8.2 The Agile Practices that Impact a CM Tool 208 8.2.1 Whole Team 208 8.2.2 Retrospectives 209 8.2.3 Backlog 209 8.2.4 Short Iterations 209 8.2.5 Iteration Review 210 8.2.6 One Piece Flow 210 8.2.7 Continuous Integration (CI) 210 8.2.8 Refactoring 210 8.2.9 Collective Code Ownership 211 8.2.10 Frequent Releases 211 8.2.11 Traceability vs. Variance 211 8.3 Evaluating Your Situation 212 8.3.1 Homegrown Tools 212 8.3.2 Outdated Tools 212 8.4 CM Tool Features that Facilitate Agile Development 213 8.4.1 High Performance 213 8.4.2 Fast Configuration Creation (a.k.a. Branching and Labeling) 213 8.4.3 Native Internet Support 213 8.4.4 Replication for Distributed Team Continuous Integration 214 8.4.5 All Writeable Files 214 8.4.6 Codelines (a.k.a. Streams, Lines of Development) 214 8.4.7 Change Tracking 215 8.4.7.1 Refactoring: Rename, Merge, and Patch Tracking 216 8.4.7.2 Transactions (a.k.a. Change Lists or Change Sets) 216 8.4.7.3 Change Packages 217 8.4.8 Private Branches 218 8.5 Integration with Your Agile Ecosystem 218 8.5.1 Integration with the Agile Project Management Tool 219 8.5.2 Integration with the Continuous Integration and Build Tool 219 8.5.3 Integration with the Test Automation Tool 219 8.5.4 Configuration vs. Customization 220 8.6 Conclusion 220 9 Evaluating Tools Suited for Agile 221 9.1 Looking for Tools out there and in here 221 9.1.1 Using a Vendor Tool Specific for Agile 222 9.1.2 Using a Freeware Tool Specific for Agile 224 9.1.3 Using a Homegrown Tool for Agile 225 9.1.4 Tool Classification Comparison 226 9.2 Levels of Technology Evaluation 226 9.2.1 Research Evaluation 227 9.2.2 Demonstration Evaluation 227 9.2.3 Pilot/Full Evaluation 228 9.2.4 Considerations on Levels 228 9.3 Perform a Technology Evaluation 229 9.3.1 Investigating a CM Tool for Your Needs 230 9.3.1.1 Version Control 230 9.3.1.2 Build Management 231 9.3.1.3 Change Control/Problem Management 231 9.3.1.4 Release Engineering 232 9.3.1.5 The CM Tool (or Tools) for You 232 9.3.2 Investigating Agile Tools 232 9.3.3 Evaluation Process 233 9.3.3.1 Establishing Evaluation Team 234 9.3.3.2 Determining Evaluation Level 235 9.3.3.3 Conducting a Research Evaluation 235 9.3.3.4 Conducting a Demo Evaluation 236 9.3.3.5 Conducting a Pilot/Full Evaluation 237 9.3.3.6 Considering a Request for Proposal (RfP) 238 9.3.3.7 Acquisition Process – Owning or Renting 240 10 Using CM Standards and Frameworks to Support Agile 241 10.1 Importance of CM 242 10.2 Compliance and IT Governance Requirements 242 10.3 Communicating Your Approach to Senior Management 243 10.4 Which Standards Should Be Considered? 245 10.5 Configuration Management Functions that are most Essential 247 10.5.1 Continuous Integration without the Required Version ID 247 10.6 How do Frameworks such as Cobit, ITIL, CMMI, and RUP support Agile? 249 10.6.1 ISACA Cobit 250 10.6.2 itSMF ITIL Framework 250 10.6.3 CMMI and Agile 251 10.6.4 Rational Unified Process (RUP) and Agile Unified Process (AUP) 251 10.7 Achieving Synergy through Harmonization and Tailoring 252 10.7.1 Change Control on Your Standards Tailoring 252 10.7.2 Overcoming Resistance to Change 253 10.8 Conclusion 253 Bibliography 255 Index 259

    £23.99

  • Server Component Patterns Component

    John Wiley & Sons Inc Server Component Patterns Component

    Book SynopsisA detailed exploration of the basic patterns underlying todaya s component infrastructures. The latest addition to this best--selling series opens by providing an "Alexandrian--style" pattern language covering the patterns underlying EJB, COM+ and CCM.Table of ContentsPreface. Foreword by Frank Buschmann. Foreword by Clemens Szyperski. Foundations. Part I: A Server Component Patterns Language. Core Infrastructure Elements. Component Implementation Building Blocks. Container Implementation Basics. A Component and its Environment. Identifying and Managing Instances. Remote Access to Components. More Container Implementation. Component Deployment. Part II: The Patterns Illustrated with EJB. EJB Core Infrastructure Elements. EJB Component Implementation Building Blocks. EJB Container Implementation Basics. A Bean and its Environment. Identifying and Managing Bean Instances. Remote Access to Beans. More EJB Container Implementation. Bean Deployment. Part III: A Story. Literature and Online Resources. Glossary. Index.

    £30.40

  • ObjectOriented Programming in C

    John Wiley & Sons Inc ObjectOriented Programming in C

    Book SynopsisC++ is established as the leading industry programming language for object-oriented software development. This book provides a step-by-step approach to all language features, explains their practical usage, provides intuitive examples that are not too complex or easy, and provides advice for implementing classes and libraries to develop programs.Trade Review"...technically solid, excellent introduction to C++..." (Cvu, December 2002)Table of ContentsPreface. 1. About this Book. Why Did Write this Book? Prerequisites. Organization of the Book. How Should You Read this Book? Example Code and Additional Informations. Feedback. 2. Introduction: C++ and Object-Oriented Programming. The C++ Language. C++ as an Object-Oriented Programming Language. Other Concepts of C++. Teminology. 3. Basic Concepts of C++ Programs. The First Program. Types, Operators, and Control Constructs. Functions and Modules. Strings. Collections. Exception Handling. Pointers, Arrays, and C-Strings. Memory Management Using new and delete. Communication with the Outside World. 4. Class Programming. The First Class: Fraction. Operators for Classes. Running Time and Code Optimization. References and Constants. Input and Output Using Streams. Friends and Other Types. Exception Handling for Classes. 5. Inheritance and Polymorphism. Virtual Functions. Polymorphism. Multiple Inheritance. Design Pitfalls with Inheritance. 6. Dynamic and Static Members. Dynamic Members. Other Aspects of Dynamic Members. Inheritance of Classes with Dynamic Members. Classes Containing Classes. Static Members and Auxiliary Types. 7. Templates. Why Templates? Function Templates. Class Templates. Non-Type Template Parameters. Additional Aspects of Templates. Templates in Practice. 8. The Standard I/O Library in Detail. The Standard Stream Classes. File Access. Stream Classes for Strings. 9. Other Language Features and Details. Additional Details of the Standard Library. Defining Special Operators. Additional Aspects of new and delete. Function Pointers and Member Pointers. Combining C++ with C Code. Additional Keywords. 10. Summary. Hierarchy of C++ Operators. Class-Specific Properties of Operations. Rules for Automatic Type Conversion. Useful Programming Guidelines and Conventions. Bibliography. Glossary. Index.

    £56.00

  • Symbian OS Communications Programming 2 Symbian

    Wiley Symbian OS Communications Programming 2 Symbian

    Book SynopsisA developera s guide to the Symbian OS (Operating System) Communications Architecture. The Symbian OS Communications Architecture is the cornerstone of Symbian OS -- enabling the combination of voice communications, wireless Internet access and computing functionality.Trade Review"...clear and detailed...the supporting text is lucid and clear..." (www.wirelessdevnet.com, 5 July 2002) "…something useful for everyone…the writing is clear, and the structure makes it easy to learn…" (Forum Nokia, 6 March 12003) "…written in a clear and accessible manner…" (CVu, June 2003)Table of ContentsPreface. Foreword. Section 1: The Basics of Symbian OS Communication. Introduction. Introduction to the Symbian Communication Architecture. Several Introductions to the Architecture Infrastructure. Transport Technologies. Look at Content Technologies. Security and Communication. Section 2: Programming using Symbian OS Communication. Getting Started with Communications Programming. Serial Communications. Communicating via Infrared: Serial Communications. Using Sockets. Communicating via Infrared: Using Sockets. Communicating with TCP/IP. Bluetooth Communications. Telephony. Sending and Receiving Messages. Browsable Content Technologies. Section 3: Miscellaneous Topics. Synchronization: PLP and SyncML. The Communications Database. Looking Ahead. Appendix A Developer Resources and Bibliography. Index.

    £29.59

  • LargeScale Software Architecture

    John Wiley & Sons Inc LargeScale Software Architecture

    Book SynopsisThe purpose of large--scale software architecture is to capture and describe practical representations to make development teams more effective. In this book the authors show how to utilise software architecture as a tool to guide the development instead of capturing the architectural details after all the design decisions have been made.Trade Review“…a welcome addition…recommended…” (CVU, June 04)Table of ContentsPreface. Acknowledgements. Introduction. Roles of the Software Architect. Software Architecture and the Development Process. Example System Overview. UML Quick Tour. System Context and Domain Analysis. Component Design and Modeling. Subsystem Design. Transaction and Data Design. Process and Deployment Design. Architecture Techniques. Applying the Viewpoints. Summary of Architectural Viewpoints. Bibliography.

    £28.00

  • Agile Documentation

    John Wiley & Sons Inc Agile Documentation

    Book SynopsisSoftware documentation forms the basis for all communication relating to a software project. To be truly effective and usable, it should be based on what needs to be known. Agile Documentation provides sound advice on how to produce lean and lightweight software documentation.Trade Review??many (Test Documents) would benefit from this treatment?? (Professional Tester, October 03) "...applicable to documentation for any project...highly recommended..." (CVu, Vol 16(4), August 2004)Table of ContentsForeword ix Preface xi Acknowledgements xvii Introduction 1 Project Background 11 1 Finding the Right Topics 19 Target Readers 24 Focused Information 26 Individual Documentation Requirements 28 Documentation Portfolio 30 Focus on Long-Term Relevance 34 Specification as a Joint Effort 36 Design Rationale 39 The Big Picture 40 Separation of Description and Evaluation 42 Realistic Examples 44 Experience Reports 46 2 Structuring Individual Documents 61 Structured information 66 Judicious Diagrams 70 Unambiguous Tables 73 Guidelines for Readers 75 Thumbnail Sketches 77 Traceable References 78 Glossary 79 Document History 81 Experience Reports 82 3 Layout and Typography 93 Text on 50% of a Page 98 Two Alphabets per Line 100 120% Line Spacing 102 Two Typefaces 104 Careful Use of Type Variations 106 Careful Ruling and Shading 108 Adjacent Placement 109 Coherent Pages 111 Experience Reports 112 4 Infrastructure and Technical Organisation 117 Document Landscape 120 Document Archive 123 Wiki 125 Code-Comment Proximity 126 Reader-Friendly Media 128 Separation of Contents and Layout 131 Single Source and Multiple Targets 133 Import by Reference 136 Separation of Processing and Printing 138 Document Templates 139 Few Tools 142 Annotated Changes 144 Notification upon Update 145 Reorganisation upon Request 147 Experience Reports 149 5 Management and Quality Assurance 159 A Distinct Activity 161 One Responsible Author 164 Continuing Documentation 166 Writing and Reflection 168 Review Culture 170 Review Before Delivery 174 Customer Review 175 A Distant View 177 Information Marketplace 179 Knowledge Management 180 Experience Reports 182 Final Remarks 193 Pattern Thumbnails 197 Finding the Right Topics 197 Structuring Individual Documents 198 Layout and Typography 200 Infrastructure and Technical Organisation 201 Management and Quality Assurance 203 Glossary 205 References 211 Index 221

    £21.25

  • Developing Intelligent Agent Systems A Practical Guide

    Wiley Developing Intelligent Agent Systems A Practical Guide

    Book SynopsisHere is the first book to include a step--by--step process of how to design intelligent agents. Providing a full life--cycle methodology for developing intelligent agent systems, Developing Autonomous Agent Systems present a thoroughly developed and tested methodology to developing intelligent agent technologies.Table of ContentsForeword from the Series Editor. Preface. Acknowledgements. 1. Agents and Multi-Agent Systems. 2. Concepts for Building Agents. 3. Overview of the Prometheus Methodology. 4. System Specification. 5. Architectural Design: Specifying the Agent Types. 6. Architectural Design: Specifying the Interactions. 7. Finalizing the Architectural Design. 8. Detailed Design: Agents, Capabilities and Processes. 9. Detailed Design: Capabilities, Plans and Events. 10. Implementing Agent Systems. Appendix A: Electronic Bookstore. Appendix B: Descriptor Forms. Appendix C:The AUML Notaton. Bibliography. Index.

    £64.55

  • Scenarios Stories Use Cases

    John Wiley & Sons Inc Scenarios Stories Use Cases

    Book Synopsis Extending the scenario method beyond interface design, this important book shows developers how to design more effective systems by soliciting, analyzing, and elaborating stories from end-users Contributions from leading industry consultants and opinion-makers present a range of scenario techniques, from the light, sketchy, and agile to the careful and systematic Includes real-world case studies from Philips, DaimlerChrysler, and Nokia, and covers systems ranging from custom software to embedded hardware-software systems Trade Review"...this book is a breath of fresh air, providing practical guidance on incorporating techniques and approaches to the development cycle." - Usability ConsultantTable of ContentsPreface xiii Biographies and Photographs xvii Part I Overview Chapter 1 Introduction: Scenarios in System Development Context 3 Through the Life Cycle 17 Types of System 18 Scenarios for Systems—Not Necessarily Software 19 The Way Ahead 21 Keywords 21 References 21 Recommended Reading 22 Chapter 2 Scenario-based Approaches Overview: The Crews Scenario Framework 25 The Framework 26 The Scenario Approaches Described in this Book 28 Conclusion 32 Keywords 32 References 32 Part II Scenarios Through the System Life-cycle: Techniques Chapter 3 Scenarios in Requirements Discovery Applicability 39 Position in the Life Cycle 40 Key Features 40 Strengths 40 Weaknesses 41 What Is a Requirements Scenario? 41 From Scenarios to Atomic Requirements 51 Keeping Track of the Investigation 54 Who Produces the Scenarios? 54 Techniques for Building Scenarios 55 When to Use Scenarios 58 Keywords 59 References 59 Chapter 4 Scenarios for Innovation: Developing Scenario-based User Needs Analysis (Suna) Applicability 61 Position in the Life Cycle 62 Key Features 62 Strengths and Weaknesses 63 Technique 64 Worked Example 73 Comparisons 77 Keywords 79 References 79 Recommended Readings 79 Chapter 5 Running a Use Case/scenario Workshop Applicability 81 Position in the Life Cycle 82 Key Features 82 Strengths 83 Weaknesses 84 Technique 85 Worked Example 93 Comparisons 99 Keywords 100 References 100 Recommended Reading 101 Chapter 6 Alternative World Scenarios to Assess Requirement Stability Applicability 103 Position in the Life Cycle 104 Key Features 104 Strengths 104 Weaknesses 104 Technique 105 Worked Example 110 Comparisons 115 Keywords 116 References 116 Recommended Reading 117 Chapter 7 Cases Negative Scenarios and Misuse Applicability 119 Roles in the Life Cycle 119 Key Features 120 Strengths 120 Weaknesses 120 Technique 120 Worked Example 128 Comparisons 131 Keywords 138 References 138 Recommended Reading 139 Chapter 8 Authoring Use Cases Applicability 141 Position in the Life Cycle 141 Key Features 142 Strengths 143 Weaknesses 143 Technique 143 Comparisons 158 Keywords 159 References 159 Recommended Reading 160 Chapter 9 Systematic Scenario Walkthroughs with Art-scene Position in the Life Cycle 161 Applicability 161 Key Features 162 Strengths 162 Weaknesses 162 The Art-Scene Process and Environment 162 Art-Scene’s Research Provenance 163 The Art-Scene Approach 164 The Structure and Representation of an Art-Scene Scenario 164 The Art-Scene Software Environment 166 Facilitating Scenario Walkthroughs 171 The Scenario Workshop Environment 173 Worked Example 173 Comparisons 176 Keywords 177 References 177 Recommended Reading 178 Chapter 10 The role of scenarios In Contextual Design: From User Observations to Work Redesign To Use Cases Applicability 180 Position in the Life Cycle 180 Key Features 181 Strengths 181 Weaknesses 185 Technique 185 Techniques and Worked Example 186 Lessons Learnt 205 Comparisons 206 Keywords 207 References 207 Recommended Readings 208 Chapter 11 A Scenario-based Design Method for Human-centred Interaction Design Overview 211 Applicability 211 Position in the Life Cycle 212 Key Features 212 Strengths 213 Weaknesses 213 The Method 213 Other Artifacts in the Method 218 Processes of the Method 220 Summary 223 Worked Example 224 User Story 225 Comparisons 232 Acknowledgements 233 Keywords 234 References 234 Recommended Reading 234 Chapter 12 Use Case-based Software Development Applicability 237 Position in the Life Cycle 238 Key Features 238 Strengths 238 Weaknesses 238 Technique and Worked Example 239 Summary and Comparisons 262 Keywords 263 References 263 Recommended Reading 264 Chapter 13 User Stories in Agile Software Development Applicability 265 Applicability II—Why User Stories? 266 Position in Life Cycle 267 Key Features 267 Strengths 268 Weaknesses 268 Technique 269 Worked Example 275 Comparisons 278 Keywords 279 References 279 Recommended Reading 279 Chapter 14 Use Cases, Test Cases Applicability 281 Position in the Life Cycle 281 Key Features 282 Strengths 282 Weaknesses 282 Background: The V-Model 283 Technique 284 Worked Example 290 Comparisons 296 Keywords 297 References 297 Recommended Reading 298 Chapter 15 Project Stories: Combining Life-cycle Process Models Applicability 299 Position in the Life Cycle 299 Key Features 300 Strengths 300 Weaknesses 300 Technique 300 Conclusion 323 Keywords 324 References 324 Recommended Reading 324 Part III Scenarios in Action: Case Studies Chapter 16 Story Use and Reuse in Automotive Systems Engineering Type of Project 329 Applicability 329 Position in the Life Cycle 330 Roles Played by Scenarios 330 Strengths 330 Weaknesses 330 Introduction 330 Automotive Software Development 331 Stories in Automotive Software Development 334 Lessons Learnt 342 Keywords 345 References 346 Chapter 17 Systems Use and Misuse Cases in Railway A: Use Cases for Train Control Requirements Discovery 347 Type of Project 347 Applicability 348 Position in the Life Cycle 348 Roles Played by Scenarios 348 Strengths 348 Weaknesses 348 Case Study 349 Methods and Tools 350 Approach 350 Lessons Learnt 352 Keywords 353 B: Misuse Cases for a Seats Trade-Off 354 Type of Project 354 Applicability 354 Position in the Life Cycle 354 Roles Played by Scenarios 354 Strengths 355 Weaknesses 355 Case Study 355 Lessons Learnt 360 Summary 361 Keywords 362 References 362 Chapter 18 Scenarios in Air Traffic Control (ATC) Applicability 363 Roles in the Life Cycle 364 Key Features 364 Strengths 364 Weaknesses 365 Background 366 Results 372 Keywords 376 References 376 Chapter 19 Scenarios and Quality Requirements in Telecommunications Type of Project 379 Applicability 379 Position in the Life Cycle 380 Roles Played by Scenarios 380 Strengths 380 Weaknesses 380 Case Study 381 Lessons Learnt 389 Acknowledgements 391 Keywords 391 References 391 Chapter 20 Scenarios in Rail Rolling Stock with Reveal Applicability 393 Position in the Life Cycle 394 Key Features 394 Strengths 394 Weaknesses 395 Case Study 396 Lessons Learnt 408 Keywords 409 References 409 Chapter 21 Evaluating Scenarios by Simulation Type of Project 411 Applicability 412 Position in the Life Cycle 412 Roles Played by Scenarios 412 Strengths 412 Weaknesses 412 Case Study 413 Lessons Learnt 425 Keywords 426 References 426 Part IV The Way Ahead Chapter 22 Putting Scenarios Into Practice Which Kind of Scenario, When? 431 Which Scenario Technique, When? Conclusions from Part 2 432 Who, and Why? 435 Scenarios Everywhere? 436 How Does Project Scale Affect Scenario Usage? 437 Into Practice: Conclusions from the Part 3 Case Studies 439 Do Scenarios Replace Requirements? 440 Getting Started 443 Keywords 444 References 444 Chapter 23 Teaching Computer Scientists To Make Use Challenges in Teaching Students to Make Use 445 Comparisons—Scenarios for Making Use 446 Using Cases to Teach Scenario-Based Usability Engineering 449 Strengths and Weaknesses 458 Discussion and Future Directions 459 Acknowledgements 461 Keywords 461 References 462 Recommended Readings 463 Chapter 24 What Scenarios (Still) Aren’t Good for Continuous Behaviour 465 Very Large Systems 466 Fragmentary Models 466 Episodic, Allusory 467 Domain-Specific? 467 Which Representation? 467 Open-Ended 468 Tacit Knowledge 468 Non-Functional Requirements (NFRs) 468 Summary 468 References 469 Chapter 25 The Future of Scenarios Introduction: Horses for Courses 471 Towards a Framework 471 Representation 471 Process 472 Domain Knowledge 473 COTS 473 Dissemination 473 Summary 474 References 474 Appendix 1 Scenario-based System Development Templates 475 Appendix 2 Exercises 499 Appendix 3 Answers to Exercises 501 Glossary 507 Index 513

    £30.40

  • Android Development with Flash

    John Wiley & Sons Inc Android Development with Flash

    Book SynopsisThe visual guide to developing for one of the world s hottest new mobile platforms, the Android OS The Android operating system works on phones that combine a camera, Web browser, e-mail, GPS, and mapping tool into a single accessible pocket-sized unit, and can function on computers, as well.Table of ContentsHOW TO USE THIS VISUAL BLUEPRINT BOOK. 1 GETTING STARTED WITH ANDROID DEVELOPMENT. Introducing Android Devices. Introducing the Development Tools. Introducing the Available APIs. Check What APIs Are Not Available. Become an Android Developer. Get the Android SDK. Get the Android Eclipse Plug-in. Enable USB Debugging. Create an Android Virtual Device. Start the Emulator. 2 GETTING STARTED WITH FLASH CS5. Using the Actions Panel. Create a Skeleton Custom Class. Set the Source Path. Create MovieClips. Create Buttons. Edit Properties in Flash. Add Objects to the Stage with Code. Remove Objects from the Stage with Code. Work with Events. Using the Drawing API. Using Flash CS5 Help. 3 DEVELOPING YOUR FIRST APPLICATION. Create a New Project. Configure Publish Settings. Set Your Application Output. Create a P12 Certificate. Compile from Flash Professional CS5. Compile from the Command Line. Install Your Application on Your Device. Update Your Version Number. Set Application Permissions. Set a Custom Application URI. 4 DESIGNING YOUR APPLICATION. Mobile User Interface Guidelines. Understanding Screen Resolutions. Create Full-Screen Applications. Understanding Screen Orientation. Create Usable Hit States. Understanding Layout. 5 HANDLING INTERACTION. Create Button States. Respond to Touch Events. Track Multiple Touches. Respond to Zoom Events. Respond to Rotate Events. Respond to Pan Events. Respond to Swipe Events. Listen for Accelerometer Events. Determine If the Accelerometer Is Available. Determine Device Orientation. Detect Which Way Is Up. Filter Accelerometer Data. 6 WORKING WITH IMAGES. Prepare Your Images. Import Images. Display Images. Bundle Images with Your Application. Load Images at Runtime. Create Images Dynamically. Save Images to the Camera Roll. Select Images from the Camera Roll. Display the Camera. 7 WORKING WITH SOUND. Import Audio into Your Project. Choose an Audio Codec. Bundle Sounds with Your Application. Load Sounds at Runtime. Play Sounds. Stop Sounds. Set the Volume of a Sound. Visualize the Sound Spectrum. Access the Microphone. 8 WORKING WITH VIDEO. Explore Available Video Formats and Encode a Video File. Convert Videos. Embed a Video. Bundle a Video with Your Application. Load a Video. Buffer a Video. Control a Video. Set the Volume of a Video. 9 WORKING WITH TEXT. Embed Fonts in Your Application. Create an Input TextField. Create a Password TextField. Using TLF TextFields. Create a Scrollable TextField. 10 SAVING STATE. Create a Local SharedObject. Write to a SharedObject. Load Data from a SharedObject. Connect to a SQLite Database. Create a SQLite Table. Insert Data into a SQLite Table. Select Data from a SQLite Table. Update Data in a SQLite Table. Delete Data from a SQLite Table. Handle Application Exits. Save Application States. Handle Back and Menu Button Presses. Handle Application Deactivation. 11 WORKING WITH FILES. Reference Files and Directories. Write Files. Read Files. Update Files. Append Files. Handle Files Synchronously. Copy Files. Load SWF files. 12 USING THE LOCATION AND WIFI FEATURES. Retrieve Your Current Location. Map Your Location with Yahoo! Map Your Location with Google. Determine Your Speed. Check for an Internet Connection. Set the System Idle Mode. Display Web Pages. 13 USING SPECIAL URL PROTOCOLS. Make Phone Calls. Open the Mail Application. Open the Maps Application. Open the Messaging Application. Play a YouTube Video. 14 INTEGRATING WITH THIRD-PARTY SERVICES. Submit Updates to Twitter. Display Ads with Smaato. Track with Google Analytics. Display Ads with AdMob. 15 OPTIMIZING PERFORMANCE. Optimize Your Display List. Manage Mouse Events. Understanding cacheAsBitmap. Understanding cacheAsBitmapMatrix. 16 DEBUGGING YOUR APPLICATION. Show Your Trace Statements. Create Breakpoints. Using the Flash CS5 Debugger. Understanding the Debug Console. Understanding the Variables Panel. Debug with the Android Eclipse Plug-in. 17 DEPLOYING YOUR APPLICATION. Take Screenshots of Your Application on Your Device. Create an Application Icon. Publish Your Application for the Android Market. Upload Your Application to the Android Market. APPENDIX A ACTIONSCRIPT CLASS REFERENCE. INDEX.

    £22.94

  • Compiler Construction Using Java Javacc and Yacc

    John Wiley & Sons Inc Compiler Construction Using Java Javacc and Yacc

    Book SynopsisBroad in scope, involving theory, the application of that theory, and programming technology, compiler construction is a moving target, with constant advances in compiler technology taking place. Today, a renewed focus on do-it-yourself programming makes a quality textbook on compilers, that both students and instructors will enjoy using, of even more vital importance. This book covers every topic essential to learning compilers from the ground up and is accompanied by a powerful and flexible software package for evaluating projects, as well as several tutorials, well-defined projects, and test cases.Trade Review"Compiler Construction Using Java, JavaCC, and Yacc covers every topic essential to learning compilers from the ground up and is accompanied by a powerful and flexible software package for evaluating projects, as well as several tutorials, well-defined projects, and test cases." (Ulitzer, 5 December 2011) Table of ContentsPreface xv Chapter 1 Strings, Languages, and Compilers 1 1.1 Introduction 1 1.2 Basic Language Concepts 1 1.3 Basic Compiler Concepts 3 1.4 Basic Set Theory 4 1.5 Null String 6 1.6 Concatenation 7 1.7 Exponent Notation 7 1.8 Star Operator 8 1.9 Concatenation of Sets of Strings 9 1.10 Plus Operator 11 1.11 Question Mark Operator 11 1.12 Shorthand Notation for a Set Containing a Single String 12 1.13 Operator Precedence 12 1.14 Regular Expressions 13 1.15 Limitations of Regular Expressions 15 Problems 16 Chapter 2 Context-Free Grammars, Part 1 19 2.1 Introduction 19 2.2 What is a Context-Free Grammar? 20 2.3 Derivations Using a Context-Free Grammar 21 2.4 Language Defined by a Context-Free Grammar 23 2.5 Different Ways of Representing Contet-Free Grammars 25 2.6 Some Simple Grammars 26 2.7 Techniques for Generating Languages with Context-Free Grammars 29 2.8 Regular and Right Linear Grammars 35 2.9 Counting with Regular Grammars 37 2.0 Grammars for Lists 39 2.10 An Important Language that is Not Context Free 44 Problems 45 Chapter 3 Context-Free Grammars, Part 2 49 3.1 Introduction 49 3.2 Parse Trees 49 3.3 Leftmost and Rightmost Derivations 51 3.4 Substitution 52 3.5 Ambiguous Grammars 54 3.6 Determining Nullable Nonterminals 59 3.7 Eliminating Lambda Productions 60 3.8 Eliminating Unit Productions 64 3.9 Eliminating Useless Nonterminals 66 3.10 Recursion Conversions 71 3.11 Adding the Null String to a Language 76 Problems 77 Chapter 4 Context-Free Grammars, Part 3 83 4.1 Introduction 83 4.2 Grammars for Arithmetic Expressions 83 4.3 Specifying Associativity and Precedence in Grammars 90 4.4 Backus-Naur Form 92 4.5 Syntax Diagrams 94 4.6 Abstract Syntax Trees and Three-Address Code 96 4.7 Noncontracting Grammars 97 4.8 Essentially Noncontracting Grammars 97 4.9 Converting a Context-Free Grammar to an Essentially Noncontracting Grammar 98 4.10 Pumping Property of Context-Free Languages 101 Problems 104 Chapter 5 Chomsky’s Hierarchy 107 5.1 Introduction 107 5.2 Context-Sensitive Productions 107 5.3 Context-Sensitive Grammars no 5.4 Unrestricted Grammars 111 Problems 112 Chapter 6 Top-Down Parsing 115 6.1 Introduction 115 6.2 Top-Down Construction of a Parse Tree 115 6.3 Parses that Fail 117 6.4 A Bad Grammar for Top-Down Parsing 118 6.5 Deterministic Parsers 119 6.6 A Parser that Uses a Stack 120 6.7 Table Representation of a Stack Parser 124 6.8 Handling Productions with Nonleading Terminal 126 6.9 Writing a Stack Parser in Java 127 Problems 134 Chapter 7 LL(1) Grammars 137 7.1 Introduction 137 7.2 FIRST Set of the Right Side of a Production 137 7.3 Determining Operation Sequences 140 7.4 Determining Selection Sets of Lambda Productions 142 7.5 Whatever-Follows-Left-Follows-Rightmost Rule 145 7.6 Selection Sets for Productions with Nullable Right Sides 147 7.7 Selection Sets Containing End-of-Input Symbol 149 7.8 A Stack Parser for a Grammar with Lambda Productions 152 7.9 Converting a Non-LL( 1) Grammar to an LL( 1) Grammar 153 7.10 Parsing with an Ambiguous Grammar 160 7.11 Computing FIRST and FOLLOW Sets 163 Problems 165 Chapter 8 Table-Driven Stack Parser 171 8.1 Introduction 171 8.2 Unifying the Operations of a Stack Parser 172 8.3 Implementing a Table-Driven Stack Parser 175 8.4 Improving Our Table-Driven Stack Parser 180 8.5 Parsers that are Not Deterministic—A Digression on Theory 181 Problems 183 Chapter 9 Recursive-Descent Parsing 185 9.1 Introduction 185 9.2 Simple Recursive-Descent Parser 185 9.3 Handling Lambda Productions 192 9.4 A Common Error 197 9.5 Java Code for Productions 198 9.6 Left Factoring in a Recursive-Descent Parser 199 9.7 Eliminating Tail Recursion 204 9.8 Translating the Star, Plus, and Question Mark Operators 108 9.9 Doing Things Backward 210 Problems 211 Chapter 10 Recursive-Descent Translation 215 10.1 introduction 215 10.2 A Simple Translation Grammar 215 10.3 Converting a Translation Grammar to Java Code 217 10.4 Specifications for a Translation Grammar 218 10.5 Passing Information During a Parse 231 10.6 L-Attributed Grammars 236 10.7 New Token Manager 238 10.8 Solving the Token Lookahead Problem 241 10.9 Code for the New Token Manager 241 10.10 Translation Grammar for Prefix Expression Compiler 253 10.11 An Interesting Use of Recursion 257 Problems 261 Chapter 11 Assembly Language 265 11.1 Introduction 265 11.2 Structure of the J1 Computer 265 11.3 Machine Language Instructions 266 11.4 Assembly Language Instructions 268 11.5 Pushing Characters 269 11.6 aout Instruction 270 11.7 Using Labels 270 11.8 Using the Assembler 272 11.9 stav Instruction 275 11.10 Compiling an Assignment Statement 277 11.11 Compiling print and printin 280 11.12 Outputting Strings 28, 11.13 Inputting Decimal Numbers 283 11.14 Entry Directive 284 11.15 More Assembly Language 285 Problems 285 Chapter 12 SI—A Simple Compiler 289 12.1 Introduction 289 12.2 The Source Language 289 12.3 Grammar for Source Language 290 12.4 The Target Language 291 12.5 Symbol Table 292 12.6 Code Generator 293 12.7 Token Class 293 12.8 Writing the Translation Grammar 294 12.9 Implementing the SI Compiler 299 12.10 Trying Out SI 315 12.11 Advice on Extending the SI Compiler 318 12.12 Specifications for S2 320 Problems 324 Chapter 13 JavaCC 331 13.1 Introduction 331 13.2 JavaCC Extended Regular Expressions 333 13.3 JavaCC Input File 337 13.4 Specifying Actions for Regular Expressions 344 13.5 JavaCC Input File for Slj 348 13.6 Files Produced by JavaCC 355 13.7 Using the Star and Plus Operators 359 13.8 Choice Points and the Lookahead Directive 362 13.9 JavaCC’s Choice Algorithm 367 13.10 Syntactic and Semantic Lookahead 371 13.11 Using JavaCC to Create a Token Manager Only 372 13.12 Using the Token Chain 373 13.13 Suppressing Warning Messages 377 Problems 387 Chapter 14 Building on S2 383 14.1 Introduction 383 14.2 Extending println and print 383 14.3 Cascaded Assignment Statement 388 14.4 Unary Plus and Minus 313 14.5 readint Statement 393 14.6 Controlling the Token Trace from the Command Line 395 14.7 Specifications for S3 396 Problems 396 Chapter 15 Compiling Control Structures 399 15.1 Introduction 399 15.2 while Statement 399 15.3 if Statement 403 15.4 do-while Statement 407 15.5 Range Checking of Numerical Constants 408 15.6 Handling Backslash-Quote in a String 410 15.7 Handling Backslash-Quote with JavaCC 411 15.8 Universal Blocks in JavaCC 416 15.9 Handling Strings that Span Lines 418 15.10 Handling Strings that Span Lines Using JavaCC 419 15.11 SPECIAL_TOKEN Block in JavaCC 422 15.12 Error Recovery 424 15.13 Error Recovery in JavaCC 429 15.14 Specifications for S4 430 Problems 431 Chapter 16 Compiling Programs in Functional Form 435 16.1 Introduction 435 16.2 Separate Assembly and Linking 435 16.3 Calling and Returning from Fuctions 439 16.4 Source Language for S5 443 16.5 Symbol Table for S5 445 16.6 Code Generator for S5 446 16.7 Translation Grammar forS5 447 16.8 Linking with a Library 457 16.9 Specifications for S5 458 16.10 Extending S5 458 Problems 461 Chapter 17 Finite Automata 465 17.1 Introduction 465 17.2 Deterministic Finite Automata 466 17.3 Converting a DFA to a Regular Expression 468 17.4 Java Code for a DFA 472 17.5 Nondeterministic Finite Automata 474 17.6 Using an NFA as an Algorithm 476 17.7 Converting an NFA to a DFA with the Subset Algorithm 478 17.8 Converting a DFA to a Regular Grammar 479 17.9 Converting a Regular Grammar to an NFA 482  17.10 Converting a Regular Expression to an NF A 484 17.11 Finding the Minimal DFA 488 17.12 Pumping Property of Regular Languages 493 Problems 495 Chapter 18 Capstone Project: Implementing Grep Using Compiler Technology 499 18.1 Introduction 499 18.2 Regular Expressions for Our Grep Program 501 18.3 Token Manager for Regular Expression 501 18.4 Grammar for Regular Expressions 503 18.5 Target Language for Our Regular Expression Compiler 503 18.6 Using an NFA for Pattern Matching 508 Problems 513 Chapter 19 Compiling to a Register-Oriented Architecture 515 19.1 Introduction 515 19.2 Using the Register Instruction Set 516 19.3 Modifications to the Symbol Table for R1 517 19.4 Parser and Code Generator for R1 518 Problems 526 Chapter 20 Optimization 529 20.1 Introduction 529 20.2 Using the ldc Instruction 531 20.3 Reusing Temporary Variables 532 20.4 Constant Folding 535 20.5 Register Allocation 537 20.6 Peephole Optimization 540 Problems 543 Chapter 21 Interpreters 547 21.1 Introduction 547 21.2 Converting SI to 11 549 21.3 Interpreting Statements that Transfer Control 552 21.4 Implementing the Compiler-Interpreter Cl 1 553 21.5 Advantages of Interpreters 558 Problems 559 Chapter 22 Bottom-Up Parsing 561 22.1 Introduction 561 22.2 Principles of Bottom-Up Parsing 561 22.3 Parsing with Right- versus Left-Recursive Grammars 565 22.4 Bottom-Up Parsing with an Ambiguous Grammar 566 22.5 Do-Not-Reduce Rule 569 22.6 SLR(l) Parsing 570 22.7 Shift/Reduce Conflicts 577 22.8 Reduce/Reduce Conflicts 579 22.9 LR(1) Parsing 579 Problems 584 Chapter 23 yacc 587 23.1 Introduction 587 23.2 yacc Input and Output Files 587 23.3 A Simple yacc-Generated Parser 588 23.4 Passing Values Using the Value Stack 596 23.5 Using yacc With an Ambiguous Grammar 602 23.6 Passing Values down the Parse Tree 604 23.7 Implementing Sly 606 23.8 jflex 612 Problems 618 Appendix A Stack Instruction Set 621 Appendix B Register Instruction Set 625 References 629 Index

    £86.36

© 2026 Book Curl

    • American Express
    • Apple Pay
    • Diners Club
    • Discover
    • Google Pay
    • Maestro
    • Mastercard
    • PayPal
    • Shop Pay
    • Union Pay
    • Visa

    Login

    Forgot your password?

    Don't have an account yet?
    Create account