Lec 1
Lec 1
Engineering
SOFTWARE AND
SOFTWARE ENGINEERING
1.1 THE NATURE OF SOFTWARE
1.1.1 What is Software?
Software is a set of instructions, data or programs used to
operate computers and execute specific tasks.
• The product that software professionals build and then
support over the long-term.
Software encompasses:
• (1) Instructions (computer programs) that when executed
provide desired features, function, and performance
• (2) Data structures that enable the programs to adequately
store and manipulate information
• (3) Documentation that describes the operation and use of
the programs.
1.1.2 Legacy Software
Why must it change?
• Software must be adapted to meet the needs
of new computing environments or
technology.
• Software must be enhanced to implement new
business requirements.
• Software must be extended to make it
interoperable with other more modern
systems or databases.
• Software must be re-architected to make it
viable within a network environment.
1.1.3 Software Applications
• System software
• Application software
• Engineering/scientific software
• Embedded software
• Product-line software
• Webapps (web applications)
• AI software
1.2 THE UNIQUE NATURE OF
WEBAPPS
Home Task
Read and summarize
1.2 THE UNIQUE
NATURE OF WEBAPPS
Book pg # 10
1.3. SOFTWARE ENGINEERING
1.3 Software Engineering
• Software engineering is a detailed study of engineering to the
design, development and maintenance of software. (Google)
• 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
[Boehm].
• The systematic approach to the development, operation,
maintenance, and retirement of software [IEEE].
• Multi-person construction of multi-version software [Parnas].
• “Software from womb to tomb.”
1.3 Software Engineering
• Some realities:
• a concerted effort should be made to understand the problem
before a software solution is developed
• design becomes a pivotal activity
• software should exhibit high quality
• software should be maintainable
• The seminal definition:
• Software engineering is the establishment and use of sound
engineering principles in order to obtain economically software
that is reliable and works efficiently on real machines. [Bauer].
1.3 Software Engineering
• A 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.
1.3 Software Engineering
Layered technology is divided into four parts:
• 1. A quality focus:
• It defines the continuous process improvement principles of
software.
• It provides integrity that means providing security to the software so
that data can be accessed by only an authorized person, no outsider
can access the data.
• It also focuses on maintainability and usability.
1.3 Software Engineering
Layered technology is divided into four parts:
• 2. Process:
• It is the foundation or base layer of software engineering.
• It is key that 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.
1.3 Software Engineering
Layered technology is divided into four parts:
• 2. Process:
• Process activities are listed below:-
1. Communication: It is the first and foremost thing for the development of
software. Communication is necessary to know the actual demand of the client.
2. Planning: It basically means drawing a map for reduced the complication of
development.
3. Modeling: In this process, a model is created according to the client for better
understanding.
4. Construction: It includes the coding and testing of the problem.
5. Deployment:- It includes the delivery of software to the client for evaluation
and feedback.
1.3 Software Engineering
Layered technology is divided into four parts:
• 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.
1.3 Software Engineering
Layered technology is divided into four parts:
• 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.
1.4 THE SOFTWARE PROCESS
1.4 The Software Process
A process is a collection of activities, actions, and tasks that are
performed when some work product is to be created.
The software
architecture of a
system represents the
design decisions
related to overall
system structure and
behavior.
1.5 Software Engineering Practice
1.5 Software Engineering Practice
The Fourth Principle: What You Produce, Others Will
Consume
• So, always specify, design, and implement knowing someone
else will have to understand what you are doing.
• The audience for any product of software development is
potentially large.
• Specify with an eye to the users.
• Design, keeping the implementers in mind.
• Code with concern for those that must maintain and extend
the system.
• Someone may have to debug the code you write, and that
makes them a user of your code.
• Making their job easier adds value to the system.
1.5 Software Engineering Practice
The Fifth Principle: Be Open to the Future
Read page
21-25 from
book