You are on page 1of 79

Software Engineering &

Management of Software
Projects
Yigal Cohen
Yigal.Cohen@mail.huji.ac.il

1
Lesson #1
1.1 Introduction

Yigal Cohen
Yigal.Cohen@mail.huji.ac.il

2
‫? מה זאת הנדסת תוכנה‬
‫• הנדסת תוכנה מיישמת גישה שיטתית‪ ,‬מבוקרת ומדידה לפיתוח‪ ,‬תפעול‪ ,‬ותחזוקה של‬
‫תוכנה‪.‬‬
‫• הנדסת תוכנה מקיפה את מחזור החיים השלם של תוכנה‪ ,‬וכוללת ידע‪ ,‬שיטות וכלים‬
‫עבור‪:‬‬
‫דרישות‪ ,‬תכנון‪ ,‬בנייה‪ ,‬בדיקות‪ ,‬אינטגרציה‪ ,‬תחזוקה‪ ,‬ניהול תצורה‪ ,‬איכות ועוד‬
‫• הנדסת תוכנה נועדה להפחית את המורכבות שבפיתוח תוכנה‪ ,‬לשפר את‪ ‬אמינות התוכנה‬
‫המפותחת‪ ,‬ולהקטין את עלויות התפעול והתחזוקה‪.‬‬
‫• הנדסת התוכנה שימושית במיוחד בפיתוח מערכות מורכבות הכוללות חומרה‪ ,‬תוכנה‪,‬‬
‫ותקשורת‪( .‬מתוך ויקיפדיה)‬
‫• הנדסת תוכנה מציעה ומתעדפת אסטרטגיות שונות (איטרציות‪waterfall ,‬‬
‫(‪ …/Continuous testing/integration/Delivery‬לפיתוח התוכנה‪.‬‬

‫‪3‬‬
‫הנדסת תוכנה לעומת מדעי המחשב‬
‫נושא‬ ‫הנדסת תוכנה‬ ‫מדעי המחשב‬

‫גילוי אמיתות כלליות אודות‪ ‬‬


‫אידיאל‬ ‫פיתוח מערכות תוכנה‬ ‫חישוביות‪ ,‬אלגוריתמים‪ ‬ונושאים תאורטיים‬
‫נוספים‬

‫אמיתות כלליות‪ ,‬כגון‪ ‬סיבוכיות‪ ‬ונכונות של‬


‫דגש‬ ‫פיתוח תוכנה בעלת ערך למשתמש‬ ‫אלגוריתמים‬

‫תוכנות גדולות ושימושיות כגון‪ ‬מהדר‪,‬‬


‫מטרה‬ ‫מערכות מידע‪ ,‬מערכות בקרה מערכות‬ ‫אלגוריתמים‪ ‬כגון אלגוריתמים למיון‪ ,‬בעיות‬
‫מבוזרות‪ ,‬חבילת יישומים משרדיים‬ ‫מופשטות כגון‪ ‬בעיית הסוכן הנוסע‬

‫תקציב ולוח זמנים‬ ‫תקציב ולוחות זמנים "קבועים מראש"‬ ‫תקציבי מחקר ותחרותיות כפי שמקובל באקדמיה‬

‫ידע נוסף‬ ‫הנדסה‪ ,‬ניהול פרויקטים‪ ,‬הכרת תחום‬ ‫מתמטיקה‬


‫היישום‪ ,‬ידע בתחומים טכנולוגיים נוספים‬

‫חוקרים נודעים‬ ‫פרד ברוקס‪ ,‬בארי בֶם‪' ,‬גריידי בוץ‬ ‫אלן טיורינג‪ ,‬ג'ון פון נוימן‪ ,‬אדסחר דייקסטרה‪ ,‬‬
‫'דונלד קנות‪ ,‬דוד הראל‪ ,‬עדי שמיר‬
‫‪4‬‬
‫? מה זה ניהול פרויקט תוכנה‬

‫• בהנדסת תוכנה מתייחסים להבטים של התוכנה כפי שפירטנו‬


‫• בניהול פרויקט אנחנו מתייחסים גם ל‪:‬‬
‫היבטים אנושיים‪,‬‬ ‫•‬
‫זמן פיתוח‪,‬‬ ‫•‬
‫תקציב‪,‬‬ ‫•‬
‫תהליך הפיתוח‪,‬‬ ‫•‬
‫עבודת צוות‪,‬‬ ‫•‬
‫לוחות זמנים‪ ,‬אספקות‪ ,‬תלויות‪.‬‬ ‫•‬
‫• זאת לא אבחנה מדויקת (גם כי קו ההפרדה הוא מאד דינמי) אבל זאת‬
‫אבחנה מספיק טובה‪.‬‬

‫‪5‬‬
)1/2( ?‫מה נלמד בקורס‬
1. Introduction, Overview of major SW development models
2. Requirements Management.
3. System Design: System modeling & Architectural design
4. SW Testing: Test case, Test Scenario, Test planning, Continuous testing
5. Integration, Integration planning ,Continuous Integration
6. Distributed software engineering
7. Agile & Scrum Vs. Classical project management (Waterfall)
8. Project Planning. scope management, Scheduling & Tracking, TOC (Theory of
constraints)
9. The role of the PM, Project management, PMI Model & PMI Matrix (the last 2 are
optional)

6
)2/2( ?‫מה נלמד בקורס‬

Some or all of the following topics according to the progress of the class:
• Other models of requirements analysis and description, more models of system
architecture and design,
• Human Communication, meeting management.
• SW quality Management
• Risk management, Improvement of SW development process (CMMI)
• People management. Adizes model. Maslow need hierarchy

• About 30% of the course will be dedicated to the course project: Management of a
project of a distributed system 

7
‫מבנה הציון‬
‫• הרצאות פרונטליות‬
‫• נוכחות והשתתפות חובה של ‪85%‬מההרצאות בזום‪( .‬עד ‪ -5‬נקודות על אי השתתפות)‬
‫יינתן בונוס של ‪ 3%‬עבור נוכחות של ‪100‬‬
‫• משימות ‪/‬תרגילים – ‪80% - 65%‬‬
‫• כ ‪ 6‬או ‪ 7‬תרגילים בקבוצות‪.‬‬
‫• יהיו תרגילים בהם יהיו משימות עצמאיות (וציון) לכל אחד מהקבוצה‬
‫• כל תרגיל מתבסס על התרגילים הקודמים וביחד יוצרים פרויקט‪.‬‬
‫• בחינה סופית או עבודת גמר ‪35% -10% -‬‬
‫• ייתכנו בחינות אמצע קצרות עד ‪ 10%‬על חשבון התרגילים או הבחינה‬

‫• רשימת קריאה‬
‫• כ‪ 3-‬או ‪ 4‬מאמרים‪  .‬‬
‫• מספר פרקים מתוך הספר‪:‬‬
‫• ‪Software Engineering: A Practitioner's Approach 8th Edition, Roger pressman‬‬
‫ימסרו במהלך הקורס‬
‫• אתר הקורס‬
‫• ב ‪moodle‬‬
‫‪8‬‬
About myself:

Yigal Cohen

• Why I teach this course?

9
What’s the problem ?

• About 1/3 of the projects totally fail, a third are poorly


completed, and a third are reasonably succeed

• Many projects are managed intuitively, some are managed


very poorly, and others are not managed at all

• There is a lot of practices, experience, knowledge,


methodologies and theories that can help us to run projects
in a better way:
• faster (x4), with higher quality (1/20 of the escaped
bugs), cheaper and with satisfied customers

10
Chaos Report Results
100
90
successful
80
70
60
50 challenged
40
30
20
10 failed
0
1994 1996 1998 2000 2002 2004 2006 2009 2011 2012 2013 2014 2015
Can you build this?
Can you build this?
Can you build
this?
Scale

• Most people can build a doghouse


• Traditionally people built their own homes
• Perhaps with help from experienced village people
• Still happens in many places in the world
• Nobody just goes and builds a skyscraper
• Draw plans (incl. market) and organize it all
• Make sure construction is solid
• Abide by earthquake regulations (‫)כפוף לרגולציה‬
• This is a work for professionals
What Engineers Can Do

Predict system behavior

e.g. conditions leading to stability or instability

Calculate design tolerances

Is manufacturing variation still OK?

Calculate failure probability

Chances that change in conditions will be really bad

Use all this to extend previous systems

Skyscrapers, jumbo jets, and supercomputers represent
accumulated knowledge over many years
This is way beyond what any virtuoso ever did
‫שאלה‪:‬‬
‫מה ההבדלים בין הנדסת תוכנה להנדסת מבנים או גשרים?‬

‫‪17‬‬
What we’ll do in the course ?

 We’ll learn a rich toolbox for project management SW


Engineering that will help us to think outside the box

18
‫שאלה‪ :‬האם תרגולות ותבניות הופכות אותנו לפחות‬
‫? או ליותר יצירתיים‬

‫‪19‬‬
List of topics

• Project Management
framework
• Project activities
• Supportive activities
• Methodologies
• Architecture

20
List of topics

Project Management
Framework
• Project Management
framework
• Project activities
 Introduction,
• Supportive activities
 SDLC – SW Development
Life Cycle (ALM- Application
• Methodologies Lifecycle Management)
• Architecture  The role of the PM
 Customer Interfacing
 Project initiating & Planning
 Time management

21
List of topics
• Project Management
framework
• Project activities Project activities
• Supportive activities
• Methodologies  Requirements
• Architecture
 Architecture & Design
 Coding & Building
 Testing
 Integration
 Maintenance & Support

22
List of topics

Supportive activities
• Project Management
framework  SW Configuration
• Project activities Management
• Supportive activities  Branch Management
• Methodologies  Bugs Management
• Architecture
 Classic Project Management
problems
 On-going activities
 Soft Skills
 Support Environment
 Metrics
23
List of topics

Methodologies
• Project Management
framework
• Project activities  PMI
• Supportive activities  Agile / Scrum
• Methodologies  TOC
• Architecture  Adijas
 CMMI
 ISO-9000

24
List of topics

• Project Management
Architecture
framework
• Project activities
• Supportive activities  Architecture design
• Methodologies  Modeling
• Architecture  Distributed systems

25
What’s a project?
• A temporary Endeavour undertaken to create a unique product, service
or result

“‫ קצוב בזמן ובמשאבים להשגת תוצאה מוגדרת‬,‫• “מאמץ מרוכז‬

• uniqueness of every project” (Done, quality)’

26
Project outcomes

• A product
• A system
• A conclusion
• A capability
• ……
• …….

27
The golden triangle or the iron Triangle

Scope

Quality
Time Cost

28
The Iron Triangle

29
‫? מה המגבלות על פרויקט‬

• Scope,
• time,
• money,
• quality,
• resources,
• risk

30
Balancing Project Constraints

Scope

Resour Risks
ces

Project

Money Time

Quality

31
Is this is a real zero-sum game ??

∑ ?
=C
Scope,
money,
quality,
resources,
time,
risk

32
Can we enlarge the cake (1)?
• Scope
• Prioritization: Start with the important and risky things! Scope
• Pareto (20:80)
• Money
• Cost management;
Money
• Reuse!
• Quality
• Manage a process, manage continuous testing, continuous integration,
continuous delivery, analyze feedback, automation, defect management,
Quality
Root cause analysis
• Resources management
• Find the right people, training, mentoring, guidance, challenging; team work,
spirit of excellence, roles & responsibilities
Resour
• Time management ces
• Manage a schedule, Find and manage critical paths,
• continuous development / testing / integration
Time
• Risk management
Risks
• Assessment and mitigation continuously 33
More ideas ? How to enlarge the cake ??

Scope

Resour
ces
Risks

Project
Project

Time

Money

Quality
34
Can we enlarge the cake (2)?
• Methodologies

• Technology

• Communication – knowledge sharing

• Knowledge

• Understanding

• Delegation

• Professionalism

• Teamwork

• Communication, Communication,
Communication, ,,, 35
Can we enlarge the cake ??

36
Lesson #1
1.2 Development models

37
Elementary activities
Formal name ?‫מה התכלית‬

• Initiating • Why ?
• Planning • What? Who? When?
• Requirements • What?
• Design • How?
• Coding & building • Doing
• Testing • Validating
• Integration • Building
• Maintenance &support • Long term warranty
38
Development models

1. Waterfall
2. Agile / SCRUM model
3. Concurrent engineering
4. Iterative
5. RUP (Rational Unified process) Model

Development models differ by the


interdependency of their elementary activities
39
Development models

1. Waterfall
2. Iterative
3. Incremental - RUP (Rational Unified
process) Model
4. Agile / SCRUM model
5. Concurrent engineering

40
“Classic” Waterfall model
(Old but basic)
Requirements

‫התנור‬
Design
‫גמלא‬
Coding
‫בניאס‬
Testing
‫סער‬

‫ציר הזמן‬ Integration

41
Waterfall Model

Advantages
Disadvantages
• Clear phases • Strong dependencies in gates
• Nice view • No ‘real’ visibility
• Manageable • No feedback
• Clear dependencies • No concurrency
• Customer’s control • No learning
• No evolution
• Important steps are hidden
(infrastructure, tools, research)

42
Waterfall(s) ??

Requirement

Design

Coding

Testing

Integration

44
Waterfall(s) ??

Requirement Requirement

Design Design

Coding Coding

Testing Testing

Integrati
Integration
on

45
Waterfall(s) ??
Requirement

Design

Coding

Testing

Integration

Requirement

Design

Coding

Testing

Integration

46
Can we change the requirements in waterfall
model after the requirements are completed?
• Yes!
• Use change request process
More Waterfalls

kraka Niagara

Victoria Iguazu 48
‫שאלה‪:‬‬

‫• מה השוני בין המפלים האלו לבין המפלים שבציור‬


‫הראשון‬

‫‪49‬‬
‫מפלי האיגואסו‬

‫‪https://www.youtube.com/watch?v=9lfMb20QLX‬‬
‫‪g‬‬
‫מה ההבדלים בין מפל‬ ‫‪‬‬

‫האיגואסו לבין מפל‬


‫גמלא למשל?‬
‫מקביליות‪,‬‬ ‫‪‬‬

‫חיבורים ופיצולים‪,‬‬ ‫‪‬‬

‫מדרגות‬ ‫‪‬‬

‫‪51‬‬
Development models

1. Waterfall
2. Iterative
3. Incremental - RUP (Rational Unified
process) Model
4. Agile / SCRUM model
5. Concurrent engineering

52
Iterative model
R Iteration -1
D
C
T
I

R Iteration -2
D
C
T
I

R
D Iteration -n
C
T
I

53
‫מה הרווחנו בעבודה איטרטיבית?‬

‫• מספר מחזורים קצרים‬


‫• נראות טובה יותר של תוצאות שיכולות לשמש למשוב (‪)Feedback‬‬
‫• אין צורך לתכנן קדימה בפירוט למרחקים ארוכים‪ .‬זה קשה מאד‪.‬‬

‫‪54‬‬
Development models

1. Waterfall
2. Iterative
3. Incremental - RUP (Rational Unified
process) Model
4. Agile / SCRUM model
5. Concurrent engineering

55
The focus of Rup Phases
Focus RUP Phase

Confirm the scope and objectives of the Inception


project and bring the business risks under ‫פתיחה‬
control
Stabilize the product plans and bring the Elaboration
architectural and technical risks under ‫פירוט והרחבה‬
control
Build the product and bring logistical, Construction
project execution risks under control ‫ הרכבה‬,‫בניה‬
Deliver the product and roll-out risks Transition
under control ‫העברה‬
56
Rup: Iteration

58
RUP: Phases and iterations

59
60
Rup: The Distribution of Work Across
Phases (% Coverage)

61
Iterative Vs. Incremental model

• Both are iterative but incremental


emphasizes the development of
• feature by feature
• “Vertical development”
• that is continuously accumulated to a testable
and working system

62
‫שאלה‪:‬‬
‫האם תמיד עדיף מודל מתווסף(‪ )Incremental‬על פני מודל‬
‫איטרטיבי?‬

‫‪63‬‬
Vertical Work

• WORK:
• Develop feature by feature, either sequentially or
concurrently.
• Run a full cycle of development for each feature.
• Use continuous development, continuous testing,
continuous integration and continuous delivery.
• Advantages:
• Avoidance of the big-bang integration and testing
• Having visible and tested results along the development
process
• Get and use feedback
Iterative /incremental/ RUP Model

Advantages
Disadvantages
• Clear phases • Strong dependencies in
iterations
• Nice view
• Rigid
• Clear dependencies
• Not enough concurrency
• Customer’s control
• No learning
• Provides Visibility
• No evolution
• Enables Reliable Feedback
• Important steps are hidden
• Enables Learning
(infrastructure, tools, research)
• Global view and iterations

65
Development models

1. Waterfall
2. Iterative
3. Incremental - RUP (Rational Unified
process) Model
4. Agile / SCRUM model
5. Concurrent engineering

66
SCRUM Process Overview

67
68
SCRUM: Time box

69
Scrum Model

Advantages
Disadvantages
• Strong dependencies on time-box
• Clear phases
• Very Rigid with a lot of ceremonies
• Nice view
• Not enough concurrency
• Clear dependencies
• Disconnected from the SW
• Customer’s control traditional practices
• Visibility • Important steps are hidden
• Enables Reliable Feedback & (infrastructure, tools, research)
use it • In practice – teams may lose the
vision and the goals
• Encourages Learning
• Insufficient global view
• Encourages evolution
70
integrate waterfall with agile

‫מ‬
High
‫בט‬
‫כו‬
‫לל‬

LOW

Low High

A g I I t y 71
integrate global view with agile
‫מ‬
High
‫בט‬
‫כו‬
‫לל‬

LOW

Low High

A g I I t y
72
‫‪integrate waterfall with agile‬‬

‫מ‬
‫‪High‬‬
‫בט‬ ‫קיבעון‬ ‫שליטה מלאה‬
‫כו‬ ‫יש תכנון ואין תגובתיות‬ ‫יש תכנון ויש תגובתיות‬

‫לל‬

‫‪LOW‬‬ ‫כאוס מוחלט‬ ‫חשש לאבדן דרך‬


‫אין תכנון ואין תגובתיות‬ ‫אין תכנון ויש תגובתיות‬

‫‪Low‬‬ ‫‪High‬‬

‫‪A‬‬ ‫‪g‬‬ ‫‪I‬‬ ‫‪I‬‬ ‫‪t‬‬ ‫‪y‬‬


‫‪73‬‬
Development models

1. Waterfall
2. Iterative
3. Incremental - RUP (Rational Unified
process) Model
4. Agile / SCRUM model
5. Concurrent engineering

74
Concurrent Development
Requirement

Design

Coding

Testing

Integration

75
? Isn’t it Waterfall Project
Requirement

Design

Coding

Testing

Integration

76
Development models

1. Waterfall
2. Iterative
3. Incremental - RUP (Rational Unified
process) Model
4. Agile / SCRUM model
5. Concurrent engineering

‫ מה לעשות ומה לא לעשות‬:‫לסיכום‬..


77
progressive elaboration
rolling wave planning - ‫תכנון בגלים‬

78
What to do (1) ??
1. Plan & work with progressive elaboration (rolling wave
planning) ((‫תכנון בגלים‬
2. Build the global plans in advance without too many
details and update them frequently
3. Work in phases, each phase with visible, beneficial and
measurable results
4. Develop feature by feature and continuously accumulate
them and deliver pieces of the project till you have a
working system
5. Plan, define, design, code, test and integrate in every
phase
6. Use methodologies
79
What to do (2) ??
1. Encourage Concurrency
2. Fast ramp-up
3. Document !!
8. Use the models with flexibility
9. Enable visibility and transparency
10. Encourage feedback, learning and evolution
11. Use continuous testing, continuous integration and
continuous delivery
12. Develop tools and infrastructures

80
Question: How to ensure a failure in a SW
project ?

81
•Questions ???

•Thank you!!

85

You might also like