0% found this document useful (0 votes)
19 views33 pages

Lecture 7

congnghephanmem phantieptheo

Uploaded by

Redya
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)
19 views33 pages

Lecture 7

congnghephanmem phantieptheo

Uploaded by

Redya
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/ 33

61FIT3SE1 - Software Engineering 1

Lecture 7
Software engineering method

Fall 2022
Outline

 Programming vs. software development


 SE, computing, and engineering
 Characteristics of software
 What is Software Engineering (SE)
 Software development process models
 Software requirements basic
Programming vs. Software
Development
 Programming (coding):
a specific task in software development, which involves
writing specific computer instructions to solve a given
problem in one or more programming languages (C#,
Java, etc.)
 Software development:
a broader creative process of constructing a software (a
‘bigger’ program) for a particular purpose (which
typically constitutes solving a set of problems).
 consistsof several phases: programming is only one
step in one of these phases
Programming vs. Software
Development
 “Software developers are the creative minds behind
computer programs. Some develop the applications that
allow people to do specific tasks on a computer or other
device. Others develop the underlying systems that run
the devices or control networks”
 “Computer programmers write code to create software
programs. They turn the program designs created by
software developers and engineers into instructions that a
computer can follow”
(U.S. Bureau of Labor Statistics)
SE in computing
SE in computing

 Computer Engineer (CE): software in hardware


devices
 SoftwareEngineering (SE): software satisfies
robust real-world requirements
 Computer Science (CS): software is the currency
for expressing computing ideas
SE and CS

 SE’s foundation is CS:


 CS: foundational concepts, techniques and tools
 SE: development process
 CS:
 build “clever” software, devise new ways (e.g. new
algorithm, language, etc.)
 SE:
 builds “complex” (large) software, in a disciplined manner
 focus on quality
Similarities between SE &
engineering
 decision-based
 measure things
 use a disciplined process
 operate effectively as part of a team
 multiple roles
 use tools systematically
 reuse designs and design artifacts
 advancement of principles, standards, and best
practices
Differences between SE &
engineering
 SE’s foundations are primarily in CS, not natural
sciences
 discrete rather than continuous mathematics
 abstract/logical
entities instead of
concrete/physical artifacts
 no “manufacturing” phase
 “maintenance” means evolution (not conventional
wear and tear)
What is SE?

 Anengineering discipline for software


development
 Objectives:
 quality
 suitable for purpose
 Use a software process
Software development life cycle
 An SDLC consists of 6 phases:
 Requirements
 Analysis & Design
 Implementation & testing
 Acceptance testing
 Production
 Maintenance
Software process model
A specific way of organizing the phases of SDLC
 How to combine the stages and in what order?
 There are many different process models:
 Waterfall,prototyping, spiral…
 Extreme Programming, Scrum…
 The choice of model depends on the nature of software
Waterfall process model
 Top-down approach.
 Linear, non-
overlapping activities
and steps.
 Each step is signed
off on and then
frozen.
 Most steps result in a
final document.
 Backsteps to correct
mistakes.
Waterfall model
 Advantages
 Easy-to-follow,sequential model
 Reviews ensure readiness to advance
 Works well for well-defined projects (requirements
are clear)
 Drawbacks
 Hard to do all the planning upfront
 Final product may not match the client’s needs
 Stage reviews require significant effort
Plan-driven vs incremental
 Plan-driven
 Iteration
within activities
 Formal outputs between activities
 Incremental
 Develop software through several increments
(versions)
 Rapid feedback across activities
 Easier to make changes during development
 Core, important features come first
Prototyping process model
 Bottom-up approach.
 Problem domain or requirements not
well defined or understood.
 Create small implementations of
requirements that are least understood.
 Reduces risk as requirements are
“explored” before the product is fully
developed.
 Developers gain experience when
developing the “real” product.
Prototyping process model
 Advantages
 Clientinvolvement and early feedback
 Improves requirements and specifications
 Reduces risk of developing the “wrong” product

 Drawbacks
 Time/cost for developing a prototype may be
high
Evolutionary prototyping model

 Develop a skeleton system and evolve it for


delivery
Evolutionary prototyping model
A popular and successful model, especially for
custom products
 Requirements are not known ahead of time
 Requirements are discovered from customer feedbacks

 Advantages
 Addresses risks early
 Produces steady signs of progress, builds customer
confidence
 Useful when requirements are unknown or changing
 Customer involvement ("What do you think of this
version?")
Agile models

 Agile Manifesto (http://agilemanifesto.org/):


 Individuals and interactions over processes and
tools
 Working software over comprehensive
documentation
 Customer collaboration over contract negotiation
 Responding to change over following a plan
Agile models: XP
 Extreme Programming (XP)
 New versions may be built several times per day
with products delivered to customers weekly.
 Adaptation and re-prioritization of requirements.
 All tests must be run for every build and the
build is only accepted if tests run successfully
(may rely on test-driven development).
Agile models: XP
 Extreme Programming
(XP)
 Pair programming and
continuous code review.
 Pairs and roles are
frequently changed.

You’ll never code alone!


Agile models
 Basics
 Maintain simplicity.
 Team members choose their own
methods, tools etc.
 Continuous customer involvement.
 Expect requirements to change, focus
on incremental delivery.
Agile models
 Advantages
 Flexibility
(changes are expected)
 Focus on quality (continuous testing)
 Focus on communication

 Drawbacks
 Requires experienced management and
highly skilled developers
 Prioritizing requirements can be difficult
when there are multiple stakeholders
 Best for small to medium (sub) projects
What model would you choose and
why?
Project management triangle (pick any two)

 Consider
 The project and task at hand
 Well-definedness of requirements
 Risk management and quality/cost control
 Customer involvement and feedback
 Experience of management and team members
SDLC models summary
 All
models have the same goals: manage risks
and produce high quality software.
 Allmodels involve the same activities and
steps
 Specification, design, implementation, testing,
etc
 All models have advantages and drawbacks.
 The choice of process model depends on the
team and the target software product.
Software requirements
 Requirements specify what to build
 describe what, not how
 describe the problem, not the solution
 reflect system design, not software design

 Benefits
 Understand what is required of the software
 Communicate this understanding precisely to all
development parties
 Control production to ensure that system meets specs
(including changes)
Software requirements
 Often underrated
 Usually mis-communicated
 Great consequences from requirements failure
Requirements for different roles
 Customers
 show what should be delivered; contractual base
 Managers
a scheduling / progress indicator
 Designers
 provide a spec to design
 Programmers
 list a range of acceptable implementations / output
 QA / testers
a basis for testing, validation, verification
Classifying requirements (classic)
 Functional: map inputs to outputs
 “The user can search either all databases or a subset”
 “Every order gets an ID the user can save to account
storage”
 Nonfunctional: other constraints
 dependability,reusability, portability, scalability,
performance, safety
 “Our deliverable documents shall conform to the XYZ
process”
 “The system shall not disclose any personal user
information”
Classifying requirements (Faulk)
 Behavioral (user-visible): about the artifact
 usuallymeasurable and objective
 features, performance, security
 Development quality attributes: about the
process
 usually subjective
 flexibility, maintainability, reusability
Classifying requirements
(deliverables)
Customer requirements
 Written by customers
 Casual, informal

 Software product requirements


 Developed by software engineers
 Technical, formal

 Prototypes
 By software engineers
Requirements elicitation
 Getting requirements from customers
 Customers don’t always know what they want.
 Customers do know what they want...it just changes
over time.
 Tecniques
 Interview,document analysis, prototyping
 Old system investigation, observing customer’s
workplace
 The #1 reason that projects succeed is user
involvement

You might also like