SHARBANI BHATTACHARYA
SENIOR MEMBER IEEE
Software
Engineering
Govt. Polytechnic(W)
FARIDABAD
24 August 2016
SOFTWARE ENGINEERING
 The notion of ‘software engineering’ was first
proposed in 1968 at a conference held to
discuss what was then called the ‘software
crisis’ (Naur and Randell, 1969).
 It became clear that individual approaches
to program development did not scale up to
large and complex software systems. These
were unreliable, cost more than expected,
and were delivered late.
2
SOFTWARE ENGINEERING
 Throughout the 1970s and 1980s, a variety
of new software engineering techniques and
methods were developed, such as structured
programming, information hiding and object-
oriented development.
 Tools and standard notations were
developed and are now extensively used.
3
SOFTWARE ENGINEERING
Software engineering is a field
of engineering,
for designing and writing programs for compute
rs or other electronic devices.
4
SOFTWARE ENGINEER
A software engineer, or programmer, writes
software (or changes existing software) and
compiles software using methods that make it
better quality
5
SOFTWARE ENGINEERING
Software engineering can broadly be split into the following steps-
 Requirements say what the software should do.
 Software design is usually done on paper. It says what the
different parts of the software are, and how they talk to each
other.
 After the design phase is done, each component (part) of the
software is coded. Code is what tells the computer exactly what
to do at each step.
 Testing is done to see if the components meet the requirements
and that the system as a whole meet the requirements.
 Part or all of this process can repeat if bugs are found or new
requirements are needed.
6
SOFTWARE ENGINEERS
A software engineer is a person who applies
the principles of software engineering to the
design, development, maintenance, testing,
and evaluation of the software and systems
that make computers or anything containing
software work
7
SOFTWARE ENGINEERS
8
SOFTWARE ENGINEERS
9
SOFTWARE ENGINEERS
10
SOFTWARE ENGINEERS
11
SOFTWARE ENGINEERS
In May 2015, the United States U. S. Bureau of
Labor Statistics published an updated count of
software engineers which has gone up from
760,840 in 2004
to 1,554,960 in 2015;
in the same period there were some 1,610,480
practitioners employed in the U.S. in all other
engineering disciplines combined.
12
TOOLS
Software engineers use many tools and practices
in making software. Some of the most common
are:
 Flowcharts
 UML diagram
 Debugging tools
 Compiler
 Text editor, usually part of an IDE - Integrated
Development Environment
13
PRIZES IN SOFTWARE ENGINEERING
 The CODiE awards is a yearly award issued
by the Software and Information Industry
Association for excellence in software
development within the software industry.
 Jolt Awards are awards in the software
industry.
 Stevens Award is a software engineering
award given in memory of Wayne Stevens.
14
SOFTWARE ENGINEERING BODY OF
KNOWLEDGE
ETS University and UQAM (Université du
Québec à Montréal) were mandated by IEEE
to develop the Software Engineering Body of
Knowledge (SWEBOK), which has become an
ISO standard describing the body of
knowledge covered by a software engineer.
15
16
SOFTWARE PRODUCT/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.
17
SOFTWARE PRODUCTS
18
TYPE OF SOFTWARE PRODUCTS
 Generic products
 Customized (or bespoke) products
19
GENERIC PRODUCTS
Generic products These are stand-alone systems
that are produced by a development organization
and sold on the open market to any customer who
is able to buy them. Examples of this type of
product include software for PCs such as
databases, word processors, drawing packages,
and project-management tools.It also includes so-
called vertical applications designed for some
specific purpose such as library information
systems, accounting systems, or systems for
maintaining dental records.
20
CUSTOMIZED PRODUCTS
These are systems that are commissioned by
a particular customer. A software contractor
develops the software especially for that
customer. Examples of this type of software
include control systems for electronic devices,
systems written to support a particular
business process, and air traffic control
systems.
21
SOFTWARE ENGINEERING IS IMPORTANT FOR
TWO REASONS:
 More and more, individuals and society rely on
advanced software systems. We need to be
able to produce reliable and trustworthy
systems economically and quickly.
 It is usually cheaper, in the long run, to use
software engineering methods and techniques
for software systems rather than just write the
programs as if it was a personal programming
project. For most types of systems, the majority
of costs are the costs of changing the software
after it has gone into use.
22
SOFTWARE PROCESS
The systematic approach that is used in
software engineering is sometimes called a
software process. A software process is a
sequence of activities that leads to the
production of a software product.
23
FOUR FUNDAMENTAL ACTIVITIES
 Software specification, where customers and
