0% found this document useful (0 votes)
21 views42 pages

Unit 1

This document provides an introduction to software engineering and the software engineering process. It discusses why software engineering is important, including reducing complexity, minimizing costs, handling large projects, and creating reliable software. It defines key terms like script, program, and software. It also outlines several software engineering process models and discusses attributes of good software like efficiency, reliability, reusability, and maintainability. Finally, it addresses common myths and misconceptions around software engineering.

Uploaded by

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

Unit 1

This document provides an introduction to software engineering and the software engineering process. It discusses why software engineering is important, including reducing complexity, minimizing costs, handling large projects, and creating reliable software. It defines key terms like script, program, and software. It also outlines several software engineering process models and discusses attributes of good software like efficiency, reliability, reusability, and maintainability. Finally, it addresses common myths and misconceptions around software engineering.

Uploaded by

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

MEDICAPS UNIVERSITY

DEPARTMENT OF INFORMATION TECHNOLOGY

SOFTWARE
ENGINEERING

UNIT 1
INTRODUCTION TO SOFTWARE ENGINEERING
AND SOFTWARE ENGINEERING PROCESS MODELS

Anurag Golwalkar
Unit 1: Intro. to Software and Software Engineering

Why we are learning Software Engineering? - Script is interpreted vs. program


- Reduce Complexity
is executed.
- To minimize software cost
- A "script" is code that acts upon
some system in an external or
- To decrease time independent manner and can be
- Handling big projects removed or disabled without
- Reliable softwares disabling the system itself.
- Effectiveness
- A "program" is code that
constitutes a system.
What is the significance of SE in Computer - A set of program makes up a
Science / IT?
software
- Difference between Script Vs. Program Vs.
Software
Unit 1: Intro. to Software and Software Engineering

What is software?
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) descriptive information in both hard copy and virtual forms that describes the
operation and use of the programs.

 Software is a logical rather than a physical system element. Therefore, software has
characteristics that are considerably different than those of hardware:
Unit 1: Intro. to Software and Software Engineering
The failure rate curve for software should take the form of
the “idealized curve” shown in Figure. Undiscovered
defects will cause high failure rates early in the life of a
program.
3. Although the industry is moving toward component-based
construction, most softwares continues to be custom built.
Software Application Domains
(1) System Software (2) Application software (3) Engineering / Scientific softwares (4)
Embedded Softwares (5) Product-line softwares (6) Web applications (7) AI Applications
(8) Open world computing (9) Netsourcing (10) Open source.
Unit 1: Intro. to Software and Software Engineering
What is software engineering? way.
Software Engineering is the process of
designing, developing, testing, and maintaining  Reliability: It provides the assurance that the
software. It is a systematic and disciplined product will deliver the same results when used
approach to software development that aims to in similar working environment.
create high-quality, reliable, and maintainable  Reusability: This attribute makes sure that the
software. module can be used in multiple applications.
 Maintainability: It is the ability of the software
to be modified, repaired, or enhanced easily with
There are four main Attributes of
changing requirements.
Software Engineering :-
 Efficiency: It provides a measure of the resource
requirement of a software product in an efficient
Unit 1: Intro. to Software and Software Engineering
FAQs about Software Engineering (ref. Sommeville 9th Ed):
Questions Answers
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 Good software should deliver the required functionality and performance to the
software? 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 specification, software development, software validation, and software
software engineering activities? evolution.
What is the difference between Computer science focuses on theory and fundamentals; software engineering is
software engineering and concerned with the practicalities of developing and delivering useful software.
computer science?
Unit 1: Intro. to Software and Software Engineering
FAQs about Software Engineering (ref. Sommeville 9th Ed) (cont.):
Questions Answers
What is the difference between System engineering is concerned with all aspects of computer-based systems
software engineering and development including hardware, software, and process engineering. Software
system engineering? engineering is part of this more general process
What are the key challenges Coping with increasing diversity, demands for reduced delivery times, and
facing software engineering? developing trustworthy software
What are the costs of software Roughly 60% of software costs are development costs; 40% are testing costs. For
engineering? custom software, evolution costs often exceed development costs.
What are the best software While all software projects have to be professionally managed and developed,
engineering techniques and different techniques are appropriate for different types of system. For example,
methods? 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.
Unit 1: Intro. to Software and Software Engineering
Attributes of a good Software:
Unit 1: Intro. to Software and Software Engineering
The changing nature of the softwares:
there are three general issues that affect many different types of software:
(1) Heterogeneity (2) Business & social change (3) Security &
Trust

