You are on page 1of 50

Topic for the class: Software engineering

Unit 1 :Introduction to software models


Date & Time :05-12-2022;1-2PM

Dr.G.VENKATESWARA RAO
Professor
Department of CSE
GITAM Institute of Technology (GIT)
Visakhapatnam – 530045
Email: vgurrala@gitam.edu

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
15th September 2020 1
Topics to be covered
What is software and hardware?
What is software engineering and Importance of software engineering
Role of software engineering
Software Engineering is a layered technology
Process framework activities
Dual Role of Software
Changing Nature of Software
Software Models-Waterfall model
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
25 August 2020
What is software and hardware?

• Definition of Software: Simply all Computer programs come under software


• Computer programs, data structures and associated documentation.
Software products may be developed for a particular customer or may be
developed for a general market
• Definition of Hardware: Simply all physical components come under
hardware.
• Computer hardware is the collection of physical parts of a computer system. This
includes the computer case, monitor, keyboard, and mouse. It also includes all the
parts inside the computer case, such as the hard disk drive, motherboard, video
card, and many others

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
• Software is developed or engineered; it is not manufactured in
the classical sense
– Impacts the management of software projects
• Software doesn't wear out
– Hardware bathtub curve compared to the software ascending
spiked curve
• Although the industry is moving toward component-based
construction, most software continues to be custom built (it is
still complex to build)
24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 4
Software Failure Curve
What is software engineering?, Importance of software engineering and role of software
engineering

Software engineering is an engineering discipline that is concerned with all aspects of software
production

The application of a systematic, disciplined, quantifiable approach to the development, operation, and
maintenance of software; that is, the application of engineering to software

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

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 6
Importance
• Software engineering is important because
specific software is needed in almost every industry, in
every business, and for every function. It becomes
more important as time goes on – if something breaks
within your application portfolio, a quick, efficient, and
effective fix needs to happen as soon as possible.

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 7
Role of software engineering

• All software industries to develop their products from scratch to maintenance level

• You'll create, maintain, audit and improve systems to meet particular needs, often as
advised by a systems analyst or architect, testing both hard and software systems to
diagnose and resolve system faults.

• All students to develop their projects incorporate all se concepts

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 8
Software Engineering is a layered technology
• Software Engineering is a layered technology. It means software
engineering encompasses a process, methods for managing and
engineering software, and tools.

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 9
• Any engineering approach must rest on organizational commitment to
quality which fosters a continuous process improvement culture.

• Process layer as the foundation defines a framework with activities for


effective delivery of software engineering technology. Establish the
context where products (model, data, report, and forms) are produced,
milestone are established, quality is ensured and change is managed.
• Method provides technical how-to’s for building software. It
encompasses many tasks including communication, requirement
analysis, design modeling, program construction, testing and support.
• Tools provide automated or semi-automated support for the process
and methods.
Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 10
Software Process
• A process is a collection of activities, actions and tasks that are
performed when some work product is to be created.

• Purpose of process is to deliver software in a timely manner and with


sufficient quality to satisfy those who have sponsored its creation and
those who will use it.

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 11
Generic Process framework activities
• A process framework establishes the foundation for a complete software engineering
process by identifying a small number of framework activities that are applicable to
all software projects, regardless of their size or complexity.
• In addition, the process framework encompasses a set of umbrella activities that are
applicable across the entire software process.
• A generic process framework for software engineering encompasses five activities:
– Communication
– Planning
– Modeling
– Construction
– Deployment

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 12
• Communication: communicate with customer to understand objectives and
gather requirements

• Planning: creates a “map” defines the work by describing the tasks, risks and
resources, work products and work schedule.

• Modeling: Create a “sketch”, what it looks like architecturally, how the


constituent parts fit together and other characteristics.

• Construction: code generation and the testing.

• Deployment: Delivered to the customer who evaluates the products and


provides feedback based on the evaluation.
Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 13
Dual Role of Software
• Both a product and a vehicle for delivering a product
Product
• Delivers computing potential
• Produces, manages, acquires, modifies, display, or transmits information
Vehicle
• Supports or directly provides system functionality
• Controls other programs (e.g., operating systems)
• Effects communications (e.g., networking software)
• Helps build other software (e.g., software tools)

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Changing Nature of Software
Seven broad categories of computer software challenges for software engineers

• System software-is a collection of programs written to service other programs.


(eg.Compilers, editors, and file management utilities)

• Application software-consists of standalone application programs that solve a specific


