Search results for "Balancing Coupling in Software Design"
Items we need to order for you

Balancing Coupling in Software Design
Harness the Power of the Multi-Dimensional Coupling Model as a Tool for Architecting Modular, Evolvable Software Systems In this definitive guide, Vlad Khononov introduces a novel approach to designing modular software systems that turns coupling into a powerful design tool. Software, like all systems, is composed of components that interact to form the system itself. Coupling is the metric used to represent the interdependence between connected components, and the magnitude of coupling ultimately affects the adaptability and success of the software system. Balancing Coupling in Software Design surveys existing methods of evaluating coupling and combines them into a comprehensive model for making design decisions that manage complexity while increasing the modularity of your software system. Coupling is everywhere in software development. Whatever your job level or title, whether you are writing a function, designing an object model, or architecting distributed systems, this book is for you. Understand coupling and the ways it manifests itself in software designEvaluate the multi-dimensional forces of couplingUnderstand how the dimensions of coupling interact to impact your systemSteer your systems away from complexity and toward modularity The principles discussed in Balancing Coupling in Software Design are ubiquitously relevant in software engineering and will transform the way you think about software design.
R 1,064.00

Software Design
Software Design: Creating Solutions for Ill-Structured Problems, Third Edition provides a balanced view of the many and varied software design practices used by practitioners. The book provides a general overview of software design within the context of software development and as a means of addressing ill-structured problems. The third edition has been expanded and reorganised to focus on the structure and process aspects of software design, including architectural issues, as well as design notations and models. It also describes a variety of different ways of creating design solutions such as plan-driven development, agile approaches, patterns, product lines, and other forms.Features•Includes an overview and review of representation forms used for modelling design solutions•Provides a concise review of design practices and how these relate to ideas about software architecture•Uses an evidence-informed basis for discussing design concepts and when their use is appropriateThis book is suitable for undergraduate and graduate students taking courses on software engineering and software design, as well as for software engineers.AuthorDavid Budgen is a professor emeritus of software engineering at Durham University. His research interests include evidence-based software engineering (EBSE), software design, and healthcare informatics.
R 7,591.44

Design for Software
A unique resource to help software developers create a desirable user experience Today, top-flight software must feature a desirable user experience. This one-of-a-kind book creates a design process specifically for software, making it easy for developers who lack design background to create that compelling user experience. Appealing to both tech-savvy designers and creative-minded technologists, it establishes a hybrid discipline that will produce first-rate software. Illustrated in full color, it shows how to plan and visualize the design to create software that works on every level. Today's software demands attention to the quality of the user experience; this book guides you through a practical design process to achieve that goal Approaches the mechanics of design with a process inspired by art and science Avoids the abstract and moves step by step through techniques you can put to use immediately Covers planning your design, tested methods, how to visualize like a designer, psychology of design, and how to create software that developers will appreciate Explores such elements as choosing the right typeface and managing interactivity Design for Software: A Playbook for Developers brings the art of good design together with the science of software development to create programs with pizazz.
R 1,140.00

Designing Software Architectures
Learn how to create successful architectural designs and improve your current design practices! Designing Software Architectures, 2nd Edition, provides a practical, step-by-step methodology for architecture design that any professional software engineer can use, with structured methods supported by reusable chunks of design knowledge and rich case studies that demonstrate how to use the methods. The Attribute-Driven Design method may not have changed since this book's first printing, but almost everything else about the industry has. In this newly updated edition, you will find new chapters on supporting business agility through API-centric design, deployability, cloud-based solutions, and technical debt in design. Humberto Cervantes and Rick Kazman illuminate best practices for how architects should design complex systems so you can make design decisions in systematic, repeatable, and cost-effective ways. This book will help you become a better, more confident designer who can create high-quality architectures with ease. The new edition includes: A clear explanation of the Attribute-Driven Design methodNew chapters focused on the technical environments and contexts of contemporary designTwo new case studies on The Hotel Pricing System and Digital Twin PlatformCoverage of current architecture topics like cloud computing, DevOps, and large-scale systemsMethods to make architecture design agile and achievable Register your product at informit.com/register for convenient access to downloads, updates, and/or corrections as they become available.
R 1,791.00

Software Design
All Computer Scientists and Software Engineers need to understand software design, but until now there hasn't been one, complete, up-to-date guide to its theory and practice. Eric Braude's Software Design: From Programming to Architecture begins at the code level with programming issues such as robustness and flexibility in implementation. Increasing in abstraction and scope, the book then moves to mid-level issues, emphasizing a thorough understanding of standard design patterns and components. Finally, the book ends with high-level issues such as architectures, frameworks, and object-oriented analysis and design. In addition, the text contains a prologue on software process, making it versatile enough to use in a software engineering course.
R 4,471.00

