Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

Software Engineering

Lecture 1

Nahida Islam
Introduction to Software Lecturer, Department of Computer Science and
Engineering Engineering
Email:nahida.cse@uttarauniversity.edu.bd
Software and Software Engineering
Software engineering stands for the term is made of two words, Software and
Engineering.
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.
Engineering on the other hand, is all about developing products, using
well-defined, scientific principles and methods.
Software Engineering
Software engineering is an engineering branch associated with
development of software product using well-defined scientific
principles, methods and procedures. The outcome of software
engineering is an efficient and reliable software product.
Definitions

• IEEE defines software engineering as:


The practical application of scientific knowledge to the design and construction
of computer programs and the associated documentation required to develop,
operate, and maintain them
Fritz Bauer, a German computer scientist, defines software engineering as:
Software engineering is the establishment and use of sound engineering principles in
order to obtain economically software that is reliable and work efficiently on real
machines.
Program and Software Product:

Program :set of instructions


Software :set of program
Program vs Software Product:

Size:-
Programs:- they are usually small in size. They are lines of code or maybe 100 to
2000 lines codes on little more.
Software Product: Very big inside. The lines of codes are in thousands To lacs maybe
more, depends on Software Product.
Documentations:-
Programs:-There is no documentation or lack in documentation.
Software Product:- Proper documentation and well documented and user manual
prepared.
User interface:-
Programs: There is no or lacks proper user interface.
Software Products: There is proper and full well designed user interface.
The Nature of Software

• Software takes Dual role of Software. It is a Product and at the same time a Vehicle for delivering a
product.
Defining Software
• Software is defined as
1. Instructions : Programs that when executed provide desired function, features, and performance
2. Data structures : Enable the programs to adequately manipulate information
3. Documents: Descriptive information in both hard copy and virtual forms that describes the operation and use
of the programs.
Need of Software Engineering
• Large software - It is easier to build a wall than a house or building, likewise, as the size of
the software becomes large, engineering has to step to give it a scientific process.
• Adaptability - If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing one.
• Cost- As hardware industry has shown its skills and huge manufacturing has lower down
the price of computer and electronic hardware. But, cost of the software remains high if
proper process is not adapted.
• Dynamic Nature- Always growing and adapting nature of the software hugely depends
upon the environment in which the user works. If the nature of software is always
changing, new enhancements need to be done in the existing one. This is where the
software engineering plays a good role.
• Quality Management- Better process of software development provides better and
quality software product.
The Role of Software Engg. (1)
A bridge from customer needs to programming implementation

Customer

Programmer

First law of software engineering


Software engineer is willing to learn the problem domain
(problem cannot be solved without understanding it first) 9
The Role of Software Engg. (2)

10
characteristics of software:
Software does not wear out
Software is not manufacture
Usability of Software
Reusability of components
Flexibility of software
Maintainability of software
Portability of software
Reliability of Software
characteristics of software:
Software does not wear out:
Different things like clothes, shoes, ornaments do wear out(tired
through) after some time. But, software once created never wears
out. It can be used for as long as needed and in case of need for
any updating, required changes can be made in the same software
and then it can be used further with updated features.
Software is not manufactured:
Software is not manufactured but is developed. So, it does not
require any raw material for its development.
characteristics of software:
Usability of Software:
The usability of the software is the simplicity of the software in terms of
the user. The easier the software is to use for the user, the more is the
usability of the software as more number of people will now be able to
use it and also due to the ease will use it more willingly. Usability is about
effectiveness, efficiency and the overall satisfaction of the user.
Reusability of components:
As the software never wears out, neither do its components, i.e. code
segments. So, if any particular segment of code is required in some other
software, we can reuse the existing code form the software in which it is
already present. This reduced our work and also saves time and money.
characteristics of software:
Flexibility of software:
A software is flexible. What this means is that we can make
necessary changes in our software in the future according to the
need of that time and then can use the same software then also.
Maintainability of software:
Every software is maintainable. This means that if any errors or
bugs appear in the software, then they can be fixed.
characteristics of software:
Portability of software:
Portability of the software means that we can transfer our software
from one platform to another that too with ease. Due to this, the
sharing of the software among the developers and other members
can be done flexibly. Portability is usability of the same software in
different environments.
Reliability of Software:
This is the ability of the software to provide the desired
functionalities under every condition. This means that our software
should work properly in each condition.
Software doesn't "wear out "
Hardware Failure Rates :
The illustration below depicts failure rate as a
function of time for hardware. The relationship,
often called the "bathtub curve," indicates the
typical failure rate of individual components
within a large batch. It shows that in say a batch
of 100 products, a relatively large number will
fail early on before settling down to a steady
rate. Eventually, age and wear and tear get the
better of all them and failure rates rise again
near the end of the products life. To assist in
quality control, many new batches of products
are ‘soak’ tested for maybe 24 hours in a hostile
environment (temperature/humidity/variation
etc.) to pinpoint those that are likely to fail
early on in their life, this also highlights any
inherent design/production weaknesses.
Software doesn't "wear out "
As time passes, however, the failure rates rise again as hardware
components suffer from the cumulative effects of dust, vibration,
abuse, temperature extremes and many other environmental
maladies. Stated simply, “The hardware begins to wear out.”
Software doesn't "wear out "
Software Failure Rates: Software is not susceptible to the same
environmental problems that cause hardware to wear out. In theory,
therefore, the failure rate curve for software should take the form
shown below.
Software doesn't "wear out "
Undiscovered defects in the first engineered version of the software
will cause high failure rates early in the life of a program. However,
these are corrected (hopefully without introducing other errors) and
the curve flattens as shown. The implication is clear. Software doesn't
wear out. However, it does deteriorate with maintenance as shown
below
Software doesn't "wear out "
During its life, software will undergo changes and it is likely that some
new defects will be introduced as a result of this, causing the failure
rate curve to spike as shown above. Before the curve can return to the
original steady-state failure rate (i.e. before the new bugs have been
removed), another change is requested, causing the curve to spike
again. Slowly, the minimum failure rate level begins to rise-- the
software is deteriorating due to change.
Software Application Domains

