0% found this document useful (0 votes)
106 views26 pages

Chapter - 1: Introduction To Software Engineering

The document provides an introduction to software engineering. It discusses how the software crisis in the 1960s-1970s led to the emergence of software engineering as a field. It then defines software and discusses its key characteristics, such as being intangible and changeable. The document classifies software into different types, such as system software, application software, programming software, AI software, and embedded software. It provides examples for each type of software.

Uploaded by

Hemanth Goli
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
106 views26 pages

Chapter - 1: Introduction To Software Engineering

The document provides an introduction to software engineering. It discusses how the software crisis in the 1960s-1970s led to the emergence of software engineering as a field. It then defines software and discusses its key characteristics, such as being intangible and changeable. The document classifies software into different types, such as system software, application software, programming software, AI software, and embedded software. It provides examples for each type of software.

Uploaded by

Hemanth Goli
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

Chapter - 1

Introduction to Software Engineering

Introduction

Software crisis started in the mid of the late 1960s and the
early 1970s.
The importance of software, software industry, and software
users has evolved rapidly.
The fields of computing have become complex and diverse in
the modern information society.
The main focus of practitioners from the computing outset was
to provide solutions to the complexity barriers of producing
software, setting up the software industry, and escalating the
number of software users.

2
Introduction

The dependency of business organizations on software and


technology has increased.
Small-scale and large-scale business organizations have
automated their business processes for increased ease and
effectiveness.
The dynamic nature of changing software technology forces
the adoption of software construction and maintenance
processes according to the suitability of the application.
Software companies are moving toward component-based
development, where components are assembled rather than
developed from the scratch.

Introduction

The mobile nature of software allows changes in requirements


as and when required but changing requirements during
development needs a systematic process to incorporate the
changes into software work products.
Along with development and maintenance, software project
management also plays an important role in the project
success.
Apart from the process of development, maintenance,
management, and planning, some software engineering
approaches aim to improve the process itself.
The ultimate goal of software practitioners is to produce faster,
better, and cost-effective products.
4
Software
Software is a collection of computer programs that when
executed together with data provide desired outcomes.
A computer program is a set of instructions written in a
programming language.
Programs run within specified constraints and environment,
with defined rules of execution.
Each standard program has a certain procedure for its
execution and operation.
Data play an important role in program execution for
providing useful information in some form.
The documentation is important in understanding the software
code, design, constraints, customer needs, and specification for
further maintenance. 5

Software

Software is a collection of computer programs, together with


data, procedure, rules, and associated documentation, which
operate in a specified environment with certain constraints to
provide the desired outcomes (IEEE).
Software concentrates more on quality issues, such as
interoperability, portability, usability, reliability, and
robustness; and it is sometimes referred to as industrial quality
software

6
Software view

Data
Procedures

Software

Programs Rules

Documentation

Figure 1.1: Software view

Software characteristics

Software has logical properties rather than physical.


Software is mobile to change.
Software is produced in an engineering manner rather than in
classical sense.
Software becomes obsolete but does not wear out or die.
Software has a certain operating environment, end user, and
customer.
Software development is a labor-intensive task.

8
Software has logical properties rather than physical:
Software is intangible and has no physical properties

It has no physical shape, volume, no color and no odor so its not

affected by physical environment.

Software consists of many group of programs which are

connected together with logical interfaces.

design and implementation.

It reduces product complexity during development.


9

Software is mobile to change


It is too much flexible so it can be changed easily.

These changes depend on the changing environment, changing requirements,

technical advancement.

Each part of the software can be changed but cannot be replaced as its having

logical meaning.

Functionality can be modified, platform can be changed, new features can be

added and software can be migrated onto different platform.

10
Software is produced in an engineering manner rather than in classical sense

Unless other products which are manufactured in the classical manner

software is produced in an engineering manner.

The engineering mechanism provides some organized activities or tasks with

their defined approaches for software production.

Feasibility study, analysis, design, coding, testing and deployment.