engineers define the software that is to be
produced and the constraints on its operation.
 Software development, where the software is
designed and programmed.
 Software validation, where the software is
checked to ensure that it is what the customer
requires.
 Software evolution, where the software is
modified to reflect changing customer and
market requirements.
24
IEEE
IEEE defines software engineering as:
 (1) The application of a systematic,
disciplined, quantifiable approach to the
development, operation, and maintenance of
software; that is, the application of
engineering to software.
 (2) The study of approaches as in the above
statement.
25
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.”
26
SOFTWARE EVOLUTION
The process of developing a software product
using software engineering principles and
methods is referred to as Software Evolution.
This includes the initial development of
software and its maintenance and updates, till
desired software product is developed, which
satisfies the expected requirements.
27
28
SOFTWARE EVOLUTION LAWS
Lehman has given laws for software evolution.
He divided the software into three different
categories:
 Static-type (S-type)
 Practical-type (P-type)
 Embedded-type (E-type)
29
SOFTWARE EVOLUTION LAWS
 Static-type (S-type) - This is a software, which works strictly
according to defined specifications and solutions. The solution
and the method to achieve it, both are immediately understood
before coding. The s-type software is least subjected to changes
hence this is the simplest of all. For example, calculator program
for mathematical computation.
 Practical-type (P-type) - This is a software with a collection of
procedures. This is defined by exactly what procedures can do. In
this software, the specifications can be described but the solution
is not obviously instant. For example, gaming software.
 Embedded-type (E-type) - This software works closely as the
requirement of real-world environment. This software has a high
degree of evolution as there are various changes in laws, taxes
etc. in the real world situations. For example, Online trading
software.
30
SOFTWARE PARADIGMS
Software paradigms refer to the methods and
steps, which are taken while designing the
software. There are many methods proposed
and are implemented. But, we need to see
where in the software engineering concept,
these paradigms stand.
31
32
SOFTWARE DEVELOPMENT PARADIGM
This paradigm is known as software engineering
paradigms; where all the engineering concepts
pertaining to the development of software are
applied. It includes various researches and
requirement gathering which helps the software
product to build.
 Requirement gathering
 Software design
 Programming
33
SOFTWARE DESIGN PARADIGM
 Design
 Maintenance
 Programming
34
PROGRAMMING PARADIGM
 Coding
 Testing
 Integration
35
NEED OF SOFTWARE ENGINEERING
The need of software engineering arises
because of higher rate of change in user
requirements and environment on which the
software is working. Following are some of the
needs stated:
36
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.
 Scalability- 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.
37
CHARACTERISTICS OF GOOD SOFTWARE
 This software must satisfy on the following
grounds:
 Operational
 Transitional
 Maintenance
38
OPERATIONAL
 Budget
 Usability
 Efficiency
 Correctness
 Functionality
 Dependability
 Security
 Safety
39
TRANSITIONAL
 Portability
 Interoperability
 Reusability
 Adaptability
40
MAINTENANCE
 Modularity
 Maintainability
 Flexibility
 Scalability
41
42
ISSUES THAT AFFECT SOFTWARE
 Heterogeneity
 Business and social change
 Security and trust
43
HETEROGENEITY
Increasingly, systems are required to operate as
distributed systems across networks that include
different types of computer and mobile devices. As
well as running on general-purpose computers,
software may also have to execute on mobile
phones. You often have to integrate new software
with older legacy systems written in different
programming languages. The challenge here is to
develop techniques for building dependable
software that is flexible enough to cope with this
heterogeneity.
44
BUSINESS AND SOCIAL CHANGE
Business and society are changing incredibly
quickly
as emerging economies develop and new
technologies become available. They need to be
able to change their existing software and to
rapidly develop new software. Many traditional
software engineering techniques are time
consuming and
delivery of new systems often takes longer than
planned. They need to evolve so that the time
required for software to deliver value to its
customers is reduced. 45
SECURITY AND TRUST
As software is intertwined with all aspects of
our lives, it is essential that we can trust that
software. This is especially true for remote
software systems accessed through a web
page or web service interface. We have to
make sure that malicious users cannot attack
our software and that information security is
maintained.
46
TYPES OF SOFTWARE APPLICATION
 Stand-alone applications
 Interactive transaction-based applications
 Embedded control systems
 Batch processing systems
 Entertainment systems
 Systems for modeling and simulation
 Data collection systems
 Systems of systems
47
STAND-ALONE APPLICATIONS
 These are application systems that run on a
