With all the new emerging heros with their books about modern age technology about how to develop good, working software the right way, you'd almost forgot that in the last 15 or so years, a lot of people have already done that on a lot of occasions. How come?
It's from 1988. It's written by Edward Yourdon. It won't contain a single line on patterns, object oriented system design or the internet. It will however provide you with the key elements of what's really important: the base knowledge behind the material the new heros on the block are talking about.
You see, knowing what a domain model is, what a table module is, is very nice. But if you don't know how to do a thourough analysis of the problem you have to solve with your software in the first place, your knowledge about how to put the results of the analysis into practise is moot.
It's a litte expensive, but if you really get it what's inside, you will thouroughly understand what software engineering is all about and it will then not matter anymore which method you'll use to transfer your analysis to implemented functionality: you then know what you're talking about.