A Philosophy of Software Design (2/e)
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...
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.
John K. Ousterhout is a professor of computer science at Stanford University and chairman of Electric Cloud, Inc. Ousterhout created Tcl and is well-known for his work in distributed operating systems, high-performance file systems, and user interfaces. A member of the National Academy of Engineering and recipient of the ACM Software System Award (for Tcl), he has served as pro...
John K. Ousterhout is a professor of computer science at Stanford University and chairman of Electric Cloud, Inc. Ousterhout created Tcl and is well-known for his work in distributed operating systems, high-performance file systems, and user interfaces. A member of the National Academy of Engineering and recipient of the ACM Software System Award (for Tcl), he has served as professor of computer science at UC Berkeley, distinguished engineer at Sun Microsystems, and CEO of Scriptics, which he founded.