local computer, such as a PC. They include
all necessary functionality and do not need to
be connected to a network. Examples of
such applications are office applications on a
PC, CAD programs, photo manipulation
software, etc.
48
INTERACTIVE TRANSACTION-BASED
APPLICATIONS
These are applications that execute on a remote
computer and that are accessed by users from their
own PCs or terminals. Obviously, these include web
applications such as e-commerce applications
where you can interact with a remote system to buy
goods and services.
This class of application also includes business
systems, where a business provides access to its
systems through a web browser or special-purpose
client program and cloud-based services, such as mail
and photo sharing. Interactive applications often
incorporate a large data store that is accessed and
updated ineach transaction.
49
EMBEDDED CONTROL SYSTEMS
These are software control systems that
control and manage hardware devices.
Numerically, there are probably more
embedded systems than any other type of
system. Examples of embedded systems
include the software in a mobile (cell) phone,
software that controls anti-lock braking in a car,
and software in a microwave oven to control
the cooking process.
50
BATCH PROCESSING SYSTEMS
These are business systems that are designed
to process data in large batches. They process
large numbers of individual inputs to create
corresponding outputs. Examples of batch
systems include periodic billing systems, such
as phone billing systems, and salary payment
systems.
51
ENTERTAINMENT SYSTEMS
These are systems that are primarily for
personal use and which are intended to
entertain the user. Most of these systems are
games of one kind or another. The quality of
the user interaction offered is the most
important distinguishing characteristic of
entertainment systems.
52
SYSTEMS FOR MODELING AND SIMULATION
These are systems that are developed by
scientists and engineers to model physical
processes or situations, which include many,
separate, interacting objects. These are often
computationally intensive and require high-
performance parallel systems for execution.
53
DATA COLLECTION SYSTEMS
These are systems that collect data from their
environment using a set of sensors and send
that data to other systems for processing.
The software has to interact with sensors and
often is installed in a hostile environment such
as inside an engine or in a remote location.
54
SYSTEMS OF SYSTEMS
These are systems that are composed of a
number of other software systems. Some of
these may be generic software products, such
as a spreadsheet program. Other systems in
the assembly may be specially written for that
environment.
55
PROFESSIONAL RESPONSIBILITY
 Confidentiality
 Competence
 Intellectual property rights
 Computer misuse
56
CONFIDENTIALITY
You should normally respect the confidentiality
of your employers or clients irrespective of
whether or not a formal confidentiality
agreement has been signed.
57
COMPETENCE
You should not misrepresent your level of
competence. You should not knowingly accept
work that is outside your competence.
58
INTELLECTUAL PROPERTY RIGHTS
You should be aware of local laws governing
the use of intellectual property such as patents
and copyright. You should be careful to ensure
that the intellectual property of employers and
clients is protected.
59
COMPUTER MISUSE
You should not use your technical skills to
misuse other people’s computers. Computer
misuse ranges from relatively trivial (game
playing on an employer’s machine, say) to
extremely serious (dissemination of viruses or
other malware).
60
ACM/IEEE-CS JOINT TASK FORCE ON SOFTWARE ENGINEERING
ETHICS AND PROFESSIONAL PRACTICES
Software engineers shall commit themselves to
making the analysis, specification, design,
development, testing and maintenance of
software a beneficial and respected profession.
In accordance with their commitment to the
health, safety and welfare of the public,
software engineers shall adhere to the
following Eight Principles
61
EIGHT PRINCIPLES:
1.PUBLIC — Software engineers shall act consistently with the public
interest.
2. CLIENT AND EMPLOYER — Software engineers shall act in a manner
that is in the
best interests of their client and employer consistent with the public
interest.
3. PRODUCT — Software engineers shall ensure that their products and
related
modifications meet the highest professional standards possible.
4. JUDGMENT — Software engineers shall maintain integrity and
independence in their professional judgment.
5. MANAGEMENT — Software engineering managers and leaders shall
subscribe to and promote an ethical approach to the management of
software development and
maintenance.
6. PROFESSION — Software engineers shall advance the integrity and
reputation of
the profession consistent with the public interest.
7. COLLEAGUES — Software engineers shall be fair to and supportive of
their colleagues.
8. SELF — Software engineers shall participate in lifelong learning
regarding the
62
WEB-BASED SYSTEMS ARE ENGINEERED
 Software reuse has become the dominant
approach for constructing web-based systems.
When building these systems, you think about
how you can assemble them from pre-existing
software components and systems.
 It is now generally recognized that it is