Sustainable Dual-Track Development
Every decade or so, the software development community reinvents itself to address the dominant problems of the day. Agile methods reacted against slow, bureaucratic, documentation driven development. The next big shift reacts against unsustainable development practices. This book advances dual-track development as a unifying framework for the best way of designing great products (user-centered design), the best way of delivering software efficiently (agile methods), and strategies for balancing present and future needs (sustainable development). This book does not just recommend practices. It explains how to implement practices and the surprising science behind the practices, in an approachable, sometimes cheeky style. You won’t find a “Dual-track Master” telling you that you must do it exactly this way, otherwise you’re a sellout. Rather, this book describes a set of sociotechnical tools and gives advice for adapting these tools to your unique context.Welcome to the future of software engineering that you actually want: one that embracesclean code, hyper-productive programming, belongingness, empathy, environmental sustainability, economic feasibility, pro-social impact, and organizational justice.Todd Sedano, PhD (Carnegie Mellon University), enjoys creating inclusive engineering environments, empowering others to excel, and coaching others by listening and reframing from a growth mindset. He has more than 25 years of experience as a software engineer and engineering manager at leading organizations including NASA JPL, Pivotal Labs, VMware, Enjoy, Gusto, and ID.me. Todd has published scholarly articles on software development waste, agile teams, product backlogs, and dual-track development. His academic research became the foundation for this book. His current hobbies include riding roller coasters, improvisational theater, and American Kenpo. D. Paul Ralph, PhD (British Columbia), is an award-winning scientist, author, consultant, professor of Software Engineering and director of the Dalhousie Software Engineering Lab. His cutting-edge research at the intersection of software engineering, human-computer interaction, and project management investigates how to improve the environmental, social, economic, and technical sustainability of software development. Paul’s previous research has been published in over 100 peer-review articles and has been used by leading technology companies including Adobe, Amazon, AT&T, Canon, IBM, Google, HP, Microsoft, Netflix, Oracle, PayPal, Samsung, Salesforce, VMware, Yahoo!, and Walmart.
R 3,012.59


Software Design
Software Design: Creating Solutions for Ill-Structured Problems, Third Edition provides a balanced view of the many and varied software design practices used by practitioners. The book provides a general overview of software design within the context of software development and as a means of addressing ill-structured problems. The third edition has been expanded and reorganised to focus on the structure and process aspects of software design, including architectural issues, as well as design notations and models. It also describes a variety of different ways of creating design solutions such as plan-driven development, agile approaches, patterns, product lines, and other forms.Features•Includes an overview and review of representation forms used for modelling design solutions•Provides a concise review of design practices and how these relate to ideas about software architecture•Uses an evidence-informed basis for discussing design concepts and when their use is appropriateThis book is suitable for undergraduate and graduate students taking courses on software engineering and software design, as well as for software engineers.AuthorDavid Budgen is a professor emeritus of software engineering at Durham University. His research interests include evidence-based software engineering (EBSE), software design, and healthcare informatics.
R 2,969.47

Hardware/Software Co-Design
Introduction to Hardware-Software Co-Design presents a number of issues of fundamental importance for the design of integrated hardware software products such as embedded, communication, and multimedia systems. This book is a comprehensive introduction to the fundamentals of hardware/software co-design. Co-design is still a new field but one which has substantially matured over the past few years. This book, written by leading international experts, covers all the major topics including: fundamental issues in co-design; hardware/software co-synthesis algorithms; prototyping and emulation; target architectures; compiler techniques; specification and verification; system-level specification. Special chapters describe in detail several leading-edge co-design systems including Cosyma, LYCOS, and Cosmos. Introduction to Hardware-Software Co-Design contains sufficient material for use by teachers and students in an advanced course of hardware/software co-design. It also contains extensive explanation of the fundamental concepts of the subject and the necessary background to bring practitioners up-to-date on this increasingly important topic.
R 4,672.96

Collaborative Software Engineering
Collaboration among individuals – from users to developers – is central to modern software engineering. It takes many forms: joint activity to solve common problems, negotiation to resolve conflicts, creation of shared definitions, and both social and technical perspectives impacting all software development activity. The difficulties of collaboration are also well documented. The grand challenge is not only to ensure that developers in a team deliver effectively as individuals, but that the whole team delivers more than just the sum of its parts.The editors of this book have assembled an impressive selection of authors, who have contributed to an authoritative body of work tackling a wide range of issues in the field of collaborative software engineering. The resulting volume is divided into four parts, preceded by a general editorial chapter providing a more detailed review of the domain of collaborative software engineering. Part 1 is on "Characterizing Collaborative Software Engineering", Part 2 examines various "Tools and Techniques", Part 3 addresses organizational issues, and finally Part 4 contains four examples of "Emerging Issues in Collaborative Software Engineering".As a result, this book delivers a comprehensive state-of-the-art overview and empirical results for researchers in academia and industry in areas like software process management, empirical software engineering, and global software development. Practitioners working in this area will also appreciate the detailed descriptions and reports which can often be used as guidelines to improve their daily work.
R 3,059.80

