3 ms·
"Software Engineering" is merely a collection of principles, techniques, heuristics, structure and practice all validated by trial and error. As such you have t
by truth_be_told 8y ago
"Software Engineering" is merely a collection of principles, techniques, heuristics, structure and practice all validated by trial and error. As such you have to read a variety of books to get the overall picture. Specifically books with sizable code for various problems. You may find the following helpful to get started (many of these can be bought used and cheap);
* Fundamentals of Software Engineering by Ghezzi, Jazayeri and Mandrioli
* The Practice of Programming by Kernighan & Pike.
* Code Complete by Steve Mcconnell.
* The Unix Programming Environment by Kernighan & Pike
* Advanced Unix Programming by Marc Rochkind.
* C Interfaces and Implementation by David Hanson.
* Large Scale C++ design by John Lakos
* Unix Network Programming by Richard Stevens.
The key is that while reading the above you need to "get" how the code is "structured" rather than the details. For example, how does the code for a TCP server and client "look like"? It is a kind of spatial knowledge which you can then consider as one "module" of functionality and reproduce as needed. Large Systems consist of a bunch of layered and well partitioned modules exposing simple and clean interfaces. There will also be modules which cross-cut all the functional modules like "Error-Handling", "Logging" etc. This is the core of "Software Engineering", everything else is details.
Finally, you would also need to read a book/source where you can see all of the above principles put into practice while building a non-trivial (initially not overly complex) system.