1 / 20

Effective Software Engineering Pedagogy

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.

ascully
Download Presentation

Effective Software Engineering Pedagogy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 ...

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

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

  5. 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

  6. 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.

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

  8. 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.

  9. 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.

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

  11. 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.

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

  13. 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.

  14. 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.

  15. 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.

  16. 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.

  17. 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.

  18. Sample Set of Questions

  19. 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.

More Related