Software by Design
This book provides a general examination of the critical role played by software and computer technology in the workplace. The authors assess the key social factors that contribute to workplace technology design, including organization structure, workplace relations, and market conditions. They then offer in-depth case studies to identify the factors that influence particular design decisions and the impact of these decisions on the quality and conduct of work,opportunities for skill development, and worker autonomy and satisfaction. The issue of technology design is addressed at both the theoretical and practical level, making this book an appealing aid for students as well as an insightful account for software designers, managers, and computer scienceengineers.
R 4,689.59

Collaborative Software Engineering
Collaboration among individuals – from users to developers – is central to modern software engineering. It takes many forms: joint activity to solve common problems, negotiation to resolve conflicts, creation of shared definitions, and both social and technical perspectives impacting all software development activity. The difficulties of collaboration are also well documented. The grand challenge is not only to ensure that developers in a team deliver effectively as individuals, but that the whole team delivers more than just the sum of its parts.The editors of this book have assembled an impressive selection of authors, who have contributed to an authoritative body of work tackling a wide range of issues in the field of collaborative software engineering. The resulting volume is divided into four parts, preceded by a general editorial chapter providing a more detailed review of the domain of collaborative software engineering. Part 1 is on "Characterizing Collaborative Software Engineering", Part 2 examines various "Tools and Techniques", Part 3 addresses organizational issues, and finally Part 4 contains four examples of "Emerging Issues in Collaborative Software Engineering".As a result, this book delivers a comprehensive state-of-the-art overview and empirical results for researchers in academia and industry in areas like software process management, empirical software engineering, and global software development. Practitioners working in this area will also appreciate the detailed descriptions and reports which can often be used as guidelines to improve their daily work.
R 3,058.91

Clean Apex Code
Many developers excel at building solutions in Apex but lack formal training in the core principles of professional software engineering. This book changes that and provides a no-nonsense guide for experienced Salesforce developers ready to master the art of software design. Pragmatic, approachable, and to the point, this book focuses on essential practices like modularity, coupling, cohesion, and testing--not just to write better code, but to improve how teams deliver software. By emphasizing object-oriented programming, dependency injection, and boundaries, it equips you to design systems that are easier to maintain, test, and scale. With fast, reliable tests as a cornerstone, you'll learn how great design enables true continuous integration and high-performance software delivery. Through actionable examples and clear explanations, you'll learn how to design better systems, reduce complexity, and create codebases that stand the test of time. If you're serious about your craft, Clean Apex Code will give you the tools and mindset to think like a professional software engineer and deliver software at a higher level. What You Will Learn Use better names in all software constructs to improve readability and maintainability Apply core software design principles to Apex development Embrace modularity, abstraction, and boundaries to simplify complex systems Leverage dependency injection, and mocking to write fast, modular tests Practice real continuous integration with reliable, high-speed testing Who This Book Is For Experienced Salesforce developers and professional software engineers
R 1,140.00

Resource Proportional Software Design for Emerging Systems
Efficiency is a crucial concern across computing systems, from the edge to the cloud. Paradoxically, even as the latencies of bottleneck components such as storage and networks have dropped by up to four orders of magnitude, software path lengths have progressively increased due to overhead from the very frameworks that have revolutionized the pace of information technology. Such overhead can be severe enough to overshadow the benefits from switching to new technologies like persistent memory and low latency interconnects.Resource Proportional Software Design for Emerging Systems introduces resource proportional design (RPD) as a principled approach to software component and system development that counters the overhead of deeply layered code without removing flexibility or ease of development. RPD makes resource consumption proportional to situational utility by adapting to diverse emerging needs and technology systems evolution.Highlights: Analysis of run-time bloat in deep software stacks, an under-explored source of power-performance wastage in IT systems Qualitative and quantitative treatment of key dimensions of resource proportionality Code features: Unify and broaden supported but optional features without losing efficiency Technology and systems evolution: Design software to adapt with changing trade-offs as technology evolves Data processing: Design systems to predict which subsets of data processed by an (analytics or ML) application are likely to be useful System wide trade-offs: Address interacting local and global considerations throughout software stacks and hardware including cross-layer co-design involving code, data and systems dimensions, and non-functional requirements such as security and fault tolerance Written from a systems perspective to explore RPD principles, best practices, models and tools in the context of emerging technologies and applications This book is primarily geared towards practitioners with some advanced topics for researchers. The principles shared in the book are expected to be useful for programmers, engineers and researchers interested in ensuring software and systems are optimized for existing and next generation technologies.The authors are from both industry (Bhattacharya and Voigt) and academic (Gopinath) backgrounds.
R 9,337.01

