17
Software Engineering Software Engineering Introduction (Course Structure) James Gain ([email protected] ) http://people.cs.uct.ac.za/~jgain

Software Engineering Introduction (Course Structure) James Gain ([email protected])[email protected] jgain

Embed Size (px)

Citation preview

Software EngineeringSoftware Engineering

Introduction (Course Structure)James Gain

([email protected])

http://people.cs.uct.ac.za/~jgain

ObjectivesObjectives Course Structure:

Outline the structure for the two halves of the course

Case Study: Introduce the example product (a mosaic builder) used for

illustration

Process: Briefly present the agile Extreme Programming (XP) model to be

used in your projects

Methods: Briefly mention the Unified Modelling Language (UML) notation

used in this course

Tools: List the Computer Aided Software Engineering (CASE) tool to be

used in your projects

Course Roadmap: 1Course Roadmap: 1stst Semester Semester

Introduction• Product• Process

Analysis• Principles• Use Cases• CRC Cards• Class Diagrams• Interaction Diagrams• State Diagrams

4 Lectures

Pressman ch. 1&2

6 Lectures

Pressman ch. 11&21

JUNE EXAMS & VAC

Course Roadmap: 2Course Roadmap: 2ndnd Semester Semester

Extreme Programming

Design• Principles• Object Oriented

Testing• Principles• Object Oriented

Management• Principles• Metrics• Planning

2 Lectures

Pressman ch. 13&22

1 Lecture

3 Lectures

Pressman ch. 17,18,23

6 Lectures

Pressman

ch. 3-9, 19, 24

Course Summary 1 Lecture

Course ComponentsCourse Components

Case Study: A Mosaic Designer Life-Cycle Model: Extreme Programming (XP) Methods: Unified Modelling Language (UML) Tools: CASE Software

case study

life-cycle model

methods

tools

Case Study: MosaicsCase Study: Mosaics

Mosaics are artworks made from small tiles (tesserrae), broken and lined up into patterns to form an image

One of the earliest art forms

Detail from “Sea Creatures”, Naples, 1st Century BC

Detail from “The Betrayal”, Ravenna, 6th Century AD

Simulating MosaicsSimulating Mosaics

Convert a photographic image into a simulated mosaic with square tiles

Not sufficient to “pixelize” image - causes horizontal/vertical artefacts

Must allow tiles to follow curves but still be spaced closely

Purpose: screensavers, animations, pre-visualisation

User Interface:1. Select image

2. Draw contours and set parameters

3. Initiate simulator

Simulated Mosaic with 2000 tiles in 3 different sizes

Simulated Mosaic ExampleSimulated Mosaic Example

Final Mosaic

Initi

al I

mag

eW

ith m

ark

ed

ed

ges

Mosaic AlgorithmMosaic Algorithm

Input: a colour image overlaid with contours Output: a set of n tiles with position, orientation, colour

and size (optional) Steps:

1. Place n tiles randomly in 2D

2. Generate a 2D direction field which points to the nearest contour

3. Repeat (Centroidal Voronoi Diagram) Render with a parallel projection a pyramid at

the tile position, oriented according to the direction field Move each tile to the centroid of its rendered area Until convergence

4. From a tile’s position find direction (from the direction field) and colour (from the reference image)

A Graphical VersionA Graphical Version

Initial image with marked edges

Direction field points to edges

Tiles are initially randomly placed

Final mosaic Iterations avoid edges

Spaced and aligned after 20 iterations

Life-Cycle Model: XPLife-Cycle Model: XP

Extreme Programming (XP) Developed recently (1999) Not yet proven

Lightweight Little documentation; low admin overhead

Agile Able to adapt quickly to changes in user requirements

Best for small scale projects with uncertain or evolving requirements

http://www.extremeprogramming.org

XP FeaturesXP Features

Iterative development About a dozen iterations of 1-3 weeks each Develop a complete system on each iteration

Just in time planning Do not plan much beyond the current iteration Can be scary for managers

Emphasis on testing Unit tests are written before functionality

Carefully considers people issues stand-up meetings, pair programming, no overtime

Methods: UMLMethods: UML

The Unified Modelling Language (UML) is a graphical language for Specifying, visualizing, constructing, documenting

the analysis and design artifacts of Object Oriented software systems

Rules: Defines syntactic, semantic and pragmatic rules

In English would correspond to spelling and grammar (syntax), meaning (semantics), clarity, brevity (pragmatics)

Analysis of UMLAnalysis of UML

Goals: Define an easy-to-learn but semantically rich visual modeling

language Unify previous OO modelling languages (Booch, OMT, and

Objectory) Incorporate industry best practices Provide flexibility for using different life-cycles Enable model interchange

Success? Capable of modelling large, complex systems Can specify systems in an implementation-independent manner Full UML is large and unwieldy Only a subset of the full notation is really needed

Example of UMLExample of UML

Use Cases: used during analysis

to capture interaction between users and the system

Tools: CASETools: CASE

Computer Aided Software Engineering (CASE): Automated and integrated software tools that assist in Software

Engineering activities

Often used in conjunction with a particular process

Enforces a notation (e.g. UML)

May also support project management (e.g. scheduling)

Benefits of CASE: Smoother and faster than using separate generic software: drawing

programs, word processors and spreadsheets

Ensures consistency between different parts of a process

Provide different views of SE information; may lead to new insights

ToolsetToolset

CVS Concurrent Versions System for source configuration Records the entire change history of source files and documentation From: http://www.gnu.org/software/cvs/cvs.html

CppUnit Framework for writing unit tests to prove that your code works From: http://www.xprogramming.com/software.htm

MS Project For specifying a project schedules and general project planning From: MSDN Alliance

ArgoUML (or Visio) For creating typeset and grammatically correct UML diagrams From: Course web-site (ArgoUML) or MSDN Alliance (Visio)