11

Software becomes obsolete but does not wear out or die

Software becomes obsolete due to increasing requirements of the

users and rapidly changing technologies.

Software products do not wear out as they do not have any physical

properties.

The defects and failures in software can be corrected and maintained

as they are very difficult to be carried out so they are very costly.

12
Software has a certain operating environment, end user, and customer

Software products run in a specified environment with some defined

constraints.

some software products are software independent and dependent

for each software there are three categories of end users top- level,

middle-level and low-level employees in an organization

13

Software development is a labor-intensive task

n0000

14
Software Classifications

Software

Generic Customized
software software

System Application Programming AI Engineering/ Web Product-


software software software software scientific software line
software software

Figure 1.2: Software classification

15

Software Classifications

Generic software products are developed for general purpose, regardless of


the type of business.
Customized software products are developed to satisfy the need of a
particular customer in an organization.
System software is the computer software that is designed to operate the
computer hardware and manage the functioning of the application software
running on it.
e.g., device drivers, boot program, operating systems, servers, utilities,
and so on.
Application software is designed to accomplish certain specific needs of the
end user.
e.g., video editing software, word processing software, database
software, and simulation software are some examples of application
software etc.
16
Software Classifications

Programming software is the class of system software that assists


programmers in writing computer programs using different
programming languages in a more convenient manner.
e.g., text editors, compilers, debuggers, linkers, etc.
Artificial Intelligence (AI) software is made to think like human
beings and therefore it is useful in solving complex problems
automatically.
AI software uses techniques or algorithms for writing programs to
represent and manipulate knowledge.
e.g., decision support software or embedded software Game
playing, speech recognition, understanding natural language,
computer vision, expert systems, robotics are some applications
of AI software.
17

Software Classifications

Embedded software is a type of software that is built into


hardware systems. Embedded software is used to control,
monitor, or assist the operation of equipment, machinery, or
plant.
Many of the advanced functions that are common in modern
devices are used in daily life, such as in washing machines,
cars, mobiles, etc.
There are certain characteristics of embedded systems, such as
naive , timeliness, concurrency, liveness, reactivity, and
heterogeneity.
Controllers, real time operating systems, communication
protocols are some examples of embedded software.
18
Software Classifications

Engineering/scientific software: Engineering problems and quantitative


analysis are carried out using automated tools. Scientific software is
typically used to solve mathematical functions and calculations.
e.g, CAD/CAM, EDA, ESS, SPCS, civil engineering and architectural
software, math calculation software, modeling and simulation software,
etc.
Web software has evolved from a simple website to search engines to web
computing.
Web applications are spread over a network (for example, Internet, intranet,
and extranet).
Web applications are based on client server architecture, where the client
requests information and the server stores and retrieves information from
the web.
e.g., Web 2.0, HTML, PHP, search engines etc.
19

Software Classifications

Product-line software is a set of software intensive systems


that share a common, managed set of features to satisfy the
specific needs of a particular market segment or mission.
Product line software improves time to market, productivity,
quality, and other business drivers. At the same time, it reduces
product cost.
It can also enable rapid market entry and flexible response, and
provide a capability for mass customization.
Some common applications are multimedia, database software, word
processing software, etc. Reuse-based sSoftware eEngineering
bBusiness (RSEB) promotes product-line software.

20
Engineering Discipline

Engineering is a disciplined approach with some organized


steps in a managed way to construction, operation, and
maintenance of software.
Engineering of a product goes through a series of stages, i.e.,
planning, analysis and specification, design, construction,
testing, documentation, and deployment.
The disciplined approach may lead to better results.
The general stages for engineering the software include
feasibility study and preliminary investigation, requirement
analysis and specification, design, coding, testing, deployment,
operation, and maintenance.

21

Software Crisis
Software crisis, the symptoms of the problem of engineering
the software, began to enforce the practitioners to look into
more disciplined software engineering approaches for software
development.
The software industry has progressed from the desktop PC to
network-based computing to service-oriented computing
nowadays.
The development of programs and software has become
complex with increasing requirements of users, technological
advancements, and computer awareness among people.