Software Design
This book is perhaps the first attempt to give full treatment to the topic of Software Design. It will facilitate the academia as well as the industry. This book covers all the topics of software design including the ancillary ones.
R 7,628.46



Practical Introduction to Hardware/Software Codesign
This textbook serves as an introduction to the subject of embedded systems design, with emphasis on integration of custom hardware components with software. The key problem addressed in the book is the following: how can an embedded systems designer strike a balance between flexibility and efficiency? The book describes how combining hardware design with software design leads to a solution to this important computer engineering problem. The book covers four topics in hardware/software codesign: fundamentals, the design space of custom architectures, the hardware/software interface and application examples. The book comes with an associated design environment that helps the reader to perform experiments in hardware/software codesign. Each chapter also includes exercises and further reading suggestions. Improvements in this second edition include labs and examples using modern FPGA environments from Xilinx and Altera, which will make the material in this book applicable to a greater number of courses where these tools are already in use. More examples and exercises have been added throughout the book. “If I were teaching a course on this subject, I would use this as a resource and text. If I were a student who wanted to learn codesign, I would look for a course that at least used a similar approach. If I were an engineer or engineering manager who wanted to learn more about codesign from a very practical perspective, I would read this book first before any other. When I first started learning about codesign as a practitioner, a book like this would have been the perfect introduction.” --Grant Martin, Tensilica--
R 3,339.47


Practical Introduction to Hardware/Software Codesign
This textbook serves as an introduction to the subject of embedded systems design, with emphasis on integration of custom hardware components with software. The key problem addressed in the book is the following: how can an embedded systems designer strike a balance between flexibility and efficiency? The book describes how combining hardware design with software design leads to a solution to this important computer engineering problem. The book covers four topics in hardware/software codesign: fundamentals, the design space of custom architectures, the hardware/software interface and application examples. The book comes with an associated design environment that helps the reader to perform experiments in hardware/software codesign. Each chapter also includes exercises and further reading suggestions. Improvements in this second edition include labs and examples using modern FPGA environments from Xilinx and Altera, which will make the material in this book applicable to a greater number of courses where these tools are already in use. More examples and exercises have been added throughout the book. “If I were teaching a course on this subject, I would use this as a resource and text. If I were a student who wanted to learn codesign, I would look for a course that at least used a similar approach. If I were an engineer or engineering manager who wanted to learn more about codesign from a very practical perspective, I would read this book first before any other. When I first started learning about codesign as a practitioner, a book like this would have been the perfect introduction.” --Grant Martin, Tensilica--
R 2,532.17

C++ Software Design
Good software design is essential for the success of your project, but designing software is hard to do. You need to have a deep understanding of the consequences of design decisions and a good overview of available design alternatives. With this book, experienced C++ developers will get a thorough, practical, and unparalleled overview of software design with this modern language.C++ trainer and consultant Klaus Iglberger explains how you can manage dependencies and abstractions, improve changeability and extensibility of software entities, and apply and implement modern design patterns to help you take advantage of today's possibilities. Design is the most essential aspect of a software project because it impacts the software's most important properties: maintainability, changeability, and extensibility.Learn how to evaluate your code with respect to software designUnderstand what software design is, including design goals such as changeability and extensibilityExplore the advantages and disadvantages of each design approachLearn how design patterns help solve problems and express intentChoose the right form of a design pattern to gain most of its advantages
R 1,824.00

Software Engineering Design
Taking a learn-by-doing approach, Software Engineering Design: Theory and Practice uses examples, review questions, chapter exercises, and case study assignments to provide students and practitioners with the understanding required to design complex software systems. Explaining the concepts that are immediately relevant to software designers, it begins with a review of software design fundamentals.The text presents a formal top-down design process that consists of several design activities with varied levels of detail, including the macro-, micro-, and construction-design levels. As part of the top-down approach, it provides in-depth coverage of applied architectural, creational, structural, and behavioral design patterns. For each design issue covered, it includes a step-by-step breakdown of the execution of the design solution, along with an evaluation, discussion, and justification for using that particular solution. The book outlines industry-proven software design practices for leading large-scale software design efforts, developing reusable and high-quality software systems, and producing technical and customer-driven design documentation. It also:Offers one-stop guidance for mastering the Software Design & Construction sections of the official Software Engineering Body of Knowledge (SWEBOK®)Details a collection of standards and guidelines for structuring high-quality codeDescribes techniques for analyzing and evaluating the quality of software designs Collectively, the text supplies comprehensive coverage of the software design concepts students will need to succeed as professional design leaders. The section on engineering leadership for software designers covers the necessary ethical and leadership skills required of software developers in the public domain. The section on creating software design documents (SDD) familiarizes students with the software design notations, structural descriptions, and behavioral models required for SDDs.Course notes, exercises with answers, online resources, and an instructor’s manual are available upon qualified course adoption. Instructors can contact the author about these resources via the author's website: http://softwareengineeringdesign.com/
R 4,236.68

