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.
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.
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.'
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.'
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
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.
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. 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.
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.
Attributes for Software Products
SDLC Models
1.Water fall Model
2. Prototyping
Steps of Software Reverse Engineering
Thank U

Software Engineering pdf

  • 1.
    Introduction to SoftwareEngineering Asst. Prof. Tracy Almeida e Aguiar
  • 2.
    Introductory Concepts Software isa 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 atthe 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 SoftwareEngineering 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 unorganizedcoding 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 Engineeringis 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 ofSoftware: 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 SoftwareEngineering: 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 SoftwareProduct: 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 SoftwareEngineering: 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.
  • 11.
  • 22.
  • 30.
  • 58.
    Steps of SoftwareReverse Engineering
  • 62.