software engineering introduction (course structure) james gain...
TRANSCRIPT
Software EngineeringSoftware Engineering
Introduction (Course Structure)James Gain
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
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)