R 641.00

Scientific Software Design
The authors analyze how the structure of a package determines its developmental complexity according to such measures as bug search times and documentation information content. The work presents arguments for why these issues impact solution cost and time more than does scalable performance. The final chapter explores the question of scalable execution and shows how scalable design relates to scalable execution. The book's focus is on program organization, which has received considerable attention in the broader software engineering community, where graphical description standards for modeling software structure and behavior have been developed by computer scientists. These discussions might be enriched by engineers who write scientific codes. This book aims to bring such scientific programmers into discussion with computer scientists. The authors do so by introducing object-oriented software design patterns in the context of scientific simulation.
R 3,679.29

Introduction to Software Design
This textbook provides a balanced coverage on software design, including design principles, methodologies, and techniques in contexts of designing modules of small and larger sizes with a multi-paradigm viewpoint emphasizing design trade-off. Commonly used design diagrams and patterns are also covered in terms of the design ideas behind and their effective use. The book also explores what (software) design thinking is, the role it plays in a design process, and ways to promote it. Despite object orientation being still the center of attention, there is a strong promotion throughout the book that software design should consider all appropriate design paradigms and methodologies.The book is organized in 10 chapters. Chapter 1 is dedicated to an exploration of what software design may be and entail. Next, chapters 2 and 3 are designed to help readers better understand object orientation, and the essentials of object-oriented design. Chapter 4 is then dedicated to the design of methods, while chapters 5, 6, and 8 respectively include topics about the design of objects, modeling with the Unified Modeling Language, and the use of design patterns. Larger software elements are often directly responsible for the formation of software architecture, thus chapter 7 covers four kinds of larger software elements: libraries, components, frameworks, and microservices, and their architectural implications. Chapter 9 finally brings the presentation of software design to an end with a coverage on software architecture focusing on software architectural views. Case studies are important in learning how to design software, hence chapter 10 then gathers some small design case studies that can be used in earlier chapters as appropriate. These case studies can be extended in different ways to provide additional design opportunities.This textbook book is intended for a junior level undergraduate course on software design, yet the depth of the book makes it also appropriate for a design course at beginning graduate level. Professionals may also find the book useful in their professional development.
R 2,834.54

Process Algebraic Approach to Software Architecture Design
Inthe?eldofformalmethodsincomputerscience,concurrencytheoryisreceivinga constantlyincreasinginterest.Thisisespeciallytrueforprocessalgebra.Althoughit had been originally conceived as a means for reasoning about the semantics of c- current programs, process algebraic formalisms like CCS, CSP, ACP, ?-calculus, and their extensions (see, e.g., [154,119,112,22,155,181,30]) were soon used also for comprehendingfunctionaland nonfunctionalaspects of the behaviorof com- nicating concurrent systems. The scienti?c impact of process calculi and behavioral equivalences at the base of process algebra is witnessed not only by a very rich literature. It is in fact worth mentioningthe standardizationprocedurethat led to the developmentof the process algebraic language LOTOS [49], as well as the implementation of several modeling and analysis tools based on process algebra, like CWB [70] and CADP [93], some of which have been used in industrial case studies. Furthermore, process calculi and behavioral equivalencesare by now adopted in university-levelcourses to teach the foundations of concurrent programming as well as the model-driven design of concurrent, distributed, and mobile systems. Nevertheless, after 30 years since its introduction, process algebra is rarely adopted in the practice of software development. On the one hand, its technica- ties often obfuscate the way in which systems are modeled. As an example, if a process term comprises numerous occurrences of the parallel composition operator, it is hard to understand the communicationscheme among the varioussubterms. On the other hand, process algebra is perceived as being dif?cult to learn and use by practitioners, as it is not close enough to the way they think of software systems.
R 1,558.70

Unterstützung von partizipativer Systementwicklung durch Methoden des Software Engineering
Das Landesprogramm "Mensch und Technik - Sozialvertragliche Technikgestaltung", fiir das die Landesregierung im Zeitraum von 1984 bis 1988 insgesamt 60 Mio. DM zur Verfiigung stellt, solI Risiken und Chancen der Technikentwicklung und des Einsatzes der Mikroelektronik und der modernen Informations- und Kommunika- tionstechniken offenlegen und zugleich Handlungsmoglichkeiten fur eine "sozial- vertragliche Technikgestaltung" aufzeigen. An dieser umfassenden und zugleich angesichts des okonomisch-technischen Strukturwandels notwendigen Aufgabe sind derzeit mehr als 100 Forschungs- und Gestaltungsprojekte in Arbeit. Das ambitionierte Programm einer sozialvertraglichen Technikgestaltung wird aller- dings mittelfristig nur dann erfolgreich sein konnen, wenn es gelingt, die Grund- ideen einer sozialvertraglichen Technikgestaltung zu verbreiten und auf moglichst vielfii.ltiger Form in den Betrieben, Verwaltungen und anderen Organisation en zu verwirklichen. Aus diesem Grund haben wir im Jahre 1987 einen "Wettbewerb zur Forderung des wissenschaftlichen Nachwuchses in Nordrhein-Westfalen" ausgeschrieben, urn auf diesem Wege Studentinnen und Studenten und Nachwuchswissenschaftler anzu- regen, sich mit der Themenstellung sozialvertraglicher Technikgestaltung intensiver zu befassen.
R 1,947.24

