2. Introductory Concepts
Software is a program or set of programs containing instructions which provide
desired functionality.
Engineering is the processes of designing and building something that serves a
particular purpose and find a cost effective solution to problems.
Software Engineering is 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.
3. Let's look at the various definitions of Software Engineering:
• IEEE, in its standard 610.12-1990, defines software engineering as the
application of a systematic, disciplined, which is a computable approach
for the development, operation, and maintenance of software.
• Fritz Bauer defined it as 'the establishment and used standard engineering
principles. It helps you to obtain, economically, software which is reliable
and works efficiently on the real machines'.
• Boehm defines software engineering, which involves, 'the practical
application of scientific knowledge to the creative design and building of
computer programs. It also includes associated documentation needed for
developing, operating, and maintaining them.'
4. 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.'
5. The Solution
Transforming unorganized coding effort into a software
engineering discipline. These engineering models helped
companies to streamline operations and deliver
software meeting customer requirements.
•The late 1970s saw the widespread uses of software
engineering principles.
•In the 1980s saw the automation of software
engineering process and growth of (CASE) Computer-
Aided Software Engineering.
•The 1990s have seen an increased emphasis on the
'management' aspects of projects standard of quality
and processes just like ISO 9001
6. 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 process were 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.
7. 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)
8. 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.
9. Program vs Software Product:
1. A program is a set of instructions which is given to a computer in
order to achieve a specific task whereas a software is when a program
is made available for commercial business and is properly documented
along with its licensing. Software=Program+documentation+licensing.
2. A program is one of the stages involved in the development of the
software, whereas a software development usually follows a life cycle,
which involves the feasibility study of the project, requirement
gathering, development of a prototype, system design, coding and
testing.
10. Challenges of Software Engineering:
Here are some critical challenges faced by software
engineers:
•In safety-critical areas such as space, aviation, nuclear
power plants, etc. the cost of software failure can be
massive because lives are at risk.
•Increased market demands for fast turnaround time.
•Dealing with the increased complexity of software need for
new applications.
•The diversity of software systems should be
communicating with each other.