L01-Introduction To Systems, Roles, and Software Engineering
L01-Introduction To Systems, Roles, and Software Engineering
TO SOFTWARE
ENGINEERING
Lecture 1
Introduction to Systems, Roles, and Software Engineering
LEARNING OBJECTIVES
At the end of this lesson, students should be able to:
• Explain why software engineering and systems analysis & design is important.
• Understand the difference between software life cycle and life cycle
model.
OUTPUT
WHAT IS SYSTEMS
THINKING?
• Systems thinking is a way of thinking about…the forces
and interrelationships that shape the behavior of
systems.3
FEEDBACK
system
PROCESS
OUTPUT
WHAT IS A SOFTWARE?
• Computer programs and associated
documentation
• Within budget
• Usable: user-friendly
• Family house
is concerned with
• Scope
• Goal
• Consultant
• Supporting expert
• Agent of change
QUALITIES OF A SYSTEMS
ANALYST
• Problem solver
• Communicator
• Life cycle
7 Implemen'ng 2 Determining
and evalua'ng informa'on
the system requirements
6 Tes'ng and
3 Analyzing
maintaining the
system needs
system
• Waterfall
• Rapid Prototyping
• Agile and XP
• Open Source
• Spiral
CODE AND FIX
• No requirement • No specifications
• No design • Maintenance nightmare
• Easiest way to
develop software
• The most
expensive way
• The most difficult
to maintain
• The worst software
life cycle model
WATERFALL
• Linear Sequential Model - Generally one phase follows
after completion of another
• No phase is complete until documentation of that
phase has been approved by the Software Quality
Assurance (SQA) group
• Testing is not a separate phase but done throughout
the software development process
• Many versions
RAPID PROTOTYPING
MODEL
• Build a throwaway version
(prototype)
• Intended to test concepts
and requirements
• Promotes clarity among
stakeholders
• Effort spent pays off for the
clarity
• After agreement from
Rapid Application
customer, usually follows
Development (RAD)
same phases as waterfall emphasizes user
model involvement, prototype,
reuse, and automated tools
ITERATIVE AND
INCREMENTAL
• Stepwise refinement: the philosophy of continuous
improvement until you reach the final target
• First, individual builds an initial version and made available via the
Internet (e.g., sourceforge.net)
• product is extended
• Corrective Maintenance —
reporting and correcting defects
• Requirements Analysis
• Extract list of features of highest priority thru interviews with potential customers
• Draw up specifications
• At the end of each day — all teams synchronize (integrate components, test, and
debug)
• At the end of the build — stabilize (freeze the build and fixing bugs, no more
change to specification)
SYNCHRONIZE & STABILIZE
• Components always work together
• no integration problem
• RESOURCES
• Team is not familiar with technology
• Schedule is too short
• Unable to hire people with the right
background • Too many users
• Pair programming
• team members do the best job they can during that time
• What did I learn that I would like to share with the team?
• Solution: Found at follow-up meetings, preferably right after the stand-up meeting
EXTREME PROGRAMMING
(XP)
• Lightweight process model for OO software development
• Unusual features of XP
• no specialization
• Continuous integration
USER
• Most important user stories first STORY 3
USER
• New/ modified stories STORY 5
• Changed estimates
ITERATION
• Iteration: 1 - 3 weeks long
TASK 3
• Developers sign up for a task and
TASK 4
estimate its duration (1-3 ideal days)
RELEASE ITERATION USER
TASK 5
1 1 STORY 2
• Developer begins an episode to TASK 6
implement
TASK 7
• Developers ensures task is complete USER TASK 8
STORY 3
TASK 9
• If last task, developer ensures story is
complete via acceptance test
EPISODES
• = Daily development work
• Pair begins test-driven cycle of write test cases, implement to pass, refactor
Coding
17%
RELATIVE NUMBER OF ERRORS MADE IN
THE STAGES OF SOFTWARE
DEVELOPMENT
• Design: 1/2
• Programming and Logic: 1/3
• Syntax: 1/6
Syntax
17%
Design
Programmi
50%
ng and
Logic
33%
RELATIVE COST OF FIXING
DIFFERENT TYPES OF ERRORS
• Design: 4/5
• Programming, Logic, and Syntax: 1/5
Programmi
ng and
Logic,
Syntax
20%
Design
80%
RELATIVE COST OF FIXING
SOFTWARE FAULTS
The earlier we detect and correct a fault,
the less it costs
200
30
1 2 3 4 10
e
n
ts
on
on
on
in
nc
sig
en
a6
a6
nn
a
ca
De
m
en
t
gr
a
en
ifi
ire
Pl
te
nt
ec
em
qu
In
ai
Sp
M
Re
pl
Im
IMPACT OF SYSTEMS ANALYSIS
AND DESIGN TO PROJECT COSTS
• To correct a fault early in the life cycle
• Between 60% to 70% of all faults in large scale products are requirements,
analysis, and design faults
TASK SHARING
• If one farm hand can pick a strawberry field in 10 days, 10
farm hands can pick the same strawberry field in 1 day
• Solution
• Nonsense!
• Sheila codes m1, Harry codes m2. m1 calls m2 and passes 4 parameters;
but m2 requires 5 parameters
• Or, the order may be the same, but the data types may be slightly different
• Brook’s Law
• Agile Processes
• Open Source
DEMOCRATIC TEAM
• Programmers can be highly attached to • Solution — egoless programming
their code
• restructure programmers’ values
• They see their modules as • encourage team members to find faults
extension of themselves
• a fault must be considered a normal and accepted
event
• They will not try to find all the
error in his/ her code • modules will “belong" to the team as a whole
• 3 to 8 developers
• Rule: Programmers must strictly follow the time for committing the code into
the server for that day’s synchronization
• Analogy: Let the children do what they like all day…but with a 9 PM bedtime
AGILE PROCESS TEAM
• Pair programming
• Programmers should not test their own code — one draws out test cases, the
other tests the code
• the product
• Understood the difference between software life cycle and life cycle
model