R 1,223.71

Design Patterns in Communications Software
This is the definitive compendium of design patterns in communication software, gathered together by Linda Rising, Ph.D., a recognized leader in the field. Contributors include James O. Coplien, Douglas C. Schmidt, Robert Hanmer, Greg Utas, Just van den Broecke, Don Olson, Carlos O'Ryan, Christopher D. Gill, and other experts from the patterns community. This is the ideal reference for engineers and other professionals working in the field of communications software development.
R 5,347.70

Practitioner's Guide to Software Test Design
A comprehensive, up-to-date and practical introduction to software test design. This book presents all the important test design techniques in a single place and in a consistent and easy-to-digest format. An immediately useful handbook for test engineers, developers, quality assurance professionals and requirements and systems analysts, it enables you to: choose the best test case design; find software defects in less time and with fewer resources; and develop optimal strategies that help reduce the likelihood of costly errors. It also assists you in estimating the effort, time and cost of good testing. Numerous case studies and examples of software testing techniques are included, helping you to fully understand the practical applications of these techniques. From well-established techniques such as equivalence classes, boundary value analysis, decision tables and state-transition diagrams, to new techniques like use case testing, pairwise testing and exploratory testing, the book is a usful resource for testing professionals seeking to improve their skills and a handy reference for college-level courses in software test design.
R 2,872.00

Software Modeling and Design
This book covers all you need to know to model and design software applications from use cases to software architectures in UML and shows how to apply the COMET UML-based modeling and design method to real-world problems. The author describes architectural patterns for various architectures, such as broker, discovery, and transaction patterns for service-oriented architectures, and addresses software quality attributes including maintainability, modifiability, testability, traceability, scalability, reusability, performance, availability, and security. Complete case studies illustrate design issues for different software architectures: a banking system for client/server architecture, an online shopping system for service-oriented architecture, an emergency monitoring system for component-based software architecture, and an automated guided vehicle for real-time software architecture. Organized as an introduction followed by several short, self-contained chapters, the book is perfect for senior undergraduate or graduate courses in software engineering and design, and for experienced software engineers wanting a quick reference at each stage of the analysis, design, and development of large-scale software systems.
R 4,491.71



Software Engineering Approaches for Offshore and Outsourced Development
Majoreconomicupheavalscanhavethesortofe?ectthatSchumpeterforesaw60 yearsagoascreativedestruction.Inscienceandtechnology,equivalentupheavals resultfromeitherscienti?crevolutions(asobservedbyKuhn)ortheintroduction of what Christensen calls disruptive technologies. And in software engineering, there has been no technology more disruptive than outsourcing. That it should so quickly reach maturity and an unparalleled scale is truly remarkable; that it should now be called to demonstrate its sustainability in the current ?nancial turmoil is the challenge that will prove whether and how it will endure. Early signs under even the bleak market conditions of the last 12 months are that it will not only survive, it will ?rmly establish its role across the world of business. Outsourcing throws into sharp focus the entire software engineering life- cle. Topics as diverse as requirements analysis, concurrency and model-checking need to ?nd a composite working partnership in software engineering practice. This con?uence arises from need, not dogma, and the solutions required are those that will have the right e?ect on the associated activities in the world of the application: e.g., reducing the time for a transaction or making the results of a complex analysis available in real-time. While the business of outsourcing continues to be studied, the engineering innovations that make it compelling are constantly changing. It is in this milieu that this series of conferences has placed itself.
R 1,544.04

R 1,099.00

