0% found this document useful (0 votes)
12 views19 pages

Lect7_SoftwareEngineering

Software engineering involves the systematic development and evolution of high-quality software systems to solve customer problems. Various software development methodologies, such as the Waterfall model and Agile methods, guide project organization and execution, with Agile emphasizing flexibility and customer collaboration. Documentation is crucial throughout the development process to ensure usability and facilitate future modifications.

Uploaded by

hesap1epic
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)
12 views19 pages

Lect7_SoftwareEngineering

Software engineering involves the systematic development and evolution of high-quality software systems to solve customer problems. Various software development methodologies, such as the Waterfall model and Agile methods, guide project organization and execution, with Agile emphasizing flexibility and customer collaboration. Documentation is crucial throughout the development process to ensure usability and facilitate future modifications.

Uploaded by

hesap1epic
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/ 19

An Outline

• What is Software Engineering?


• Why do we need the software development methodology?
• When is opportunistic approach prefered?
• Software development models
• Waterfall, Phase-Relase, Agile Models...

1
What is Software Engineering?

• The process of solving customers’ problems by


the systematic development and evolution of
large, high-quality software systems within cost
and other constraints. [1]

• Building large software systems includes,


– division of a task into manageable parts
– integration of separately developed units
– cost assessment (time, money, resources …)
– personnel management
[1] Lethbridge, T. C., & Laganière, R. Object Oriented Software Engineering:
Practical Software Development Using UML and Java, 2004. Figure 1: Sagrada Familia, Barcelona, Spain
Overview of the Software Development Process
2
The Opportunistic Approach

Figure 2: The overview of opportunistic approach

3
Software Process Models
Software process models are general approaches for organizing a project into
activities.
• Help the project manager and the team to decide:
• What work should be done;
• In what sequence to perform the work.
• The models should be seen as aids to thinking, not rigid prescriptions of the way
to do things.
• Each project ends up with its own unique plan.

Figure 3: An example process


4
Development Phase

• General cost estimate (in time):


Analysis: 30% - Design:
20% Implementation: 10% -
Testing: 40%
Analysis

• Requirement analysis/gathering
• The process of finding out what the client requires from the product
- Functional, Data, usability, task, environmental requirements
• Specifications
• requirements converted into more technical terms
• Software requirements document
• effectively a written agreement, intended to guide the software’s development

Overview of the Software Development Process 6


Design and Implementation

• Design
- Establishing how the system will meet its goals
- Decomposing the system into manageable modules
- Interface design

• Implementation
- Implementing the design, writing the programs, building the database,...

Overview of the Software Development Process 7


Testing

• Validation testing
- confirming that the software system as implemented meet the requirements
and specifications identified in the original analysis

• Defect testing
- identifying and correcting errors
- can be extremely difficult to do successfully

8
Software Engineering Methodologies

The traditional approach to software development -- with the


four rigid steps of Analysis-Design-Implementation-Testing
-- is now referred to as the waterfall model because there
was no turning back.
The waterfall model

Figure 5: The flow of waterfall model stages

10
The phased-release model

Figure 6: The flow of the phased-released


model stages

Overview of Software Development Process 11


Agile Methods

Lightweight approaches to satisfy the customers with


"early and continuous delivery of valuable software" and consist of the iterative model

Manifesto for Agile Software Development


• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan

Overview of Software Development Process 12


eXtreme Programming (XP)

Figure 9: The most famous agile technique, eXtreme Programming (XP)

Overview of Software Development Process 13


Examples to Other Models

• Scrum: A framework within the Agile methodology that divides work into time-
boxed iterations and it emphasizes transparency, inspection, and adaptation.
• DevOps: A culture and set of practices that aims to automate and integrate the
processes between software development and IT operations teams.
• Rapid Application Development (RAD): Emphasizes rapid prototyping and
iterative development.

Overview of Software Development Process 14


Software testing strategies

• Glass-box testing (White-box) :


- Where the tester uses knowledge of the software in testing it
- Basis path testing: Develop set of test data that ensures each
instruction in the software is executed at least once

• Black-box testing:
- Treat the software as a black box (can't see inside)
- Pick sample data based only on possible inputs and outputs
Documentation

Needed to:
- Teach people how to use the software (user manual)
- Describe the software for later modification
(implementation manual)

Problems:
- No one wants to do it
- Existing documentation is poorly written
User documentation: user's manual
- Introductory guide for commonly used features
+ Detailed reference
+ Installation guide/hardware requirement
- Formats: Printed, on-line manual, on-line tutorial

System documentation
- System specifications
- Structure description:
dataflow diagrams, data dictionary, structure charts, design trees
- Collection of programs
- Collection of test data for every feature
Documentation: When?

Documentation should be done in parallel with the


development and modification of the system
- Maintains consistency, reduces chance of forgetting

There is a normal human temptation not to document but


system tools help ensure that documentation is kept up-to-date
Summary

• Software engineering deals with design, development, testing, and maintenance of


software applications.
• Software process models are general approaches for organizing a project into
activities.
• Waterfall model requires to attempt to complete a given stage before moving on to
the next stage, does not account that requirements constantly change.
• Agile approaches promote using disciplined, lightweight techniques that is cost
effective.
• There is no one fit all methodology.

Overview of Software Development Process 20

You might also like