business need. Application software is used to control business functions in real-
time(e.g.Point of sale transaction processing, real time manufacturing process control)

• Engineering/scientific software-applications range from astronomy to volcanology,


from automotive stress analysis to space shuttle orbital dynamics, and from molecular
biology to automated manufacturing.

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Changing Nature of Software
• Embedded software-resides with in a product or system and is used to implement and
control features and functions for the end users and for system itself (eg. Keypad
control for microwave oven etc)

• Product-line software-design to provide a specific capability for use by many


different customers (e.g., inventory control, word processing, multimedia)

• Web applications-”WebApps”, span a wide array of applications

• Artificial intelligence software-to solve complex problems, applications include


robotics, expert system, pattern recognition(image and voice), artificial neural
networks and game playing
Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
• Ubiquitous computing (small, wireless devices)

• Netsourcing (net-wide computing)

• Open source (operating systems, databases, development environments)

• The ".com" marketing applications

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Modeling: Software Requirements Analysis
• Helps software engineers to better understand the problem they will
work to solve
• Encompasses the set of tasks that lead to an understanding of what the
business impact of the software will be, what the customer wants, and
how end-users will interact with the software
• Uses a combination of text and diagrams to depict requirements for
data, function, and behavior
– Provides a relatively easy way to understand and review requirements
for correctness, completeness and consistency

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Modeling: Software Design
• Brings together customer requirements, business needs, and technical considerations to form the “
blueprint” for a product

• Creates a model that that provides detail about software data structures, software architecture, interfaces, and components
that are necessary to implement the system

• Architectural design
– Represents the structure of data and program components that are required to build the software
– Considers the architectural style, the structure and properties of components that constitute the system, and
interrelationships that occur among all architectural components

• User Interface Design


– Creates an effective communication medium between a human and a computer
– Identifies interface objects and actions and then creates a screen layout that forms the basis for a user interface prototype

• Component-level Design
– Defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each
software component

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Prescriptive Models
• Every software engineering organization should describe set of frame work
activities for software process it adopts
• Each frame work activity with set of software engineering actions, and
defined each action in terms of task set that identifies the work(work product)
to meet the goals
• Regardless of the process model that is selected , software engineers have
Traditionally a generic process frame work…communication, planning,modelling,
construction and deployment
• Precriptive because they describe set of process element –frame work activities
, se actions, tasks , work products, quality assurance etc
• All software models can accommodate gneric frame work activities

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Process models
• The waterfall model
• Incremental process models
– The Increment Model
– RAD Model
• Evolutionary process models
– Prototyping Model
– The Spiral Model
– The Concurrent development model

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Prescriptive software models
• The waterfall life cycle model
• The waterfall model was the first, and for a time, the only process model. This model is also known as
the “traditional” or “typical” software life cycle.

Communication
Project initiation
Requirement Planning
gathering Estimating
Scheduling
Modeling
tracking
Analysis
Construction
Design
Code Deployment
Test Delivery
Support
Feedback

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
The water fall S/W development process

What
How
Do it
Test
• Analysis Design Implementation Use
Testing
Maintenance

Friday, January 20, 2023


The waterfall life cycle model

• The waterfall model is also called as 'linear-sequential model' or classic life cycle model’.

It is the oldest software paradigm. This model suggests a systematic, sequential approach to software
development.

• The software development starts with requirements gathering phase. Then progresses

through analysis, design, coding, testing and maintenance.


• Oldest software lifecycle model and best understood by upper management
• Used when requirements are well understood and risk is low
• Work flow is in a linear (i.e., sequential) fashion
• Used often with well-defined adaptations or enhancements to current software

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Advantages of the Waterfall Model

• Simple and easy to understand and use


• Easy to manage due to the rigidity of the model. Each phase
has specific deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements
are very well understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.
Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Drawbaks of water fall model
• Doesn't support iteration, so changes can cause confusion
• Difficult for customers to state all requirements explicitly and up front
• Requires customer patience because a working version of the program
doesn't occur until the final phase
• Problems can be somewhat alleviated in the model through the addition
of feedback loops (see the next slide)

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
• Waterfall Model with Feedback

Communication

Planning

Modeling

Construction

Deployment

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
When to Use Waterfall Model?

 Requirements are very well known.


 Product definition is stable.
 Technology is well understood.
 New version of an existing product.
 Porting an existing product to a new platform.

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Incremental process models

The Increment Model

RAD Model

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023 29
The Increment Model

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
The Increment Model

