EECE 310: Software Engineering - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

EECE 310: Software Engineering

Description:

T H E U N I V E R S I T Y O F B R I T I S H C O L U M B I A. 1. EECE 310: ... Building a doghouse vs. building a skyscraper. 26. Issues. Scale. Time. Cost. Risks ... – PowerPoint PPT presentation

Number of Views:117
Avg rating:3.0/5.0
Slides: 46
Provided by: Philippe196
Category:

less

Transcript and Presenter's Notes

Title: EECE 310: Software Engineering


1
EECE 310 Software Engineering
  • Course Orientation

2
How are we doing? SW Project Success
Successful
16
Cancelled
31
Challenged
53
Source Standish Group, Chaos report, 1995
3
Course orientation
  • What is this course about?
  • Where can I find the course syllabus and other
    stuff?
  • http//www.ece.ubc.ca/matei/EECE310/
  • we will NOT use WebCTl
  • What will I learn in the course?
  • What do I need to do to pass the course?
  • What do I need to do to get 90 in the course?
  • How do I contact/see the course staff?
  • Office hours
  • How can I obtain latest announcements regarding
    the course?

4
Course orientation (cont.)
  • What background should I have?
  • What will I be doing in the course?
  • Project / Assignments
  • Quizzes
  • Final exams
  • Reading
  • Participation
  • What will I be reading?
  • What will the course schedule look like?
  • Where can I find additional information
    resources?
  • How can I provide feedback?

5
Instructors T.A.
  • Instructor Matei Ripeanu -- http//www.ece.ubc.ca
    /matei/
  • matei_at_ece.ubc.ca
  • Research interests Distributed systems
  • Peer-to-peer, Grid systems, utility computing
  • Large scale online games
  • Distributed storage systems
  • Collaborative information/content sharing
    tagging, video-sharing
  • High-performance scientific computing
  • Use of novel technologies to accelerate
    computation
  • Networking
  • Teaching Assistants
  • Armin Bahramshahry -- armin.ece.ubc_at_gmail.com
  • Abdullah Gharaibeh -- abdullah_at_gmail.com

6
about Software Engineering
  • Application of a systematic, disciplined,
    quantifiable approach to the development,
    operation, and maintenance of software (IEEE
    1990)
  • Multi-person construction of multi-version
    software (Parnas 1978)
  • Software engineering ? Programming
  • Building software-intensive systems

7
Software engineering sub-disciplines
  • Software Requirements
  • Software Design
  • Software Construction
  • programming
  • Software Testing
  • Software Quality
  • Software configuration management
  • Software engineering management
  • Software engineering process
  • Software engineering tools and methods
  • Software maintenance

Main focus of this course
Overview
8
After this course you will be able to
  • specify a software component and its properties
  • design it and describe the design using UML
  • select appropriate design patterns
  • implement it (in different programming languages)
  • verify that both the design and the
    implementation meet its specification
  • document it for later evolution by others
  • fit all these activities in the framework of a
    software development lifecycle
  • select and use the appropriate tools for the tasks

9
What will you do in this course?
  • Lectures
  • Reading
  • Quizzes/Final exam
  • Project/Assignments
  • Labs
  • Grading scheme
  • 50 project assignments
  • 45 quizzes final exam
  • 5 class participation

10
Reading textbook, etc.
  • Textbook
  • Barbara Liskov with John Guttag, Program
    Development in Java Abstraction, Specification,
    and Object-Oriented Design, Addison-Wesley
    Professional. First Edition. ISBN 0201657686
  • Available in UBC bookstore
  • Not followed 100 in class by instructors
  • Recommended reading
  • See class webpage for a few useful pointers on
    books, and for papers to download and read.

11
Class webpage http//www.ece.ubc.ca/matei/EECE31
0/
  • Syllabus
  • Calendar
  • and last minute announcements
  • Assignments
  • Additional reading material
  • Course hand-outs

12
Mailing list eece310_at_ece.ubc.ca
  • Discussions
  • Asynchronous communication with peers, TA and
    instructors
  • The 1st place to ask questions (and answer them)
  • How do I subscribe
  • email sympa_at_ece.ubc.ca with subscribe
    eece310_at_ece.ubc.ca in the body of the message,
    or
  • visit https//lists.ece.ubc.ca/

13
Project
  • Chat system
  • Some handholding multiple stages
  • Technologies Java, Eclipse, version control
    system, JUnit, UML
  • Component trading!
  • Grading scheme (out of 100 for the whole
    project)
  • 10 specification
  • 10 project presentation
  • 70 correctness, design, documentation of various
    phases
  • 10 critique of other two projects
  • 5 bonus if someone uses your project in the next
    phase
  • 5 bonus points teamwork
  • Groups of up to four

14
Note on Plagiarism
  • Exams / quizzes are individual, closed book
  • Automated detection of plagiarism in code
  • Consequence Exclusion from UBC for 2 years (both
    parties, copier and copied)

