By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,670 Members | 1,554 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,670 IT Pros & Developers. It's quick & easy.

Timeless Classics of Software Engineering

P: n/a
I'd like to hear thoughts on what books, in your opinion, are true
classics in the field of software engineering. I read a lot on the
topic - at least a book a month for many years. There are many good
authors, however, the only book on making software that is truly
timeless, in my opinion, is "Mythical Man Month" by Brooks. It never
ceases to amaze me that something written over 20 years ago would be
so relevant.

It seems like Brooks achieved this by focusing on what is the essence
of software engineering, which is comprised of:

A) building models of reality.
B) the people who tend to like building models of reality, what they
are like, and what makes them work together effectively.

Many books focus excessively on a particular language, a specific
domain, on project management, Gantt charts etc and miss the forest
for the trees.

Note that I'm specifically looking for books on making software, on
Software Engineering as a craft as opposed for classic books on
computer science (e.g. Knuth) which is a completely different category
in my mind.

Are there any other books like MMM that you can think of where every
page is packed with insight where it seems not a single word is in
vain?
I'd be grateful for your suggestions. There must be at least a couple
out there.

Thanks!

- Steve
Jul 22 '05
Share this Question
Share on Google+
102 Replies


P: n/a
In article <d1**************************@posting.google.com >,
apm <ap***@student.open.ac.uk> wrote:
Anne & Lynn Wheeler <ly**@garlic.com> wrote in message news:<u1***********@mail.comcast.net>...
> The other essential on my book case is Lakos' "Large Scale C++
> Software Design". It's applicable to any language and has enough
> rationale that's grounded in real development practices and the
> problems of large scale projects that I think it's relevant to the
> original topic.


I am suprised you say it's applicable to any language. The advice
about cyclic dependencies certainly is but I find much of the advice
is specific to C++, such as #includes, use of fwd class decls etc. But
that's ok coz it is supposed to be for C++ developers.

IMO it is a classic but the evolution of C++ has caused it to become
somewhat dated. That is why I give it a qualified recommendation. The
main ideas are certainly important and AFAIK are not covered by any
other text. And there is some pioneering work, such as metrics and
notation for physical dependencies. However, at the time of writing
(circa 1997), many commercial C++ compilers on Unix were quite limited
in what they supported and this is what makes me say the book is
dated. The compiler limitations made certain language features
off-limits in the interests of portability. Features such as heavy
template use (e.g meta-programming) and namespaces were of very
limited availability. So the way these features are handled would
probably not be in line with current usage. For more information on
this, see the comments made in passing on the ACCU web site
(http://www.accu.org/htdig/search.htm).


While in a discussion with John over the summer, he said a
second edition of the book was being worked on. There is an
off chance that I misunderstood and has was referring to
something else.
--
Greg Comeau / Comeau C++ 4.3.3, for C++03 core language support
Comeau C/C++ ONLINE ==> http://www.comeaucomputing.com/tryitout
World Class Compilers: Breathtaking C++, Amazing C99, Fabulous C90.
Comeau C/C++ with Dinkumware's Libraries... Have you tried it?
Jul 22 '05 #101

P: n/a
apm
co****@panix.com (Greg Comeau) wrote in message news:<ci**********@panix2.panix.com>...
In article <d1**************************@posting.google.com >,
apm <ap***@student.open.ac.uk> wrote:
IMO it is a classic but the evolution of C++ has caused it to become
somewhat dated. That is why I give it a qualified recommendation.
[snip] While in a discussion with John over the summer, he said a
second edition of the book was being worked on. There is an
off chance that I misunderstood and has was referring to
something else.


You misunderstood. John is working on something else. I specifically
asked him if he would produce a new edition of LargeScale bearing in
mind the dated aspects and he said he would not due to time, family
committments etc, which is perfectly understandable.
Jul 22 '05 #102

P: n/a
>> > The other essential on my book case is Lakos' "Large Scale C++
> Software Design". It's applicable to any language and has enough
> rationale that's grounded in real development practices and the
> problems of large scale projects that I think it's relevant to the
> original topic.

That quote was mine, so I'll reply.
I am suprised you say it's applicable to any language. The advice
about cyclic dependencies certainly is but I find much of the advice
is specific to C++, such as #includes, use of fwd class decls etc. But
that's ok coz it is supposed to be for C++ developers.
A better way to express what I meant might be to say that the key
concepts in the book are applicable to large scale software projects
independent of language.

I mention applicability to other languages in the belief that people doing
projects in languages other than C++ can benefit. My personal experience
is with applying those principles, particularly the principles of physical
design, to the rearchitecture of a large body of ANSI-C code (the HP-UX
kernel).
IMO it is a classic but the evolution of C++ has caused it to become
somewhat dated. That is why I give it a qualified recommendation.
Fair enough. Because I'm more interested in the concepts and less in
the C++ implementation details, I didn't particularly notice. If
someone reads the book for C++ specifics it probably is dated. Thanks
for pointing that out.
The main ideas are certainly important and AFAIK are not covered by
any other text.


Not AFAIK either. If one wanted to make a timeless and more general
version you could factor out the following pieces:

* All of Part II Physical Design Concepts (Chaps 3-7)
* Chapter 8: Architecting a Component
* Section 10.2: Function Definitions

Levelizing the contents is left as an exercise for the reader :).

Thanks for the interest in the book, the discussion, and pointing out
the issues for anyone who reads it from the viewpoint of modern C++.
I hope that this richer understanding may entice more people to read
the book and avoid disappointments for those who do.

Eric
Jul 22 '05 #103

102 Replies

This discussion thread is closed

Replies have been disabled for this discussion.