And hence we have diversity in software engineering like:


(1) Stand alone application (2) Interactive transaction-based applications
(3) Embedded Control System (4) Batch Processing system
(5) Entertainment System (6) System for modeling and simulations
(7) Data collection system (8) System of systems
Unit 1: Intro. to Software and Software Engineering

Software Myths: Myths that means believed to be TRUE but actually it’s NOT
Management Myths
Myth: We already have a book that’s full Myth: If we get behind schedule, we Myth: If I decide to outsource
of standards and procedures for building can add more programmers and catch the software project to a third
software. Won’t that provide my people up (sometimes called the “Mongolian party, I can just relax and let
with everything they need to know? horde” concept). that firm build it.
Reality: The book of standards may very Reality: Software development is not a Reality: If an organization does
well exist, but is it used? Are software mechanistic process like not understand how to manage
practitioners aware of its existence? Does manufacturing. new people are added, and control software projects
it reflect modern software engineering people who were working must spend internally, it will invariably
practice? Is it complete? Is it adaptable? In time educating the newcomers, thereby struggle when it outsources
many cases, the answer to all of these reducing the amount of time spent on software projects.
questions is “NO.” productive development effort.
Unit 1: Intro. to Software and Software Engineering
Software Myths: Myths that means believed to be TRUE but actually it’s NOT
Developers Myths
Myth: Once we write the program and get it to work, our Myth: Until I get the program “running” I have no way of
job is done. assessing its quality.
Reality: Someone once said that “the sooner you begin Reality: One of the most effective software quality
‘writing code,’ the longer it’ll take you to get done.” assurance mechanisms can be applied from the inception of
Industry data indicate that between 60 and 80 percent of all a project—the technical review. Software reviews are a
effort expended on software will be expended after it is “quality filter” that have been found to be more effective
delivered to the customer for the first time. than testing for finding certain classes of software defects.
Myth: The only deliverable work product for a successful Myth: Software engineering will make us create
project is the working program. voluminous and unnecessary documentation and which
slow us down.
Reality: A working program is only one part of a software Reality: Software engineering is not about creating
configuration that includes many elements. A variety of documents. It is about creating a quality product. Better
work products (e.g., models, documents, plans) provide a quality leads to reduced rework. And reduced rework
foundation for successful engineering, guidance and results in faster delivery times.
Three Generic Phases of Software Development
 The Definition  Definition phase
Phase(10% effort) focuses on “WHAT”
 The Development  The Development
Phase(30%) phases focus on
 The support Phase “HOW”
(60%)  Development phase
focuses on”Change”
Part 2: Process Models
Contents:
 What is software process?
 What is SDLC?
 Prescriptive Models
 The Waterfall model
 Incremental process models
 Evolutionary Process Models
 Comparisons of Models
 Selection of model for development
 The Unified process