15
Questions?
16
About Programming Languages
  • Course EECE310 not about programming
  • However, a good software engineer is comfortable
    with several programming languages, and able to
    learn new ones.
  • No language bigotry, no OS bigotry
  • Brief Java review in class for thenext two classes

17
About Software Tools
  • Eclipse environment for Java
  • UML tool Rational Rose
  • Documentation tool Doxygen
  • Testing JUnit
  • Source control CVS/SVM/Perforce

18
Outline
  • Instructors
  • Software engineering
  • Syllabus
  • Textbook
  • Tools
  • Evaluation, exams, attendance
  • Agenda details
  • Plagiarism

19
EECE 310 Software Engineering
  • Overview of Software Engineering

20
Some Facts on Software Engineering
  • The economies of ALL developed nations are
    dependent on software.
  • More and more systems are software controlled
  • Software engineering is concerned with theories,
    methods and tools for professional software
    development.

Source Ian Sommerville, 2004
21
Some Facts on Software Costs
  • Software costs often dominate computer system
    costs. The costs of software on a PC are often
    greater than the hardware cost.
  • Software costs more to maintain than it does to
    develop.
  • For systems with a long life, maintenance costs
    may be several times development costs.
  • Software engineering is concerned with
    cost-effective software development.

Source Ian Sommerville, 2004
22
Objectives of this Module
  • What is software?
  • What is software engineering?
  • What are the key questions software engineers are
    faced with?
  • A brief history of Software Engineering
  • What have we learned from our short history?

23
What is Software?
  • Computer programs and associated documentation
    such as requirements, design models and user
    manuals.
  • Software products may be
  • Generic - developed to be sold to a range of
    different customers in a general market (e.g. PC
    software such as Excel or Word.)
  • Custom - developed for a single customer
    according to their specification.
  • New software can be created by developing new
    programs, configuring generic software systems or
    reusing existing software.

Source Ian Sommerville, 2004
24
What is Software Engineering?
  • Multi-person construction of multi-version
    software (Parnas, 1978)
  • Software engineering engineering discipline
    concerned with all aspects of software production
    (Sommervile, 2004) .

25
Building a doghouse vs. building a skyscraper
?
26
Issues
  • Scale
  • Time
  • Cost
  • Risks
  • Number of people involved
  • Number of different stakeholders
  • Methods
  • Liabilities

27
A Wide Range of Complexity Issues
Higher technical complexity - Embedded,
real-time, distributed, fault-tolerant - Custom,
unprecedented, architecture reengineering - High
performance
Higher management complexity - Large scale -
Contractual - Many stake holders - Projects
Lower management complexity - Small scale -
Informal - Single stakeholder - Products
Lower technical complexity - Mostly 4GL, or
component-based - Application reengineering -
Interactive performance
Source Walker Royce, 1995
28
Software engineering sub-disciplines
  • Software Requirements
  • Software Design
  • Software Construction
  • programming
  • Software Testing
  • Software Quality
  • Software configuration management
  • Software engineering management
  • Software engineering process
  • Software engineering tools and methods
  • Software Maintenance

Software Engineering Body of Knowledge
Source www.swebok.org
29
Software Engineering vs. Computer Science?
  • Computer Science is concerned with theory and
    fundamentals
  • Software Engineering is concerned with the
    practicalities of developing and delivering
    useful software.
  • Computer science theories are still insufficient
    to act as a complete underpinning for software
    engineering.

Source Ian Sommerville, 2004
30
Software Engineering vs. System Engineering?
  • System engineering is concerned with all aspects
    of computer-based systems development including
    hardware, software and (business) process
    engineering.
  • Software engineering is part of this process
    concerned with developing the software
    infrastructure, control, applications and
    databases in the system.
  • System engineers are involved in system
    specification, architectural design, integration
    and deployment.

Source Ian Sommerville, 2004
31
What is a system?
  • A purposeful collection of inter-related
    components working together to achieve some
    common objective.
  • A system may include software, mechanical,
    electrical and electronic hardware and be
    operated by people.
  • System components are dependent on other system
    components
  • The properties and behaviour of system components
    are inextricably inter-mingled

32
How are we doing? SW Project Success
Successful
16
Cancelled
31
Challenged
53
Source Standish Group, Chaos report, 1995
33
Failure factors
  • Lack of user input
  • Incomplete requirements
  • Constantly changing requirements
  • Lack of management support
  • Technology incompetence
  • Lack of resources
  • Unrealistic expectations
  • Unclear objectives
  • Unrealistic timing
  • New Technology

Source Standish Group, Chaos report, 1995
34
Success Factors?
  • User involvement
  • Clear statement of requirements
  • Management support
  • Proper planning
  • Realistic expectations
  • Smaller milestones
  • Competent staff
  • Ownership
  • Clear vision
  • Hard working staff

What made the 16 of projects successful ?
Source Standish Group, Chaos report, 1995
35
What about Quality?
  • What we can get away with
  • Good enough software
  • Not applicable to all types of software though
  • When good enough is close to perfect for safety
    critical systems
  • Ethical issues
  • Cultural and social issues
  • Competitive issues

