changeset 39:c87143793d82

a lot of rework in ch02
author meillo@marmaro.de
date Thu, 08 Apr 2010 16:47:11 +0200
parents 3628e9649046
children 422679bdf384
files unix-phil.ms
diffstat 1 files changed, 70 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/unix-phil.ms	Sat Apr 03 12:56:38 2010 +0200
+++ b/unix-phil.ms	Thu Apr 08 16:47:11 2010 +0200
@@ -28,9 +28,10 @@
 markus schnalke <meillo@marmaro.de>
 .AB
 .ti \n(.iu
-This paper discusses the importance of the Unix Philosophy in software design.
+This paper explains the importance of the Unix Philosophy for software design.
 Today, few software designers are aware of these concepts,
-and thus most modern software is limited and does not make use of software leverage.
+and thus a lot of modern software is more limited than necessary
+and makes less use of software leverage than possible.
 Knowing and following the guidelines of the Unix Philosophy makes software more valuable.
 .AE
 
@@ -38,11 +39,11 @@
 
 .FS
 .ps -1
-This paper was prepared for the seminar ``Software Analysis'' at University Ulm.
-Mentor was professor Schweiggert. 2010-02-05
+This paper was prepared for the ``Software Analysis'' seminar at University Ulm.
+Mentor was professor Schweiggert. 2010-04-05
 .br
-You may get this document from my website
-.CW \s-1http://marmaro.de/docs
+You may retrieve this document from
+.CW \s-1http://marmaro.de/docs \ .
 .FE
 
 .NH 1
@@ -120,55 +121,71 @@
 .NH 1
 Importance of software design in general
 .LP
-Why should we design software at all?
+The design of a software describes its internal and external shape,
+meaning structure and interfaces.
+It has nothing to do with visual appearance.
+If we take a program as a car, then its color is of no matter.
+Its design would be the car's size, its shape, the locations of doors,
+the passenger/space ratio, the luggage capacity, and so forth.
+.PP
+Why should software get designed at all?
 It is general knowledge, that even a bad plan is better than no plan.
-Ignoring software design is programming without a plan.
-This will lead pretty sure to horrible results.
+Not designing software means programming without plan.
+This will pretty sure lead to horrible results.
+Horrible to use and horrible to maintain.
+These two aspects are the visible ones.
+Often invisible are the wasted possible gains.
+Good software design can make these gains available.
 .PP
-The design of a software is its internal and external shape.
-The design talked about here has nothing to do with visual appearance.
-If we see a program as a car, then its color is of no matter.
-Its design would be the car's size, its shape, the number and position of doors,
-the ratio of passenger and cargo transport, and so forth.
+A software's design deals with quality properties.
+Good design leads to good quality, and quality is important.
+Any car may be able to drive from A to B,
+but it depends on the car's properties whether it is a good choice
+for passenger transport or not.
+It depends on its  properties if it is a good choice
+for a rough mountain area.
+And it depends on its properties if the ride will be fun.
+
 .PP
-A software's design is about quality properties.
-Each of the cars may be able to drive from A to B,
-but it depends on its properties whether it is a good car for passenger transport or not.
-It also depends on its properties if it is a good choice for a rough mountain area.
-.PP
-Requirements to a software are twofold: functional and non-functional.
+Requirements for a software are twofold:
+functional and non-functional.
+.IP \(bu
+Functional requirements define directly the software's functions.
+They are the reason why software gets written.
+Someone has a problem and needs a tool to solve it.
+Being able to solve the problem is the main functional goal.
+It is the driving force behind all programming effort.
 Functional requirements are easier to define and to verify.
-They are directly the software's functions.
-Functional requirements are the reason why software gets written.
-Someone has a problem and needs a tool to solve it.
-Being able to solve the problem is the main functional requirement.
-It is the driving force behind all programming effort.
+.IP \(bu
+Non-functional requirements are also called \fIquality\fP requirements.
+The quality of a software are the properties that are not directly related to
+the software's basic functions.
+Tools of bad quality often solve the problems they were written for,
+but introduce problems and difficulties for usage and development, later on.
+Quality aspects are often overlooked at first sight,
+and they are often difficult to define clearly and to verify.
 .PP
-On the other hand, there are also non-functional requirements.
-They are called \fIquality\fP requirements, too.
-The quality of a software is about properties that are not directly related to
-the software's basic functions.
-Quality aspects are about the properties that are overlooked at first sight.
-.PP
-Quality is of few matter when the software gets initially built,
-but it will be of matter in usage and maintenance of the software.
+Quality is of few matter when the software gets built initially,
+but it is of matter for usage and maintenance of the software.
 A short-sighted might see in developing a software mainly building something up.
-Reality shows, that building the software the first time is only a small amount
-of the overall work.
-Bug fixing, extending, rebuilding of parts \(en short: maintenance work \(en
+But experience shows, that building the software the first time is
+only a small amount of the overall work.
+Bug fixing, extending, rebuilding of parts
+\(en maintenance work, for short \(en
 does soon take over the major part of the time spent on a software.
 Not to forget the usage of the software.
 These processes are highly influenced by the software's quality.
-Thus, quality should never be neglected.
-The problem is that you hardly ``stumble over'' bad quality during the first build,
+Thus, quality must not be neglected.
+The problem with quality is that you hardly ``stumble over''
+bad quality during the first build,
 but this is the time when you should care about good quality most.
 .PP
-Software design is not about the basic function of a software;
-this requirement will get satisfied anyway, as it is the main driving force behind the development.
-Software design is about quality aspects of the software.
-Good design will lead to good quality, bad design to bad quality.
+Software design is less the basic function of a software \(en
+this requirement will get satisfied anyway.
+Software design is more about quality aspects of the software.
+Good design leads to good quality, bad design to bad quality.
 The primary functions of the software will be affected modestly by bad quality,
-but good quality can provide a lot of additional gain from the software,
+but good quality can provide a lot of additional gain,
 even at places where one never expected it.
 .PP
 The ISO/IEC 9126-1 standard, part 1,
@@ -198,19 +215,20 @@
 .I Portability
 (adaptability, installability, co-existence, replaceability)
 .LP
-These goals are parts of a software's design.
-Good design can give these properties to a software,
-bad designed software will miss them.
+Good design can improve these properties of a software,
+bad designed software probably suffers from not having them.
 .PP
 One further goal of software design is consistency.
 Consistency eases understanding, working on, and using things.
-Consistent internals and consistent interfaces to the outside can be provided by good design.
+Consistent internal structure and consistent interfaces to the outside
+can be provided by good design.
 .PP
-We should design software because good design avoids many problems during a software's lifetime.
-And we should design software because good design can offer much gain,
-that can be unrelated to the software main intend.
-Indeed, we should spend much effort into good design to make the software more valuable.
-The Unix Philosophy shows how to design software well.
+Software should be well designed because good design avoids many
+problems during the software's lifetime.
+And software should be well designed because good design can offer
+much additional gain.
+Indeed, much effort should be spent into good design to make software more valuable.
+The Unix Philosophy shows a way of how to design software well.
 It offers guidelines to achieve good quality and high gain for the effort spent.