Skip to content

Commit

Permalink
Add notice about book
Browse files Browse the repository at this point in the history
  • Loading branch information
prmr committed Aug 8, 2019
1 parent 27ae799 commit 1011fc4
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
# Introduction to Software Design with Java

---

**This version of the text is no longer maintained:** The material in this repository is an early draft of a manuscript that eventually matured into a finished textbook: [Introduction to Software Design with Java](https://www.springer.com/gp/book/9783030240936) published on July 17 2019. It is also available as an ebook on [SpringerLink](https://link.springer.com/book/10.1007/978-3-030-24094-3). This site will remain available indefinitely for use as initially licensed. The code and related resources for the book are publicly available on [this GitHub repository](https://github.com/prmr/DesignBook).

---

This textbook provides an in-depth introduction to software design, with a focus on object-oriented design, and using the Java programming language. Compared with other resources for learning software design, this material is intended to have the following features:

* **Concrete:** The concepts presented are worked down to a level where they are directly applied in source code. For this reason, a minimum level of Java programming proficiency is necessary. It is important to note that the Java programming language is the learning tool that allows me to illustrate and discuss various design concepts: it is not the subject being taught. Learning software design in-depth requires the use of a programming language, but the knowledge gained is expected translate easily to other languages. This being said, we might as well choose a mature, free, and well-supported language. Translation of the material to use [Plankalkül](https://en.wikipedia.org/wiki/Plankalk%C3%BCl) is left as an exercise.
* **Narrative:** This text follows a narrative style that links design problems, concepts, and solutions into a cohesive package. This is in contrast to reference material such as design pattern catalogs or API documentation.
* **Foundational:** *To the extent possible*, this material attempts to be independent from any specific technological solution, and in particular software application frameworks. Frameworks are invaluable for realistic development, but their continual evolution means that idiosyncratic knowledge required to use them has a short expectation of usefulness. Rather, this text focuses on general principles and techniques that underlie most frameworks.

## Contributing to this Repository

I welcome corrections and suggestions. If you spot errors in the material please check the [issue list](https://github.com/prmr/SoftwareDesign/issues) and open a new one as appropriate. Constructive feedback is acknowledged [below](#acknowledgment). Please note that I do not accept pull requests on this repo.

## Module 0 - Preparation

How does one approach a software development project? Start hacking and hope for the best? Probably not. This would just be [inviting disaster](http://spectrum.ieee.org/static/the-staggering-impact-of-it-systems-gone-wrong). In this pseudo-module, I will present an overview of the important steps we need to take to prepare to develop quality software, from understanding the problem to mapping out a development process to choosing and setting up our tools to sketching an application.
Expand Down

0 comments on commit 1011fc4

Please sign in to comment.