473,406 Members | 2,954 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,406 software developers and data experts.

Timeless Classics of Software Engineering

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
102 6522
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
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
>> > 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

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Kmt79 | last post by:
I am working on my bachelor's degree in computer science and need a project proposal for software engineering. It needs to be something that can be done in a short amount of time, specially 2...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.