SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
The Concepts Behind Software Design




   Elena Punskaya, elena.punskaya@eng.cam.ac.uk

                                                  1
Course Objectives
•   Object-Oriented Software Design
    - Understand the benefits of object-oriented analysis and design, its concepts and
      processes
    - Be familiar with formal design tools for object orientated design and analysis
    - Recognise and understand some frequently used design patterns
    - Be aware of the process involved in user interface design

•   Software Systems and Engineering
    - Appreciate the basic design issues and concepts in distributed, real time and concurrent
      systems
    - Understand software development methodologies
    - Understand the main issues and processes necessary to achieve effective software
      product development

•   The course is not about becoming a Code Ninja
    - so we are not going to learn programming in Scala, Ruby on Rails, Go!, Java or Thumb
    - but we might discuss them

•   It is neither about becoming a Project Management Guru
    - so we are not going to make Gantt charts and milestones
    - but we could talk about priorities, teams and metrics


                                                                                   © 2012 Elena Punskaya
                                                                                                          2
                                                              Cambridge University Engineering Department

                                                                                                              2
Books

•   Ian Sommerville, Software Engineering, Addison-Wesley
•   Roger Pressman, Software Engineering: A Practitioner's
    Approach
•   Fred Brooks, The Mythical Man Month, Addison-Wesley
•   Martin Fowler, UML Distilled: A Brief Guide to the Standard
    Object Modeling Language, Addison-Wesley
•   Andrew Hunt and David Thomas, The Pragmatic Programmer
•   Don Norman, Design of Everyday Things
•   Kent Beck with Cynthia Andres, Extreme Programming
    Explained: Embrace Change
•   Donald Norman, Living with Complexity
•   Jez Humble and David Farley, Continuous Delivery: Reliable
    Software Releases Through Build, Test and Deployment
    Automation
•   ...                                                         © 2012 Elena Punskaya
                                                                                       3
                                           Cambridge University Engineering Department

                                                                                           3
Definitions
•   Software
    - is a collection of computer programs and
      related data that provide the instructions for
      telling a computer what to do and how to do
      it. (Wikipedia)



•   Engineering
    - the way that something has been designed
      and built. (Cambridge Business English
      Dictionary)


•   Software Engineering
    - a collection of methods, techniques and tools
      that could be applied to design, build and
      maintain the “instructions for telling a         © Metro-Goldwyn-Mayer Studios Inc. All Rights Reserved.

      computer what to do and how to do it”


•   What is a computer?


                                                                              © 2012 Elena Punskaya
                                                                                                     4
                                                         Cambridge University Engineering Department

                                                                                                                 4
Example: Location-Based Mobile App
•   foursquare iPhone App
    - provides consumer location-based services
      using iOS Location API

•   foursquare Application server
    - aggregates and correlates user and location data

•   Apple iPhone
    - Operating System provides access to
      location data acquired by a GPS receiver chip

•   GPS Receiver chip
    - processes GPS signals

•   Navigation Satellite
    - broadcasts navigation messages


•   Everything is a COMPUTER (or needs one)
•   A COMPUTER needs SOFTWARE
•   Everything needs SOFTWARE :)

                                                                              © 2012 Elena Punskaya
                                                                                                     5
                                                         Cambridge University Engineering Department

                                                                                                         5
Example: Software Types
•   foursquare iPhone App – consumer software application
    - provides consumer location-based services
      using iOS Location API

•   foursquare Application server – distributed concurrent
    software system
    - aggregates and correlates user and location data


•   Apple iPhone – operating system provides software
    application platform
    - Operating System provides access to
      location data acquired by a GPS receiver chip

•   GPS Receiver chip – implements digital signal processing
    software
    - processes GPS signals

•   Navigation Satellite – uses system control software
    - broadcasts navigation messages



                                                                              © 2012 Elena Punskaya
                                                                                                     6
                                                         Cambridge University Engineering Department

                                                                                                         6
Horses for Courses
•   Not all SOFTWARE is created equal, choose an engineering
    approach accordingly
Our tests suite takes nine minutes to run (distributed
across 30-40 machines). Our code pushes take another
six minutes. Since these two steps are pipelined that
means at peak we’re pushing a new revision of the
code to the website every nine minutes. That’s 6
deploys an hour. Even at that pace we’re often batching
multiple commits into a single test/push cycle. On
average we deploy new code fifty times a day. [1]

This software never crashes. It never needs to be re-
booted. This software is bug-free. It is perfect, as perfect
as human beings have achieved. Consider these stats :
the last three versions of the program – each 420,000
lines long-had just one error each. The last 11 versions
of this software had a total of 17 errors. [2]
                                                                       © 2012 Elena Punskaya
                                                                                              7
                                                  Cambridge University Engineering Department

                                                                                                  7
Software Engineering in Cambridge [3]
•   1948-9 Research on programming methods
    under M.V. Wilkes, including:
    - definition and refinement of Initial Orders (Wheeler);
    - closed subroutines (Wheeler);
    - building of a library of subroutines (all laboratory members
      interested in programming, plus Professor D. R. Hartree).
                                                                                       M.V.Wilkes, 1913-2010
•   6 May 1949, First logged program on EDSAC 1
    (computing squares of 0-99) – World’s first
    stored program computer
•   1950 First Summer School on Programme
    Design for Automatic Digital Computing
    Machines, with 51 attendees
•   1953 Diploma in Numerical Analysis and
    Automatic Computing began
    - The Diploma “would include theoretical and practical work ...
      [and also] instruction about the various types of computing-
      machine ... and the principles of design on which they are                 EDSAC I, 1947/8 P.J.Farmer R.Piggott
      based.”                                                                    M.V.Wilkes W.A.Renwick




                                                                                    © 2012 Elena Punskaya
                                                                                                           8
                                                               Cambridge University Engineering Department

                                                                                                                        8
The NATO Software Engineering Conferences
•    1968: “In Europe alone there are about 10,000 installed computers —
     this number is increasing at a rate of anywhere from 25 per cent to 50 per
     cent per year. The quality of software provided for these computers will
     soon affect more than a quarter of a million analysts and programmers.” [4]




    P. Naur and B. Randell, (Eds.). Software       B. Randell and J.N. Buxton, (Eds.).
    Engineering: Report of a conference            Software Engineering Techniques: Report
    sponsored by the NATO Science                  of a conference sponsored by the NATO
    Committee, Garmisch, Germany, 7-11 Oct.        Science Committee, Rome, Italy, 27-31
    1968, Brussels, Scientific Affairs Division,   Oct. 1969, Brussels, Scientific Affairs
    NATO (1969) 231pp.                             Division, NATO (1970) 164pp.

                                                                                    © 2012 Elena Punskaya
                                                                                                           9
                                                               Cambridge University Engineering Department

                                                                                                               9
