My encounter with the subject of Software Engineering was largely a positive experience and this encompasses both the academic aspect as well as the non-academic areas touching on the students in the class and the overall connections I established with them on human level. However, the following comprise of the key areas that summarize what I consider to be the essential elements in engaging with the subject:1- What we mean by software engineering and why it Is so critical? Software Engineering is concerned with employing principals of Engineering in general, and also making use of the directives of agreed ethics documented in order to produce reliable software that assists the endeavors of society for the betterment of their lives. To achieve such goals, the production of software that delivers the required functionality is the essence of the argument for it collectively brings together a team of professionals supporting the professional software development.Above all, Software Engineering is a unique discipline of study that in many aspects adheres to the principles of Engineering, but on its own merits differs a lot. For instance once a civil engineer constructs a bridge, the faults and errors are irreversible, but with the beauty of Software Engineering is such that there is a room for correction and reversing mistakes before or after implementation phase. I think this is one powerful attribute that Software Engineering enjoys in comparison to other Engineering specializations.2- I have learned that software not only can cause damage to software and but also could kill human as well. There are a number of incidents that demonstrate how serious software can be dangerous when producing in wrong way without testing . For instance, Therac-25 , was radiation treatment device that used in the medical treatment intended for cancer patients, and it was designed by Atomic Energy of Canada Limited (AECL) collaborated with CGR France. That device is being used as prime example and classic a case study of failure in field of software engineering. Indeed, What happens is that this machine killed 6 patients, who had been received Over radiation doses because of software bugs. On other hand, this machine helps a lot of patient to be cured ;however because the software was not reliable at certain time , it was not being tested , and code review was not being conducted in the Software development.
If the software principles had been adopted in that classic case, patients would not have been killed by Therac-25 system. In the context of the question itself, there is a correlation between the theoretical material of the subject and the observations one has to make in dealing with the development of appropriate solutions to mitigate aspects of our lives.To a large extent one must find ways to overcome obstacles to the progression of producing real solutions applicable to our desired goals, and in the long protracted process of doing so, it becomes essential to see, observe, learn and live by the experience. This is the main pre-occupation I have with Software Engineering in its multi-facets, for it embodies the experience of many professional software developers seeking a common solution to a common problem.I can recall using some of the principles of Software Engineering in adopting a particular given solution solely to enrich it till such a stage of perfection is reached. Consider the use-case diagram exercises. Even though there are multiple interpretations open to choosing a particular path of producing a certain prototype, yet, it opens to a room for adding new or removing existing unwanted features, this itself is what life entails in the pursuit of the perfect solution. A theory is only applicable for adoption if it can be used in the real world, otherwise it dies.There are extensive theories open for exploration in Software Engineering, and given that the core of it all is about Software Development, we expect in most cases to have a practical understanding in the sense that abstract theories are brought to life through the construction and implementation of its own dictates such that it mimics the intended functionality.The implications of it, is such that, the ethical aspects of adopting the theory must be considered in ways that are in-line with the guidelines of safety, and the fulfillment of the needs of the user. There are catastrophic examples of software failures causing deaths and injuries not considered carefully during the early stages of development, and without testing it and exhausting it beyond doubt, the developers should not release it for consumer consumption.Just as ethics are significant in numerous fields of our life, they are ,also, so critical in area of software engineering as well. In fact, in software engineering is very straight forward and very clear as well , though definitions of ethics are extremely subjective. One credible explanation is that both the IEEE Computers and the Association for Computing Machinery (ACM) have initiated something , which is called code ethics. In addition to that, it is set of instructions that developers must both follow and obey and then It is meant to maintain qualified practices in software engineering fields. The constant change swinging from perfection to excellence is an ever present scenario of what many Software Engineers encounter in their day to day activities, therefore, improvements is an endeavor that cannot be ignored, and proper documentation is to be kept if a professional practice in formulating general approach to what might work best is to be looked at in continuing with this paradigm.