• Used when requirements are well understood


• Multiple independent deliveries are identified
• Work flow is in a linear (i.e., sequential) fashion within an
increment and is staggered between increments
• Iterative in nature; focuses on an operational product with
each increment
• Provides a needed set of functionality sooner while
delivering optional components later
• Useful also when staffing is too short for a full-scale
development
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
RAD (Rapid Application Development) Model

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
RAD Model
• Rapid application development is a software development
methodology that uses minimal planning in favor of rapid
prototyping, for product delivery.

• RAD model, the functional modules are developed in parallel


as prototypes and are integrated to make the complete product
for faster product delivery.

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
RAD Model
• Rapid Application Development focuses on gathering
customer requirements through workshops or focus
groups, early testing of the prototypes, continuous
integration and rapid delivery.

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
The advantages of the RAD Model are as follows

• Changing requirements can be accommodated.


• Iteration time can be short with use of powerful RAD tools.
• Productivity with fewer people in a short time.
• Reduced development time.
• Increases reusability of components.
• Encourages customer feedback.

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
The disadvantages of the RAD Model are as follows

• High dependency on Modelling skills.


• Management complexity is more.
• Suitable for systems that are component based
and scalable.
• Requires user involvement throughout the life cycle.
• Suitable for project requiring shorter development
times.
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Evolutionary process models

– Prototyping Model

– The Spiral Model

– The Concurrent development model

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023 38
Prototyping Model
• Follows an evolutionary and iterative approach
• Used when requirements are not well understood
• Serves as a mechanism for identifying software requirements
• Focuses on those aspects of the software that are visible to the
customer/user
• Feedback is used to refine the prototype

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Evolutionary Prototyping Model – Strengths

 Customers/end users can visualize the system requirements as they are gathered
looking at the prototype.
 Developers learn from customers and hence no ambiguities regarding domain or
production environment.
 Allows flexible design and development.
 Interaction with the prototype stimulates the awareness of additionally needed
functionality.
 Unexpected requirements and requirements changes are easily accommodated.
 Steady and visible signs of progress are produced.
 Delivery of an accurate and maintainable end-product.

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Prototyping Model
(Potential Problems)
• The customer sees a "working version" of the software, wants to stop all
development and then buy the prototype after a "few fixes" are made

• Developers often make implementation compromises to get the software


running quickly

 Overall maintainability can possibly be overlooked.

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
The Spiral Model

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
The Spiral Model

• Follows an evolutionary approach


• Used when requirements are not well understood and risks
are high
• Inner spirals focus on identifying software requirements
and project risks; may also incorporate prototyping
• Outer spirals take on a classical waterfall approach
after requirements have been defined, but permit iterative
growth of the software
• Requires considerable expertise in risk assessment
• Serves as a realistic model for large-scale software development
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
The Concurrent development model

Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
The Concurrent development model
• The concurrent process model defines a series of events
that will trigger transition from state to state for each of the
software engineering activities.

• The concurrent process model is often used as the


paradigm for the development of client/server applications

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
• The concurrent process model is applicable to all types
of software development and provides an accurate
picture of the current state of a project.

• Each activity on the network exists simultaneously


with other activities.

• Events generated within a given activity or at some


other place in the activity network trigger transitions
among the sates of an activity.
Friday, January 20, 2023 Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Iterative & Evolutionary Model
• Iterative Enhancement Model: In general the phases occur in the
same order as in the waterfall model but these may be conducted
in several cycles. A utilizable product is released at the end of the
each cycle with each release providing additional functionality.

• Evolutionary Development Model: Resemblance to iterative


enhancement model. This model is different from iterative
enhancement model in the sense that this doesn't require a useable
product at the end of each cycle. In evolutionary development
requirements are implemented by category rather than by priority.
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
When to Use Evolutionary Prototyping Model?

 When requirements are unstable or have to be clarified


 As the requirements clarification stage of a waterfall model
 To develop user interfaces
 For short-lived demonstrations
 For new or original development
 For implementing a new technology

Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
Friday, January 20, 2023
Recap – Summary – What you have learnt

• Last few classes covered all models


• The waterfall model
• Incremental process models
– The Increment Model
– RAD Model
• Evolutionary process models
– Prototyping Model
– The Spiral Model
– The Concurrent development model
Any questions?Please
28 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering
THANK YOU

24 August 2020
Department of CSE, GIT; Course Code and Course Title:EID303: Software Engineering 50

You might also like