Sustainable Softworks utilizes a number of "best software
engineering practices" based on many years of industry experience.
This page highlights a few these to help you understand how good
software is designed and written.
The user manual is written first. The design of each
product begins by writing a user manual that describes what the
product does and how it works including a detailed hypercard prototype
of the user interface. The user interface may go through several
design iterations before any code is written.
The software is written using a modern object oriented application
framework (Metrowerks PowerPlant). This greatly reduces the amount
of new code that needs to be written. Most of the code that interracts
directly with the Macintosh Toolbox has been extensively tested
and debugged previously as part of a class library.
The primary audience for program code is other programmers. The
code is designed and commented to be easily understood. Generally
the comments explaining what a block of code does are written
first. Once the comments are clear, the corresonding code is filled
The product is still in development after it's in the customers
hands. Using the product allows you to see what's possible that
you couldn't think of doing before. The environment an application
runs in continues to evolve. All software contains bugs (the potential
to behave inappropriately when confronted with a new or unanticipated
situation). For this reason, good software should continue to
evolve (to delight customers) and be actively supported by the
original developers after being sold.
The challenge of software engineering is controlling complexity.
There is simply a limit to the number of details people can manage
effectively. While small teams of talented programmers have been
very effective, the industry still has a terrible problem with delivering
large complex software projects on schedule and within budget. This
is why object oriented systems that support a consistent strategy
of re-use and information hiding at every level (like NeXT) are
so important. They allow small teams to solve much bigger problems.