impractical to specify all the requirements for
such systems in advance. Web-based systems
should be developed
and delivered incrementally.
63
WEB-BASED SYSTEMS ARE ENGINEERED
 User interfaces are constrained by the
capabilities of web browsers. Although
technologies such as AJAX (Holdener, 2008)
mean that rich interfaces can be created
within a web browser, these technologies are
still difficult to use. Web forms with local
scripting are more commonly used.
Application interfaces on web-based systems
are often poorer than the specially designed
user interfaces on PC system products.
64
STRUCTUREO ANALYTICAL MODEL
65
INFORMATION FLOW MODEL
66
RELATIONSHIP BETWEEN DATA FLOW AND
CONTROL FLOW
67
68
69
HIGH LEVEL LANGUAGES
 C
 C++
 C#
 F#
 Python
 Ruby
 Scala
 Java
 SQL
70
REFERENCES
 Software Engineering by Somerville
 Software Engineering-Pressman
 Software Engineering Tutorial Point
 Software Engineering Wikipedia
71
THANK YOU
72

SE Introduction sharbani bhattacharya

  • 1.
    SHARBANI BHATTACHARYA SENIOR MEMBERIEEE Software Engineering Govt. Polytechnic(W) FARIDABAD 24 August 2016
  • 2.
    SOFTWARE ENGINEERING  Thenotion of ‘software engineering’ was first proposed in 1968 at a conference held to discuss what was then called the ‘software crisis’ (Naur and Randell, 1969).  It became clear that individual approaches to program development did not scale up to large and complex software systems. These were unreliable, cost more than expected, and were delivered late. 2
  • 3.
    SOFTWARE ENGINEERING  Throughoutthe 1970s and 1980s, a variety of new software engineering techniques and methods were developed, such as structured programming, information hiding and object- oriented development.  Tools and standard notations were developed and are now extensively used. 3
  • 4.
    SOFTWARE ENGINEERING Software engineeringis a field of engineering, for designing and writing programs for compute rs or other electronic devices. 4
  • 5.
    SOFTWARE ENGINEER A softwareengineer, or programmer, writes software (or changes existing software) and compiles software using methods that make it better quality 5
  • 6.
    SOFTWARE ENGINEERING Software engineeringcan broadly be split into the following steps-  Requirements say what the software should do.  Software design is usually done on paper. It says what the different parts of the software are, and how they talk to each other.  After the design phase is done, each component (part) of the software is coded. Code is what tells the computer exactly what to do at each step.  Testing is done to see if the components meet the requirements and that the system as a whole meet the requirements.  Part or all of this process can repeat if bugs are found or new requirements are needed. 6
  • 7.
    SOFTWARE ENGINEERS A softwareengineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work 7
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    SOFTWARE ENGINEERS In May2015, the United States U. S. Bureau of Labor Statistics published an updated count of software engineers which has gone up from 760,840 in 2004 to 1,554,960 in 2015; in the same period there were some 1,610,480 practitioners employed in the U.S. in all other engineering disciplines combined. 12
  • 13.
    TOOLS Software engineers usemany tools and practices in making software. Some of the most common are:  Flowcharts  UML diagram  Debugging tools  Compiler  Text editor, usually part of an IDE - Integrated Development Environment 13
  • 14.
    PRIZES IN SOFTWAREENGINEERING  The CODiE awards is a yearly award issued by the Software and Information Industry Association for excellence in software development within the software industry.  Jolt Awards are awards in the software industry.  Stevens Award is a software engineering award given in memory of Wayne Stevens. 14
  • 15.
    SOFTWARE ENGINEERING BODYOF KNOWLEDGE ETS University and UQAM (Université du Québec à Montréal) were mandated by IEEE to develop the Software Engineering Body of Knowledge (SWEBOK), which has become an ISO standard describing the body of knowledge covered by a software engineer. 15
  • 16.
  • 17.
    SOFTWARE PRODUCT/ENGINEERING  Softwareis 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. 17
  • 18.
  • 19.
    TYPE OF SOFTWAREPRODUCTS  Generic products  Customized (or bespoke) products 19
  • 20.
    GENERIC PRODUCTS Generic productsThese are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them. Examples of this type of product include software for PCs such as databases, word processors, drawing packages, and project-management tools.It also includes so- called vertical applications designed for some specific purpose such as library information systems, accounting systems, or systems for maintaining dental records. 20
  • 21.
    CUSTOMIZED PRODUCTS These aresystems that are commissioned by a particular customer. A software contractor develops the software especially for that customer. Examples of this type of software include control systems for electronic devices, systems written to support a particular business process, and air traffic control systems. 21
  • 22.
    SOFTWARE ENGINEERING ISIMPORTANT FOR TWO REASONS:  More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly.  It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project. For most types of systems, the majority of costs are the costs of changing the software after it has gone into use. 22
  • 23.
    SOFTWARE PROCESS The systematicapproach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product. 23
  • 24.
    FOUR FUNDAMENTAL ACTIVITIES Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.  Software development, where the software is designed and programmed.  Software validation, where the software is checked to ensure that it is what the customer requires.  Software evolution, where the software is modified to reflect changing customer and market requirements. 24
  • 25.
    IEEE IEEE defines softwareengineering as:  (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.  (2) The study of approaches as in the above statement. 25
  • 26.
    Fritz Bauer, aGerman 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.” 26
  • 27.
    SOFTWARE EVOLUTION The processof developing a software product using software engineering principles and methods is referred to as Software Evolution. This includes the initial development of software and its maintenance and updates, till desired software product is developed, which satisfies the expected requirements. 27
  • 28.
  • 29.
    SOFTWARE EVOLUTION LAWS Lehmanhas given laws for software evolution. He divided the software into three different categories:  Static-type (S-type)  Practical-type (P-type)  Embedded-type (E-type) 29
  • 30.
    SOFTWARE EVOLUTION LAWS Static-type (S-type) - This is a software, which works strictly according to defined specifications and solutions. The solution and the method to achieve it, both are immediately understood before coding. The s-type software is least subjected to changes hence this is the simplest of all. For example, calculator program for mathematical computation.  Practical-type (P-type) - This is a software with a collection of procedures. This is defined by exactly what procedures can do. In this software, the specifications can be described but the solution is not obviously instant. For example, gaming software.  Embedded-type (E-type) - This software works closely as the requirement of real-world environment. This software has a high degree of evolution as there are various changes in laws, taxes etc. in the real world situations. For example, Online trading software. 30
  • 31.
    SOFTWARE PARADIGMS Software paradigmsrefer to the methods and steps, which are taken while designing the software. There are many methods proposed and are implemented. But, we need to see where in the software engineering concept, these paradigms stand. 31
  • 32.
  • 33.
    SOFTWARE DEVELOPMENT PARADIGM Thisparadigm is known as software engineering paradigms; where all the engineering concepts pertaining to the development of software are applied. It includes various researches and requirement gathering which helps the software product to build.  Requirement gathering  Software design  Programming 33
  • 34.
    SOFTWARE DESIGN PARADIGM Design  Maintenance  Programming 34
  • 35.
    PROGRAMMING PARADIGM  Coding Testing  Integration 35
  • 36.
    NEED OF SOFTWAREENGINEERING The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working. Following are some of the needs stated: 36
  • 37.
    NEED OF SOFTWAREENGINEERING  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.  Scalability- 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. 37
  • 38.
    CHARACTERISTICS OF GOODSOFTWARE  This software must satisfy on the following grounds:  Operational  Transitional  Maintenance 38
  • 39.
    OPERATIONAL  Budget  Usability Efficiency  Correctness  Functionality  Dependability  Security  Safety 39
  • 40.
  • 41.
  • 42.
  • 43.
    ISSUES THAT AFFECTSOFTWARE  Heterogeneity  Business and social change  Security and trust 43
  • 44.
    HETEROGENEITY Increasingly, systems arerequired to operate as distributed systems across networks that include different types of computer and mobile devices. As well as running on general-purpose computers, software may also have to execute on mobile phones. You often have to integrate new software with older legacy systems written in different programming languages. The challenge here is to develop techniques for building dependable software that is flexible enough to cope with this heterogeneity. 44
  • 45.
    BUSINESS AND SOCIALCHANGE Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Many traditional software engineering techniques are time consuming and delivery of new systems often takes longer than planned. They need to evolve so that the time required for software to deliver value to its customers is reduced. 45
  • 46.
    SECURITY AND TRUST Assoftware is intertwined with all aspects of our lives, it is essential that we can trust that software. This is especially true for remote software systems accessed through a web page or web service interface. We have to make sure that malicious users cannot attack our software and that information security is maintained. 46
  • 47.
    TYPES OF SOFTWAREAPPLICATION  Stand-alone applications  Interactive transaction-based applications  Embedded control systems  Batch processing systems  Entertainment systems  Systems for modeling and simulation  Data collection systems  Systems of systems 47
  • 48.
    STAND-ALONE APPLICATIONS  Theseare application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network. Examples of such applications are office applications on a PC, CAD programs, photo manipulation software, etc. 48
  • 49.
    INTERACTIVE TRANSACTION-BASED APPLICATIONS These areapplications that execute on a remote computer and that are accessed by users from their own PCs or terminals. Obviously, these include web applications such as e-commerce applications where you can interact with a remote system to buy goods and services. This class of application also includes business systems, where a business provides access to its systems through a web browser or special-purpose client program and cloud-based services, such as mail and photo sharing. Interactive applications often incorporate a large data store that is accessed and updated ineach transaction. 49
  • 50.
    EMBEDDED CONTROL SYSTEMS Theseare software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system. Examples of embedded systems include the software in a mobile (cell) phone, software that controls anti-lock braking in a car, and software in a microwave oven to control the cooking process. 50
  • 51.
    BATCH PROCESSING SYSTEMS Theseare business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. Examples of batch systems include periodic billing systems, such as phone billing systems, and salary payment systems. 51
  • 52.
    ENTERTAINMENT SYSTEMS These aresystems that are primarily for personal use and which are intended to entertain the user. Most of these systems are games of one kind or another. The quality of the user interaction offered is the most important distinguishing characteristic of entertainment systems. 52
  • 53.
    SYSTEMS FOR MODELINGAND SIMULATION These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. These are often computationally intensive and require high- performance parallel systems for execution. 53
  • 54.
    DATA COLLECTION SYSTEMS Theseare systems that collect data from their environment using a set of sensors and send that data to other systems for processing. The software has to interact with sensors and often is installed in a hostile environment such as inside an engine or in a remote location. 54
  • 55.
    SYSTEMS OF SYSTEMS Theseare systems that are composed of a number of other software systems. Some of these may be generic software products, such as a spreadsheet program. Other systems in the assembly may be specially written for that environment. 55
  • 56.
    PROFESSIONAL RESPONSIBILITY  Confidentiality Competence  Intellectual property rights  Computer misuse 56
  • 57.
    CONFIDENTIALITY You should normallyrespect the confidentiality of your employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. 57
  • 58.
    COMPETENCE You should notmisrepresent your level of competence. You should not knowingly accept work that is outside your competence. 58
  • 59.
    INTELLECTUAL PROPERTY RIGHTS Youshould be aware of local laws governing the use of intellectual property such as patents and copyright. You should be careful to ensure that the intellectual property of employers and clients is protected. 59
  • 60.
    COMPUTER MISUSE You shouldnot use your technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses or other malware). 60
  • 61.
    ACM/IEEE-CS JOINT TASKFORCE ON SOFTWARE ENGINEERING ETHICS AND PROFESSIONAL PRACTICES Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles 61
  • 62.
    EIGHT PRINCIPLES: 1.PUBLIC —Software engineers shall act consistently with the public interest. 2. CLIENT AND EMPLOYER — Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. PRODUCT — Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT — Software engineers shall maintain integrity and independence in their professional judgment. 5. MANAGEMENT — Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. PROFESSION — Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES — Software engineers shall be fair to and supportive of their colleagues. 8. SELF — Software engineers shall participate in lifelong learning regarding the 62
  • 63.
    WEB-BASED SYSTEMS AREENGINEERED  Software reuse has become the dominant approach for constructing web-based systems. When building these systems, you think about how you can assemble them from pre-existing software components and systems.  It is now generally recognized that it is impractical to specify all the requirements for such systems in advance. Web-based systems should be developed and delivered incrementally. 63
  • 64.
    WEB-BASED SYSTEMS AREENGINEERED  User interfaces are constrained by the capabilities of web browsers. Although technologies such as AJAX (Holdener, 2008) mean that rich interfaces can be created within a web browser, these technologies are still difficult to use. Web forms with local scripting are more commonly used. Application interfaces on web-based systems are often poorer than the specially designed user interfaces on PC system products. 64
  • 65.
  • 66.
  • 67.
    RELATIONSHIP BETWEEN DATAFLOW AND CONTROL FLOW 67
  • 68.
  • 69.
  • 70.
    HIGH LEVEL LANGUAGES C  C++  C#  F#  Python  Ruby  Scala  Java  SQL 70
  • 71.
    REFERENCES  Software Engineeringby Somerville  Software Engineering-Pressman  Software Engineering Tutorial Point  Software Engineering Wikipedia 71
  • 72.