18CBC205J-SOFTWARE ENGINEERING
UNIT I – INTRODUCTION
INTRODUCTION
Software is a program or set of programs containing instructions that provide
desired functionality.
And Engineering is the process of designing and building something that serves a
particular purpose and finds a cost-effective solution to problems.
IEEE definition for software engineering:
“Software Engineering is a systematic, disciplined, quantifiable study and approach
to the design, development, operation, and maintenance of a software system.”
INTRODUCTION
NEED OF SOFTWARE ENGINEERING
The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.
• Huge Programming: It is simpler to manufacture a wall than to a house or building, similarly,
as the measure of programming become extensive engineering has to step to give it a scientific
process.
• Adaptability: If the software procedure were not based on scientific and engineering ideas, it
would be simpler to re-create new software than to scale an existing one.
• Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let
down the cost of computer and electronic hardware. But the cost of programming remains high
if the proper process is not adapted.
NEED OF SOFTWARE ENGINEERING
Dynamic Nature: The continually growing and adapting nature of programming hugely
depends upon the environment in which the client works. If the quality of the software is
continually changing, new upgrades need to be done in the existing one.
Quality Management: Better procedure of software development provides a better and
quality software product.
Objectives of Software Engineering:
1. Maintainability– It should be feasible for the software to evolve to meet changing
requirements.
2. Efficiency– The software should not make wasteful use of computing devices such as
memory, processor cycles, etc.
3. Correctness– A software product is correct if the different requirements as specified in the
SRS document have been correctly implemented
OBJECTIVES OF SOFTWARE ENGINEERING
4. Reusability– A software product has good reusability if the different modules of the product
can easily be reused to develop new products.
5. Testability– Here software facilitates both the establishment of test criteria and the
evaluation of the software with respect to those criteria.
6. 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.
7. Portability– In this case, the software can be transferred from one computer system or
environment to another.
8. Adaptability– In this case, the software allows differing system constraints and the user
needs to be satisfied by making changes to the software.
9. Interoperability – Capability of 2 or more functional units to process data cooperatively.
IMPORTANCE OF SOFTWARE ENGINEERING
The importance of Software engineering is as follows:
1. Reduces complexity: Big software is always complicated and challenging to progress.
Software engineering has a great solution to reduce the complication of any project.
Software engineering divides big problems into various small issues. And then start solving
each small issue one by one. All these small problems are solved independently to each
other.
2. To minimize software cost: Software needs a lot of hardwork and software engineers are
highly paid experts. A lot of manpower is required to develop software with a large number
of codes. But in software engineering, programmers project everything and decrease all
those things that are not needed. In turn, the cost for software productions becomes less as
compared to any software that does not use software engineering method.
IMPORTANCE OF SOFTWARE ENGINEERING
3. To decrease time: Anything that is not made according to the project always wastes time.
And if you are making great software, then you may need to run many codes to get the
definitive running code. This is a very time-consuming procedure, and if it is not well handled,
then this can take a lot of time. So if you are making your software according to the software
engineering method, then it will decrease a lot of time.
4. Handling big projects: Big projects are not done in a couple of days, and they need lots of
patience, planning, and management. And to invest six and seven months of any company, it
requires heaps of planning, direction, testing, and maintenance. No one can say that he has
given four months of a company to the task, and the project is still in its first stage. Because
the company has provided many resources to the plan and it should be completed. So to handle
a big project without any problem, the company has to go for a software engineering method.
IMPORTANCE OF SOFTWARE ENGINEERING
5. Reliable software: Software should be secure, means if you have delivered the software,
then it should work for at least its given time or subscription. And if any bugs come in the
software, the company is responsible for solving all these bugs.
Because in software engineering, testing and maintenance are given, so there is no worry of its
reliability.
6. Effectiveness: Effectiveness comes if anything has made according to the standards.
Software standards are the big target of companies to make it more effective.
So Software becomes more effective in the act with the help of software engineering.
IMPORTANCE
PROGRAMMING IN SMALL VS PROGRAMMING
IN LARGE
SOFTWARE
Software is more than just a program code.
A program is an executable code, which serves some computational purpose.
Software is considered to be collection of executable programming code, associated
libraries and documentations.
Software, when made for a specific requirement is called software product.
SOFTWARE PRODUCT
DUAL ROLE OF SOFTWARE
1. As a product :
• It delivers the computing potential across networks of Hardware.
• It enables the Hardware to deliver the expected functionality.
• It acts as an 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)
CHARACTERISTICS OF GOOD
SOFTWARE
A software product can be judged by what it offers and how well it can be used. This
software must satisfy on the following grounds:
• Operational
• Transitional
• Maintenance
Operational :
This tells us how well software works in operations.
It can be measured on:
• Budget • Usability • Efficiency
CHARACTERISTICS
Correctness • Functionality • Dependability • Security • Safety
Transitional :
This aspect is important when the software is moved from one platform to another:
• Portability • Interoperability • Reusability • Adaptability
Maintenance :
This aspect briefs about how well a software has the capabilities to maintain itself in the ever-
changing environment:
• Modularity • Maintainability • Flexibility • Scalability
PROGRAM VS SOFTWARE PRODUCT
A program is a set of instructions that are given to a computer in order to achieve a
specific task whereas software is when a program is made available for commercial
business and is properly documented along with its licensing.
Software= Program+ documentation+ licensing.
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
SOFTWARE PROJECT
A Software Project is the complete procedure of software development from requirement
gathering to testing and maintenance, carried out according to the execution
methodologies, in a specified period of time to achieve intended software product.
Need of software project management:
Software is said to be an intangible product. Software development is a kind of all new stream
in world business and there’s very little experience in building software products.
software project management is essential to incorporate user requirements along with budget
and time constraints.
NEED OF SOFTWARE PROJECT MANAGEMENT
SOFTWARE FAILURE REASONS
SOFTWARE QUALITY
Software quality product is defined in term of its fitness of purpose.
That is, a quality product does precisely what the users want it to do.
For software products, the fitness of use is generally explained in terms of satisfaction
of the requirements laid down in the SRS document.
Although "fitness of purpose" is a satisfactory interpretation of quality for many
devices such as a car, a table fan, a grinding machine, etc.
For software products, "fitness of purpose" is not a wholly satisfactory definition of
quality.
MODERN VIEW OF QUALITY
The modern view of a quality associated with a software product several quality methods such
as the following:
Portability: A software device is said to be portable, if it can be freely made to work in
various operating system environments, in multiple machines, with other software
products, etc.
Usability: A software product has better usability if various categories of users can easily
invoke the functions of the product.
Reusability: A software product has excellent reusability if different modules of the
product can quickly be reused to develop new products.
Correctness: A software product is correct if various requirements as specified in the SRS
document have been correctly implemented.
Maintainability: A software product is maintainable if bugs can be easily corrected as and
when they show up, new tasks can be easily added to the product, and the functionalities of
the product can be easily modified, etc.
SOFTWARE QUALITY MANAGEMENT SYSTEM
Software Quality Management System- A quality management system is the principal
methods used by organizations to provide that the products they develop have the desired
quality.
A quality system subsists of the following:
Managerial Structure and Individual Responsibilities:
A quality system is the responsibility of the organization as a whole. However, every
organization has a several quality department to perform various quality system activities. The
quality system of an arrangement should have the support of the top management.
Without help for the quality system at a high level in a company, some members among staff
will take the quality system seriously.
QUALITY SYSTEM ACTIVITIES
Quality System Activities:
The quality system activities encompass the following:
• Auditing of projects
• Review of the quality system
• Development of standards, methods, and guidelines, etc.
• Production of documents for the top management summarizing the effectiveness of the
quality system in the organization
IMPORTANCE OF SQ
EMERGENCE OF SOFTWARE ENGINEERING
Software engineering discipline is the result of advancement in the field of technology.
In this section, we will discuss various innovations and technologies that led to the
emergence of software engineering discipline.
• Early Computer Programming
• High Level Language Programming
• Control Flow Based Design
• Data-Flow Oriented Design
• Object Oriented Design
EMERGENCE OF SE
Early Computer Programming
As we know that in the early 1950s, computers were slow and expensive. Though the
programs at that time were very small in size, these computers took considerable time to
process them. They relied on assembly language which was specific to computer architecture.
Thus, developing a program required lot of effort. Every programmer used his own style to
develop the programs.
High Level Language Programming
With the introduction of semiconductor technology, the computers became smaller, faster,
cheaper, and reliable than their predecessors. One of the major developments includes the
progress from assembly language to high-level languages. Early high level programming
languages such as COBOL and FORTRAN came into existence. As a result, the programming
became easier.
EMERGENCE
Control Flow Based Design
The nature of programs also changed from simple to complex. The increased size and the
complexity could not be managed by individual style. It was analyzed that clarity of control
flow is of great importance.
Flowcharts
Structured constructs decision
Structured flowcharts
Structured programming.
EMERGENCE
Data-Flow Oriented Design
The complexity of software could not be dealt using control flow based design. Thus, a new
technique, namely, data-flow-oriented technique came into existence
Data-flow Diagram (DFD)
IEEE defines a dataflow diagram (also known as bubble chart and work-flow diagram).
Object Oriented Design
Object-oriented design technique has revolutionized the process of software development.
Object-oriented design technique has revolutionized the process of software development.
They are easier to adapt and scale, that is, large systems can be created by assembling reusable
subsystems.
EMERGENCE
JACKSON STRUCTURED PROGRAMMING TO
AGILE DEVELOPMENT
Jackson System Development (JSD) is a method of system development that covers the
software life cycle either directly or by providing a framework into which more specialized
techniques can fit.
JSD can start from the stage in a project when there is only a general statement of
requirements.
However many projects that have used JSD actually started slightly later in the life cycle,
doing the first steps largely from existing documents rather than directly with the users.
PHASES OF JSD
JSD has 3 phases:
Modelling Phase:
In the modelling phase of JSD, the designer creates a collection of entity structure diagrams
and identifies the entities in the system, the actions they perform, the attributes of the actions
and the time order of the actions in the life of the entities.
Specification Phase:
This phase focuses on actually what is to be done? Previous phase provides the basic for this
phase.
An sufficient model of a time-ordered world must itself be time-ordered.
Major goal is to map progress in the real world on progress in the system that models it.
PHASES OF JSD
Implementation Phase:
In the implementation phase JSD determines how to obtain the required functionality.
Implementation way of the system is based on the transformation of the specification into an
efficient set of processes.
The processes involved in it should be designed in such a manner that it would be possible to
run them on available software and hardware.
STEPS OF JSD
Initially there were six steps when it was originally presented by Jackson, they were as below:
Entity/action step
Initial model step
Interactive function step
Information function step
System timing step
System implementation step
Later some steps were combined to create method with only three steps:
Modelling Step
Network Step
Implementation Step
MERITS & DEMERITS OF JSD
MERITS:
It is designed to solve the real-time problems.
JSD modelling focuses on time and simultaneous processing.
It is a better approach for microcode applications.
DEMERITS:
It is a poor methodology for high level analysis and database design.
JSD is a complex methodology due to pseudo code representation.
It is less graphically oriented as compared to SA(security association)or OMT(object
modelling technique).
It is a bit complex and difficult to understand.