22
Software Crisis

Software crisis symptoms


complexity,
hardware versus software cost,
Lateness and costliness,
poor quality,
unmanageable nature,
immaturity,
lack of planning and management practices,
Change, maintenance and migration,
etc.

23

What is Software Engineering?


The solution to these software crises is to introduce systematic
software engineering practices for systematic software development,
maintenance, operation, retirement, planning, and management of
software.
The systematic means the methodological and pragmatic way of
development, operation and maintenance of software.
Systematic development of software helps to understand problems
and satisfy the client needs.
Development means the construction of software through a series of
activities, i.e., analysis, design, coding, testing, and deployment.
Maintenance is required due to the existence of errors and faults,
modification of existing features, addition of new features, and
technological advancements.
Operational software must be correct, efficient, understandable, and
usable for work at the client site.

24
What is Software Engineering?

IEEE defines
The systematic approach to the development, operation,
maintenance, and retirement of software.

25

Software engineering view

Satisfies quality criteria

Software

Systematic approach

Figure 1.3: Software engineering view

26
Evolution of Software Engineering Methodologies

A software engineering methodology is a set of procedures


followed from the beginning to the completion of the
development process.
Software engineering methodologies have evolved with
increasing complexities in programming and advancements in
programming technologies.
The most popular software methodologies are:
Exploratory methodology
Structure-oriented methodology
Data-structure-oriented methodology
Object-oriented methodology
Component-based development methodology
27

Evolution of Software Engineering Methodologies

Component
programming

Prog Component oriented


ram Object-oriented
ming programming CBD models
tech
nolo Object oriented
gy Parallel
programming OOA/OOD models
Data structure
High-level oriented
programming JSD models
Structure oriented
Unstructured
programming SA/SD models

Exploratory
methodology
State models

Programming complexities
Figure 1.4: Evolution of software engineering methodologies

28
Exploratory Methodology
Exploratory style of software engineering is a methodology that
applies to the development of programs whose requirements are
initially unclear.
It involves experimentation and exploring the programs through
step-by-step programming.
Exploratory style is sufficient to develop software to test research
hypothesis but it is unable to meet reliability, extensibility, and
maintainability goals.
In exploratory style, errors are detected only during the final
product testing.
Maintenance is very difficult and costly because of the lack of
documentation and multiplicity of changes in the initial proposal.
Exploratory style uses unstructured programming or design
heuristics for program writing, where the focus is given on global
data items.
29

Structure-Oriented Methodology
Structured methodology focuses on procedural approach,
which concentrates on developing functions or procedures,
It has three basic elements, Sequence, Selection, Iteration.
Structure-oriented methodology uses a variety of notations,
such as Data Flow Diagrams (DFD), data dictionary, Control
Flow Graphs (CFG), Entity Relationship (ER) diagrams, etc., to
design the solution of the software.
Structure-oriented methodology is suitable for all types of
projects. Procedural programming languages (for example, C,
COBOL, BASIC, FORTRAN, etc.) are actually very powerful and
easy to understand.
Structure-oriented approach is preferred in scripts and
embedded systems with small memory requirements and high
speed.
30
Data-Structure-Oriented Methodology
Data-structure-oriented methodology concentrates more
on designing data structures rather than on procedures
and control.
Jackson Structured Design (JSD) methodology developed
by Michael Jackson in 1970 is a famous data-structure-
oriented methodology that expresses how functionality
fits in with the real world.
JSD is a useful methodology for concurrent software, real
time software, microcode, and for programming parallel
computers because JSD emphasizes actions more and
attributes less.
Though JSD is good for shaping real world scenario, it is
complex and difficult to understand.

31

