Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
25 views

Module1 Part1

Software engineering involves developing high-quality software through systematic and disciplined processes. It aims to produce reliable and efficient software at low cost. Some key challenges in software engineering include maintaining legacy systems, dealing with diverse systems, and reducing delivery times to meet business demands. The nature of software is also changing, posing ongoing challenges across categories such as standalone applications, embedded systems, and systems-of-systems.

Uploaded by

msiva
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views

Module1 Part1

Software engineering involves developing high-quality software through systematic and disciplined processes. It aims to produce reliable and efficient software at low cost. Some key challenges in software engineering include maintaining legacy systems, dealing with diverse systems, and reducing delivery times to meet business demands. The nature of software is also changing, posing ongoing challenges across categories such as standalone applications, embedded systems, and systems-of-systems.

Uploaded by

msiva
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 42

CSE3001- SOFTWARE ENGINEERING

1
Text Books
Roger Pressman, Software Engineering: A Practitioner's
Approach, 7th Edition, McGraw-Hill, 2010.
Reference Books
1) Ian Sommerville,Software Engineering, 9th Edition,
Addision-Wesley, 2016
2) Pankaj Jalote, A Concise Introduction to Software
Engineering, Springer, 2008
3) William E. Lewis , “Software Testing and Continuous Quality
Improvement”, Third Edition, Auerbach Publications, 2008

2
OVERVIEW OF SOFTWARE
ENGINEERING
VIT Chennai

3
OVERVIEW OF SOFTWARE ENGINEERING

• 5 hours SLO: 1
• Nature of Software, Software Engineering,
Software – process, project, product, Process
Models – Classical & Evolutionary models,
Overview of System Engineering

4
What is software?
• Computer programs and associated documentation

• Software is: (1) instructions (computer programs) that when


executed provide desired features, function, and performance;
(2) data structures that enable the programs to adequately
manipulate information and (3) documentation that describes
the operation and use of the programs.
Software products
• Software products may be developed for a particular customer
or may be developed for a general market

• Generic products
– Stand-alone systems that are marketed and sold to any customer who wishes
to buy them.
– Examples – PC software such as graphics programs, project management
tools; CAD software; software for specific markets such as appointments
systems for dentists.
• Customized products
– Software that is commissioned by a specific customer to meet their own
needs.
– Examples – embedded control systems, air traffic control software, traffic
monitoring systems.

Chapter 1 Introduction 6
Product specification
• Generic products
– The specification of what the software should do
is owned by the software developer and decisions
on software change are made by the developer.
• Customized products
– The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required.

Chapter 1 Introduction 7
Application types
• 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.
• Interactive transaction-based applications
– Applications that execute on a remote computer and are accessed
by users from their own PCs or terminals. These include web
applications such as e-commerce applications.
• 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.

Chapter 1 Introduction 8
Application types
• 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.
• Entertainment systems
– These are systems that are primarily for personal use and
which are intended to entertain the user.
• 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.

Chapter 1 Introduction 9
Application types
• 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.
• Systems of systems
– These are systems that are composed of a number
of other software systems.

Chapter 1 Introduction 10
Essential attributes of good software

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to


meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.
Dependability and Software dependability includes a range of characteristics
security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is


designed. This means that it must be understandable, usable and
compatible with other systems that they use.

Chapter 1 Introduction 11
Software characteristics
• Software is developed or engineered, it is
not manufactured in the classical sense.
• Software doesn't "wear out."
• Although the industry is moving toward
component-based construction, most
software continues to be custom-built.

12
Software doesn’t “wear out”: 

13
Wear vs.
Deterioration
increased failure
rate due to side effects
Failure
rate

change
actual curve

idealized curve

Time

14
How Programs Are Usually Written …

This is how the


The requirements The developers problem is
understood it in This is how the solved now
specification was
that way problem was
defined like this
solved before.

This is how the program is This, in fact, is what the


described by marketing customer wanted … ;-)
That is the program after
department
debugging
What is software engineering?

• Software engineering is an engineering discipline whose focus is the


cost effective development of the high quality software system.

• Software engineering is an engineering discipline which is concerned


with all aspects of software production.

• Software engineers should adopt a systematic and organised approach


to their work and use appropriate tools and techniques depending on
the problem to be solved, the development constraints and the
resources available.
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.

17
Software Engineering Definition

• 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.

18
Software Engineering Definition
• 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.

19
What is the difference between software
engineering and computer science?

Computer Science Software Engineering


is concerned with
 theory  the practicalities of developing
 fundamentals  delivering useful software

Computer science theories are currently


insufficient to act as a complete
underpinning for software engineering, BUT
it is a foundation for practical aspects of
software engineering
What are the key challenges facing software
engineering?
• Coping with legacy systems, coping with increasing
diversity and coping with demands for reduced
delivery times.
– Legacy systems – old, valuable systems must be
maintained and updated.
– Heterogeneity – systems are distributed and include a mix
of hardware and software.
– Delivery – there is increasing pressure for faster delivery of
software.
The changing nature of software

• There are seven broad categories of computer software


