A revolutionary concept-based approach to thinking about, designing,
and interacting with software
As our dependence on technology increases, the design of software
matters more than ever before. Why then is so much software flawed? Why
hasn't there been a systematic and scalable way to create software that
is easy to use, robust, and secure?
Examining these issues in depth, The Essence of Software introduces a
theory of software design that gives new answers to old questions.
Daniel Jackson explains that a software system should be viewed as a
collection of interacting concepts, breaking the functionality into
manageable parts and providing a new framework for thinking about
design. Through this radical and original perspective, Jackson lays out
a practical and coherent path, accessible to anyone--from strategist and
marketer to UX designer, architect, or programmer--for making software
that is empowering, dependable, and a delight to use.
Jackson explores every aspect of concepts--what they are and aren't, how
to identify them, how to define them, and more--and offers prescriptive
principles and practical tips that can be applied cost-effectively in a
wide range of domains. He applies these ideas to contemporary software
designs, drawing examples from leading software manufacturers such as
Adobe, Apple, Dropbox, Facebook, Google, Microsoft, Twitter, and others.
Jackson shows how concepts let designers preserve and reuse design
knowledge, rather than starting from scratch in every project.
An argument against the status quo and a guide to improvement for both
working designers and novices to the field, The Essence of Software
brings a fresh approach to software and its creation.