Effective Software Engineering Pedagogy By Evelyn Stiller and Cathie LeBlanc Plymouth State College.

Slides:



Advertisements
Similar presentations
Semantics Static semantics Dynamic semantics attribute grammars
Advertisements

1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Software Process Models
Computer Programming Rattapoom Waranusast Department of Electrical and Computer Engineering Faculty of Engineering, Naresuan University.
OASIS Reference Model for Service Oriented Architecture 1.0
Programming Languages WHY MORE? Wasn’t ONE ENOUGH? Introduction to CS260.
C. Varela; Adapted w/permission from S. Haridi and P. Van Roy1 Declarative Computation Model Defining practical programming languages Carlos Varela RPI.
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
OO Development Process. UML and Process UML standardizes notation, not process –Increase likelihood of widespread acceptance There is significant variability.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
©Ian Sommerville 2000Software Engineering, 6/e, Chapter 91 Formal Specification l Techniques for the unambiguous specification of software.
Term Project User Interface Specifications in a Usability Engineering Course: Challenges and Suggestions Laura Leventhal Julie Barnes Joe Chao Bowling.
CS 153: Concepts of Compiler Design August 25 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 10 Slide 1 Formal Specification.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 10 Slide 1 Formal Specification.
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
Chapter 4 Requirements Engineering
Dr. Ken Hoganson, © August 2014 Programming in R STAT8030 Programming in R COURSE NOTES 1: Hoganson Programming Languages.
UML - Development Process 1 Software Development Process Using UML (2)
1 Shawlands Academy Higher Computing Software Development Unit.
SOFTWARE ENGINEERING BIT-8 APRIL, 16,2008 Introduction to UML.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 9 Slide 1 Formal Specification l Techniques for the unambiguous specification of software.
Architecture Business Cycle
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Identify steps for understanding and solving the
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
More on “The Huddersfield Method” A lightweight, pattern-driven method based on SSM, Domain Driven Design and Naked Objects.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
WXGE6103 Software Engineering Process and Practice Formal Specification.
Formal Semantics Chapter Twenty-ThreeModern Programming Languages, 2nd ed.1.
The Systems Development Life Cycle
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
CS453 LectureIntroduction1 CS453 Compiler Construction Instructor:Wim Bohm Computer Science Building 470 TA: tba
CS 153: Concepts of Compiler Design August 26 Class Meeting Department of Computer Science San Jose State University Fall 2015 Instructor: Ron Mak
Chapter 1 Introduction to Software Engineering. Why Engineer Software? n Air traffic control case study –$2.3 Billion spent without any usable deliverable.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
The Software Development Process
Software Engineering Requirements + Specifications.
SWE 4743 Abstraction Richard Gesick. CSE Abstraction the mechanism and practice of abstraction reduces and factors out details so that one can.
SoftwareServant Pty Ltd 2009 SoftwareServant ® Using the Specification-Only Method.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
CS223: Software Engineering
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
JavaScript Introduction and Background. 2 Web languages Three formal languages HTML JavaScript CSS Three different tasks Document description Client-side.
Overview of Compilation Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Programming Language Principles Lecture 2.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
© NALO Solutions Limited NALO Solutions, presents the – Revenue Collector App Using Mobile Phones to gather Revenue SOFTWARE ENGINEERING.
CIS 339 Entire Course (UOP) FOR MORE CLASSES VISIT CIS 339iLab 1 System Requirements CIS 339 iLab 2 of 7 CIS 339iLab 3 - Structural.
TK2023 Object-Oriented Software Engineering
Elaboration popo.
Collision Theory and Logic
Formal Specification.
Collision Theory and Logic
Functions Review.
About the Presentations
CS 240 – Lecture 11 Pseudocode.
CIS 339 Teaching Effectively-- snaptutorial.com
To Get Started Paper sheet
Informatics 121 Software Design I
Informatics 121 Software Design I
CS310 Software Engineering Lecturer Dr.Doaa Sami
Completing and Presenting the Class Project
Coupling Interaction: It occurs due to methods of a class invoking methods of other classes. Component Coupling: refers to interaction between two classes.
Presentation transcript:

Effective Software Engineering Pedagogy By Evelyn Stiller and Cathie LeBlanc Plymouth State College

