This page is dedicated to software design.

Articles

Titlesort iconAuthor(s)Notes
Death by UML FeverAlex E. BellA humourous look at the overuse of UML by software teams. The moral of the story is "Use UML where appropriate and something else where it is not".
Design by Contract: The Lessons of ArianeJean-Marc Jézéquel,
Bertrand Meyer
This case study is about a software failure that caused the Arianne 5 rocket to destroy itself on its maiden flight. This was a failure caused by software re-use. ESA's accident report is also available.
Realizing quality improvement through test driven development: results and experiences of four industrial teamsNachiappan Nagappan,
E. Michael Maximilien,
Thirumalesh Bhat,
Laurie Williams
This report documents the results of a case study into four projects that used TDD during development. Three projects at Microsoft and one at IBM were included in the case study. The report concludes that TDD does improve the quality of the delivered software and a reduction in the defect density when the software is released. It also showed that the development time increased; however this was offset by reduced integration testing.
Toward Design SimplicityRebecca J. Wirfs-BrockA philosophical look at design simplicity.
Up-front DesignRebecca J. Wirfs-BrockThis article discusses the need for doing software design "up front" in a project. Wirfs-Brock argues that there are times when doing some design up front is beneficial to the project. Typically this occurs when the team is entering "uncharted waters". In other words, when the risk of not doing it is too high. Whilst Wirfs-Brock argues that it can be beneficial, she is NOT arguing that it be applied to every project, nor for that matter is she arguing that the whole design be done first. She is arguing that it should be considered and applied judiciously to help the project succeed. Up front design is not for all teams or situations; however to blindly label it as unnecessary is unwise. There are valid reasons for and against up front design. Sound engineering judgment is required to decide whether to use the technique. Up front design can be a risk mitigation strategy and worth considering.
Words matter. talk about people: not customers, not consumers, not usersDonald A. NormanThis article postulates that the software we produce is a direct reflection of the way we view the people who will use our systems. In particular, focussing on our business' perspective is not the most appropriate method for catering for the software users' needs. The author contends that: Hotels that are hotel-centered will not treat their guests as well as hotels that are guest-centered. Or, to generalize, companies that are company-centered still don't get it: They continue to lack empathy and understanding of their customers' point of view.

Case Studies

Titlesort iconAuthor(s)Notes
Design by Contract: The Lessons of ArianeJean-Marc Jézéquel,
Bertrand Meyer
This case study is about a software failure that caused the Arianne 5 rocket to destroy itself on its maiden flight. This was a failure caused by software re-use. ESA's accident report is also available.
Realizing quality improvement through test driven development: results and experiences of four industrial teamsNachiappan Nagappan,
E. Michael Maximilien,
Thirumalesh Bhat,
Laurie Williams
This report documents the results of a case study into four projects that used TDD during development. Three projects at Microsoft and one at IBM were included in the case study. The report concludes that TDD does improve the quality of the delivered software and a reduction in the defect density when the software is released. It also showed that the development time increased; however this was offset by reduced integration testing.