Software Engineering Fundamentals
Software Engineering Fundamentals is a series of articles designed to prepare the curious minds as they step into the field of software engineering. It is not designed to give you all the information there is about software engineering and software development per se but rather to give you enough of the details to give the reader a good idea of what software engineering is all about and the amount of knowledge that is available to the reader as far as software engineering is concerned.
By reading this series the reader will be able to make an informed and educated decision on the software engineering practice knowing a good deal on what is up ahead should he or she decide to make the move and start their software engineering journey. Wherever possible, each article of this series will be accompanied by external related links where you can learn more or get more reference about the designated subject matter.
About Software Engineering
Software Engineering, like all other engineering fields doesn't just stop at how things work. This means that it is not just about how to create a software solution to a programming problem or request using specific conceptualization software and specific programming languages.
Historically, at the beginning of the computer programming era, there was no software engineering. The problem solving possibilities were very limited and was usually reserved for calculations and very repetitive and routine mathematics related tasks. Over the last six decades computers evolved by leaps and bounds. Speed became greater, disk storage grew larger and cheaper, memory grew as well giving room for more complex applications. As computers evolved, so did programming languages and so did the needs for more complex software needs.
It didn't take too long for problem solving to start needing to adjust the ever changing technologies that were computers at the time. As the need for more complex (and bigger) applications manifested itself so did the need for more controlled approach to created programs to answer the new needs. This gave birth to software engineering as we know it today.
About The Structure Used In This Series
The next phase was to elaborate a system to teach computer science students this vast body of knowledge that software engineering has become. IT quickly because quite the project to determine what part of the body of software engineering knowledge should be thought in universities and what other parts could be learned in the field while acquiring experience.
At first there was a program created called C.C.S.E. (Computing Curriculum Software Engineering) which was used to work out the details and filter out what didn't belong in a typical software engineering set of courses. This effort became what is called to do Software Engineering 2004 or SE2004 for short. This was created by the IEEE Computer Society and the Association for Computing Machinery (A.C.M.) both of which are linked below in the external links.
It is a highly elaborated subject structure that is designed as a guideline from which colleges and universities can create their learning programs for their computer science classes. This is what will be used in this series as its basic structure. Hence if you get familiar with this structure you will probably recognized where in the SE2004 hierarchy of knowledge universities created their programs from.
SE2004 essentially starts at the basics of computing and evolves itself towards more complex areas of computing and software development. And as you'll see in this series, present a very coherent foundation from which to start your software engineering journey.
Where To Go From Here
Where to go from here really depends on what you want to know about next. There's several items of knowledge in each of the following two sections that touch the educational and the career side of software engineering. Just select the one that interests your most.
- Software Engineering Structure is the where we start the learning process. If you are starting your software engineering explorations you should begin here as it will prepare you for both what's up ahead in your learning journey as well as prepare you for what is in the option below.
- Beyond SE2004 This is for those of you you have already graduated from your computer science studies and what to know what else there is out there, what else you need to know to becoming a better more competent software engineer.