OMPUTER NETWORKS Unit 1-2023 Bu
OMPUTER NETWORKS Unit 1-2023 Bu
OMPUTER NETWORKS Unit 1-2023 Bu
1956
Approved by AICTE, COA and BCI, New Delhi
SOFTWARE ENGINEERING
M20CA1060
I SEM MCA
School of CSA
Dr.Hemanth.K.S
AGENDA
4
What is Software?
5
Wear vs. Deterioration
6
Software Applications Domains
❖ System software: a collection of programs written to service other programs for
computer itself.
❖ Application software: stand-alone programs that solve a specific business need for
users. Applications in this area process business or technical data in a way that facilitates
business operations or management/technical decision make
7
Software Applications Domains
❖ Engineering/scientific software : has been characterized by “number crunching” algorithms.
Applications range from astronomy to volcanology, from automotive stress analysis to space
shuttle orbital dynamics, and from molecular biology to automated manufacturing.
✓ Example Computer-aided design, system simulation, and other interactive applications have
begun to take on real-time and even system software characteristics
❖ Embedded software : resides within a product or system and is used to implement and control
features and functions for the end user and for the system itself.
✓ Example key pad control, digital functions in an automobile such as fuel control, dashboard
displays, and braking systems
8
Software Applications Domains
❖ Product-line software: designed to provide a specific capability for use by many different
customers.
❖ WebApps (Web applications): “WebApps” this network-centric software category spans a wide
array of applications. WebApps can be little more than a set of linked hypertext files that present
information using text and limited graphics.
✓ Example: stand-alone features, computing functions, and content to the end user
❖ AI software
9
Software Applications Domains
❖ AI software: makes use of non numerical algorithms to solve complex problems that are not
amenable to computation or straight forward analysis.
✓ Example: robotics, expert systems, pattern recognition (image and voice), artificial neural
networks, theorem proving, and game playing.
10
Software Applications: New
Categories
❖ Open world computing—pervasive, distributed computing
❖ Open source
❖ Cognitive machines
11
Why changes required in Software?
12
What is Software Engineering?
Some realities:
❖ should be maintainable
13
Software Engineering: Definition
❖ The seminal definition:
14
Software engineering is a layered technology
15
What is Software Process?
❖A process is a collection of activities, actions, and tasks that are
performed when some work product is to be created.
✓ Action: encompasses a set of tasks that produce a major work Activity Action
product. (Example. Architectural Design)
❖A Process Framework
✓ Communication
✓ Planning.
✓ Modelling.
✓ Construction.
✓ Deployment.
17
Software Process
Communication
❖A Process Framework
Process
collaborate with the customer and other stakeholders. Framework
18
Software Process
Communication
❖A Process Framework
19
Software Process
A Process Framework : umbrella activities
21
Software Process
A Process Framework : umbrella activities
22
Software Process
Adapting a Process Model
A process adopted for one project might be significantly different than a process adopted for
another project. Among the differences are
❖the overall flow of activities, actions & tasks and the interdependencies.
❖ the degree to which actions and tasks are defined within each framework
❖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
• Testing &
Examine the Quality
result Assurance
24
Software Engineering Practice:
The Essence of Practice
1. 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?
25
Software Engineering Practice:
The Essence of Practice
26
Software Engineering Practice:
The Essence of Practice
3. 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?
27
Software Engineering Practice:
The Essence of Practice
4. Examine the Result
28
Software Engineering Practice:
David Hooker’s General Principles
Think!
29
Software Myths
❖ Software development myths—erroneous beliefs about
❖ Are believable because they often have elements of ❖Three types of Myths are:
truth, but …Invariably lead to bad decisions, therefore ✓Management myths.
… ✓Customer myths.
software engineering
30
Software Myths
Management Myths: Managers with software
✓ to maintain budgets,
31
Software Myths
Customer Myths: Myths lead to false
Myth 2
Myth 3
Myth 1 Once we write the program and get it to work, our job is done.
Myth 2 Until I get the program “running” I have no way of assessing its quality.
The only deliverable work product for a successful project is the working
Myth program.
3
Myth Software
4 engineering will make us create voluminous and unnecessary
documentation and will invariably slow us down.
33
How It all Starts?
SafeHome:
✓ the need to the need to adapt a ‘legacy system’ to a changing business environment;
34
How It all Starts?
35
Software Process Structure
❖ Howard Baetjer Jr. [Bae98] comments on the software process:
“ Because software, like all capital, is embodied knowledge, and because that
knowledge is initially dispersed, tacit, latent, and incomplete in large measure,
software development is a social learning process “.
❖ The process is a dialogue in which the knowledge that must become the
software is brought together and embodied in the software.
❖ The process provides interaction between users and designers, between users
and evolving tools, and between designers and evolving tools [technology].
❖ It is an iterative process in which the evolving tool itself serves as the medium
for communication, with each new round of the dialogue eliciting more useful
knowledge from the people involved.
36
Software Process Structure
❖ A software process is a framework for the activities, actions, and tasks that are
required to build high-quality software.
❖ Is “process” synonymous with “software engineering”? The answer is yes and
no.
❖ A software process defines the approach that is taken as software is
engineered whereas software engineering also encompasses technologies that
populate the process—technical methods and automated tools.
❖ More important, software engineering is performed by creative,
knowledgeable people who should adapt a mature software process so that it
is appropriate for the products that they build and the demands of their
marketplace.
37
A Generic Process Model
38
Process Flow
39
Defining A Framework
Activity
❖a software team would need significantly more information before it
could properly execute any one of these activities as part of the
software process. The key question is :
❖What actions are appropriate for a framework activity ?
✓ given the nature of the problem to be solved,
✓ the characteristics of the people doing the work, and
✓ the stakeholders who are sponsoring the project?
40
Identifying a Task Set
A task set defines the actual work to be done to accomplish the objectives
of a software engineering action.
✓ A list of the task to be accomplished
✓ A list of the work products to be produced
✓ A list of the quality assurance filters to be applied
41
Process Patterns
• A process pattern
– describes a process-related problem that is encountered during software engineering
work,
– identifies the environment in which the problem has been encountered, and
– suggests one or more proven solutions to the problem.
• Stated in more general terms, a process pattern provides you with a template [Amb98]—
a consistent method for describing problem solutions within the context of the software
process.
42
Process Pattern Types
43
Process Assessment and Improvement
• Standard CMMI Assessment Method for Process Improvement (SCAMPI) — provides a
five step process assessment model that incorporates five phases: initiating, diagnosing,
establishing, acting and learning.
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a diagnostic
technique for assessing the relative maturity of a software organization; uses the SEI CMM as
the basis for the assessment [Dun01]
• SPICE—The SPICE (ISO/IEC15504) standard defines a set of requirements for software
process assessment. The intent of the standard is to assist organizations in developing an
objective evaluation of the efficacy of any defined software process. [ISO08]
• ISO 9001:2000 for Software—a generic standard that applies to any organization that wants
to improve the overall quality of the products, systems, or services that it provides. Therefore,
the standard is directly applicable to software organizations and companies. [Ant06]
44
Process Models
• Process models were originally proposed to bring order to the chaos of
software development.
• History has indicated that these models have brought a certain amount of
useful structure to software engineering work and have provided a
reasonably effective road map for software teams.
• However, software engineering work and the products that are produced
remain on “the edge of chaos.”
• Each process model described tries to strike a balance between the need to
impart order in a chaotic world and the need to be adaptable when things
change constantly.
45
The SDLC Model
46
Prescriptive Models
• A prescriptive process model strives for structure and order in software development.
• Each process model also prescribes a process flow (also called a work flow ) in which the
process elements are interrelated to one another.
• All software process models can accommodate the generic framework activities, but
each applies a different emphasis to these activities and defines a process flow that
invokes each framework activity in a different manner.
47
Prescriptive Models
The Waterfall Model (linear-sequential life cycle model)
48
Prescriptive Models
49
Prescriptive Models
The Incremental Model
Prescriptive Models
The Incremental Model
51
When we use the Incremental Model?
55
Prescriptive Models
Evolutionary Models: Prototyping
Construction
of prototype
56
Steps of Prototype Model
60
Spiral Model
• Identification
• Design
• Construct or Build
• Evaluation and Risk Analysis
Uses of a Spiral Model
• New product line which should be released in phases to get enough customer feedback.
• Significant changes are expected in the product during the development cycle.
Prescriptive Models
Concurrent Models
64
Prescriptive Models
Concurrent Models
Concurrent Models are essential for developing software systems that can handle
concurrent execution. These models can be complex and require careful management,
but can help to create highly efficient and scalable software systems.
65
Prescriptive Models
Concurrent Models
If we take waterfall model as an example, you will not know the activities going on in each phase,
only after the phase is over, you get a work product or a document.
Suppose we want to know the state of activities of the design phase and at the same time we
want to know about testing phase activities. Which ones are complete and which are not?
The concurrent process model shows the current state of activities, tasks and their associated
states that remain in different phases.
66
Prescriptive Models
Concurrent Models
For example
‘Design Phase’ may be at an ‘awaiting state’ and ‘customer communication’ is in ‘under revision’
state.
The customer wants some changes to the design, then ‘communication’ goes to ‘awaiting
changes’ and ‘design’ goes to the ‘under-development’ stage again.
The benefit of this model is that project managers know each phase is what state and why.
Main Point – Maintain information about each phase at the activity level.
67
Specialized Process Models
68
Specialized Process Models
Component-Based Development
❖ This approach aims to improve the efficiency, quality, and maintainability of software
systems by leveraging existing software components that have already been tested and
proven to be reliable.
69
Specialized Process Models
Component-Based Development
❖ These components can be created using different programming languages, tools, and
platforms, and can be assembled together to create complex software systems.
70
Specialized Process Models
Component-Based Development
The benefits of CBD include:
• Reusability: By using pre-existing components, software developers can save time and
effort that would otherwise be spent creating new code from scratch.
• Quality: CBD promotes the use of tested and proven components, which can improve the
overall quality and reliability of software systems.
71
Specialized Process Models
Component-Based Development
• Component selection: Choosing the right components for a software system can be a
complex and time-consuming process.
• Standards: CBD relies heavily on standards and conventions for interoperability, and
different components may not always adhere to the same standards.
72
Specialized Process Models
The Formal Methods Model
❖ This approach aims to improve the reliability, safety, and security of software
systems by providing rigorous methods for specifying, modeling, and
verifying system requirements and behavior.
73
Specialized Process Models
The Formal Methods Model
The Formal Methods Model involves the following steps:
• Safety and security: Formal methods can help to identify potential safety and security
issues in software systems and provide techniques for addressing them.
• Clarity and precision: The use of formal mathematical notations can help to ensure that
the system requirements and behavior are well-defined and unambiguous.
• Maintenance: Formal methods can help to simplify the maintenance of software systems
by providing a clear and well-defined specification and model of the system.
75
Specialized Process Models
The Formal Methods Model
• Complexity: The use of formal methods can be complex and time-consuming, which can
increase the cost and time required for software development.
• Scope: Formal methods are most effective for critical and safety-critical systems, but may
not be necessary or appropriate for all software systems..
76
Specialized Process Models
Aspect-Oriented Software Development
❖ Aspect-oriented software development (AOSD), often referred to as aspect-oriented
programming (AOP) or aspect-oriented component engineering is a relatively new
software engineering paradigm that provides a process and methodological approach
for defining, specifying, designing, and constructing aspects —“mechanisms beyond
subroutines and inheritance for localizing the expression of a crosscutting concern.
77
Unified Process Models
❖ A “use-case driven, architecture-centric, iterative and incremental” software process
closely aligned with the Unified Modeling Language (UML)
❖ the Unified Process is an attempt to draw on the best features and characteristics of
traditional software process models, but characterize them in a way that implements many
of the best principles of agile software development.
❖ It emphasizes the important role of software architecture and “helps the architect focus
on understandability, reliance to future changes, and reuse” .
❖ It suggests a process flow that is iterative and incremental, providing the evolutionary
feel that is essential in modern software development.
78
Unified Process Models
Brief History
❖ During the early 1990s James Rumbaugh [Rum91], Grady Booch [Boo94], and Ivar
Jacobson [Jac92] began working on a “unified method” that would combine the best
features of each of their individual object-oriented analysis and design methods and
adopt additional features proposed by other experts in object-oriented modeling.
❖ The result was UML—a unified modeling language that contains a robust notation
for the modeling and development of object- oriented systems.
79
Unified Process Models
UP Phases
Elab o r at io n
elaboration
Incep t io n
inception
co nst r uct io n
Release
t r ansit io n
soft ware increment
p r o d uct io n
UP Work Products
81
Unified Process Models
UP Phases
UP Phases
Incept ion Elaborat ion Const ruct ion Transit ion Product ion
Workflows
Requirements
Analysis
Design
Implementation
Test
Support
Iterations #1 #2 #n-1 #n
82
THANK YOU