Introduction To Software and
Software Engineering
CHAPTER ONE
1
What is software?
Software is
set of instruction or programs that direct the computer hardware
or that help user to perform users task.
collection of computer programs, procedures, rules, and
associated documentations and data (IEEE).
Software have variety of application or touch all aspect
of human life.
Some of them are:
business domain
engineering domain(software used for drawing, drafting,
modelling, etc)
Education domain (e-learning, ...)
2
etc
Types of Software
Custom Real time software
• For a specific customer • E.g. control and monitoring
Generic systems
• Sold on open market • Must react immediately
• Often called • Safety often a concern
—COTS (Commercial Off Data processing software
The Shelf) • Used to run businesses
—Example: word processors, • Accuracy and security of
spread sheets, compilers, data are key
etc
Embedded
• Built into hardware
3
• Hard to change
3
What is Software Engineering?
The term software engineering is composed of two words, software and
engineering.
Software is more than just a program code. A program is an executable code,
which serves some computational purpose. Software, when made for a specific
requirement is called software product.
Engineering on the other hand, is all about developing products, using well-
defined, scientific principles and methods.
So, we can define software engineering as an engineering branch associated
with the development of software product using well-defined scientific
principles, methods and procedures.
4
What are the attributes of good software?
The software should deliver the required functionality and
performance to the user and should be maintainable, dependable
and acceptable.
Maintainability
Software must evolve to meet changing needs;
Usability
• Users can learn it and fast and get their job done easily
Efficiency
It doesn’t waste resources
Reusability
Its parts can be used in other projects, so reprogramming is
not needed
Reliability
5 It does what it is required to do without failing
TWO ORTHOGONAL VIEWS OF
SOFTWARE
-Traditional technique/Structural Oriented
Approach
- focuses on data and functions.
-Object Oriented Approach
- focuses on objects that combines data and functionality
6
Cont…
TRADITIONAL APPROACH OBJECT ORIENTED
SYSTEM DEVELOPMENT
Collection of Combination of data and
procedures(functions) functionality
Focuses on function and Focuses on object, classes,
procedures, different styles and modules that can be easily
methodologies for each step of replaced, modified and reused.
process
Moving from one phase to Moving from one phase to
another phase is complex. another phase is easier.
Increases duration of project Decreases duration of project
Increases complexity Reduces complexity and
7
redundancy
Software Development Life Cycle
It is a systematic approach which explicitly breaks down the work into phases
that are required to implement either new or modified Information System.
8
SDLC PHASE MAIN ACTIVITIES
1. Planning •Define the system to be developed
•Set the project scope
•Develop the project plan
•Assignment of team members & other resources
2. Analysis •Gather business requirements
•Description of current system & where problems or
opportunities are
•Explanation of alternative systems & justification
3. Design •Design the technical architecture
•Design system models
•Build technical architecture
•Build databases and programs
4. Implementation •Write test conditions
•Perform testing
•Write user documentation
•Provide training
5. Maintenance •Build a help desk
•Support system changes
9 •New version
The 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.
A software process model is a simplified representation of a
software process. Each model represents a process from a specific
perspective.
10
Some common Software Process Models
Waterfall
Prototyping
V-model
Incremental
Iterative
Spiral
Agile
development
11
Waterfall model
One of the first process models proposed
Works for well understood problems with minimal or no change
in the requirements
Each major phase is marked by milestones and deliverables
Disadvantage
All requirements must be known upfront
No guidance how to handle changes
Long wait before a final product
12
When to use waterfall
Requirements are very well known
There are no ambiguous requirements
The necessary tools and techniques used are stable,
and not dynamic
13
Prototype process model
Identify basic requirements
Including input and output info
Details (e.g., security) generally ignored
Developers build a prototype during the requirements phase
Prototype is evaluated by end users
Users give corrective feedback
Developers further refine the prototype
When the user is satisfied, the prototype code is brought up to the
standards needed for a final product.
14
When to use prototype model
desired system needs a lot of interaction with the
end users
if requirements are changing quickly
E.g online system
15
Incremental model
It is necessarily a series of waterfall cycles. The requirements are
divided into groups at the start of the project.
For each group, the SDLC model is followed to develop
software.
The SDLC process is repeated, with each release adding more
functionality until all requirements are met.
In this method, each cycle act as the maintenance phase for the
previous software release.
16
When we use the Incremental Model?
When the requirements are superior.
A project has a lengthy development schedule.
When Software team are not very well skilled or trained.
When the customer demands a quick release of the product.
You can develop prioritized requirements first.
17
Spiral model
Similar to incremental model
More focus on risk analysis
Has four phases
Planning
Engineering (determine goals, alternatives and constraints)
Risk analysis
Evaluation (develop and test)
18
Advantages
Avoidance of risk
Good for mission critical projects
Disadvantages
Costly model
Risk analysis requires highly specific expertise
Project success is highly dependent on the risk analysis phase
19
When to use spiral model
When costs and risk evaluation is important
For medium to high-risk projects
Users are unsure of their needs
Requirements are complex
20
What are Software Metrics?
standards for estimating the quality, progress, and health of software
development activity.
Types of Software Metrics
Internal metrics: used to measure properties that are deemed more
important to a software developer than the users. E.g. LOC
External metrics: used to measure features that are deemed more
important to the user than the software developers, such
as portability, reliability, functionality, usability, …
Hybrid Metrics: mix product, process, and resource metrics. E.g.
Cost per FP
21
Object oriented system development methodology
Why an object orientation? Object oriented systems are
Easier to adapt to changes
More robust
Easier to maintain
Promote greater design and code reuse
Creates modules of functionality
22
Principles of Object-Oriented Systems
Elements of Object-Oriented System
Objects − An object is something that is exists within problem domain and can be
identified by data (attribute) or behavior.
Attributes − They describe information about the object.
Behavior − It specifies what the object can do.
Class − A class encapsulates the data and its behavior. Objects with similar
meaning and purpose grouped together as class.
Methods − Methods determine the behavior of a class. They are nothing more
than an action that an object can perform.
Message − A message is a function or procedure call from one object to another.
They are information sent to objects to trigger methods. Essentially, a message is a
function or procedure call from one object to another.
23
Reading assignment (5%)
1. The deference b/n-
Object-Oriented Software Engineering (OOSE), Object-Oriented System
Analysis and Design(OOSAD) and Information Engineering (IE)
2. Software Process models
a. V-model
what?
Advantage and disadvantage
b. Agile development
what?
Advantage and disadvantage
3. Explain what is software Engineering professions and Professional Ethics.
General direction:
copy from others is made your mark illegible.
Your answer should be readable, precise and clear.
Not exceeds more than 5 pages
24
End of Chapter 1
?
25