In the world around us you observe many systems that are groups or teams of members continually working in harmony to achieve some pre-set goal. Software is another example of a system and it is equally complex, if not more, like any other system. As software deployed for some constructive purpose is generally marked with many a copies across several offices, the software could hardly be thought of as an artistic and single-handed creation. It is rather built up with an engineering approach that is typically marked with special features like multiple components interacting and working in concert, building up a synergy into the software. Needless, to say, whenever maintenance is required (either to fix a default or to enhance some additional functionality), it must be easily manageable. This would require a design that offers traceability to pinpoint the desired module/component in the whole software product.
Let us look at some key points of software engineering:
1. System is a set of elements working together to achieve a common goal. Each system does certain processing on some input received by it and in turn gives out a desired output. System generally does not work in isolation; rather it is always in contact with other systems.
2. Software is a special type of system in more than one ways. (a) it is artificially created system that is mapped on some intellectual capabilities. (b) it is highly intricate and equally invisible like a black-box. (c) it is, almost in all the cases, produced as a team work of knowledgeable professionals. (d) It exhibits high degree of tailored nature, i.e. custom-built for specific paradigm. (e) it is utilized across umpteen numbers of computers. (f) Due to changes in the business environment in which it works, the software needs frequent modifications to adopt such changes.
3. All the above facets of software make it imperative that the software cannot be and should not be produced as a craftwork of a single person, rather it should be articulated with elaborate efforts of several people, who are led by an able leader coordinating their activities in the light of a schematic project plan chalked out before-hand that caters to the carefully gathered requirements of the end beneficiaries or users.
4. Engineering relates to a process that goes by the design charted in advance with the specific aim of assembling all the pre-thought and made-up components that offer a synergic advantage when put into action. The engineering approach also presupposes an ability to track operational aspect to small component and down to still smaller sub-components till the exact location of the defect or potential improvement can be pinpointed for subsequent modifications. The approach also helps in the effective testing of the complete software and/or confined to working of any of the ingredient modules.
5. Software development generally passes through various phases like feasibility study, requirements collection, systems analysis, high level & detailed design, programming (also called as coding), testing and finally the live runs. After this, the software goes into maintenance mode, when it has to undergo several updates to adopt to the continually changing business needs. Over a period of time, it gets full of software patches, when it becomes essential to develop it afresh, thus taking it to next cycle. Hence the term, Software development Life Cycle.
6. Software engineering is then the art and science of applying the engineering approach to software development through collecting the user requirements in an exhaustive manner, building up the design meticulously, writing the programs as per set standards, with methodical testing and elaborately documenting the activites across all the phases of software development.
You experience quite a few instances of systems in everyday life. Software as a specific instance of a system is built up artificially to run the computers to serve us towards betterment of life. As a truly unprecedented means to delegate some of our intellectual capabilities to the computers, this software has to be brought about after several pre-planned steps contributed by discerning IT experts working as synchronized teams. All this has led to the development of software engineering as a knowledge branch in its own right.
Software has become a key buzzword today in our fast paced world of business. Thomas Friedman's flat world' is getting flatter in large part due to advances in software. IT awareness has become synonymous with literacy in this twenty-first century. As an increasing segment of society is witness a shift towards IT, the topic of software engineering has become inevitable for most academic programs.
Besides, another substantial portion of society is on the other side of the counter - in the form of the users' community - and they need to know the basics of software engineering to enable them to handle IT projects in an effective manner.
IT keeps on changing its paradigms continually across all its facets, may it be software platforms of operating systems like Windows, UNIX, Linux, etc, database management systems like Oracle, Informix, Ingress, and etc. programming languages like Java, C++ etc or development methodologies like rapid application development (RAD), joint application development (JAD), eXtreme Programming (XP), etc. In this ever-changing milieu, the only solid conceptual foundation that has persisted is of software engineering which consistently serves as a guiding beacon for one and all.
Expertsmind.com: Software Engineering Assignment Help, Software Engineering Homework Help, Software Engineering Online Tutoring, Computer Science Engineering, Online Tutors, Live Homework Assistance, Help with Assignment