Can We be Content with SE Education?  Large-scale software development efforts show no evidence of change from the 70’s and 80’s.  FLORIDA welfare system.  IRS project failures cost tax payers $50 billion annually.  FAA air traffic control system...

Current State of the Air Traffic Control System Resulted in the squandering of $2.5 billion!

Why Are We Failing to Produce Strong Advocates of SE?  SE = terms and concepts.  SE is difficult.  We can teach the general mechanics of modeling software.  We have to anticipate students’ struggle and dissatisfaction with SE and be proactive.

Recommendation for Teaching SE Effectively  Make SE real  Make SE fun  Make SE critical  Make SE accessible  Make SE successful  Reflect on the process of SE

Make SE Real  Students have 1 to 2 week assignments pre SE.  Expose students to a larger-scale development efforts BEFORE their software engineering course.  E.g. a simple programming language interpreter.  These students enter our SE course eager to learn.

Sample Assignment Sequence 1)Token extraction. 2)Lexical analysis - identifying basic language elements, literal values and operators. 3)Lexical analysis - identifying keywords and identifiers, start building the symbol table. 4)Syntactic analysis - enforce proper syntax for a subset of language statements. 5)Syntactic analysis - enforce proper syntax for the remaining statement in our simple language. 6) Building aggregate structures - build internal representations for block-oriented statements such as loops, conditions, and function definitions. Also add function calls to possible statements. 7)Semantic analysis - enforcing variable declaration, adding identifier scope to the symbol table, and matching actual and formal parameters in function calls. 8)Execution - implement the execution a subset of the commands in our simple language. 9)Execution - implement the execution of loops and conditional statements. 10) Executions - implement the execution of function calls and return values.

Make SE Fun  Consider student motivation.  SE is hard work, so motivation is critical.  What motivates students?  Multimedia elements are also make an application exciting.

Make SE Critical  SE project size is crucial.  The project must be somewhat complex.  The project must be large enough to require a team of 4-6 students to complete.

Sample SE Projects  On-line Clue or variation thereof.  A MUD variation.  Other role-playing games – Soap Opera  Sample failure: VPCT

Make SE Accessible  Provide students with a clear set of steps.  Each step should result in a deliverable.  When possible reduce or delay the required abstract thinking.  The modeling notation should not be prohibitively complex.

Project Deliverables Refined Requirements Specification Informal Scenarios Use Cases Scenarios Class Diagrams Use Case Diagrams Process Architecture Persistence Solution User interface Mockups Interaction Diagrams Object Diagrams Class Skeletons Class Design Product Design Implementation Plan* Class Definitions Implementation Test Plan* Testing Unit Test Report* Integration Test Report* System Test Report * * Indicates a partial deliverable is required Requirements Analysis

Make SE Successful  Even if students are unable to deliver 100% functionality, they should succeed anyway.  Have students incrementally implement their projects, prioritizing core functionality.  Engage in “shoring up” the project in the last 3 weeks of the course.

Shoring-up the Project  Determine risk.  Rank the incomplete elements in terms of their importance to the project.  Of the most important elements, determine if any are too risky to implement.

Assessing Risk  Unfamiliarity with algorithms or technology.  Abstractness of current design.  Quantity left to code.  Complexity.  Possibility of error in current design.  Poorly structured solution.

Assessing Importance  Place remaining modules to implement in context of interaction diagrams.  Determine what functionality is at stake, if remaining risky modules are not implemented.  Determine how many students depend on this functionality for their portions of the project.  Create an ordered list of elements based on level of risk and criticality of functionality.

Reflect on the Process of Software Engineering  Students invariably fail to appreciate the true complexity of the functional requirements, which models reality.  Despite giving feedback that additional or more complex scenarios are required, students usually add only a few new scenarios.  During implementation they feel the crunch.  Thus, it is vital to reflect on the process of SE by asking a series of questions which illuminate what might have been done differently.

Sample Set of Questions

Conclusion  Our goal should be to create SE ambassadors to industry.  We must make SE relevant, exciting, and important to our students by engaging them in exciting team-oriented development projects.  We should make the process deliverable oriented, but not bury them in deliverables.  We cannot expect perfection from our students the first time they engineer a complex application, so reflecting on the process of SE is vital.