36
Software Crisis
  • Seems that it last forever, though
  • 1968
  • 1976
  • 1980
  • 1994
  • 2001

37
Summary (last lecture)
  • Software engineering not very successful
  • Poor rate of success
  • Poor quality
  • Profession in a state of permanent crisis
  • (since the 1960s)
  • Issues?
  • Requirements and specifications
  • Complexity
  • Time to market
  • Communications
  • Technology churn
  • Education

38
Last time success rate for large software
development projects
Successful
16
Cancelled
31
Challenged
53
Source Standish Group, Chaos report, 1995
39
Is this a good industry to be in?
40
Brief History of Software Engineering (1)
  • Antiquity
  • 1950 1968 Big irons (software is free!)
  • 1968 NATO conference in Germany
  • Identification of a software crisis
  • Start of the quest for a better way (silver
    bullet)
  • Term Software engineering used
  • The search of a Silver Bullet, of the Grand
    narrative
  • 1960 1990 programming languages
  • 1970 1980 introduction of methods
  • 1985 - CASE tools PSEs and IDEs
  • 1990 - Object-oriented technologies
    middleware

41
Brief History of Software Engineering (2)
  • Post-modern era (Internet age)
  • no grand narrative no silver bullet
  • its all good.
  • 1996 - Agile methods
  • as a reaction to many of the process and methods
    excesses
  • Next?
  • The end of programming?
  • Model-driven development?
  • Scrap-heap software development?

42
What are Software engineering methods?
  • Structured approaches to software development
    which include system models, notations, rules,
    design advice and process guidance.
  • Model descriptions
  • Descriptions of (graphical) models which should
    be produced
  • Rules
  • Constraints applied to system models
  • Recommendations
  • Advice on good design practice
  • Process guidance
  • What activities to follow.

43
CASE (Computer-Aided Software Engineering) ?
  • Software systems that are intended to provide
    automated support for software process
    activities.
  • CASE systems are often used for method support.
  • Upper-CASE
  • Tools to support the early process activities of
    requirements and design
  • Lower-CASE
  • Tools to support later activities such as
    programming, debugging and testing.

44
What are the attributes of good software?
  • The software should deliver the required
    functionality and performance to the user and
    should be maintainable, dependable and
    acceptable.
  • Maintainability Software must evolve to meet
    changing needs
  • Dependability Software must be trustworthy
  • Efficiency Software should not make wasteful use
    of system resources
  • Acceptability Software must accepted by the
    users for which it was designed. This means it
    must be understandable, usable and compatible
    with other systems.

45
Key challenges facing software engineering?
  • Heterogeneity
  • Developing techniques for building software that
    can cope with heterogeneous platforms and
    execution environments
  • Delivery
  • Developing techniques that lead to faster
    delivery of software
  • Trust
  • Developing techniques that demonstrate that
    software can be trusted by its users
  • Plus Ethical issues, cultural issues, social
    issues

46
Suggested reading
  • Fred Brooks, No Silver Bullet-Essence and
    Accident in Software Engineering, 1986
  • Standish Group, Chaos Report 1995 Extreme Chaos,
    2001
  • W. Gibbs, Softwares Chronic Crisis, Scientific
    American, 1994
  • Daniel Berry, The Inevitable Pain of Software
    Development Why There Is No Silver Bullet,
    Workshop on Radical Innovations of Software and
    Systems Engineering in the Future, 2002
  • Ph. Kruchten, Casting software design in the FBS
    framework, IEEE Software

47
Next Quick Java review
  • Program structure
  • classes, interfaces
  • Packages
  • Objects and variables
  • Mutability
  • Method call semantics
  • Type checking
  • Type hierarchy
  • Conversion and overloading
  • Dispatching
  • Types
  • Primitive object types
  • Vectors
  • Hello world

48
  • public class Num
  • // provides useful numeric routines
  • public static int gcd (int n, int d)
  • // REQUIRES n and d greater than 0
  • // RETURNS the GCD computed by repeated
    substraction
  • while (n ! d)
  • if (ngtd) nn-d else dd-n
  • return n
  • public static boolean isPrime (int n)
  • // REQUIRES
  • // RETURNS
  • .

49
  • 1 /
  • 2 This program computes the factorial of a
    number
  • 3 /
  • 4 public class Factorial //
    Define a class
  • 5 public static void main(String args) //
    The program starts here
  • 6 int input Integer.parseInt(args0) //
    Get the user's input
  • 7 double result factorial(input) //
    Compute the factorial
  • 8 System.out.println(result) //
    Print out the result
  • 9 //
  • 10
  • 11 public static double factorial(int x) //
    This method computes x!
  • 12 if (x lt 0) //
    Check for bad input
  • 13 return 0.0 //
    if bad, return 0
  • 14 double fact 1.0 //
    initial value
  • 15 while(x gt 1) //
    Loop until x equals 1
  • 16 fact fact x //
    multiply by x each time
  • 17 x x - 1 //
    and then decrement x
  • 18 //
    Jump to start of loop
Write a Comment
User Comments (0)
About PowerShow.com