"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.
This book is a critical introduction to code and software that develops an understanding of its social and philosophical implications in the digital age. Written specifically for people interested in the subject from a non-technical background, the book provides a lively and interesting analysis of these new media forms.
"This book offers a high interdisciplinary exchange of ideas pertaining to the philosophy of computer science, from philosophical and mathematical logic to epistemology, engineering, ethics or neuroscience experts and outlines new problems that arise with new tools"--Provided by publisher.
With this practical book, architects, CTOs, and CIOs will learn a set of patterns for the practice of architecture, including analysis, documentation, and communication. Author Eben Hewitt shows you how to create holistic and thoughtful technology plans, communicate them clearly, lead people toward the vision, and become a great architect or Chief Architect. This book covers each key aspect of architecture comprehensively, including how to incorporate business architecture, information architecture, data architecture, application (software) architecture together to have the best chance for the system’s success. Get a practical set of proven architecture practices focused on shipping great products using architecture Learn how architecture works effectively with development teams, management, and product management teams through the value chain Find updated special coverage on machine learning architecture Get usable templates to start incorporating into your teams immediately Incorporate business architecture, information architecture, data architecture, and application (software) architecture together
The cultural and philosophical study of software is crucial, both within and outside of the university, at an international level and across disciplines. Software is increasingly considered the focus of digital media studies because of the perceived need to address the invisibility, ubiquity, and power of digital media. Yet software remains quite obscure to students and scholars in media studies, the social sciences, and the humanities. This unique book engages directly in close readings of technical texts and computer code in order to show how software works and in what sense it can be considered constitutive of culture and even of human thought. Federica Frabetti combines this with an engagement with thinkers such as Bernard Steigler and Jacques Derrida to problematize the very nature of the conceptual system on which software is based and which has shaped its historical evolution. The book argues for a radical demystification of software and digital technologies by addressing the mystery that surrounds its function and that affects our comprehension of its relationship between technology, philosophy, culture, and society.
The philosophy of computer science is concerned with issues that arise from reflection upon the nature and practice of the discipline of computer science. This book presents an approach to the subject that is centered upon the notion of computational artefact. It provides an analysis of the things of computer science as technical artefacts. Seeing them in this way enables the application of the analytical tools and concepts from the philosophy of technology to the technical artefacts of computer science. With this conceptual framework the author examines some of the central philosophical concerns of computer science including the foundations of semantics, the logical role of specification, the nature of correctness, computational ontology and abstraction, formal methods, computational epistemology and explanation, the methodology of computer science, and the nature of computation. The book will be of value to philosophers and computer scientists.
If all philosophy starts with wondering, then Calculated Surprises starts with wondering about how computers are changing the face and inner workings of science. In this book, Lenhard concentrates on the ways in which computers and simulation are transforming the established conception of mathematical modeling. His core thesis is that simulation modeling constitutes a new mode of mathematical modeling that rearranges and inverts key features of the established conception. Although most of these new key features--such as experimentation, exploration, or epistemic opacity--have their precursors, the new ways in which they are being combined is generating a distinctive style of scientific reasoning. Lenhard also documents how simulation is affecting fundamental concepts of solution, understanding, and validation. He feeds these transformations back into philosophy of science, thereby opening up new perspectives on longstanding oppositions. By combining historical investigations with practical aspects, Calculated Surprises is accessible for a broad audience of readers. Numerous case studies covering a wide range of simulation techniques are balanced with broad reflections on science and technology. Initially, what computers are good at is calculating with a speed and accuracy far beyond human capabilities. Lenhard goes further and investigates the emerging characteristics of computer-based modeling, showing how this simple observation is creating a number of surprising challenges for the methodology and epistemology of science. These calculated surprises will attract both philosophers and scientific practitioners who are interested in reflecting on recent developments in science and technology.
Right Your Software and Transform Your Career Righting Software presents the proven, structured, and highly engineered approach to software design that renowned architect Juval Löwy has practiced and taught around the world. Although companies of every kind have successfully implemented his original design ideas across hundreds of systems, these insights have never before appeared in print. Based on first principles in software engineering and a comprehensive set of matching tools and techniques, Löwy’s methodology integrates system design and project design. First, he describes the primary area where many software architects fail and shows how to decompose a system into smaller building blocks or services, based on volatility. Next, he shows how to flow an effective project design from the system design; how to accurately calculate the project duration, cost, and risk; and how to devise multiple execution options. The method and principles in Righting Software apply regardless of your project and company size, technology, platform, or industry. Löwy starts the reader on a journey that addresses the critical challenges of software development today by righting software systems and projects as well as careers—and possibly the software industry as a whole. Software professionals, architects, project leads, or managers at any stage of their career will benefit greatly from this book, which provides guidance and knowledge that would otherwise take decades and many projects to acquire. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Unlike so many books that focus on how to use Linux, Linux and the Unix Philosophy explores the "way of thinking that is Linux" and why Linux is a superior implementation of this highly capable operating system.This book is a revision and expansion of a computer science classic. Every chapter has been thoroughly updated with Linux coverage.Linux and the Unix Philosophy falls squarely between the "softer" texts on iterative software design and project management and the "how-to" technical texts. Thus far, no one has come out with a book that addresses this topic, either in the Unix space or the Linux space. Linux and the Unix Philosophy covers the same ground as the first edition, while it also presents bold new ideas about Linux and Open Source.·Concise list of philosophy tenets makes it a handy quick reference·Anecdotal examples personalize the book for the reader·Conversational style makes it easy and joyful to read
Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David Farley helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues. Writing for programmers, managers, and technical leads at all levels of experience, Farley illuminates durable principles at the heart of effective software development. He distills the discipline into two core exercises: learning and exploration and managing complexity. For each, he defines principles that can help you improve everything from your mindset to the quality of your code, and describes approaches proven to promote success. Farley's ideas and techniques cohere into a unified, scientific, and foundational approach to solving practical software development problems within realistic economic constraints. This general, durable, and pervasive approach to software engineering can help you solve problems you haven't encountered yet, using today's technologies and tomorrow's. It offers you deeper insight into what you do every day, helping you create better software, faster, with more pleasure and personal fulfillment. Clarify what you're trying to accomplish Choose your tools based on sensible criteria Organize work and systems to facilitate continuing incremental progress Evaluate your progress toward thriving systems, not just more "legacy code" Gain more value from experimentation and empiricism Stay in control as systems grow more complex Achieve rigor without too much rigidity Learn from history and experience Distinguish "good" new software development ideas from "bad" ones Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.