Part 2: Process Models
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.
Activity: An activity strives to achieve a broad objective (e.g communication with stake
holders) and is applied regardless of the application domain, size of the project, complexity
of the effort, or degree of rigor with which software engineering is to be applied.
Action: An action (e.g. an architecture design model) encompasses a set of tasks that
produce a major product.
Task: A task focuses on small, but well-defined objective (e.g. conducting a unit test) that
produces a tangible outcome.
Part 2: Process Models
Five activities under process framework: (6) Software project tracking and control.
(1) Communication (7) Risk Management
(2) Planning (8) Software quality Assurance
(3) Modeling (9) Technical Reviews
(4) Construction (10) Measurement
(5) Deployment (11) Software configuration management
Software engineering process framework (12) Reusability management
activities are complemented by a number (13) Work product preparation and
of umbrella activities. production
Part 2: Process Models
What is software development life - Enables planning of resources in
cycle (SDLC)? advance.
SDLC used to facilitate the development of - Enables subsequent controls in advance.
a large software product in a systematic, - Aids management to track progress of
well-defined and cost-effective way. the system.
Why to follow SDLC? Any model must have atleast 5 phases and
- Helps to understand the entire process. atmost 8 phases.
- Enhances a structured approach to
development.
Part 2: Process Models
So, on an average, any SDLC model can (5) Coding
have 7 to 8 phases. These are: (6) Testing
(1) Project initiation and planning OR (7) Implementation
Recognition of need OR Preliminary
Investigation. (8) Maintenance.

(2) Project identification and Selection OR


Feasibility Study
(3) Project analysis
(4) System Design
Part 2: Process Models
Now let’s explore each phase one by one. D. Operational Feasibility: End user
acceptance, management support, customer-
(1) Identify, understand and describe supplier and government requirements.
problem fully.
(3) Project analysis
(2) Feasibility study types:
(4) System Design
A. Organizational feasibility: How well the
proposed system supports the strategic (5) Coding
objectives of the organization.
(6) Testing
B. Technical Feasibility: Hardware, software
and network capability, reliability and (7) Implementation
availability (8) Maintenance: Corrective maintenance,
C. Economic Feasibility: Cost saving, Adaptive maintenance, Perfective
Increased revenue, decreased investment, Maintenance, Preventive Maintenance
increased profits
Part 2: Process Models
Prescriptive Process Models
Prescriptive Process Models

The Waterfall Model Incremental Evolutionary


Process Model Process Models

The V-Model
Prototyping Model Spiral Models
Part 2: Process Models
Prescriptive Process Models:
(1) Waterfall Model
Part 2: Process Models
Advantages Disadvantages
(1) Clear Structure and Well-Defined Phases (1) Inflexibility
(2) Client Involvement (2) Limited Client Interaction
(3) Documentation During Development

(4) Stable Requirements (3) Late Detection of Issues

(5) Easier to Manage (4) Uncertainty Handling


(5) Long Development Time
(6) Risk Management
(7) Not Suitable for Large
Projects
Part 2: Process Models
(1) The V Model (variation of waterfall)
 It is also known as verification and
validation model(commonly used in
testing phase where we look that
weather we are making right product or
weather I m making product right).
 It is the extension of waterfall model.
 Testing is associated with every phase of
lifecycle
Part 2: Process Models
Advantages: Disadvantages
 It is systematic and sequential  There is no risk analysis
 It is simple one to understand and follow  No feedback, so lesser scope to change
 It has proper documentations.  If there is any mistake or error in any phase
 Every component is testable. then it will propagate to the last
 Good understanding of project at the  We cannot go in the backward direction
beginning.
while SDLC performs
 Proactive defect tracking  It involves heavy documentation.
 This is a highly-disciplined model and Phases Documentation requires at end of each
are completed one at a time.
phase
 Works well for smaller projects where