present continuing challenges for software engineers.
– System software
– Application software
– Engineering/scientific software
– Embedded software
– Product line software
– Web application
– AI software
Software—New Categories
• Open world computing—pervasive, distributed computing
• Ubiquitous computing—wireless networks
• Netsourcing—the Web as a computing engine
• Open source—”free” source code open to the computing
community (a blessing, but also a potential curse!)
• Also …
– Data mining
– Grid computing
– Cognitive machines
– Software for nanotechnologies

23
What is the difference between software
engineering and system engineering?
• Software engineering is part of System engineering
• System engineering is concerned with all aspects of
computer-based systems development including
– hardware,
– software and
– process engineering
• System engineers are involved in
system specification,
architectural design,
integration and deployment
Frequently asked questions about software engineering

Question Answer
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities
of developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including
hardware, software and process engineering. Software
engineering is part of this more general process.

Chapter 1 Introduction 25
Frequently asked questions about
software engineering
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering While all software projects have to be professionally
techniques and methods? managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems require
a complete and analyzable specification to be developed.
You can’t, therefore, say that one method is better than
another.
What differences has the web made to The web has led to the availability of software services
software engineering? and the possibility of developing highly distributed
service-based systems. Web-based systems
development has led to important advances in
programming languages and software reuse.

Chapter 1 Introduction 26
Software Process

• A software process (also knows as software


methodology) is a set of related activities that
leads to the production of the software. These
activities may involve the development of the
software from the scratch, or, modifying an
existing system.

27
Software Process…
• Any software process must include the following four activities:
• Software specification (or requirements engineering): Define
the main functionalities of the software and the constrains
around them.
• Software design and implementation: The software is to be
designed and programmed.
• Software verification and validation: The software must
conforms to it’s specification and meets the customer needs.
• Software evolution (software maintenance): The software is
being modified to meet customer and market requirements
changes.

28
Software process..
• In practice, they include sub-activities such as
requirements validation, architectural design,
unit testing, …etc.
• There are also supporting activities such as
configuration and change management,
quality assurance, project management, user
experience.

29
Software process..
• When we talk about a process, we usually talk about the activities in
it. However, a process also includes the process description, which
includes:
• Products: The outcomes of the an activity. For example, the outcome
of architectural design maybe a model for the software architecture.
• Roles: The responsibilities of the people involved in the process. For
example, the project manager, programmer, etc.
• Pre and post conditions: The conditions that must be true before and
after an activity. For example, the pre condition of the architectural
design is the requirements have been approved by the customer,
while the post condition is the diagrams describing the architectural
have been reviewed.

30
Software process..
• Software process is complex, it relies on
making decisions. There’s no ideal process and
most organizations have developed their own
software process.
• For example, an organization works on critical
systems has a very structured process, while
with business systems, with rapidly changing
requirements, a less formal, flexible process is
likely to be more effective.
31
A Layered Technology

tools

methods

process model

a “quality” focus

Software Engineering

32
A Process Framework
Process framework
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints

Umbrella Activities

33
Framework Activities
• Communication
• Planning
• Modeling
– Analysis of requirements
– Design
• Construction
– Code generation
– Testing
• Deployment

34
Umbrella Activities
• Software project management
• Formal technical reviews
• Software quality assurance
• Software configuration management
• Work product preparation and production
• Reusability management
• Measurement
• Risk management

35
Adapting a Process Model
– the overall flow of activities, actions, and tasks and the
interdependencies among them
– the degree to which actions and tasks are defined within each
framework activity
– the degree to which work products are identified and required
– the manner which quality assurance activities are applied
– the manner in which project tracking and control activities are
applied
– the overall degree of detail and rigor with which the process is
described
– the degree to which the customer and other stakeholders are
involved with the project
– the level of autonomy given to the software team
– the degree to which team organization and roles are
prescribed

36
The Essence of Practice
• Polya suggests:
1. Understand the problem (communication and
analysis).
2. Plan a solution (modeling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and
quality assurance).

37
Understand the Problem
• Who has a stake in the solution to the problem?
That is, who are the stakeholders?
• What are the unknowns? What data, functions,
and features are required to properly solve
the problem?
• Can the problem be compartmentalized? Is it
possible to represent smaller problems that
may be easier to understand?
• Can the problem be represented graphically? Can
an analysis model be created?
38
Plan the Solution
• Have you seen similar problems before? Are there patterns that are
recognizable in a potential solution? Is there existing software that
implements the data, functions, and features that are required?
• Has a similar problem been solved? If so, are elements of the solution
reusable?
• Can subproblems be defined? If so, are solutions readily apparent for
the subproblems?
• Can you represent a solution in a manner that leads to effective
implementation? Can a design model be created?

39
Carry Out the Plan
• Does the solution conform to the plan? Is
source code traceable to the design model?
• Is each component part of the solution
provably correct? Has the design and code
been reviewed, or better, have correctness
proofs been applied to algorithm?

40
Examine the Result
• Is it possible to test each component part of the
solution? Has a reasonable testing strategy
been implemented?
• Does the solution produce results that conform
to the data, functions, and features that are
required? Has the software been validated
against all stakeholder requirements?

41
Hooker’s General Principles

• 1: The Reason It All Exists


• 2: KISS (Keep It Simple, Stupid!)
• 3: Maintain the Vision
• 4: What You Produce, Others Will Consume
• 5: Be Open to the Future
• 6: Plan Ahead for Reuse
• 7: Think!

42

You might also like