SE300 Software Engineering Practices

17
January 7, 2015 Sam Siewert SE300 Software Engineering Practices Lecture 1 - Introduction

Transcript of SE300 Software Engineering Practices

Page 1: SE300 Software Engineering Practices

January 7, 2015 Sam Siewert

SE300

Software Engineering Practices

Lecture 1 - Introduction

Page 2: SE300 Software Engineering Practices

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

Page 3: SE300 Software Engineering Practices

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

Page 4: SE300 Software Engineering Practices

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

Page 5: SE300 Software Engineering Practices

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

Page 6: SE300 Software Engineering Practices

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

Page 7: SE300 Software Engineering Practices

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

Page 8: SE300 Software Engineering Practices

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

Page 9: SE300 Software Engineering Practices

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

Page 10: SE300 Software Engineering Practices

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

Page 11: SE300 Software Engineering Practices

Transformation System - Demos Continuous

Brightness

and Contrast

Canny Edges

Hough Linear

Hough

Circular

Sam Siewert 11

Page 12: SE300 Software Engineering Practices

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

Page 13: SE300 Software Engineering Practices

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

Page 14: SE300 Software Engineering Practices

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

Page 15: SE300 Software Engineering Practices

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

Page 16: SE300 Software Engineering Practices

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