Chapter 1
Introduction to software Engineering
Software vs Program
• Many of us equate software with program.
• Software is not just the program
• Software is program, all associated documentation and configuration
data needed to make program operate correctly.
1. Definition of Software Engineering
• Software is a program or set of programs containing instructions that
provide desired functionality.
• Engineering is the process of designing and building something that
serves a particular purpose and finds a cost-effective solution to
problems.
• Software Engineering is a systematic, disciplined, quantifiable study
and approach to the design, development, operation, and
maintenance of a software system.
2. Evolving Role of Software
Software is a product
• Delivers the computing potential
• Enables the Hardware to deliver the expected functionality.
• Produces, manages, acquires, modifies, displays, or transmits
information.
Conti..
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)
• Effects communication (e.g., Networking software)
Program Versus software
• 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.
3. Changing Nature of software
• System Software
• Application Software
• Engineering and Scientific Software
• Embedded Software
• Product Line Software
• Web Application Software
• Artificial Intelligence Software
3. Changing Nature of software
Seven broad categories of computer software present continuing
challenges for software engineers
System Software:
• Collection of programs which are written to service other programs.
• Processes complex but determinate, information structures.
• Other system application process largely indeterminate data.
• System software area is characterized by the heavy interaction with
computer hardware that requires scheduling, resource sharing, and
sophisticated process management.
3. Changing Nature of software
Application Software:
• Programs that solve a specific business need.
• Process business or technical data that facilitates business operation
or management technical decision making.
• Used to control business function in real time.
3. Changing Nature of software
Engineering and Scientific Software
Facilitate the engineering function and task.
Engineering and scientific area are moving away from the conventional
numerical algorithms.
Computer-aided design, system simulation, and other interactive
applications have begun to take a real-time.
3. Changing Nature of software
Embedded Software:
• Embedded software resides within the system or product
• Used to implement and control feature and function for the end-user
and for the system itself.
• Embedded software can perform the limited and esoteric function
3. Changing Nature of software
Artificial Intelligence Software:
• Artificial intelligence software makes use of a non numerical
algorithm to solve a complex problem
• Application within this area includes robotics, expert system, pattern
recognition, artificial neural network, theorem proving and game
playing
3. Changing Nature of software
Product-line Software:
• Designed to provide a specific capability for use by many different
customers, product line software can focus on the limited and
esoteric marketplace or address the mass consumer market.
3. Changing Nature of software
Web Application:
• It is a client-server computer program which the client runs on the
web browser.
• Web apps can be little more than a set of linked hypertext files that
present information using text and limited graphics.
• However, as e-commerce and B2B application grow in importance.
• Web apps are evolving into a sophisticate computing environment
that not only provides a standalone feature, computing function, and
content to the end user.
Software Evolution
• 1945- 1965 – Origin
• 1965- 1985- software crisis
• 1990- 2000- internet
• 2000-2010- Light weight
• 2010- till –AI, ML,DL
4. Characteristics of software
• Software is developed or engineered it is not manufactured
• Software development present s a job-shop environment
• Time and effort for software development are hard to estimate
• Software does not wear out
• Testing software is extremely difficult
• Difficult to measure the progress of software development
• User requirement are often not conceived well, so undergo many
modifications before implemented.
• Software directly depends upon the hardware
Software is developed or engineered it is not manufactured
• No concept of raw material
• Better visualized as process rather than product
• Human element is high compared to manufacturing
• Development productivity is highly uncertain, even with standard
products, varying greatly with skill of developer.
• Development tools, technique, standards and procedure vary widely.
• Quality problem in software development are different from that of
manufacturing.
• Difficult to measure quality compared to manufacturing.
Software development present s a job-shop
environment
• Each product is custom built so unique
• Cannot be assembled from existing components
• The problem of design, estimating and scheduling are present
• Human skill is main component in software development
Time and effort for software development are hard to estimate
• Interesting work gets done at the expense of dull work.
• Documentation being dull work gets less priority.
• Job should be done in clever way rather than doing adequately, on
time and reasonable cost.
• Programmer tend to be optimistic , not realistic
• Time estimation for task completion reflect this tendency
• Programmers have trouble communicating.
Software does not wear out
• Software does not lose its functionality with use.
• It may lose its functionality in time, however as the requirements
change.
• When defects are encountered, they are removed by rewriting the
relevant code not by replacing it with available code.
• There is no concept of replacing the code with spare code in software
development.
• When defects are removed, there is likelihood that new defects are
introduced.
5. Generic View of Software Engineering
1. Definition Phase
The experts get the knowledge about "What".
• Information needed for processing.
• Which functions are required.
• Expectations about the capacity.
• Interface which is established.
• Area of the validation.
This phase defines all the expectations depending on the standard of the software
Engineering.
It contains three steps.
• Analysis of system
• Planning of project
• Requirement Analysis
5. Generic View of Software Engineering
2. Development phase -
• The focus point of development phase is "How".
• After the explanation of "What" it turn to "How".
• Various type of question raised in developer mind that how to design the data
structure and Architecture of software.
• Procedural detail how to implemented
• How design convert in a programming language
• How to perform testing of software .
Three special steps always taken in this phase which are
a) Design of software
b) Coding
c) Testing of software system
5. Generic View of Software Engineering
3. Maintenance phase
The main focus of maintenance phase is change which cause is
correction of errors, adaption of new idea, According to the needs of
software after change in customer mood.
Software Engineering Layered Technology
Software Engineering Layered Technology
• Software engineering is a fully layered technology,
• To develop software we need to go from one layer to another.
• All the layers are connected and each layer demands the fulfillment
of the previous layer.
• Layered technology is divided into four parts
Software Engineering Layered Technology
1. A quality focus
• Degree of goodness
• Correctness
• Maintainability
• Usability
• Bed rock of any product
Software Engineering Layered Technology
2. Process:
• What to do?
• It is the foundation or base layer of software engineering.
• Binds all the layers together which enables the development of
software before the deadline or on time.
• Process defines a framework that must be established for the
effective delivery of software engineering technology.
• The software process covers all the activities, actions, and tasks
required to be carried out for software development.
Software Engineering Layered Technology
Process activities are listed below:-
• Communication: It is the first and foremost thing for the development of
software. Communication is necessary to know the actual demand of the
client.
• Planning: It basically means drawing a map for reduced the complication of
development.
• Modeling: In this process, a model is created according to the client for
better understanding.
• Construction: It includes the coding and testing of the problem.
• Deployment:- It includes the delivery of software to the client for evaluation
and feedback.
Software Engineering Layered Technology
3. Method
• During the process of software development the answers to all “how-
to-do” questions are given by method.
• It has the information of all the tasks which includes communication,
requirement analysis, design modeling, program construction, testing,
and support.
Software Engineering Layered Technology
4. Tools
• Software engineering tools provide a self-operating system for
processes and methods.
• Tools are integrated which means information created by one tool
can be used by another.
Software Crisis
• Difficulty of writing useful and efficient computer programs in the
required time.
• The software crisis occurs due to using the same workforce, same
methods, and same tools even though rapidly increasing software
demand, the complexity of software, and software challenges.
• With the increase in software complexity, many software problems
arise because existing methods were insufficient.
Software Crisis
Factors Contributing to Software Crisis
• Poor project management.
• Lack of adequate training in software engineering.
• Less skilled project members.
• Low productivity improvements.
Solution of Software Crisis
1. Reduction in software budget.
2. The quality of the software must be high.
3. Less time is needed for a software project development.
4. Experienced and skilled people working on the software project.
5. Software must be delivered.
6. Software must meet user requirements.
Tutorial 1
• Define software. Discuss the evolving role of software.
• What is software engineering?
• Discuss characteristics of software
• “Software does not wear out” justify the statement.
• Discuss the layered technology approach of software engineering.