1968, Typical Software Project
•   The need for feedback is identified

                                          Selig: “External specifications at any
                                          level describe the software product in
                                          terms of the items controlled by and
                                          available to the user.

                                          The internal design describes the
                                          software product in terms of the
                                          program structures which realize the
                                          external specifications. It has to be
                                          understood that feedback between
                                          the design of the external and
                                          internal specifications is an essential
                                          part of a realistic and effective
                                          implementation process.

                                          Furthermore, this interaction must
                                          begin at the earliest stage of
                                          establishing the objectives, and
                                          continue until completion of the
                                          product.” [4]




                                                                © 2012 Elena Punskaya
                                                                                       10
                                           Cambridge University Engineering Department

                                                                                            10
Learning From Mistakes
•   Traditionally, large scale project disasters are seen as the
    impetus for developing software engineering as a discipline in
    order to mitigate the risks
•   Most referenced disaster projects include:
    - 1991-1992, London Ambulance Service – an attempt to switch to a fully automated
      dispatch system (26 Oct 1992: went live, 02 Nov 1992: switched back to the manual
      system)
    - 1985-1987, Therac-25 – a computer-controlled radiation therapy machine massively
      overdosed 6 people
    - 1996, Ariane 5 – the first launch of a new rocket terminated in self-destruction due to a
      software bug in the control software

•   More recently
    - 2003, Northeast Blackout – a power outage affecting est. 55m people in USA and
      Canada, an early alarm failed due to a “race condition” in the energy management
      system software
    - 2005-2006, Sensotronic Brake Control – almost 2m Mercedes cars recalled, the system
      is no longer used in production
    - April, 2011 – Amazon Elastic Compute Cloud (EC2) service disruption takes down
      FourSquare, Quora, Reddit
    - Oct 2011 – 3 days BlackBerry services outage affecting subscribers worldwide

                                                                                 © 2012 Elena Punskaya
                                                                                                        11
                                                            Cambridge University Engineering Department

                                                                                                             11
Measuring Complexity: Lines of Code
     Software entities are more complex for their size than perhaps
     any other human construct... Many of the classical problems of
     developing software products derive from this essential complexity
     and its nonlinear increases with size.
                            Fred Brooks, “No Silver Bullet – Essence and Accident in Software Engineering” [5]


•   F-22 Raptor: 1.7m
•   Radio and navigation system in the current S-class Mercedes-
    Benz: 20m
•   IBM OS/360 (1966): 1m
•   Android Mobile OS: 1m
•   Facebook main site: 9.2m
•   Google Chrome browser: 4.5m
•   Of course, the number lines depends on the programming
    language and less is not always better
       perl -MYAML -ne '$c{$_}++for split//;END{print Dump%c}' data.txt

                                                                                       © 2012 Elena Punskaya
                                                                                                              12
                                                                  Cambridge University Engineering Department

                                                                                                                   12