Codesign of Embedded Systems: A Unified Hardware/Software Representation
Current practice dictates the separation of the hardware and software development paths early in the design cycle. These paths remain independent with very little interaction occurring between them until system integration. In particular, hardware is often specified without fully appreciating the computational requirements of the software. Also, software development does not influence hardware development and does not track changes made during the hardware design phase. Thus, the ability to explore hardware/software tradeoffs is restricted, such as the movement of functionality from the software domain to the hardware domain (and vice-versa) or the modification of the hardware/software interface. As a result, problems that are encountered during system integration may require modification of the software and/or hardware, resulting in potentially significant cost increases and schedule overruns. To address the problems described above, a cooperative design approach, one that utilizes a unified view of hardware and software, is described. This approach is called hardware/software codesign. The Codesign of Embedded Systems develops several fundamental hardware/software codesign concepts and a methodology that supports them. A unified representation, referred to as a decomposition graph, is presented which can be used to describe hardware or software using either functional abstractions or data abstractions. Using a unified representation based on functional abstractions, an abstract hardware/software model has been implemented in a common simulation environment called ADEPT (Advanced Design Environment Prototyping Tool). This model permits early hardware/software evaluation and tradeoff exploration. Techniques have been developed which support the identification of software bottlenecks and the evaluation of design alternatives with respect to multiple metrics. The application of the model is demonstrated on several examples. A unified representation based on data abstractions is also explored. This work leads to investigations regarding the application of object-oriented techniques to hardware design. The Codesign of Embedded Systems: A Unified Hardware/Software Representation describes a novel approach to a topic of immense importance to CAD researchers and designers alike.
R 6,002.01

Design Thinking for Software Engineering
This book explores the possibility of integrating design thinking into today’s technical contexts. Despite the popularity of design thinking in research and practice, this area is still too often treated in isolation without a clear, consistent connection to the world of software development.The book presents design thinking approaches and experiences that can facilitate the development of software-intensive products and services. It argues that design thinking and related software engineering practices, including requirements engineering and user-centric design (UX) approaches, are not mutually exclusive. Rather, they provide complementary methods and tools for designing software-intensive systems with a human-centric approach.Bringing together prominent experts and practitioners to share their insights, approaches and experiences, the book sheds new light on the specific interpretations and meanings of design thinking in various fields such as engineering, management, and information technology. As such, it provides a framework for professionals to demonstrate the potential of design thinking for software development, while offering academic researchers a roadmap for further research.
R 4,914.00

Software Paradigms
Software Paradigms provides the first complete compilation of software paradigms commonly used to develop large software applications, with coverage ranging from discrete problems to full-scale applications. The book focuses on providing a structure for understanding a hierarchy of software development approaches, and showing the relationships between the different models. Coverage includes paradigms in design patterns, software components, software architectures, and frameworks. Chapters within each of these sections include design issues related to building and using the paradigm as well as numerous real world applications. A practical overview of the hierarchy of development paradigms, Software Paradigms is an excellent teaching tool for undergraduates and graduates, and a comprehensive and reliable reference for software engineers.
R 5,990.00

R 2,595.00

Applications and Approaches to Object-Oriented Software Design
In today's modernized environment, a growing number of software companies are changing their traditional engineering approaches in response to the rapid development of computing technologies. As these businesses adopt modern software engineering practices, they face various challenges including the integration of current methodologies and contemporary design models and the refactoring of existing systems using advanced approaches. Applications and Approaches to Object-Oriented Software Design: Emerging Research and Opportunities is a pivotal reference source that provides vital research on the development of modern software practices that impact maintenance, design, and developer productivity. While highlighting topics such as augmented reality, distributed computing, and big data processing, this publication explores the current infrastructure of software systems as well as future advancements. This book is ideally designed for software engineers, IT specialists, data scientists, business professionals, developers, researchers, students, and academicians seeking current research on contemporary software engineering methods.
R 6,380.53

Transactions on Pattern Languages of Programming V
The Transactions on Pattern Languages of Programming subline aims to publish papers on patterns and pattern languages as applied to software design, development, and use, throughout all phases of the software life cycle, from requirements and design to implementation, maintenance and evolution. The primary focus of this LNCS Transactions subline is on patterns, pattern collections, and pattern languages themselves. The journal also includes reviews, survey articles, criticisms of patterns and pattern languages, as well as other research on patterns and pattern languages.This book, the fifth volume in the Transactions on Pattern Languages of Programming series, includes papers on patterns and pattern languages for engineering specific kinds of application and for improving processes, as well as papers on the discovery, validation, and systemic use of patterns more broadly.
R 3,855.65

Hardware/Software Co-Design and Co-Verification
Co-Design is the set of emerging techniques which allows for the simultaneous design of Hardware and Software. In many cases where the application is very demanding in terms of various performances (time, surface, power consumption), trade-offs between dedicated hardware and dedicated software are becoming increasingly difficult to decide upon in the early stages of a design. Verification techniques - such as simulation or proof techniques - that have proven necessary in the hardware design must be dramatically adapted to the simultaneous verification of Software and Hardware. Describing the latest tools available for both Co-Design and Co-Verification of systems, Hardware/Software Co-Design and Co-Verification offers a complete look at this evolving set of procedures for CAD environments. The book considers all trade-offs that have to be made when co-designing a system. Several models are presented for determining the optimum solution to any co-design problem, including partitioning, architecture synthesis and code generation. When deciding on trade-offs, one of the main factors to be considered is the flow of communication, especially to and from the outside world. This involves the modeling of communication protocols. An approach to the synthesis of interface circuits in the context of co-design is presented. Other chapters present a co-design oriented flexible component data-base and retrieval methods; a case study of an ethernet bridge, designed using LOTOS and co-design methodologies and finally a programmable user interface based on monitors. Hardware/Software Co-Design and Co-Verification will help designers and researchers to understand these latest techniques in system design and as such will be of interest to all involved in embedded system design.
R 5,982.75


