Introduction to Software Engineering
Asst. Prof. Tracy Almeida e Aguiar
Introductory Concepts
Software is a program or set of programs containing instructions which provide
desired functionality.
Engineeringis the processes of designing and building something that serves a
particular purpose and find a cost effective solution to problems.
Software Engineeringis a systematic approach to the design, development,
operation, and maintenance of a software system.
•Software engineering is defined as a process of analyzing user
requirements and then designing, building, and testing software
application which will satisfy those requirements.
Let's look at the various definitions of Software Engineering:
•IEEE,initsstandard610.12-1990,definessoftwareengineeringasthe
applicationofasystematic,disciplined,whichisacomputableapproach
forthedevelopment,operation,andmaintenanceofsoftware.
•FritzBauerdefineditas'theestablishmentandusedstandardengineering
principles.Ithelpsyoutoobtain,economically,softwarewhichisreliable
andworksefficientlyontherealmachines'.
•Boehmdefinessoftwareengineering,whichinvolves,'thepractical
applicationofscientificknowledgetothecreativedesignandbuildingof
computerprograms.Italsoincludesassociateddocumentationneededfor
developing,operating,andmaintainingthem.'
Need of Software Engineering
Why Software Engineering? Software Crisis & its Solution:
What was the Software Crisis?
•It was in the late 1960s when many software projects failed.
•Many software became over budget. Output was an unreliable software which is
expensive to maintain.
•Larger software was difficult and quite expensive to maintain.
•Lots of software not able to satisfy the growing requirements of the customer.
•Complexities of software projects increased whenever its hardware capability
increased.
•Demand for new software increased faster compared with the ability to generate
new software.
All the above issues lead to 'Software Crisis.'
Why Software Engineering is Popular?
•Large software–In our real life, it is quite more comfortable to build a wall
than a house or building. In the same manner, as the size of the software
becomes large, software engineering helps you to build software.
•Scalability-If the software development processwere based on scientific
and engineering concepts, it is easier to re-create new software to scale an
existing one.
•Adaptability: Whenever the software process was based on scientific and
engineering, it is easy to re-create new software with the help of software
engineering.
•Cost-Hardware industry has shown its skills and huge manufacturing has
lower the cost of the computer and electronic hardware.
•Dynamic Nature-Always growing and adapting nature of the software. It
depends on the environment in which the user works.
•Quality Management: Offers better method of software development to
provide quality software products.
Dual Role of Software:
1. As a product –
•It delivers the computing potential across network of
Hardware.
•It enables the Hardware to deliver the expected functionality.
•It acts as information transformer because it produces,
manages, acquires, modifies, displays, or transmits
information.
2. As a vehicle for delivering a product –
•It provides system functionality (e.g., payroll system)
•It controls other software (e.g., an operating system)
•It helps build other software (e.g., software tools)
Objectives of Software Engineering:
Maintainability –It should be feasible for the software to evolve to meet changing
requirements.
Correctness –A software product is correct, if the different requirements as
specified in the SRS document have been correctly implemented.
Reusability –A software product has good reusability, if the different modules of
the product can easily be reused to develop new products.
Testability –Here software facilitates both the establishment of test criteria and
the evaluation of the software with respect to those criteria.
Reliability –It is an attribute of software quality. The extent to which a program
can be expected to perform its desired function, over an arbitrary time period.
Portability –In this case, software can be transferred from one computer system
or environment to another.
Adaptability –In this case, software allows differing system constraints and user
needs to be satisfied by making changes to the software.
Program vs Software Product:
1.Aprogramisasetofinstructionswhichisgiventoacomputerin
ordertoachieveaspecifictaskwhereasasoftwareiswhenaprogram
ismadeavailableforcommercialbusinessandisproperlydocumented
alongwithitslicensing.Software=Program+documentation+licensing.
2.Aprogramisoneofthestagesinvolvedinthedevelopmentofthe
software,whereasasoftwaredevelopmentusuallyfollowsalifecycle,
whichinvolvesthefeasibilitystudyoftheproject,requirement
gathering,developmentofaprototype,systemdesign,codingand
testing.