requirements are very well understood.
Part 2: Process Models
Prescriptive Process Models:
(2) Incremental Process Model
Each linear sequence produces
Deliverable “increment” of SW
- For ex. Word Processing SW
1st Increment: Basic file
Management
2nd Increment: More sophisticated
Editing & document production capability
3rd Increment: Spelling and grammar
checking
A A A
4 Increment: Advanced page layout capability
th
B B
C
Part 2: Process Models
Prescriptive Process Models: early on.
(2) Incremental Process Model 4. Smaller sub-projects are easier to control and
manage.
Advantages:
5. Gold plating, that is the requesting of features
1. The feedbacks from early increments improve
that are unnecessary and not in fact used is less
the later stages.
as uses will know that they get more than one
2. The possibility of changes in requirement is bite of cherry if a feature is not in the current
reduced because of the shorter time span increment then it can be included in the next.
between the design of a component and its
6. The project can be temporarily abandoned if
delivery.
more urgent work crops up.
3. Users get benefits earlier than with a
7. Job satisfaction is increased for developers
conventional approach. Early delivery of some
who see their labours bearing fruit at regular,
useful components improves cash flow,
short intervals
because you get some return on investment
Part 2: Process Models
Prescriptive Process Models: into functional units (modules), which
can be incrementally develop and
(2) Incremental Process Model
delivered.
Disadvantages:
4. Testing of modules result into overhead
1. Software breakage, that is, later and increased cost.
increment may requirement
5. Freeze every thing before we start
modification to earlier increments.
making the increments.
2. Programmer may be more productive
working on one large system than on a
series of smaller ones.
3. Some problems are difficult to divide
Part 2: Process Models
Evolutionary Process Models:
(3) Prototype Model:
Part 2: Process Models
Evolutionary Process Models:
(3) Prototype Model:
Advantages: Disadvantages:
1) Suitable for large system for which there is no 8) The developer often compromises in order to get
manual process to define the requirements working prototype quickly. (use of inappropriate OS,
2) Prototyping make requirements more clear and algorithms AND/OR programming technology)
system more transparent. 9) End users may not like to know the difference
3) Flexibility in design and development is also between a prototype and a well-engineered fully
supported by the model. developed product.
4) System training 10) If not managed properly, the interactive process of
5) Quality of software is good prototype demonstration and refinement can continue
for long duration.
6) User training to use the system.
11) If end user is not satisfied with initial prototype, he
7) User services determination may loose interest in the project.
Part 2: Process Models
Evolutionary Process Models:
(4) Spiral Model(Meta model):
Part 2: Process Models
Evolutionary Process Models:
(4) Spiral Model:
Advantages Disadvantages
It is a risk driven model No Strict standards for software development
It’s very flexible No particular beginning or end of particular phase
Less documentation is needed Different people may find it complex to use
It makes a use of prototyping Requires expertise risk management & excellent management
skills
It is more realistic model for Not suitable for small project. Sometimes the cost of risk analysis
software development. may exceed the actual cost of the project
Part 2: Process Models
Comparisons of all models:
Strength Weakness Types of Project
 All or nothing approach
 Requirements frozen early
 For well understood
 Disallows changes
 Simple problems
Waterfall  Cycle time too long
 Easy to execute  Short duration project
Model  May choose outdated hardware
 Intuitive and logical  Automation of existing
technology
manual systems.
 User feedback not allowed
 Encourages requirement bloating
 Helps in requirement  System with novice
 Front heavy process
Prototypin elicitation users
 Possibly higher cost
g Model  Reduces risk  Best for uncertain
 Disallows later changes
 Leads to a better system requirements
Part 2: Process Models
Comparisons of all models:
Strength Weakness Types of Project
 Regular/Quick deliveries  Each iteration can have  For businesses where
 Reduces risk planning overhead time is of essence
Accommodates changes  Cost may increase as work  Where risk of long project
Iterative / 
Allows user feedback done in one iteration may have cannot be taken
Incremental 
 Allows reasonable exit to be undone later.  Where requirements are
Model
points  System architecture and not known
 Avoids req. bloating structure may suffer as
 Prioritizes requirements frequent changes are made
 Controls project risks  No strict standards for software  Project built on untested
Spiral  Very flexible development assumptions
Model  Less documentation  No particular beginning or end
needed of particular phase
Part 2: Process Models
The Unified Process:
The Rational Unified Process (RUP) is a structured software development methodology
that focuses on iterative development, team collaboration, and managing change in software
projects. It divides the development process into four phases: inception, elaboration,
construction, and transition. RUP emphasizes the importance of defining requirements,
creating prototypes, and continuously testing and refining the software product.

Five Phases of Unified process:


1) Inception
2) Elaboration
3) Construction
4) Transition
5) Production
Unified Process Model
 1. Inception : In this phase, the project's scope and feasibility are established. Key stakeholders are