Example: Facebook


                                                                                                            '()*+$$,&-.*/&0/$123&456&
                                    *!!"

                                    )!!"

                                    (!!"

                                    '!!"



                         !"##"$%&
                                    &!!"

                                    %!!"

                                    $!!"
•   800m users [8]
                                    #!!"

•   500m visit daily                  !"
                                                     /01.!'"
                                                               234.!'"


                                                                                   +,-.!'"
                                                                         5,6.!'"




                                                                                                       234.!("




                                                                                                                                     /01.!)"
                                                                                                                                               234.!)"


                                                                                                                                                                   +,-.!)"
                                                                                                                                                         5,6.!)"


                                                                                                                                                                             /01.!*"
                                                                                                                                                                                       234.!*"


                                                                                                                                                                                                           +,-.!*"
                                                                                                                                                                                                 5,6.!*"


                                                                                                                                                                                                                     /01.!7"
                                                                                                                                                                                                                               234.!7"


                                                                                                                                                                                                                                                   +,-.!7"
                                                                                                                                                                                                                                         5,6.!7"




                                                                                                                                                                                                                                                                       234.#!"




                                                                                                                                                                                                                                                                                                     /01.##"
                                                                                                                                                                                                                                                                                                               234.##"
                                           +,-.!&"




                                                                                                                           +,-.!("




                                                                                                                                                                                                                                                                                           +,-.#!"
                                                                                             /01.!("


                                                                                                                 5,6.!("




                                                                                                                                                                                                                                                             /01.#!"


                                                                                                                                                                                                                                                                                 5,6.#!"
•   350m on mobile
•   all data is stored in a database (MySQL)
•   60 million queries per second
•   4 million row changes per second

                                                                                                                                                                              © 2012 Elena Punskaya
                                                                                                                                                                                                     13
                                                                                                                                                         Cambridge University Engineering Department

                                                                                                                                                                                                                                                                                                                         13
Example: eBay
•   “The size of the problem
    - The problem involves both the number of changes and
      the velocity of the changes. The eBay code base
      consists of hundreds of thousands of source elements
      (with total lines of code in the tens of millions). The
      applications – which comprise web, services,
      messaging, and batch style – number in the thousands.
      It is common for an application to use tens of
      thousands of source elements. The elements
      themselves are contributed by different teams and are
      shared with other applications.” [8]

                          Code Type                                           Count

     Source elements                                            100,000’s

     Source elements per application                            10,000’s

     Applications                                               1000’s

     Features per month                                         100’s

     Source elements changed per feature                        100’s (sometimes 1000’s)

     Projects                                                   1000’s

     Source elements per project                                10-100’s (sometimes 1000’s)
                                                                                         © 2012 Elena Punskaya
                                                                                                                14
                                                                    Cambridge University Engineering Department

                                                                                                                     14
Better Faster Stronger
•   Instagram: 60 photos per second;
•   Tumblr: 900 posts per second
•   Twitter: 8,868 Tweets per second (during MTV Awards)
•   Netflix: stream 1 billion hours in Q4 2011
•   PayPal: 5 million transactions a day
•   London Stock Exchange: 22.4 million trades in Dec 2011
•   Google: over 1 billion searches per day
•   Youtube: over 100 million views a day on mobile



        Ever Increasing Complexity Software
       Systems Drive World’s Economic Growth

                                                                   © 2012 Elena Punskaya
                                                                                          15
                                              Cambridge University Engineering Department

                                                                                               15
Software Engineering Aims
•   Managing complexity and Minimizing risks

       [T]here are known knowns; there are things we know we know.
       We also know there are known unknowns; that is to say we
       know there are some things we do not know.
       But there are also unknown unknowns – there are things we
       do not know we don't know.
                                           Former United States Secretary of Defense Donald Rumsfeld


•   Designing systems that
    - meet requirements (“known knowns”)
    - can adapt to changes (“known unknowns”)
    - and withstand any unexpected use cases (“unknown unknowns”)

•   Software Engineering is also about:

             Making Better Mistakes Tomorrow!
                  Having Happy (Alive) Users!
                                                                                © 2012 Elena Punskaya
                                                                                                       16
                                                           Cambridge University Engineering Department

                                                                                                            16
Software Process
•   “Analysis is discovering and describing those aspects of a
    software development about which there is no choice, that is, to
    which the project is already committed”
•   Design is creating a definition of how the project goals are
    going to be achieved
•   Implementation is the process of writing code, typically would
    be partitioned in many subprojects
•   Building is creating a “complete” version of the software, i.e.
    putting all chunks of code together, including any custom
    configurations for target deployment
•   Testing is about making sure that small independent parts of
    code work correctly (unit tests), that all code parts work
    together (integration tests), that the functionality meets
    requirements (acceptance), that any new code doesn’t break
    the old (regression)

                                                                  © 2012 Elena Punskaya
                                                                                         17
                                             Cambridge University Engineering Department

                                                                                              17
Software Process
•   Deployment – actual release of the software into the end user
    environment, e.g. publishing the mobile app in the App Store or
    launching the service on bank’s servers


•   Maintenance – supporting the software during its lifetime, e.g.
    releasing compatibility updates when a new version of mobile OS is
    released or improving performance as user base grows
•   Traditionally, 80-90% of software system Total Cost of Ownership
    is attributed to maintenance. Once the system is operational, the
    cost of change is high (each new release requires a new full cycle:
    analyse, design, implement, build, test, deploy). Also, to achieve a
    better Return on Investment, the preference is naturally to extend
    the existing system than develop a new one.
•   Nowadays, in some software systems (web apps), the line between
    maintenance and continuous development is less clear, consider
    Google and Facebook – is scaling up to hundreds of millions of users
    and PetaBytes of data maintenance or new development?
                                                                    © 2012 Elena Punskaya
                                                                                           18
                                               Cambridge University Engineering Department

                                                                                                18
Example




                               © 2012 Elena Punskaya
                                                      19
          Cambridge University Engineering Department

                                                           19
Requirements Analysis not Analysis Paralysis
    The hardest single part of building a software system is
    deciding precisely what to build. No other part of the
    conceptual work is as difficult as establishing the detailed
    technical requirements, including all the interfaces to people, to
    machines, and to other software systems. No other part of the
    work so cripples the resulting system if done wrong.
                          Fred Brooks, “No Silver Bullet – Essence and Accident in Software Engineering” [5]



•   It is impossible to know in advance everything required to
    build the software system. Why?
•   Users don’t know 100% what it should do
•   Developers don’t know 100% how users would use it
•   The only 100% certainty is that things will change:
    - the deployment environment change, e.g. new version of hardware/software platform
    - the business requirements change, e.g. adding a new method to a payment system
    - the scale changes, e.g. from 1m users to 800m


                                                                                         © 2012 Elena Punskaya
                                                                                                                20
                                                                    Cambridge University Engineering Department

                                                                                                                     20
The Answer?
•   Over 40 years since The 1968
    NATO Software Engineering
    conference, the issues discussed
                                              Grow, don’t build, software.
                                                 Fred Brooks, “No Silver Bullet – Essence and
    are as much present as then                            Accident in Software Engineering”


•   No Silver Bullet – there is no
    single answer/process/method
•   but we can ...
✓   Build for Change
✓   Communicate Clearly
✓   Test Continuously, Test Everything
    - problem understanding, user behaviour
      assumptions, code, integration...

✓   Choose the Tools for the Job
    - Object-Oriented Analysis and Design            © Warner Bros. Ent. All rights reserved.

    - Extreme/Agile Programming
    - Continuous Integration/Deployment
    - IDEs, Source Control, UML ...
                                                                     © 2012 Elena Punskaya
                                                                                            21
                                                Cambridge University Engineering Department

                                                                                                 21
References and Further Reading
1. http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/

2. http://www.fastcompany.com/magazine/06/writestuff.html

3. http://www.cl.cam.ac.uk/conference/EDSAC99/history.html

4. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF

5. http://www.cs.nott.ac.uk/~cah/G51ISS/Documents/NoSilverBullet.html

6. http://www.facebook.com/press/info.php?timeline

7. http://www.facebook.com/press/info.php?statistics

8. http://www.ebaytechblog.com/2011/12/15/rapid-development-setup-in-large-environments/

9. http://www.securityfocus.com/news/8016

10. http://aws.amazon.com/message/65648/

11. http://www.autoweek.com/article/20051216/FREE/51216010

12. http://www.computerworlduk.com/news/mobile-wireless/3310790/we-do-not-know-why-system-failed-says-blackberry-ceo/

13. http://spectrum.ieee.org/green-tech/advanced-cars/this-car-runs-on-code/0

14. http://highscalability.com/

15. http://martinfowler.com/bliki/UseCases.html




                                                                                                                 © 2012 Elena Punskaya
                                                                                                                                        22
                                                                                            Cambridge University Engineering Department

                                                                                                                                             22

Más contenido relacionado

La actualidad más candente

Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-designOliver Cheng
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionHenry Muccini
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)BALAJI A
 
Reed simpson
Reed simpsonReed simpson
Reed simpsonNASAPMC
 
Half-Push/Half-Polling
Half-Push/Half-PollingHalf-Push/Half-Polling
Half-Push/Half-PollingYoungSu Son
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programmingkim.mens
 
Unit iii(part c - user interface design)
Unit   iii(part c - user interface design)Unit   iii(part c - user interface design)
Unit iii(part c - user interface design)BALAJI A
 
Software Patterns
Software PatternsSoftware Patterns
Software Patternskim.mens
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering JayaKamal
 
Unit 3 3 architectural design
Unit 3 3 architectural designUnit 3 3 architectural design
Unit 3 3 architectural designHiren Selani
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringMeghaj Mallick
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: IntroductionHenry Muccini
 

La actualidad más candente (20)

Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)
 
Reed simpson
Reed simpsonReed simpson
Reed simpson
 
Half-Push/Half-Polling
Half-Push/Half-PollingHalf-Push/Half-Polling
Half-Push/Half-Polling
 
Unit2
Unit2Unit2
Unit2
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
 
Unit iii(part c - user interface design)
Unit   iii(part c - user interface design)Unit   iii(part c - user interface design)
Unit iii(part c - user interface design)
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering
 
Software design
Software designSoftware design
Software design
 
Software Design Concepts
Software Design ConceptsSoftware Design Concepts
Software Design Concepts
 
Unit 3 3 architectural design
Unit 3 3 architectural designUnit 3 3 architectural design
Unit 3 3 architectural design
 
Unit i software design principles 9
Unit i software design principles 9Unit i software design principles 9
Unit i software design principles 9
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
08 component level_design
08 component level_design08 component level_design
08 component level_design
 
05 architectural design
05 architectural design05 architectural design
05 architectural design
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software Engineering
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
5 software design
5 software design5 software design
5 software design
 

Destacado

Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 
Software engineering syllabus
Software engineering syllabusSoftware engineering syllabus
Software engineering syllabusswatisinghal
 
Industry Vs Curriculum Talk Mec
Industry Vs Curriculum Talk MecIndustry Vs Curriculum Talk Mec
Industry Vs Curriculum Talk Mectej_arora
 
Talent42 2014 Sam Wholley -
Talent42 2014 Sam Wholley - Talent42 2014 Sam Wholley -
Talent42 2014 Sam Wholley - Talent42
 
Your Were Made To Do Great Thing
Your Were Made To Do Great ThingYour Were Made To Do Great Thing
Your Were Made To Do Great ThingPeter Chan
 
Pmm who we are
Pmm who we arePmm who we are
Pmm who we arestefanid
 
Carol y mellizas
Carol y mellizasCarol y mellizas
Carol y mellizasvitita
 
Bhl Europe Atos Origin Wp3 Insights V1.0
Bhl Europe Atos Origin   Wp3 Insights V1.0Bhl Europe Atos Origin   Wp3 Insights V1.0
Bhl Europe Atos Origin Wp3 Insights V1.0Roger Essoh
 
Project10 Uk 2010
Project10 Uk 2010Project10 Uk 2010
Project10 Uk 2010leonvanm
 
Presentation Alumni Day University Of Leuven Relation Between Dso And Consu...
Presentation Alumni Day University Of Leuven   Relation Between Dso And Consu...Presentation Alumni Day University Of Leuven   Relation Between Dso And Consu...
Presentation Alumni Day University Of Leuven Relation Between Dso And Consu...Tim Vermeir
 
درآمدی بر رایانش ابری
درآمدی بر رایانش ابریدرآمدی بر رایانش ابری
درآمدی بر رایانش ابریNasser Ghanemzadeh
 
Professional Identity2
Professional Identity2Professional Identity2
Professional Identity2Halby33
 
Versailles Breakfast Club Speech
Versailles Breakfast Club SpeechVersailles Breakfast Club Speech
Versailles Breakfast Club SpeechLoisGeller
 
AshabëT E Muhamedit A.S.
AshabëT E Muhamedit A.S.AshabëT E Muhamedit A.S.
AshabëT E Muhamedit A.S.guestef339
 
Intro To Phoenix 12 18 08
Intro To Phoenix 12 18 08Intro To Phoenix 12 18 08
Intro To Phoenix 12 18 08stefanid
 
We are damaging the ecosystem
We are damaging the ecosystemWe are damaging the ecosystem
We are damaging the ecosystemvitita
 
US Obesity Stats Map
US Obesity Stats MapUS Obesity Stats Map
US Obesity Stats MapPeter Chan
 
你為何需要乳清蛋白? 你為何需要 IsaPro?
你為何需要乳清蛋白? 你為何需要 IsaPro?你為何需要乳清蛋白? 你為何需要 IsaPro?
你為何需要乳清蛋白? 你為何需要 IsaPro?Peter Chan
 

Destacado (20)

Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Software engineering syllabus
Software engineering syllabusSoftware engineering syllabus
Software engineering syllabus
 
Industry Vs Curriculum Talk Mec
Industry Vs Curriculum Talk MecIndustry Vs Curriculum Talk Mec
Industry Vs Curriculum Talk Mec
 
Talent42 2014 Sam Wholley -
Talent42 2014 Sam Wholley - Talent42 2014 Sam Wholley -
Talent42 2014 Sam Wholley -
 
Your Were Made To Do Great Thing
Your Were Made To Do Great ThingYour Were Made To Do Great Thing
Your Were Made To Do Great Thing
 
Pmm who we are
Pmm who we arePmm who we are
Pmm who we are
 
Carol y mellizas
Carol y mellizasCarol y mellizas
Carol y mellizas
 
Firefox Tips And Tricks
Firefox Tips And TricksFirefox Tips And Tricks
Firefox Tips And Tricks
 
Bhl Europe Atos Origin Wp3 Insights V1.0
Bhl Europe Atos Origin   Wp3 Insights V1.0Bhl Europe Atos Origin   Wp3 Insights V1.0
Bhl Europe Atos Origin Wp3 Insights V1.0
 
Project10 Uk 2010
Project10 Uk 2010Project10 Uk 2010
Project10 Uk 2010
 
Presentation Alumni Day University Of Leuven Relation Between Dso And Consu...
Presentation Alumni Day University Of Leuven   Relation Between Dso And Consu...Presentation Alumni Day University Of Leuven   Relation Between Dso And Consu...
Presentation Alumni Day University Of Leuven Relation Between Dso And Consu...
 
درآمدی بر رایانش ابری
درآمدی بر رایانش ابریدرآمدی بر رایانش ابری
درآمدی بر رایانش ابری
 
Professional Identity2
Professional Identity2Professional Identity2
Professional Identity2
 
Versailles Breakfast Club Speech
Versailles Breakfast Club SpeechVersailles Breakfast Club Speech
Versailles Breakfast Club Speech
 
Schanitzel2
Schanitzel2Schanitzel2
Schanitzel2
 
AshabëT E Muhamedit A.S.
AshabëT E Muhamedit A.S.AshabëT E Muhamedit A.S.
AshabëT E Muhamedit A.S.
 
Intro To Phoenix 12 18 08
Intro To Phoenix 12 18 08Intro To Phoenix 12 18 08
Intro To Phoenix 12 18 08
 
We are damaging the ecosystem
We are damaging the ecosystemWe are damaging the ecosystem
We are damaging the ecosystem
 
US Obesity Stats Map
US Obesity Stats MapUS Obesity Stats Map
US Obesity Stats Map
 
你為何需要乳清蛋白? 你為何需要 IsaPro?
你為何需要乳清蛋白? 你為何需要 IsaPro?你為何需要乳清蛋白? 你為何需要 IsaPro?
你為何需要乳清蛋白? 你為何需要 IsaPro?
 

Similar a Lecture 1 Software Engineering and Design Introduction

Software Engineering Lec 1-introduction
Software Engineering Lec 1-introductionSoftware Engineering Lec 1-introduction
Software Engineering Lec 1-introductionTaymoor Nazmy
 
Application Virtualization, University of New Hampshire
Application Virtualization, University of New HampshireApplication Virtualization, University of New Hampshire
Application Virtualization, University of New HampshireTony Austwick
 
Unit_1(Software and Software Engineering).pptx
Unit_1(Software and Software Engineering).pptxUnit_1(Software and Software Engineering).pptx
Unit_1(Software and Software Engineering).pptxtaxegap762
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to androidJawad Mohmand
 
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfSDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfOpenLearningLab
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
 
A glance at a scrum team in real software company
A glance at a scrum team in real software companyA glance at a scrum team in real software company
A glance at a scrum team in real software companyPin-Ying Tu
 
[doc].doc
[doc].doc[doc].doc
[doc].docbutest
 
resume_spr_2015_tex
resume_spr_2015_texresume_spr_2015_tex
resume_spr_2015_texJames Reese
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid DoesKevin McMahon
 
Harshitha_Resume
Harshitha_ResumeHarshitha_Resume
Harshitha_ResumeHarshitha S
 
Mobile app-and-microservices-with-ibm-cloud
Mobile app-and-microservices-with-ibm-cloudMobile app-and-microservices-with-ibm-cloud
Mobile app-and-microservices-with-ibm-cloudSrinivasan Nanduri
 

Similar a Lecture 1 Software Engineering and Design Introduction (20)

RKSinha_latest_december
RKSinha_latest_decemberRKSinha_latest_december
RKSinha_latest_december
 
Software Engineering Lec 1-introduction
Software Engineering Lec 1-introductionSoftware Engineering Lec 1-introduction
Software Engineering Lec 1-introduction
 
Unit1
Unit1Unit1
Unit1
 
My androidpresentation
My androidpresentationMy androidpresentation
My androidpresentation
 
Application Virtualization, University of New Hampshire
Application Virtualization, University of New HampshireApplication Virtualization, University of New Hampshire
Application Virtualization, University of New Hampshire
 
Unit_1(Software and Software Engineering).pptx
Unit_1(Software and Software Engineering).pptxUnit_1(Software and Software Engineering).pptx
Unit_1(Software and Software Engineering).pptx
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfSDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
A glance at a scrum team in real software company
A glance at a scrum team in real software companyA glance at a scrum team in real software company
A glance at a scrum team in real software company
 
[doc].doc
[doc].doc[doc].doc
[doc].doc
 
resume_spr_2015_tex
resume_spr_2015_texresume_spr_2015_tex
resume_spr_2015_tex
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
Unit 5
Unit 5Unit 5
Unit 5
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
Harshitha_Resume
Harshitha_ResumeHarshitha_Resume
Harshitha_Resume
 
Duc le CV
Duc le CVDuc le CV
Duc le CV
 
SE Unit-1.pptx
SE Unit-1.pptxSE Unit-1.pptx
SE Unit-1.pptx
 
Shwetambari Gulhane Resume
Shwetambari Gulhane ResumeShwetambari Gulhane Resume
Shwetambari Gulhane Resume
 
Mobile app-and-microservices-with-ibm-cloud
Mobile app-and-microservices-with-ibm-cloudMobile app-and-microservices-with-ibm-cloud
Mobile app-and-microservices-with-ibm-cloud
 

Más de op205

3 f6 security
3 f6 security3 f6 security
3 f6 securityop205
 
3 f6 8_databases
3 f6 8_databases3 f6 8_databases
3 f6 8_databasesop205
 
3 f6 10_testing
3 f6 10_testing3 f6 10_testing
3 f6 10_testingop205
 
3 f6 9a_corba
3 f6 9a_corba3 f6 9a_corba
3 f6 9a_corbaop205
 
3 f6 9a_corba
3 f6 9a_corba3 f6 9a_corba
3 f6 9a_corbaop205
 
Lecture 7 Software Engineering and Design User Interface Design
Lecture 7 Software Engineering and Design User Interface Design Lecture 7 Software Engineering and Design User Interface Design
Lecture 7 Software Engineering and Design User Interface Design op205
 
Lecture 6 Software Engineering and Design Good Design
Lecture 6 Software Engineering and Design Good Design Lecture 6 Software Engineering and Design Good Design
Lecture 6 Software Engineering and Design Good Design op205
 
Lecture 5 Software Engineering and Design Design Patterns
Lecture 5 Software Engineering and Design Design PatternsLecture 5 Software Engineering and Design Design Patterns
Lecture 5 Software Engineering and Design Design Patternsop205
 
Lecture 4 Software Engineering and Design Brief Introduction to Programming
Lecture 4 Software Engineering and Design Brief Introduction to ProgrammingLecture 4 Software Engineering and Design Brief Introduction to Programming
Lecture 4 Software Engineering and Design Brief Introduction to Programmingop205
 
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...op205
 
More on DFT
More on DFTMore on DFT
More on DFTop205
 
Digital Signal Processing Summary
Digital Signal Processing SummaryDigital Signal Processing Summary
Digital Signal Processing Summaryop205
 
Implementation of Digital Filters
Implementation of Digital FiltersImplementation of Digital Filters
Implementation of Digital Filtersop205
 
Basics of Analogue Filters
Basics of Analogue FiltersBasics of Analogue Filters
Basics of Analogue Filtersop205
 
Design of IIR filters
Design of IIR filtersDesign of IIR filters
Design of IIR filtersop205
 
Design of FIR filters
Design of FIR filtersDesign of FIR filters
Design of FIR filtersop205
 
Basics of Digital Filters
Basics of Digital FiltersBasics of Digital Filters
Basics of Digital Filtersop205
 
Introduction to Digital Signal Processing
Introduction to Digital Signal ProcessingIntroduction to Digital Signal Processing
Introduction to Digital Signal Processingop205
 
Fast Fourier Transform
Fast Fourier TransformFast Fourier Transform
Fast Fourier Transformop205
 
Brief Review of Fourier Analysis
Brief Review of Fourier AnalysisBrief Review of Fourier Analysis
Brief Review of Fourier Analysisop205
 

Más de op205 (20)

3 f6 security
3 f6 security3 f6 security
3 f6 security
 
3 f6 8_databases
3 f6 8_databases3 f6 8_databases
3 f6 8_databases
 
3 f6 10_testing
3 f6 10_testing3 f6 10_testing
3 f6 10_testing
 
3 f6 9a_corba
3 f6 9a_corba3 f6 9a_corba
3 f6 9a_corba
 
3 f6 9a_corba
3 f6 9a_corba3 f6 9a_corba
3 f6 9a_corba
 
Lecture 7 Software Engineering and Design User Interface Design
Lecture 7 Software Engineering and Design User Interface Design Lecture 7 Software Engineering and Design User Interface Design
Lecture 7 Software Engineering and Design User Interface Design
 
Lecture 6 Software Engineering and Design Good Design
Lecture 6 Software Engineering and Design Good Design Lecture 6 Software Engineering and Design Good Design
Lecture 6 Software Engineering and Design Good Design
 
Lecture 5 Software Engineering and Design Design Patterns
Lecture 5 Software Engineering and Design Design PatternsLecture 5 Software Engineering and Design Design Patterns
Lecture 5 Software Engineering and Design Design Patterns
 
Lecture 4 Software Engineering and Design Brief Introduction to Programming
Lecture 4 Software Engineering and Design Brief Introduction to ProgrammingLecture 4 Software Engineering and Design Brief Introduction to Programming
Lecture 4 Software Engineering and Design Brief Introduction to Programming
 
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
 
More on DFT
More on DFTMore on DFT
More on DFT
 
Digital Signal Processing Summary
Digital Signal Processing SummaryDigital Signal Processing Summary
Digital Signal Processing Summary
 
Implementation of Digital Filters
Implementation of Digital FiltersImplementation of Digital Filters
Implementation of Digital Filters
 
Basics of Analogue Filters
Basics of Analogue FiltersBasics of Analogue Filters
Basics of Analogue Filters
 
Design of IIR filters
Design of IIR filtersDesign of IIR filters
Design of IIR filters
 
Design of FIR filters
Design of FIR filtersDesign of FIR filters
Design of FIR filters
 
Basics of Digital Filters
Basics of Digital FiltersBasics of Digital Filters
Basics of Digital Filters
 
Introduction to Digital Signal Processing
Introduction to Digital Signal ProcessingIntroduction to Digital Signal Processing
Introduction to Digital Signal Processing
 
Fast Fourier Transform
Fast Fourier TransformFast Fourier Transform
Fast Fourier Transform
 
Brief Review of Fourier Analysis
Brief Review of Fourier AnalysisBrief Review of Fourier Analysis
Brief Review of Fourier Analysis
 

Último

microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
The byproduct of sericulture in different industries.pptx
The byproduct of sericulture in different industries.pptxThe byproduct of sericulture in different industries.pptx
The byproduct of sericulture in different industries.pptxShobhayan Kirtania
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 

Último (20)

microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
The byproduct of sericulture in different industries.pptx
The byproduct of sericulture in different industries.pptxThe byproduct of sericulture in different industries.pptx
The byproduct of sericulture in different industries.pptx
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 

Lecture 1 Software Engineering and Design Introduction

  • 1. The Concepts Behind Software Design Elena Punskaya, elena.punskaya@eng.cam.ac.uk 1
  • 2. Course Objectives • Object-Oriented Software Design - Understand the benefits of object-oriented analysis and design, its concepts and processes - Be familiar with formal design tools for object orientated design and analysis - Recognise and understand some frequently used design patterns - Be aware of the process involved in user interface design • Software Systems and Engineering - Appreciate the basic design issues and concepts in distributed, real time and concurrent systems - Understand software development methodologies - Understand the main issues and processes necessary to achieve effective software product development • The course is not about becoming a Code Ninja - so we are not going to learn programming in Scala, Ruby on Rails, Go!, Java or Thumb - but we might discuss them • It is neither about becoming a Project Management Guru - so we are not going to make Gantt charts and milestones - but we could talk about priorities, teams and metrics © 2012 Elena Punskaya 2 Cambridge University Engineering Department 2
  • 3. Books • Ian Sommerville, Software Engineering, Addison-Wesley • Roger Pressman, Software Engineering: A Practitioner's Approach • Fred Brooks, The Mythical Man Month, Addison-Wesley • Martin Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling Language, Addison-Wesley • Andrew Hunt and David Thomas, The Pragmatic Programmer • Don Norman, Design of Everyday Things • Kent Beck with Cynthia Andres, Extreme Programming Explained: Embrace Change • Donald Norman, Living with Complexity • Jez Humble and David Farley, Continuous Delivery: Reliable Software Releases Through Build, Test and Deployment Automation • ... © 2012 Elena Punskaya 3 Cambridge University Engineering Department 3
  • 4. Definitions • Software - is a collection of computer programs and related data that provide the instructions for telling a computer what to do and how to do it. (Wikipedia) • Engineering - the way that something has been designed and built. (Cambridge Business English Dictionary) • Software Engineering - a collection of methods, techniques and tools that could be applied to design, build and maintain the “instructions for telling a © Metro-Goldwyn-Mayer Studios Inc. All Rights Reserved. computer what to do and how to do it” • What is a computer? © 2012 Elena Punskaya 4 Cambridge University Engineering Department 4
  • 5. Example: Location-Based Mobile App • foursquare iPhone App - provides consumer location-based services using iOS Location API • foursquare Application server - aggregates and correlates user and location data • Apple iPhone - Operating System provides access to location data acquired by a GPS receiver chip • GPS Receiver chip - processes GPS signals • Navigation Satellite - broadcasts navigation messages • Everything is a COMPUTER (or needs one) • A COMPUTER needs SOFTWARE • Everything needs SOFTWARE :) © 2012 Elena Punskaya 5 Cambridge University Engineering Department 5
  • 6. Example: Software Types • foursquare iPhone App – consumer software application - provides consumer location-based services using iOS Location API • foursquare Application server – distributed concurrent software system - aggregates and correlates user and location data • Apple iPhone – operating system provides software application platform - Operating System provides access to location data acquired by a GPS receiver chip • GPS Receiver chip – implements digital signal processing software - processes GPS signals • Navigation Satellite – uses system control software - broadcasts navigation messages © 2012 Elena Punskaya 6 Cambridge University Engineering Department 6
  • 7. Horses for Courses • Not all SOFTWARE is created equal, choose an engineering approach accordingly Our tests suite takes nine minutes to run (distributed across 30-40 machines). Our code pushes take another six minutes. Since these two steps are pipelined that means at peak we’re pushing a new revision of the code to the website every nine minutes. That’s 6 deploys an hour. Even at that pace we’re often batching multiple commits into a single test/push cycle. On average we deploy new code fifty times a day. [1] This software never crashes. It never needs to be re- booted. This software is bug-free. It is perfect, as perfect as human beings have achieved. Consider these stats : the last three versions of the program – each 420,000 lines long-had just one error each. The last 11 versions of this software had a total of 17 errors. [2] © 2012 Elena Punskaya 7 Cambridge University Engineering Department 7
  • 8. Software Engineering in Cambridge [3] • 1948-9 Research on programming methods under M.V. Wilkes, including: - definition and refinement of Initial Orders (Wheeler); - closed subroutines (Wheeler); - building of a library of subroutines (all laboratory members interested in programming, plus Professor D. R. Hartree). M.V.Wilkes, 1913-2010 • 6 May 1949, First logged program on EDSAC 1 (computing squares of 0-99) – World’s first stored program computer • 1950 First Summer School on Programme Design for Automatic Digital Computing Machines, with 51 attendees • 1953 Diploma in Numerical Analysis and Automatic Computing began - The Diploma “would include theoretical and practical work ... [and also] instruction about the various types of computing- machine ... and the principles of design on which they are EDSAC I, 1947/8 P.J.Farmer R.Piggott based.” M.V.Wilkes W.A.Renwick © 2012 Elena Punskaya 8 Cambridge University Engineering Department 8
  • 9. The NATO Software Engineering Conferences • 1968: “In Europe alone there are about 10,000 installed computers — this number is increasing at a rate of anywhere from 25 per cent to 50 per cent per year. The quality of software provided for these computers will soon affect more than a quarter of a million analysts and programmers.” [4] P. Naur and B. Randell, (Eds.). Software B. Randell and J.N. Buxton, (Eds.). Engineering: Report of a conference Software Engineering Techniques: Report sponsored by the NATO Science of a conference sponsored by the NATO Committee, Garmisch, Germany, 7-11 Oct. Science Committee, Rome, Italy, 27-31 1968, Brussels, Scientific Affairs Division, Oct. 1969, Brussels, Scientific Affairs NATO (1969) 231pp. Division, NATO (1970) 164pp. © 2012 Elena Punskaya 9 Cambridge University Engineering Department 9
  • 10. 1968, Typical Software Project • The need for feedback is identified Selig: “External specifications at any level describe the software product in terms of the items controlled by and available to the user. The internal design describes the software product in terms of the program structures which realize the external specifications. It has to be understood that feedback between the design of the external and internal specifications is an essential part of a realistic and effective implementation process. Furthermore, this interaction must begin at the earliest stage of establishing the objectives, and continue until completion of the product.” [4] © 2012 Elena Punskaya 10 Cambridge University Engineering Department 10
  • 11. Learning From Mistakes • Traditionally, large scale project disasters are seen as the impetus for developing software engineering as a discipline in order to mitigate the risks • Most referenced disaster projects include: - 1991-1992, London Ambulance Service – an attempt to switch to a fully automated dispatch system (26 Oct 1992: went live, 02 Nov 1992: switched back to the manual system) - 1985-1987, Therac-25 – a computer-controlled radiation therapy machine massively overdosed 6 people - 1996, Ariane 5 – the first launch of a new rocket terminated in self-destruction due to a software bug in the control software • More recently - 2003, Northeast Blackout – a power outage affecting est. 55m people in USA and Canada, an early alarm failed due to a “race condition” in the energy management system software - 2005-2006, Sensotronic Brake Control – almost 2m Mercedes cars recalled, the system is no longer used in production - April, 2011 – Amazon Elastic Compute Cloud (EC2) service disruption takes down FourSquare, Quora, Reddit - Oct 2011 – 3 days BlackBerry services outage affecting subscribers worldwide © 2012 Elena Punskaya 11 Cambridge University Engineering Department 11
  • 12. Measuring Complexity: Lines of Code Software entities are more complex for their size than perhaps any other human construct... Many of the classical problems of developing software products derive from this essential complexity and its nonlinear increases with size. Fred Brooks, “No Silver Bullet – Essence and Accident in Software Engineering” [5] • F-22 Raptor: 1.7m • Radio and navigation system in the current S-class Mercedes- Benz: 20m • IBM OS/360 (1966): 1m • Android Mobile OS: 1m • Facebook main site: 9.2m • Google Chrome browser: 4.5m • Of course, the number lines depends on the programming language and less is not always better perl -MYAML -ne '$c{$_}++for split//;END{print Dump%c}' data.txt © 2012 Elena Punskaya 12 Cambridge University Engineering Department 12
  • 13. Example: Facebook '()*+$$,&-.*/&0/$123&456& *!!" )!!" (!!" '!!" !"##"$%& &!!" %!!" $!!" • 800m users [8] #!!" • 500m visit daily !" /01.!'" 234.!'" +,-.!'" 5,6.!'" 234.!(" /01.!)" 234.!)" +,-.!)" 5,6.!)" /01.!*" 234.!*" +,-.!*" 5,6.!*" /01.!7" 234.!7" +,-.!7" 5,6.!7" 234.#!" /01.##" 234.##" +,-.!&" +,-.!(" +,-.#!" /01.!(" 5,6.!(" /01.#!" 5,6.#!" • 350m on mobile • all data is stored in a database (MySQL) • 60 million queries per second • 4 million row changes per second © 2012 Elena Punskaya 13 Cambridge University Engineering Department 13
  • 14. Example: eBay • “The size of the problem - The problem involves both the number of changes and the velocity of the changes. The eBay code base consists of hundreds of thousands of source elements (with total lines of code in the tens of millions). The applications – which comprise web, services, messaging, and batch style – number in the thousands. It is common for an application to use tens of thousands of source elements. The elements themselves are contributed by different teams and are shared with other applications.” [8] Code Type Count Source elements 100,000’s Source elements per application 10,000’s Applications 1000’s Features per month 100’s Source elements changed per feature 100’s (sometimes 1000’s) Projects 1000’s Source elements per project 10-100’s (sometimes 1000’s) © 2012 Elena Punskaya 14 Cambridge University Engineering Department 14
  • 15. Better Faster Stronger • Instagram: 60 photos per second; • Tumblr: 900 posts per second • Twitter: 8,868 Tweets per second (during MTV Awards) • Netflix: stream 1 billion hours in Q4 2011 • PayPal: 5 million transactions a day • London Stock Exchange: 22.4 million trades in Dec 2011 • Google: over 1 billion searches per day • Youtube: over 100 million views a day on mobile Ever Increasing Complexity Software Systems Drive World’s Economic Growth © 2012 Elena Punskaya 15 Cambridge University Engineering Department 15
  • 16. Software Engineering Aims • Managing complexity and Minimizing risks [T]here are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – there are things we do not know we don't know. Former United States Secretary of Defense Donald Rumsfeld • Designing systems that - meet requirements (“known knowns”) - can adapt to changes (“known unknowns”) - and withstand any unexpected use cases (“unknown unknowns”) • Software Engineering is also about: Making Better Mistakes Tomorrow! Having Happy (Alive) Users! © 2012 Elena Punskaya 16 Cambridge University Engineering Department 16
  • 17. Software Process • “Analysis is discovering and describing those aspects of a software development about which there is no choice, that is, to which the project is already committed” • Design is creating a definition of how the project goals are going to be achieved • Implementation is the process of writing code, typically would be partitioned in many subprojects • Building is creating a “complete” version of the software, i.e. putting all chunks of code together, including any custom configurations for target deployment • Testing is about making sure that small independent parts of code work correctly (unit tests), that all code parts work together (integration tests), that the functionality meets requirements (acceptance), that any new code doesn’t break the old (regression) © 2012 Elena Punskaya 17 Cambridge University Engineering Department 17
  • 18. Software Process • Deployment – actual release of the software into the end user environment, e.g. publishing the mobile app in the App Store or launching the service on bank’s servers • Maintenance – supporting the software during its lifetime, e.g. releasing compatibility updates when a new version of mobile OS is released or improving performance as user base grows • Traditionally, 80-90% of software system Total Cost of Ownership is attributed to maintenance. Once the system is operational, the cost of change is high (each new release requires a new full cycle: analyse, design, implement, build, test, deploy). Also, to achieve a better Return on Investment, the preference is naturally to extend the existing system than develop a new one. • Nowadays, in some software systems (web apps), the line between maintenance and continuous development is less clear, consider Google and Facebook – is scaling up to hundreds of millions of users and PetaBytes of data maintenance or new development? © 2012 Elena Punskaya 18 Cambridge University Engineering Department 18
  • 19. Example © 2012 Elena Punskaya 19 Cambridge University Engineering Department 19
  • 20. Requirements Analysis not Analysis Paralysis The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the resulting system if done wrong. Fred Brooks, “No Silver Bullet – Essence and Accident in Software Engineering” [5] • It is impossible to know in advance everything required to build the software system. Why? • Users don’t know 100% what it should do • Developers don’t know 100% how users would use it • The only 100% certainty is that things will change: - the deployment environment change, e.g. new version of hardware/software platform - the business requirements change, e.g. adding a new method to a payment system - the scale changes, e.g. from 1m users to 800m © 2012 Elena Punskaya 20 Cambridge University Engineering Department 20
  • 21. The Answer? • Over 40 years since The 1968 NATO Software Engineering conference, the issues discussed Grow, don’t build, software. Fred Brooks, “No Silver Bullet – Essence and are as much present as then Accident in Software Engineering” • No Silver Bullet – there is no single answer/process/method • but we can ... ✓ Build for Change ✓ Communicate Clearly ✓ Test Continuously, Test Everything - problem understanding, user behaviour assumptions, code, integration... ✓ Choose the Tools for the Job - Object-Oriented Analysis and Design © Warner Bros. Ent. All rights reserved. - Extreme/Agile Programming - Continuous Integration/Deployment - IDEs, Source Control, UML ... © 2012 Elena Punskaya 21 Cambridge University Engineering Department 21
  • 22. References and Further Reading 1. http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/ 2. http://www.fastcompany.com/magazine/06/writestuff.html 3. http://www.cl.cam.ac.uk/conference/EDSAC99/history.html 4. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF 5. http://www.cs.nott.ac.uk/~cah/G51ISS/Documents/NoSilverBullet.html 6. http://www.facebook.com/press/info.php?timeline 7. http://www.facebook.com/press/info.php?statistics 8. http://www.ebaytechblog.com/2011/12/15/rapid-development-setup-in-large-environments/ 9. http://www.securityfocus.com/news/8016 10. http://aws.amazon.com/message/65648/ 11. http://www.autoweek.com/article/20051216/FREE/51216010 12. http://www.computerworlduk.com/news/mobile-wireless/3310790/we-do-not-know-why-system-failed-says-blackberry-ceo/ 13. http://spectrum.ieee.org/green-tech/advanced-cars/this-car-runs-on-code/0 14. http://highscalability.com/ 15. http://martinfowler.com/bliki/UseCases.html © 2012 Elena Punskaya 22 Cambridge University Engineering Department 22