Seven Broad Categories of software are challenges for software engineers


Software Application Domains
• System software : It manage hardware behavior . A collection of programs written to service
other programs. Some system software (e.g., compilers, editors, and file management utilities)
• Application software : Stand-alone programs that solve a specific business need. Application
software is used to control business functions in real time (e.g., point-of-sale transaction
processing, real-time manufacturing process control). On the other hand , excel ,office ,outlook
,Firefox are also included
• Engineering/scientific software :Scientific and engineering software satisfies the needs of a
scientific or engineering user to perform enterprise specific tasks. Such software is written for
specific applications using principles, techniques and formulae specific to that field. Examples are
software like MATLAB, AUTOCAD. Applications range from astronomy to volcanology, from
automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to
automated manufacturing.
Software Application Domains

Embedded Software: There are software control systems that control and manage hardware devices.
Example- software in mobile phone, software in Anti Lock Braking in car, software in microwave oven
to control the cooking process.

Utilities Software –
The programs coming under this category perform specific tasks and are different from other
software in terms of size, cost and complexity. Examples are anti-virus software, voice
recognition software, compression programs, etc.

Web application: It is also called " web apps ", are evolving into sophisticated computing environment
that not only provide stand alone features, computing functions, and content to the end user but also
are integrated with corporate database and business applications.

Artificial intelligence software: This include- robotic, expert system, pattern recognition, image and
voice, artificial neural network, game playing, theorem proving ... It solves Complex problems.
What is Software Crisis

Software Crisis is a term used in


computer science for the difficulty of
writing useful and efficient computer
programs in the required time
.software crisis was due to using same
workforce, same methods, same tools
even though rapidly increasing in
software demand, complexity of
software and software challenges.
With increase in the complexity of
software, many software problems
arise because existing methods were
insufficient
Causes of Software Crisis
The cost of owning and maintaining software was as expensive 
Software was very inefficient
quality of software was low quality
Software often did not meet requirements
Solution of Software Crisis
• Reduction in software over-budget
• The quality of software must be high
• Less time needed for software project
• Experience working team member on software project
• Software must be delivered
Legacy software can be
characterized informally as old
software that is still performing a
useful job for the community
Computer Science vs Software Engineering
Computer Science vs Software Engineering

What is Computer Science?


Computer Science is a study of principles and the process of computers work. It includes the study of how
data is processed, the security of networks, organizing databases, artificial intelligence and the development
of websites and applications. This field explores how computers work in terms of algorithms and the
computations that drive processes that manipulate data with theories.
What is Software Engineering?
Software Engineering is a product of programming and engineering. It involves the application of
engineering principles to software design. This field considers the hardware and software aspects of
computers when creating software systems that are efficient with minimum bugs and problems.
Software Myths
Many of these software development problems can be traced to a
number of mythologies that arose during the early history of software
development
Software Management Myths
• Development problems can be solved by developing and documenting
standards. Standards have been developed by companies and
standards organizations
• Development problems can be solved by using state-of-the art
tools. Tools may help, but there is no magic. Problem solving requires
more than tools, it requires great understanding.
Customer Myths
In many cases, a customer believes myths about software because
software responsible managers and practitioners do little to correct
misinformation. Myths lead to false expectations (by the customer)
Change is easily accommodated, since software is malleable. Software
can certainly be changed, but often changes after release can require an
enormous amount of labor.
A general statement of need is sufficient to start coding
It showed the software manager talking to a group of programmers,
with the quote: ``You programmers just start coding while I go down
and find out what they want the program to do.''
Developer Myths
• The job is done when the code is delivered.
Commercially successful software may be used for decades.
Developers must continually maintain such software: they add features
and repair bugs. Maintenance costs predominate over all other costs;
maintenance may be 70% of the development costs. This myth is true
only for shelfware
• You can't assess software quality until the program is running.
There are static ways to evaluate quality without running a program.
Software reviews can effectively determine the quality of requirements
documents, design documents, test plans, and code. Formal
(mathematical) analyses are often used to verify safety critical
software, software security factors, and very-high reliability software.

You might also like