identified, and initial business case and project vision are developed.

 2. Elaboration : Detailed requirements gathering, analysis, and architectural design take place. Risks are
identified and mitigated, and a comprehensive project plan is refined.

 3. Construction: The focus shifts to implementation, where the system is built incrementally based on the
architecture and requirements defined in the elaboration phase.

 4. Transition : The completed system is transitioned to the end-users. Training and support mechanisms are
put in place, and the system is readied for deployment.

 5. Production : The system is deployed for full operational use. Ongoing maintenance, support, and
potential updates or enhancements are managed throughout its lifecycle.
Assignment Questions
1. Software engineering is part of system engineering process. Justify this statement.
2. What is a software crisis ? What are the professional responsibilities of a software
engineer?
3. SE is a layerd technology. Explain
4. Explain spiral model witth advantage and disadvantages.
5. What do you mean by object oriented system development life cycle.
6. Explain the need of object oriented approach.
7. Explain rational unified process with its phases
Software engineering is system engineering process

Software engineering is a part of system engineering process . Justify


the statement.

Software engineering is a component of systems engineering because it deals with designing,


developing, and maintaining software within larger systems. Systems engineering encompasses
the entire system lifecycle, including hardware, software, processes, and people. Software
engineering focuses specifically on the software aspect, ensuring that it integrates effectively
with other system components and meets overall system requirements. In essence, software
engineering contributes to the successful development and operation of complex systems by
addressing the software-specific challenges within them.
-
.
Software Crisis & Responsibilities of Software
Enigneer

What is a software crisis ? What are the professional responsibilities of


a software engineer?

A software crisis occurs when software projects face difficulties meeting their goals, such as
exceeding budgets, missing deadlines, or delivering poor-quality products. These challenges
often stem from issues like changing requirements, inadequate planning, or technical
complexities. Professional responsibilities of software engineers include understanding and
adhering to ethical guidelines, continuously improving their skills, ensuring the quality of their
work, communicating effectively with team members and stakeholders, and prioritizing the
safety and security of the software they develop.

-
.
Software Crisis & Responsibilities of Software
Enigneer

Requirements Analysis:
Understanding and writing down what customers need so that the software does what users want.

Design and Development:


Making software code that's organized, works well, and is easy to take care of, following the best
ways and rules in the field.

Testing and Quality Assurance:


Checking the software very carefully to find and fix mistakes or problems, making sure it works well
and does what it's supposed to do.
-
.
Software Crisis & Responsibilities of Software
Enigneer

Continuous Learning:
Keeping up-to-date with the newest technologies, methods, and tools to get better at the job and keep up with how the industry
changes.

Collaboration and Communication:


Working closely with teammates, people interested in the project, and clients to make sure everyone understands each other and
works together well.

Ethical Considerations:
Following rules about being fair and honest, protecting people's privacy, keeping information safe, and making sure the software
is made and used the right way.

Documentation:
-
.

Writing down and organizing all the important details about how the software is made, its code, and how it works, so people can
Software Engineering: A layered Technology

 Software engineering (SE) is layered technology because it involves


multiple levels of abstraction and complexity. At the top layer, there are
high-level requirements and specifications, followed by design and
architecture in the middle layer, and finally, coding and implementation at
the lower layer. Each layer builds upon the one beneath it, with higher
layers focusing on conceptual and structural aspects, while lower layers deal
with detailed implementation and execution.
Software Engineering: A layered Technology
Explain the need of object oriented approach.

 The object-oriented approach in software engineering is essential because it provides a


more natural and intuitive way to model real-world systems and their complexities. By
organizing code into objects that represent entities or concepts, such as customers,
products, or processes, developers can encapsulate data and behavior together, promoting
modularity, reusability, and maintainability. This approach allows for better problem-
solving by breaking down complex systems into manageable components, making it
easier to understand, design, and modify software. Additionally, object-oriented
programming facilitates collaboration among team members, as they can work on
different objects independently, reducing development time and effort. Overall, the
object-oriented approach enhances software development by aligning with human thought
processes and improving the quality and efficiency of the resulting software products.

You might also like