Object-Oriented Methodology
Object-oriented methodology emphasizes the use of data rather than
functions.
Data and procedures are built around these objects. The real world
entities are treated as objects. The objects having characteristics in
common are grouped into classes.
An object involves properties and methods
Object-oriented methodology has three important concepts:
modularity, abstraction, and encapsulation.
Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD)
techniques are used in object-oriented methodology.
OOA is used to understand the requirements by identifying objects
and classes, their relationships to other classes, their attributes, and
the inheritance relationships among them.
OOD creates object models and maps the real world situation into
the software structure.
Object-oriented methodology is the latest and the most widely-used
method for the development of applications in a variety of domains.
32
Component-Based Development
Methodology
Component-Based Development (CBD) is a significant
methodology for communication among different
stakeholders, and for large-scale reuse.
CBD is a system analysis and design methodology that
has evolved from the object-oriented methodology.
It is largely based on its focus on reuse.
Its proponents promise faster time to market, cost
reduction, better quality, flexibility, and scalability. It
places large, independently-packaged, reusable
components at the core of software development.

33

Software Engineering Challenges

Problem Understanding
Quality and Productivity
Cycle Time and Cost
Reliability
Change and Maintenance
Usability and Reusability
Repeatability and Process Maturity
Estimation and Planning

34
Problem Understanding
During software development and maintenance process its difficult
to understand the exact problem and requirements of the customer.

As customers are from different background so they are related to


several issues and they do not have a clear understanding of their
problems.

As customers do not have technical knowledge as some of them


hail from remote areas and also software engineers are lack of
knowledge in all the domains.

These obstacles creates lack of communication among software


engineers and customers in understanding their problems.

35

Quality and Productivity


software productivity and quality are the most considerable challenges while
developing a software.

Software engineering practices mainly emphasize providing quality products


in small cycle time, quality product provide customer satisfaction.

A good quality product implements features required by the customer. Quality


attributes to be considered as usability, reliability, maintenance, efficiency,
portability and functionality.

Production of software is measured in terms of KLOC per person month


(PM). Software productivity can be enhanced by increasing the number of
KLOC per PM.

Higher productivity means that cycle time can be reduced with low cost of
the product.

Q&P depends on programmers ability, type of technology, development


and maintenance approach.
36
Cycle Time and Cost
Customer always foresees faster and cheaper production of software
products.
Delivery of the product before time sometimes compromises the
quality of the product.

So software companies put efforts to reduce the cycle time of product


delivery and minimize the product cost.

The cost of software product includes the cost of hardware, software


and manpower resources.

It is calculated based on the number of persons involved in the project


plus time to complete it. It also some times depends on size and
complexity of the product.

37

Reliability
It is one of the most important quality attributes. Reliability is a
successful operation of a software withing the specified environment and
duration under certain conditions.
A quality product can be achieved by emphasizing the individual
development phases, which are analysis, design, coding and testing.
Verification and validation techniques are used to ensure the reliability
ration of the product.

38
Change and Maintenance
They are required when the software is delivered and deployed at the
customer site.
They occur if there is any change in the business operation, errors in
software or addition of some new features.
Change is one part of the software requires change in other part also.
Change and maintenance in software are flexible but they are very
expensive tasks.

39

Usability and Reusability


usability means the ease of use of a product in terms of
efficiency, effectiveness and customer satisfaction.
Usability engineering deals with software development
methodologies which enable teams to design and develop
effective user interfaces within time and budget.
Reuse of an existing software components and their development
has become an institutional business in the modern software
business scenario.
Reused based development has several advantages but it needs
support from the top management and some systematic reuse
approach.
40
Repeatability and Process Maturity
Repeatability maintains the consistency of product quality and
productivity.
It helps to plan the project schedule, fix deadlines for product delivery,
manage configuration and identify locations of but occurrences.
It promotes process maturity
A mature software process produces quality products and improves
software productivity.

41

Estimation and Planning


LOC,FP,OP are not accurate in estimating the project efforts.

Project failure ratio is greater than the success rate, the main reason
for many of the project failures is due to underestimation of budget
and time to complete the project.

