Unit 1
Unit 1
SOFTWARE
ENGINEERING
UNIT 1
INTRODUCTION TO SOFTWARE ENGINEERING
AND SOFTWARE ENGINEERING PROCESS MODELS
Anurag Golwalkar
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
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.
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
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
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.
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.
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