Hardware/Software Co-Design
Concurrent design, or co-design of hardware and software is extremely important for meeting design goals, such as high performance, that are the key to commercial competitiveness. Hardware/Software Co-Design covers many aspects of the subject, including methods and examples for designing: (1) general purpose and embedded computing systems based on instruction set processors; (2) telecommunication systems using general purpose digital signal processors as well as application specific instruction set processors; (3) embedded control systems and applications to automotive electronics. The book also surveys the areas of emulation and prototyping systems with field programmable gate array technologies, hardware/software synthesis and verification, and industrial design trends. Most contributions emphasize the design methodology, the requirements and state of the art of computer aided co-design tools, together with current design examples.
R 10,340.00

Facilitating Software Architecture
The software architect role is evolving. As systems and distributed teams become more complex, it's often impossible for architects to be everywhere they need to be. To be effective, consultants and in-house architects alike have to move constantly from client to client or team to team to collaborate and work with code. And the situation is reaching a breaking point. There's a better way. Andrew Harmel-Law, tech principal at Thoughtworks, shows you how architects and development teams can collaborate effectively and efficiently on the architectures of their systems. Techniques in this book help you ensure that everyone and everything is working toward the same goal. You'll learn how to create a collaborative, decentralized mindset that allows everyone to do architecture and build the best systems they've ever experienced. With this book, you will: Understand the new dynamics that affect modern software delivery and how to take advantage of them to optimize for fast flow and continuous feedback Learn a methodology that brings software architecture and development together in partnership Nurture the fundamental interplay of decisions, advice, autonomy, and architecture Initiate practices and constraints that maximize benefits and mitigate risks Create an approach tuned to your skill sets, architecture, and your organization's engineering culture Identify and work to prevent failure modes when they threaten to arise
R 1,596.00

Systems and Software Variability Management
The success of product line engineering techniques in the last 15 years has popularized the use of software variability as a key modeling approach for describing the commonality and variability of systems at all stages of the software lifecycle. Software product lines enable a family of products to share a common core platform, while allowing for product specific functionality being built on top of the platform. Many companies have exploited the concept of software product lines to increase the resources that focus on highly differentiating functionality and thus improve their competitiveness with higher quality and reusable products and decreasing the time-to-market condition. Many books on product line engineering either introduce specific product line techniques or include brief summaries of industrial cases. From these sources, it is difficult to gain a comprehensive understanding of the various dimensions and aspects of software variability. Here the editors address this gap by providing a comprehensive reference on the notion of variability modeling in the context of software product line engineering, presenting an overview of the techniques proposed for variability modeling and giving a detailed perspective on software variability management. Their book is organized in four main parts, which guide the reader through the various aspects and dimensions of software variability. Part 1 which is mostly written by the editors themselves introduces the major topics related to software variability modeling, thus providing a multi-faceted view of both technological and management issues. Next, part 2 of the book comprises four separate chapters dedicated to research and commercial tools. Part 3 then continues with the most practical viewpoint of the book presenting three different industry cases on how variability is managed in real industry projects. Finally, part 4 concludes the book and encompasses six different chapters on emerging research topics in software variability like e.g. service-oriented or dynamic software product lines, or variability and aspect orientation.Each chapter briefly summarizes “What you will learn in this chapter”, so both expert and novice readers can easily locate the topics dealt with. Overall, the book captures the current state of the art and best practices, and indicates important open research challenges as well as possible pitfalls. Thus it serves as a reference for researchers and practitioners in software variability management, allowing them to develop the next set of solutions, techniques and methods in this complicated and yet fascinating field of software engineering.
R 3,993.00

Foundations of Parallel Programming
The major reason for the lack of use of parallel computing is the mismatch between the complexity and variety of parallel hardware, and the software development tools to program it. The cost of developing software needs to be amortised over decades, but the platforms on which it executes change every few years, requiring complete rewrites. The evident cost-effectiveness of parallel computation has not been realized because of this mismatch. This book presents an integrated approach to parallel software development by addressing both software and performance issues together. It presents a methodology for software construction that produces architecture-independent and intellectually abstract software. The software can execute efficiently on a range of existing and potential hardware configurations. The approach is based on the construction of categorical data types, a generalization of abstract data types, and of objects. Categorical data types abstract both from the representation of a data type, and also from the detailed control flow necessary to perform operations on it. They thus impose a strong separation between the semantics, on which programs can depend, and the implementation, which is therefore free to hide the parallel machine properties that are used.
R 2,039.31















































