Docstoc

Software Engineering

Document Sample
Software Engineering Powered By Docstoc
					      Software Engineering
          4 lectures for
COMP1200 Perspectives on Computing
         Slides by Chris Johnson

      Department of Computer Science
   ANU College of Engineering and Computer
                   Science
                The Scope of “Computing”
                                   computer science
   software engineering                   algorithms
         requirements                                         information systems
                                      data structures
      verification –testing      programming languages
                                                               data base organisation
     software architecture                                    organisational behaviour
                                 formal language theory
             design                                           information management
                                       discrete maths
     project management                                            IT management
                                    artificial intelligence
 project planning & estimation                                decision support systems
                                   computational theory
   development processes                                          systems analysis
                                              logic
                                                               business information
                                    information                       systems
                                    technology
 computer systems                  computer networks
   engineering                     computer graphics
     digital circuitry        high performance computing
     signal analysis               operating systems
 processor architecture         storage & representation
        robotics          distributed computing architectures
engineering                       compiler construction            information science
 business
   and
government
  communication
& convergence with
    computing
transport and manufacturing   control, sense, act
   science
   design
visualisation
retail
 retail
   retail
    retail
       retail
        retail
          retail
           retail
              retail
               retail
                 retail
                  retail
                     retail
                      retail
                        retail
                         retail
                            retail
                             retail
                               retail
                                retail
                                   retail
                                    retail
                                      retail
                                       retail
                                          retail
                                           retail
                                             retail
                                              retail
                                                 retai
Software Engineering creates software in
computer systems:
• for the right purpose–requirements match needs
• in a correct way – it works
• with development processes that are
    • managed, reliable, within budget
  Engineering, science, technology
                  The scientist seeks
                  to understand what is;
                  the engineer seeks
                to create what never was.

               attributed to Theodore von Karman
   quoted in Henry Petroski, Remaking the World: Adventures in
                      Engineering, Knopf, 1997.

The technologist is “skilled in the theory and practice of a
  technical profession”, applies scientific principles and
    craft pragmatic principles–contrasted to the design
          and management skills of the engineer.
            The Scope of “IT” in computing
                                   computer science
   software engineering                   algorithms
         requirements                                         information systems
                                      data structures
      verification –testing      programming languages
                                                               data base organisation
     software architecture                                    organisational behaviour
                                 formal language theory
             design                                           information management
                                       discrete maths
     project management                                            IT management
                                    artificial intelligence
 project planning & estimation                                decision support systems
                                   computational theory
   development processes                                          systems analysis
                                              logic
                                                               business information
                                    information                       systems
                                    technology
 computer systems                  computer networks
   engineering                     computer graphics
     digital circuitry        high performance computing
     signal analysis               operating systems
 processor architecture         storage & representation
        robotics          distributed computing architectures
engineering                       compiler construction            information science
               Software
            from small to Large

How would you go about constructing
  software for
• Boeing 777 flight management
• Australia wide Air Traffic Control
• Social Security Payments
• Electronic voting for ACT elections
What would be your chance of success?
What is “small”? what is “large”?
   Software at different scales (1-small)

tiny scale of complexity and effort
 - calculation for a compound interest table
 - digital/analogue clock screen display
                 like: build a cat scratching post

small scale complexity and effort
 - student records database for one department
 - financial records management for small
 company
                 like: designTicuna baby racing car
                       passenger-carrying balloon
      Examples of Software scales (2-medium)

medium scale complexity and effort
 - finance & HR system for medium company
 - control software for car's electronic ignition
 - fly by wire control system for small aircraft
 - entertainment management system for
 passenger aircraft
                  like: aircraft hangar, road bridge;
                 how about a house: small, large?
   Examples of Software (3-large)

large scale complexity and effort
 - Australian Income Tax system: $500
 Million
 - London Ambulance Computer Aided
 Despatch
 - Ariane rocket control software
            like: new model family car
   Examples of Software scales (4)

huge scale complexity and effort
 - integrated office worksuite software
 - major computer operating system
                  like: passenger airliner
out of reach complexity and effort
 - national electricity grid control system
                  like: national electricity grid
                      global energy & climate
                      management system
 Abstract design models of computer
               systems
These abstract models allow us to describe
• static structure of the program
  – how the software (and hardware) system is put
    together from its parts, how they relate to each
    other:
    e.g. what classes can call what other classes
• dynamic behaviour of the software when it
  executes
  – how it should behave internally and externally
    e.g. what sequence of method calls between
    particular classes, what types and contents of
    requests and replies between a client and server
             Software Engineering

• analysis
  plus
• design creativity
  plus
• process management
         Software Engineering
• Software engineering attempts to combine
  sound engineering principles of analysis,
  management, testing, and so forth with
  scientific concepts of computing in the
  production of reliable and cost-effective
  computer software that meets its users' needs
  .                        Tremblay and Cheston

• Software engineering is the application of a
  systematic, disciplined and quantifiable
  approach to the development, operation and
  maintenance of software.
    SWEBOK (Software Engineering Body of Knowledge)
So all software is created perfect?
– No: we observe that not all software is perfect!
– the state of the art of Software Engineering is
  somewhere like mid-19th century civil and
  mechanical engineering: we do not know the
  science behind it
   • many 19th century steam power plant boilers blew up,
     some bridges failed disastrously, some iron ships and
     steam ships failed
   • but many projects succeeded, to create industrial empires
– a lot of software is created without good project
  management and without good knowledge of
  requirements
   Some software projects succeed. Some fail. Some work in
    the end, but cost 2 or 3 times the original budget.
Some projects cost 3 times+ – and then fail and are
 abandoned. ouch.
   The Standish CHAOS Report 1998
• More than 70% of software projects fail or are
  challenged (over budget and/or time, or fail to satisfy
  original requirements)
• Only 24% of Fortune 500 company projects
  (average US$1.2M each) succeeded in 1998
• US$275 billion on 200,000 software applications
  per year in the US Corporate sector alone!!
• Solid data: based on study of 23,000 software
  applications
• it's not a lack of money – but lack of
   – skilled project management
   – well-defined requirements
• software engineering aims to improve this

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:14
posted:5/11/2012
language:English
pages:22