se300 software engineering practices
TRANSCRIPT
January 7, 2015 Sam Siewert
SE300
Software Engineering Practices
Lecture 1 - Introduction
Dr. Sam Siewert UC Berkeley – Philosophy/Physics
University of Notre Dame, BS - Aerospace/Mechanical Engineering
Johnson Space Center, U. of Houston – Computer Engineering, Mission Control Center
U. of Colorado, Boulder, MS/PhD – JPL, Colorado Space Grant, Computer Science
CU Boulder Senior Instructor, Adjunct Professor, CTO, Architect, Developer/Engineer in Local Start-ups
U. of Alaska, Anchorage, Assistant Professor, Computer Systems Engineering, Alaska Space Grant
Embry Riddle Prescott, Assistant Professor, CESE, Professor Adjunct, CU-Boulder
Sam Siewert 2
1984-85
1985-89
1989-92
1992-2012
2012-14
Sam Siewert 3
Relevant Background
Research – DHS, U. of Alaska
Arctic Center of Excellence – Maritime Technology Research
– Smart-Cameras
Consulting – Trellis-Logic LLC, Transductive LLC 1. Real-time Adaptive Color Transformation
2. UAV/UAS Digital Video Encode/Decode Performance
3. Semantic Storage Methods for Intrusion Detection
4. Advanced Erasure Code Algorithms – Protects Cloud from Data Loss
Intel Embedded Research and Education Program(s) 1. Robotics with Computer Vision Navigation
2. Real-Time Digital Media – GPU, Multi-Core and FPGA Acceleration Studies
3. Hybrid Reconfigurable Computing for Computer and Machine Vision
Course Goals and Outline
Software Engineering: A Practitioner’s Approach, Eighth Edition, Roger Pressman, Bruce Maxim
… designed to … return to a more linear presentation of software engineering topics with a direct emphasis on the major activities that are part of a generic software process. Content will focus on widely used software engineering methods and will de-emphasize or completely eliminate discussion of secondary methods, tools and techniques.
http://www.modelio.org/ - Design Tool
GitHub or Bitbucket – Source and Document CMVC (Configuration Management and Version Control)
http://mercury.pr.erau.edu/~siewerts/se300/
Coding in C [or language(s) of your comfort], Proof-of-Concept and Prototype Only
Sam Siewert 4
Learning Strategy
Active + Traditional
Inductive + Deductive
Active Means In-Class Activities
– Component of your Grade on Exercises
– If You Must Miss, 2 In-Class Can Be Dropped
– Active Learning & Grading Policy
– Minute Papers
– In-Class Experiments, Activities, Think-Pair-Share, Groups
– Outside-of-Class Analysis, Design and Development Groups
SE300 - Students learn about theory and practice of software engineering and work as part of a team on a full life-cycle software application that includes planning, software specification, software design, coding, inspections, and testing.
Sam Siewert 5
Why Active Learning?
Sleep Less, Think More in Class, Learn More Overall
SWE is an Active, Social, Team Endeavor – Industry and Research Skill Sharpening
Studies Show Active Learning is Better [See me for Research]
Appeals to Wide Variety of Learning Styles – Perception – Intuitive or Sensing
[Concepts or Observations]
– Input - Visual or Verbal [Pictures or Words]
– Processing - Active or Reflective [Doing or Pondering]
– Understanding - Sequential or Global [Trees or Forest]
Inquiry Learning - True to Lifelong Learning
Sam Siewert 6
PRClab - Linux
Option #1 – Use PRClab, prclab.pr.erau.edu via SSH
– Recommend MobaXterm
– Code Development (GCC/g++, Make, etc.) -
http://mercury.pr.erau.edu/~siewerts/se300/documents/Linux/
Option #2 – Use Virtual-Box Linux with Centos 6.5 Install
of Ubuntu 14.04 LTS (Both Supported)
– Must Have Windows, Macintosh or Linux Personal PC
– http://mercury.pr.erau.edu/~siewerts/se300/documents/Linux/Lin
ux-Development-Getting-Started.pdf
Modelio on PRClab -
Git client Runs on PRClab – SSH Tunnel to GitHub
Sam Siewert 7
Sam Siewert 8
Administrivia Introductions – Instructor (Office Hours) - http://mercury.pr.erau.edu/~siewerts/Schedule-
Spring-2015.pdf
– Students (Introductions) – Please do Collaborate, but cite well!
– Policies - http://mercury.pr.erau.edu/~siewerts/se300/policies/
ERAU Blackboard – Assignment Management Tool - https://erau.blackboard.com
– Access via ERNIE - https://ernie.erau.edu
– Mercury Website Primary - http://mercury.pr.erau.edu/~siewerts/se300/
Course Information – E-mail list (please sign up on sheet being passed around)
– Lecture Notes at http://mercury.pr.erau.edu/~siewerts/se300/documents/
– No Notes for Active Learning, In-Class Work (See a Friend if you Miss Class)
Must have PRClab account OR VB-Linux
I highly recommend both if possible, but PRClab is sufficient
Overall Learning Objectives
What is Software Engineering Process?
What is a Software Specification? Requirements?
What is Architecture? Design?
How is Code Constructed? Tested?
Why is Some Code Better? Quality?
How Do We Do This?
Sam Siewert 9
Minute Paper #1
What is Software Architecture?
– How Many Different Types?
– How Many Unique Patterns?
– How Do you Specify?
– What are Requirements?
– What is an Application? A System? Are they Different?
Hint, if you Have a Browser, After you Answer in your
Own Words, Browse Design Pattern Repositories
1. http://hillside.net/patterns
2. http://c2.com/ppr/index.html
3. http://g.oswego.edu/dl/acs/acs/acs.html – Avionics Specfic
Sam Siewert 10
Transformation System - Demos Continuous
…
Brightness
and Contrast
Canny Edges
Hough Linear
Hough
Circular
Sam Siewert 11
Learning Objectives
Why is Transformation an Important Architecture and Design
Pattern?
How do We Architect, Design, Code?
Why Does Speed-Up Require More than A fast Clock CPU?
Why is Concurrency or Vector Processing a Requirement?
How Much Concurrency is Enough?
Define Concurrency, Vector Processing, Transformation
Sam Siewert 12
Activity #1
Demo – Continuous Image Transformation
Think About Processing an Image – E.g. Adjust
Brightness
What Makes Image Transformation Hard?
How Can We Speed this Up?
Pair with Neighbor on Right
Share Thoughts…
Sam Siewert 13
Assignment #1
What is a Transformation System Architecture?
Why Does it Apply to Computer Vision?
– Continuous Image Transformation
– Object Segmentation and Recognition
What are the Options for Speeding Up Transformation?
If Threads are Used, What is Best Number and Grid Size on PRClab?
Why is this best? [Hint, check “cat /proc/cpuinfo”]
http://mercury.pr.erau.edu/~siewerts/se300/assignments/
Sam Siewert 14
Let’s Look at Some Code – At Home
Threading and Image Segmentation for Multi-Core
Processing
Example Published in IBM Paper
– Thread, Vector Processing, Optimization
– Grids for Threading, Step One toward Real-Time Processing
Example of Concurrency and Throughput
Sam Siewert 15
How to Grid?
Conceptual N x M, but Perhaps Just Columns or Rows?
What is Simplest?
Does it Matter at Architecture or Design Level?
Sam Siewert 16
A Couple Examples to Get You Going ... Review, Build, Run
1. simplethread
2. simple-imageproc
3. imageproc-thread
Speed-Up?
– 15.77 sec, 99.8%
– 04.66 sec, 562.6%
4 Hyper-threaded
CPUs
8 VCPUs
Sam Siewert 17