Guide to Efficient Software Design


Book Description

This classroom-tested textbook presents an active-learning approach to the foundational concepts of software design. These concepts are then applied to a case study, and reinforced through practice exercises, with the option to follow either a structured design or object-oriented design paradigm. The text applies an incremental and iterative software development approach, emphasizing the use of design characteristics and modeling techniques as a way to represent higher levels of design abstraction, and promoting the model-view-controller (MVC) architecture. Topics and features: provides a case study to illustrate the various concepts discussed throughout the book, offering an in-depth look at the pros and cons of different software designs; includes discussion questions and hands-on exercises that extend the case study and apply the concepts to other problem domains; presents a review of program design fundamentals to reinforce understanding of the basic concepts; focuses on a bottom-up approach to describing software design concepts; introduces the characteristics of a good software design, emphasizing the model-view-controller as an underlying architectural principle; describes software design from both object-oriented and structured perspectives; examines additional topics on human-computer interaction design, quality assurance, secure design, design patterns, and persistent data storage design; discusses design concepts that may be applied to many types of software development projects; suggests a template for a software design document, and offers ideas for further learning. Students of computer science and software engineering will find this textbook to be indispensable for advanced undergraduate courses on programming and software design. Prior background knowledge and experience of programming is required, but familiarity in software design is not assumed.




Documenting Software Architectures


Book Description

Software architecture—the conceptual glue that holds every phase of a project together for its many stakeholders—is widely recognized as a critical element in modern software development. Practitioners have increasingly discovered that close attention to a software system’s architecture pays valuable dividends. Without an architecture that is appropriate for the problem being solved, a project will stumble along or, most likely, fail. Even with a superb architecture, if that architecture is not well understood or well communicated the project is unlikely to succeed. Documenting Software Architectures, Second Edition, provides the most complete and current guidance, independent of language or notation, on how to capture an architecture in a commonly understandable form. Drawing on their extensive experience, the authors first help you decide what information to document, and then, with guidelines and examples (in various notations, including UML), show you how to express an architecture so that others can successfully build, use, and maintain a system from it. The book features rules for sound documentation, the goals and strategies of documentation, architectural views and styles, documentation for software interfaces and software behavior, and templates for capturing and organizing information to generate a coherent package. New and improved in this second edition: Coverage of architectural styles such as service-oriented architectures, multi-tier architectures, and data models Guidance for documentation in an Agile development environment Deeper treatment of documentation of rationale, reflecting best industrial practices Improved templates, reflecting years of use and feedback, and more documentation layout options A new, comprehensive example (available online), featuring documentation of a Web-based service-oriented system Reference guides for three important architecture documentation languages: UML, AADL, and SySML




Systems Analysis and Design


Book Description

The 4th edition of Systems Analysis and Design continues to offer a hands-on approach to SA&D while focusing on the core set of skills that all analysts must possess. Building on their experience as professional systems analysts and award-winning teachers, authors Dennis, Wixom, and Roth capture the experience of developing and analyzing systems in a way that students can understand and apply. With Systems Analysis and Design, 4th edition, students will leave the course with experience that is a rich foundation for further work as a systems analyst.




Advanced Game Design


Book Description

In Advanced Game Design, pioneering game designer and instructor Michael Sellers situates game design practices in a strong theoretical framework of systems thinking, enabling designers to think more deeply and clearly about their work, so they can produce better, more engaging games for any device or platform. Sellers offers a deep unifying framework in which practical game design best practices and proven systems thinking theory reinforce each other, helping game designers understand what they are trying to accomplish and the best ways to achieve it. Drawing on 20+ years of experience designing games, launching game studios, and teaching game design, Sellers explains: What games are, and how systems thinking can help you think about them more clearly How to systematically promote engagement, interactivity, and fun What you can learn from MDA and other game design frameworks How to create gameplay and core loops How to design the entire player experience, and how to build game mechanics that work together to create that experience How to capture your game’s “big idea” and Unique Selling Proposition How to establish high-level and background design and translate it into detailed design How to build, playtest, and iterate early prototypes How to build your game design career in a field that keeps changing at breakneck speed







Document Design


Book Description

The technological revolution of the last ten years has radically changed document designers' materials, processes, and tools of the trade. In short, choices about everything from typography and color to planning and production have changed -- even multiplied. The first new text for the college market in ten years, Kimball and Hawkins' Document Design assumes from the start that students are working online to produce a fuller range of print and online documents, designed and delivered differently in a digital world. Through practical, accessible advice and examples, Kimball and Hawkins lay out the array of elements and choices that document designers need to consider, all in the context of a rhetorical framework that allows students to see the effects of those choices. The only text to integrate a range of theoretical perspectives, visual perception, visual culture, and visual rhetoric, Document Design teaches students to think more critically about their own design decisions and to keep usability in mind every step of the way. True to its message, this artfully designed text practices the principles it teaches and is sure to become a reference that students will keep.




Design for Software


Book Description

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.




A Philosophy of Software Design


Book Description

"This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly and cheaply."--Amazon.







Getting Started with CouchDB


Book Description

CouchDB is a new breed of database for the Internet, geared to meet the needs of today's dynamic web applications. With this concise introduction, you'll learn how CouchDB's simple model for storing, processing, and accessing data makes it ideal for the type of data and rapid response users now demand from your applications--and how easy CouchDB is to set up, deploy, maintain, and scale. The code-packed examples in this book will help you learn how to work with documents, populate a simple database, replicate data from one database to another, and a host of other tasks. Install CouchDB on Linux, Mac OS X, Windows, or (if you must) from the source code Interact with data through CouchDB's RESTful API, and use standard HTTP operations, such as PUT, GET, POST, and DELETE Use Futon--CouchDB's web-based interface-- to manage databases and documents, and to configure replications Learn how to create, update, and delete documents in JSON format, and how to create and delete databases Work with design documents to get the formatting and indexing your application requires