SOEN 6461-1-intro_W2014

  • View
    53

  • Download
    0

Embed Size (px)

Text of SOEN 6461-1-intro_W2014

  • 1

    SOEN 6461 Software Design Methodologies:

    Introduction

  • 2

    Course Orientation

  • Course Logistics

    Prof: Dr. Nora Houari

    Office: EV3.301

    Email: houari@encs.concordia.ca

    Office hours: Tuesdays 17:00-18:00, and by appointment

    Theory, here with me (H411) Mondays: 17:45-20:15

    Programmer-On-duty hours:TBA, room TBA

  • What this course about?

    A (deep) look at OO design

    Software architecture: where global decision are made

    Design process: domain model, use cases design

    Emphasis: model, architectural patterns, GRASP principles, design patterns, responsibility, collaboration

    4

  • Give you in depth appreciation of S/W design

    Elevate you skills beyond coding

    Make sure you will not be offshored

    Demand for software designers/architects is high and of course for big paycheck

    Understand the value of good design and apply it in the software systems you build

    Why take this course?

  • What the course is not?

    Not a course in UML, Java You should know the basics of these

    And become expert (as needed) yourself

    Not a course in tools: Eclipse, Visual studio You can work through tutorials yourself

    Not a course in UI, DB design, Games

    Not a course in software engineering, software management, software testing, software reuse,

    6

  • Most of our courses are taught using the Java programming language for many reasons!

    SOEN 6461 course: examples and exams code using java

    This course aims at teaching software design methodologies to an audience well-trained in computer programming and putting the newly acquired knowledge into practice through a challenging project

    Project: you are free to use any OO language-as long as your team member are comfortable with that!

    Rationale

  • Topic Coverage

    Software Design Methodologies Overview

    Domain Modeling

    Design Objects with Responsibilities

    Software Architecture: Views and Styles

    Design Patterns

    Software Architecture Analysis and Documentation

    Anti-patterns

    Refactoring

    GoF Patterns

    Service Oriented Architecture

  • Recommended References

    Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd., Prentice Hall

    And many other resources listed each week and made available via Moodle

  • Advice

    Keep up as material is cumulative

    study the practice examples in the lectures and the PODs practice examples/exercises and play with them

    Study in groups

  • Evaluation

    Four components of evaluation:

    3 Assignments and 3 Quizzes 15%

    Midterm exam 20%

    Project (team of 5 members) 25%

    Final exam 40%

  • Some thoughts This course requires a fair amount of time

    commitments!

    Lectures: weekly/papers reading/ assignments/3 Quizzes/Midterm/Final

    Do not take it if you cannot spare the time

    Software design is part science and part art

    You need to be steeped in to appreciate it

    Some things you can only learn from experience ( team project)

    Intellectually rich and rewarding experience

  • Project individual teams having 5 members

    Must work in groups in the real world

    The completion of the project is divided into two separate builds

    teams presentation in class for each build

    Communicate with colleagues (team members)

    Communication problems are natural!

    What have you done?

    You must document your work!

    Everyone must keep an on-line notebook/Forum

    Communicate with me

    How is the teams plan/progress is going?

    Short progress reports/meetings are required:

    What is each members responsibility?

    Peer evaluation

    Project

  • To do from now on. Sign up for this class on Moodle

    Monitor the Moodle for course content and announcement

    Start thinking about project teams (5 members) right away..

    You need to pick up your team by Jan 19th at the latest

    Structure how to work/communicate and have fun!

    Decide if you are willing and able to handle the workload.

  • 15

    Things You Already Know(aka cheating)

    It is an academic offence to give someone your work

    It is an academic offence to claim someone else's work as your own

    When it happens in industry, people are fired, sued, or sent to jail!

  • Thank you and welcome aboard

  • 17

    Software Design Methodologies: Overview

    Text book: chap. 1 and 2

  • 18

    Today Important questions

    1. What are software engineering difficulties?

    2. What is an agile process?

    3. What are the different existing agile processes?Pitfalls/Challenges?

    4. What do we do in Software Design Methodologies?

    The Unified Process (UP)

    Iterative Development

    Comments on Iterative Development and the UP

  • 19

    The Origins

    Software Engineers have always employed software architectures Very often without realizing it!

    Address issues identified by researchers and practitioners Essential software engineering difficulties Unique characteristics of programming-in-the-large Need for software reuse

    Many ideas originated in other (non-computing) domains

  • 20

    Today Important questions

    1. What are software engineering difficulties?

    2. What is an agile process?

    3. What are the different existing agile processes? Their Pitfalls/Challenges?

    4. What do we do in Software Design Methodologies?

    The Unified Process (UP)

    Iterative Development

    Comments on Iterative Development and the UP

  • 21

    Software Engineering Difficulties Software engineers deal with unique set of problems

    (Relatively)Young field with tremendous expectations

    Building of vastly complex, but intangible systems Software is not useful on its own e.g., unlike a car,

    thus It must conform to changes in other engineering

    areas Some problems can be eliminated

    These are Brooks accidental difficulties Other problems can be lessened, but not eliminated

    These are Brooks essential difficulties

    No Silver Bullet; Essence and Accidents of Software Engineering, Fred Brooks , 1986

  • 22

    Accidental Difficulties

    Solutions exist Possibly waiting to be discovered

    Past productivity increases result of overcoming Inadequate programming constructs &

    abstractions Remedied by high-level programming languages

    Increased productivity by factor of five

    Complexity was never inherent in program at all

  • 23

    Accidental Difficulties (contd)

    Past productivity increases result of overcoming (contd) Difficulty of using heterogeneous programs

    Addressed by integrated software development environments

    Support task that was conceptually always possible

  • 24

    Essential Difficulties

    Only partial solutions exist for them, if any

    Cannot be abstracted away

    Complexity

    Conformity

    Changeability

    Intangibility

  • 25

    Complexity

    No two software parts are alike If they are, they are abstracted away into one

    Complexity grows non-linearly with size E.g., it is impossible to enumerate all states of

    program

    Except perhaps toy programs

  • 26

    Conformity

    Software is required to conform to its Operating environment

    Hardware

    Often last kid on block

    Perceived as most conformable

  • 27

    Changeability

    Change originates with New applications, users, machines, standards,

    laws

    Hardware problems

    Software is viewed as infinitely malleable

  • 28

    Intangibility

    Software is not embedded in space Often no constraining physical laws

    No obvious representation E.g., familiar geometric shapes

  • 29

    Primacy of Design

    Software engineers collect requirements, code, test, integrate, configure, etc.

    An architecture-centric approach to software engineering places an emphasis on design Design pervades the engineering activity from

    the very beginning

    But how do we go about the task of architectural design?

  • 30

    Today Important questions

    1. What are software engineering difficulties?

    2. What is an agile process?

    3. What are the different existing agile processes?Pitfalls/Challenges?

    4. What do we do in Software Design Methodologies?

    The Unified Process (UP)

    Iterative Development

    Comments on Iterative Development and the UP

  • Agile Processes

    Development processes that address the problem of volatile requirements: requirements that change due to rapidly changing technology

    or market, requirements that are difficult to define in advance because

    of the exploratory nature of the development.

    They cope with change in the following ways: 1. they employ short iteration cycles, which permit incremental

    delivery and rapid feedback for project management purposes

    2. they generally have low documentation overheads 3. they encour