se310 analysis and design of software...
TRANSCRIPT
January 7, 2015 Sam Siewert
SE310
Analysis and Design of Software
Systems
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
… a step-by-step methodology that integrates modeling and design, UML, patterns, test-driven development, quality assurance, configuration management, and agile principles throughout the life cycle. The overall approach is casual and easy to follow, with many practical examples that show the theory at work. The author uses his experiences as well as real-world stories to help the reader understand software design principles, patterns, and other software engineering concepts.
http://www.modelio.org/ - Design Tool
GitHub or Bitbucket – Source and Document CMVC (Configuration Management and Version Control)
http://mercury.pr.erau.edu/~siewerts/se310/
Coding in C++ [or OOP language(s) of your comfort], is OPTIONAL, Proof-of-Concept and Prototype Only, But Recommended
Sam Siewert 4
Software Engineering
Characteristics of SWE Life Cycle (Fig. 1.5 in Book)
– Process to Analyze, Design, Code, Unit Test, Integrate and Test,
Accept, and Maintain Software Solutions
– Planning, Project Management, Methods
PQCT
– Productivity (E.g. Lines of Code (poor metric), Modules,
Features, …)
– Quality (E.g. Defects, Deficiencies, Test Coverage, …)
– Cost (E.g. NRE Development, Maintenance, Upgrade, …) –
CAPEX, OPEX
– Time to Market (Wide Range of Months to Years)
Sam Siewert 5
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
SE310 - introduce students to specific techniques which are widely used in the analysis and design of software systems. Traditional techniques will be reviewed and current methodologies will be taught and practiced. Emphasis will be placed on the standard notation used to document software requirements and designs. The translation of a documented design to implemented software will be explored by example, however, software construction (programming) will not be emphasized in the course…
Sam Siewert 6
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 7
Think-Pair-Share
How is Software Engineering Different from Computer
Science?
Pair Up or Work as a Group of 3 and Discuss
Present Brief Answer to Class
Sam Siewert 8
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/se310/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/se310/documents/Linux/Lin
ux-Development-Getting-Started.pdf
Modelio on PRClab -
Git client Runs on PRClab – SSH Tunnel to GitHub
Sam Siewert 9
Sam Siewert 10
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/se310/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/se310/
Course Information – E-mail list (please sign up on sheet being passed around)
– Lecture Notes at http://mercury.pr.erau.edu/~siewerts/se310/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 to Build?
– Requirements as Capabilities
– Methods to Identify Requirements
How to Specify It?
– Domain Modeling
– Architecture and Design Patterns (Object Oriented)
– Design Inspections
OOA/OOD UML (Universal Modeling Language)
Translation of OOA/OOD to an OOP (C++ or Java)
Sam Siewert 11
Minute Paper #1
Does the OO Approach Have Significant Advantage over
Structured Analysis/Design and Procedural
Programming?
– Yes, No
– Why, Why Not?
– List 3 Key Advantages
– List 3 Key Disadvantages
– Will it Replace all Other Types of Programming?
Hint – After you Answer in your Own Words, Browse to:
– http://www.cs.gordon.edu/courses/cs211/AddressBookExample/
– http://www.cs.gordon.edu/courses/cs211/ATMExample/
Sam Siewert 12
UML – Use Cases Class Structure (Data and Operations on that Data)
Use Cases and Corresponding Interaction Diagrams
– Actors in Use Case
– Behavior Shown by Interaction Diagrams
Sam Siewert 13
UML Class Diagram Much Like ER / EER if you Have Had CS 317
Shows Class Relationships and Hierarchy
Sam Siewert 14
Transaction Abstract Class
Defines Specific (Refined)
Transaction Types
One ATM Instance Supports
Many Transactions (Abstract)
One ATM Instance Supports
Many Sessions Over Time
[Each Requires Card Read]
Arrows – Dashed Uses/Dependencies
and Solid Relationships with
Cardinality
UML Interaction Diagrams
Behavior – Object Interactions over Time
Sam Siewert 15
Dashed Lines:
Messages
Solid Lines:
Operations that
Start Execution
Sequences
Wide Vertical Lines:
Active Process
Started by Operation
With Messaging
X:
End of Interaction
(E.g. Specific Session)
Detailed Design
Class Public and Private Data
Class Operations on Data
Constructors and Destructors for Instantiation of Object
Sam Siewert 16
Operations and State – State Charts Operational Input Changes State of Objects [Output]
At Any Time, Object is in One Well-known State
Sam Siewert 17
Input / Output
On Transitions
Start State
State:
Object Instance
Needs Specific Data,
Waits on Next Input
Termination State:
End of Instance
Traditional SA/SD
Data Flow Diagrams – Data [Messages] Between
Processes and is Transformed
Entity Relationship Diagrams – Lacks Operations, but
Defines Entities [Objects] and Relationships
State Machines [in Common, but Typically for Each
Process in DFD]
Flow-Charts – Detailed Procedural Design [Interaction,
Logic]
Sam Siewert 18
Architecture and Design Patterns
OO Has Goal of Design and Software Re-Use
– Encapsulation of Data and Operations
– Class Hierarchy and Object Instances
– Well Understand Use Cases
– Well Understand Interaction Between Objects
Study 4 Key System Types
1. Interactive – E.g. GUI, CLI
2. Event Driven – E.g. Anit-lock Breaking System Software
3. Transformational – E.g. Image Processing, Encode/Decode
[MPEG Digital Video, RAID]
4. Transaction Oriented – E.g. DBMS
Sam Siewert 19
Assignment #1 Activities
Bring Up Modelio and Start Entering Address Book or
ATM Design
Enter Classes and Diagrams Covered in Class –
Simplify, But Complete (At least 3 of each Diagram
Type)
Can You Implement in C++? Now? [g++ on PRClab]
ATM Authors Use Java – Dr. Java for Windows
[Optional]
When Should Code Construction Start?
Sam Siewert 20