Project plan effectiveness depends on the accuracy of estimation and


understanding of the problem.

42
Software Engineering Principles

expectations
Choose appropriate process model
Decomposition and modularity
Abstraction
Encapsulation
Incremental development
Understandability
Consistency and completeness
Generality

43

Software Engineering Principles

Perform verification and validation to maintain quality


Follow-up the scope statement, deadlines, and early product
delivery
Design for change
Follow disciplined and mature process
Take responsibility and commit
Better planning and management rather than technology

44
The solution depends upon how accurately the developer specifies the
customer problems.
Appropriate methods such as interviews, questionaries, literatures,
internet resources are used to satisfy customers needs.

Choose appropriate process model


Process models ( waterfall model, prototyping model, spiral model, rational
unified process (RUP) process model.
There is no process model that works for every kind of projects.
The selection of a particular process model depends on the anticipation of
changes, risk tolerance, application domain, customer involvement.

45

Decomposition and modularity


Decomposition is the process of partitioning a subject system into
smaller components and integrating them either in a top-down or
bottom up manner.
A module is an independent, well-defined and well understood
executable program.
Abstraction
It provides an illusion of the system. It separates the behaviours of
software modules from their implementation.
It is helpful in extracting the essential properties without worrying
about the unnecessary details.

46
Encapsulation
It allows accessing certain details by defining and enforcing access
constraints having less effect on other parts of the program.
It makes the testing and maintenance tasks easier.
Information hiding is characterized by secreting the design and
implementation decision.
Incremental development
It is not possible in a software development project to have all the functional
requirements in the beginning.
With only known and available requirements, systems are often developed in
a partial manner. incremental enhancement in the system can be achieved by
adding the entire requirements.
Understandability
Abstraction in program design makes the program understandable.
Abstract representation provides better understanding of the system as
47
compared to the source code because a developed system passes through
Consistency and completeness
Consistency can help perform specified task in an easy manner, without much
effort.
There should be uniformity in the notation, syntax, semantics and symbols of
a project which leads to unique understanding among team members.
Completeness ensures that all the essential details which are explicit and
necessary in the project are included.
Generality
The problem must be formulated in a generalized manner rather than as
per the current needs.
Generic components are easily customized according to the customer
needs, so are faster, better and cheaper products are produced.
Perform verification and validation to maintain quality
Defect detection and prevention early in the development cycle can reduce
further maintenance and reconstruction costs and time.
At the end of each phase verification and validation using tools can ensure the
quality of the product and satisfy the customer needs.
48
Follow-up the scope statement, deadlines, and early product delivery
Project managers must review the scope statement and participate in each
review meeting to know the progress and status of the scope statement.
Early delivery of the product can benefit the customer and development
organization.
Design for change
it indicates change in perspective
The accountability of changes during the development can help the developers
to easily extend the application.
Follow disciplined and mature process
A software organization achieve process maturity by following policies,
standards and organizational structures.
A matured process always aims at quality of product and customer satisfaction.
An immature software organization focuses on solving the immediate crisis.

49

Take responsibility and commit


Team members should perform their duties once they have committed
to accomplishing the assigned job within the stipulated time.
Commitment is needed to perform the responsibilities.

Better planning and management rather than technology


Organization should focus on better project planning and management
because technology cannot counterbalance poor management.
Good planning and management motivate and attract people to
perform their best.

50
Summary

The adoption of systematic software engineering approach has been a great


effort in the software industry to produce quality software.

complexity, hardware versus software cost, lateness, costliness, poor


quality, unmanageable nature, immaturity, and lack of planning and
management practices.
IEEE defines software engineering as a systematic approach to
development, operation, maintenance, and retirement of software.
The main goal of software engineering is to understand customer needs and
develop software with improved quality, on time and within budget.
There are certain other important challenges, such as understanding the
customer requirements, frequently changing technology, changing customer
requirements, increasing market of reuse business, platform independency,
and so on.
51

You might also like