Chapter 1 Software Engineering Introduction
Chapter 1 Software Engineering Introduction
Admas University
Computer Science Department
Mekenisa Campus
1
By:- Habib Kedir
What is Software engineering?
Software engineering is defined as a process of analyzing user requirements and then
designing, building, and testing software application which will satisfy those requirements
Software engineering is a detailed study of engineering to the design, development and
maintenance of software. Software engineering was introduced to address the issues of low-
quality software projects.
(1969) 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
(IEEE) The application of a systematic, disciplined, quantifiable approach to the development,
operation, and maintenance of software; that is, the application of engineering to software
2
Orthogonal view of software.
3
Software Engineering is a
Layered Technology
Tools
Methods
Processes
4
What is a Process?
5
What is a Software Process?
7
Generic Process Framework
• Communication
– Involves communication among the customer and other stake
holders; encompasses requirements gathering
• Planning
– Establishes a plan for software engineering work; addresses
technical tasks, resources, work products, and work schedule
• Modeling (Analyze, Design)
– Encompasses the creation of models to better understand the
requirements and the design
• Construction (Code, Test)
– Combines code generation and testing to uncover errors
• Deployment
– Involves delivery of software to the customer for evaluation and
feedback
8
Five Levels of Software Process
Maturity
9
Characteristics of Each Level
11
Key Process Areas
12
1.2 Software Engineering
Disciplines
Requirements Elicitation
Specification and Analysis
Design
Implementation
Testing and Validation
Maintenance and Evolution
Process Evolution
13
Software Development Life Cycle
14
Modeling: Software Requirements
Analysis
15
15
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
16
16
What is software process model and its type?
process. The models specify the stages and order of a process. So, think of this
17
Waterfall Model
(Diagram)
Communication
Project initiation
Requirements gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test
Deployment
Delivery
Support
Feedback
18
18
Waterfall Model
(Description)
• 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
19
19
Waterfall Model
(Problems)
• 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)
20
20
Waterfall Model with Feedback
(Diagram)
Communication
Project initiation
Requirements gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test
Deployment
Delivery
Support
Feedback
21
21
Incremental Model
(Diagram)
Increment #1
Communication
Planning
Modeling
Construction
Deployment
Increment #2
Communication
Planning
Modeling
Construction
Deployment
Increment #3
Communication
Planning
Modeling
Construction
Deployment
22
22
Incremental Model
(Description)
• 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
23
23
Prototyping Model
(Diagram)
Quick Planning
Communication
Start
Modeling
Quick Design
Deployment,
Delivery,
and Feedback
Construction
Of Prototype
24
24
Prototyping Model
(Description)
• 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
25
25
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 (e.g., language choice, user interface, operating system
choice, inefficient algorithms)
• Lesson learned
– Define the rules up front on the final disposition of the prototype before it is
built
– In most circumstances, plan to discard the prototype and engineer the actual
production software with a goal toward quality
26
26
Spiral Model
(Diagram)
Planning
Communication
Start Modeling
Start
Deployment Construction
27
27
Spiral Model
(Description)
• Invented by Dr. Barry Boehm in 1988 while working at TRW
• 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
• Operates as a risk-driven model…a go/no-go decision occurs after each
complete spiral in order to react to risk determinations
• Requires considerable expertise in risk assessment
• Serves as a realistic model for large-scale software development
28
28
General Weaknesses of
Evolutionary Process Models
29
29
Object Oriented system Development Methodology
30
Continue….
31
Overview of the Unified Approach
32
Continue….
33
Continue….
34
Object Oriented Paradigm
35
Continue….
36
Continue….
37
What is the state and behavior of an object?
properties of an object. For example, a T.V has the size, colour, model etc.
Behavior of the object - The behavior or operations of an object are its predefined
functions. For example, a T.V. can show picture , change channels, tune for a
38
channel etc. in object oriented programming terminology the behavior is
Software Development Challenges
39
1 The heterogeneity challenge
40
2 The delivery challenge
41
3 The trust challenge
The trust challenge As software is intertwined with all aspects of our lives, it
is essential that we can trust that software. This is especially true for
remote software systems accessed through a web page or web service
interface. The trust challenge is to develop techniques that demonstrate
.
that software can be trusted by its users Of course, these are not
independent. For example, it may be necessary to make rapid changes to
a legacy system to provide it with a web service interface. To address
these challenges, we will need new tools and techniques as well as
innovative ways of combining and using existing software engineering
methods.
42