I am confused. What is software construction? Is it the field of software engineering or software development? Maybe software development is the sub-discipline of software engineering?
What books would you recommend to answer these questions?
I am confused. What is software construction? Is it the field of software engineering or software development? Maybe software development is the sub-discipline of software engineering?
What books would you recommend to answer these questions?
Generally speaking YES, meaning that academically speaking you'll find courses in Software Development and Software Engineering with exactly the same subjects - but people with too much time on their hands are cyclically killing each other about this.
Have a look at this good article on the subject (from the IBM archives) and get your own idea.
Code Complete is pretty much the de facto reference for Software Construction.
From Wiki:
Engineering :
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
Software Development
Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.[1]
Especially the first phase in the software development process may involve many departments, including marketing, engineering, research and development and general management.
So they are pretty similar and can also mean the same thing.
This is subject to interpretation, so here's mine.
Software Development refers to the stage(s) of a SW project on which you move from ideas (requirements, specifications, architecture, high level design, etc) to the actual materialization of those ideas. I didn't say "coding", because while making some design choices before coding, you are somehow actually making, like it or not, some implementation assumptions that may have an impact on coding. Therefore, I would consider them as part of development per se. For a good understanding of Software Development, I'd recommend Code Complete.
On the other hand, Software Engineering (from Wikipedia) "is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software". Engineers apply knowledge to solve practical problems. One of those problems may be the construction of software, another its maintenance, its deployment, operation, etc. From the same author of the book above, here is a good column for understanding what Software Engineering is.
Yes I'd guess that development is a subset of engineering:
Code Complete defines "construction" as being synonymous with coding and debugging (and commenting), also with detailed design before-hand and with unit- and integration-testing afterwards. Chapter 1, Welcome to Software Construction (PDF) starts by listing many topics in the overall Software Development Lifecycle (including Problem Definition, Software Architecture, Corrective Maintenance, etc.), and then says,
As the figure indicates, construction is mostly coding and debugging but also involves detailed design, construction planning, unit testing, integration, integration testing, and other activities. If this were a book about all aspects of software development, it would feature nicely balanced discussions of all activities in the development process. Because this is a handbook of construction techniques, however, it places a lopsided emphasis on construction and only touches on related topics. If this book were a dog, it would nuzzle up to construction, wag its tail at design and testing, and bark at the other development activities.
IMO, Software development is subdiscipline of software engineering.
Engineering dealing also with the consequence of the developed software.
As already said, knowing or not knowing the difference between the two concepts, is of little importance.