Evolving the Software Engineering Toolbox CHRISTOPH REICHENBACH

Size: px
Start display at page:

Download "Evolving the Software Engineering Toolbox CHRISTOPH REICHENBACH"

Transcription

1 Evolving the Software Engineering Toolbox CHRISTOPH REICHENBACH

2 CV Highlights Helping software engineers with their everyday problems TU Darmstadt Student CU Boulder PhD Student PhD, Program Metamorphosis (Amer Diwan) UMass Amherst Postdoc Google Mountain View SW Engineer U Frankfurt Junior Professor R 2 Software & Systeme, Frankfurt CTO/CEO Lund U / LTH, WASP Senior Lecturer Oct 2017 Christoph Reichenbach Evolving the SE Toolbox 10th January /22

3 CV Highlights Helping software engineers with their everyday problems Automate: Dull, Dirty, Dangerous TU Darmstadt Student CU Boulder PhD Student PhD, Program Metamorphosis (Amer Diwan) UMass Amherst Postdoc Google Mountain View SW Engineer U Frankfurt Junior Professor R 2 Software & Systeme, Frankfurt CTO/CEO Lund U / LTH, WASP Senior Lecturer Oct 2017 Christoph Reichenbach Evolving the SE Toolbox 10th January /22

4 CV Highlights Helping software engineers with their everyday problems Automate: Dull, Dirty, Dangerous, Difficult TU Darmstadt Student CU Boulder PhD Student PhD, Program Metamorphosis (Amer Diwan) UMass Amherst Postdoc Google Mountain View SW Engineer U Frankfurt Junior Professor R 2 Software & Systeme, Frankfurt CTO/CEO Lund U / LTH, WASP Senior Lecturer Oct 2017 Christoph Reichenbach Evolving the SE Toolbox 10th January /22

5 Software is Big 100 > (avionics) Approx. source code size in million lines of code, Jan Christoph Reichenbach Evolving the SE Toolbox 10th January /22

6 and Software Engineering Software Engineering REQUIREMENTS DESIGN IMPLEMENTATION VALIDATION MAINTENANCE Christoph Reichenbach Evolving the SE Toolbox 10th January /22

7 and Software Engineering Software Engineering REQUIREMENTS Customer Requirements DESIGN IMPLEMENTATION VALIDATION MAINTENANCE HW hardware Christoph Reichenbach Evolving the SE Toolbox 10th January /22

8 and Software Engineering Software Engineering REQUIREMENTS DESIGN IMPLEMENTATION SWE Team VALIDATION Requirements MAINTENANCE HW hardware Christoph Reichenbach Evolving the SE Toolbox 10th January /22

9 and Software Engineering Software Engineering REQUIREMENTS DESIGN IMPLEMENTATION SWE Team VALIDATION Requirements artefacts SW source code MAINTENANCE HW hardware Christoph Reichenbach Evolving the SE Toolbox 10th January /22

10 and Software Engineering Requirements SW HW hardware Christoph Reichenbach Evolving the SE Toolbox 10th January /22

11 and Software Engineering Requirements SW Bug finding Formal Methods MDSE Domain-Specific Languages Integrated Development Environments Program Transformation Program Understanding HW hardware Compilers Profilers Christoph Reichenbach Evolving the SE Toolbox 10th January /22

12 and Software Engineering Requirements SW Bug finding Formal Methods MDSE Domain-Specific Languages Languages Integrated Development Environments Program Transformation Program Understanding HW hardware Compilers Profilers Christoph Reichenbach Evolving the SE Toolbox 10th January /22

13 and Software Engineering Requirements SW Bug finding Formal Methods MDSE Domain-Specific Languages Languages Integrated Development Environments Program Transformation Program Understanding HW hardware Compilers Profilers Christoph Reichenbach Evolving the SE Toolbox 10th January /22

14 : Predictive and Precise Bug Detection with: Kaituo Li (U Massachusetts, Amherst) Christoph Csallner (U Texas at Arlington) Yannis Smaragdakis (U Athens) In ISSTA 2012 (Best Paper Award), ACM TOSEM Volume 24 Issue 2, Christoph Reichenbach Evolving the SE Toolbox 10th January /22

15 Common Bug Patterns try { target.write(data); } catch (IOException e) { /* error ignored */ } Christoph Reichenbach Evolving the SE Toolbox 10th January /22

16 Common Bug Patterns try { target.write(data); } catch (IOException e) { /* error ignored */ } Detected by Static Checker Findbugs: Dropped Exception Christoph Reichenbach Evolving the SE Toolbox 10th January /22

17 Common Bug Patterns try { target.write(data); } catch (IOException e) { /* error ignored */ } Detected by Static Checker Findbugs: Dropped Exception A.java B.java C.java D.java E.java Christoph Reichenbach Evolving the SE Toolbox 10th January /22

18 Common Bug Patterns try { target.write(data); } catch (IOException e) { /* error ignored */ } Detected by Static Checker Findbugs: Dropped Exception A.java B.java C.java D.java E.java Christoph Reichenbach Evolving the SE Toolbox 10th January /22

19 Common Bug Patterns try { target.write(data); } catch (IOException e) { /* error ignored */ } Detected by Static Checker Findbugs: Dropped Exception A.java B.java C.java D.java E.java Objection! False Positive: what if B, C, D can actually never fail? Christoph Reichenbach Evolving the SE Toolbox 10th January /22

20 Our Solution: Static Checker Tests Program Christoph Reichenbach Evolving the SE Toolbox 10th January /22

21 Our Solution: Static Checker Tests Program Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Christoph Reichenbach Evolving the SE Toolbox 10th January /22

22 Our Solution: Static Checker Tests Program Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Possible Objections Christoph Reichenbach Evolving the SE Toolbox 10th January /22

23 Our Solution: Static Checker Tests Program Instrument Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Possible Objections Christoph Reichenbach Evolving the SE Toolbox 10th January /22

24 Our Solution: Static Checker Tests Run Analyse Program Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Christoph Reichenbach Evolving the SE Toolbox 10th January /22

25 Our Solution: Static Checker Tests Run Analyse Program Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Evidence for bug Evidence against bug Christoph Reichenbach Evolving the SE Toolbox 10th January /22

26 Our Solution: Static Checker Tests Run Analyse Program prioritise Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Evidence for bug Evidence against bug Christoph Reichenbach Evolving the SE Toolbox 10th January /22

27 Our Solution: Static Checker Tests Run Analyse Program prioritise Bug: B.java: HE Bug: ACL.java: CN Bug: N.java: HE Bug: CPU.java: RR Bug: D.java: CN Evidence for bug Evidence against bug remove/deprioritise Christoph Reichenbach Evolving the SE Toolbox 10th January /22

28 Other Patterns Many patterns in FindBugs admit : Dropped Exception Christoph Reichenbach Evolving the SE Toolbox 10th January /22

29 Other Patterns Many patterns in FindBugs admit : Dropped Exception Equal Objects Must Have Equal Hashcodes Bad Covariant Definition of Equals Equals Method Overrides Equals in Superclass and May Not Be Symmetric Cloneable Not Implemented Correctly Non-Short-Circuit Boolean operator Read Return Should Be Checked Race Detection Christoph Reichenbach Evolving the SE Toolbox 10th January /22

30 Other Patterns Many patterns in FindBugs admit : Dropped Exception Equal Objects Must Have Equal Hashcodes Bad Covariant Definition of Equals Equals Method Overrides Equals in Superclass and May Not Be Symmetric Cloneable Not Implemented Correctly Non-Short-Circuit Boolean operator Read Return Should Be Checked Race Detection is widely applicable Christoph Reichenbach Evolving the SE Toolbox 10th January /22

31 Evaluation Tested 7 patterns Targets: JBoss, BCEL, NetBeans, Tomcat, JRuby, Apache CC, Groovy 436 static FindBugs reports dynamic evidence for 43 Dynamic reports bug non-bug undetermined 12 rejected reinforced total Christoph Reichenbach Evolving the SE Toolbox 10th January /22

32 Evaluation Tested 7 patterns Targets: JBoss, BCEL, NetBeans, Tomcat, JRuby, Apache CC, Groovy 436 static FindBugs reports dynamic evidence for 43 Dynamic reports bug non-bug undetermined 12 rejected reinforced total Non- bug reports: only 1 out of 10 were real > 75% precision with, 10% without Christoph Reichenbach Evolving the SE Toolbox 10th January /22

33 Agenda Hard to extend = Domain-Specific Language for describing bug patterns Focus on correctness = Performance bugs Focus on Java = C/C++ for High Performance Computing Reliance on heuristics = Machine Learning Christoph Reichenbach Evolving the SE Toolbox 10th January /22

34 Copy-and-Paste Redeemed with: Krishna Narasimhan (GU Frankfurt) In Automated Software Engineering (ASE), 2015 (Distinguished Paper Award) Christoph Reichenbach Evolving the SE Toolbox 10th January /22

35 int dist(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::max(dx, dy); } Christoph Reichenbach Evolving the SE Toolbox 10th January /22

36 int dist(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::max(dx, dy); } int dist2(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::hypot(dx, dy) ; } Christoph Reichenbach Evolving the SE Toolbox 10th January /22

37 int dist(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::max(dx, dy); } int dist2(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::hypot(dx, dy) ; } Alternative: Abstraction int distg(coord a, coord b, int (*f)(int, int) ) int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return f (dx, dy); } Christoph Reichenbach Evolving the SE Toolbox 10th January /22

38 Copy-and-Paste vs. Abstraction Small user study (5 C++ programmers, 5 programs): Christoph Reichenbach Evolving the SE Toolbox 10th January /22

39 Copy-and-Paste vs. Abstraction Small user study (5 C++ programmers, 5 programs): Programmers preferred to see Abstraction was 2-3 times faster to build Hypothesis: More abstractions slower programmers Christoph Reichenbach Evolving the SE Toolbox 10th January /22

40 Copy-and-Paste vs. Abstraction Small user study (5 C++ programmers, 5 programs): Programmers preferred to see Abstraction was 2-3 times faster to build Hypothesis: More abstractions slower programmers However: Literature on clone research mostly agrees that clones are maintenance problem Practitioner literature strongly advocates abstraction Christoph Reichenbach Evolving the SE Toolbox 10th January /22

41 Copy-and-Paste vs. Abstraction Small user study (5 C++ programmers, 5 programs): Programmers preferred to see Abstraction was 2-3 times faster to build Hypothesis: More abstractions slower programmers However: Literature on clone research mostly agrees that clones are maintenance problem Practitioner literature strongly advocates abstraction Can we somehow have both benefits? Christoph Reichenbach Evolving the SE Toolbox 10th January /22

42 Solution: Auto-Merge Refactoring int dist(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::max(dx, dy); } int dist2(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::hypot(dx, dy); } Christoph Reichenbach Evolving the SE Toolbox 10th January /22

43 Solution: Auto-Merge Refactoring int dist(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::max(dx, dy); } int dist2(coord a, coord b) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return std::hypot(dx, dy); } merge abstraction = function pointer int distg(coord a, coord b, int (*f)(int, int)) { int dx = abs(a.x - b.x); int dy = abs(a.y - b.y); return f(dx, dy); } Christoph Reichenbach Evolving the SE Toolbox 10th January /22

44 Evaluation Selected near-clones from Open Source C++ projects Used our tool to merge Merge abstractions: Parameter Parameter lifted to pointer Template Global Variable Manual cleanup: Formatting, variable renaming Phase 1 (Early prototype, limited to two-way merge): Submitted Accepted Rejected Pending Phase 2: Submitted Accepted Rejected Pending Christoph Reichenbach Evolving the SE Toolbox 10th January /22

45 Agenda Abstract New abstraction patterns (OO class hierarchies, design patterns,... ) Christoph Reichenbach Evolving the SE Toolbox 10th January /22

46 Agenda Incremental abstraction New abstraction patterns (OO class hierarchies, design patterns,... ) Incremental abstraction Christoph Reichenbach Evolving the SE Toolbox 10th January /22

47 Agenda Abstract + Instantiate New abstraction patterns (OO class hierarchies, design patterns,... ) Incremental abstraction Bidirectionality in abstraction Christoph Reichenbach Evolving the SE Toolbox 10th January /22

48 Agenda? New abstraction patterns (OO class hierarchies, design patterns,... ) Incremental abstraction Bidirectionality in abstraction Assessing quality aspects (runtime, memory usage) of abstractions Christoph Reichenbach Evolving the SE Toolbox 10th January /22

49 Agenda New abstraction patterns (OO class hierarchies, design patterns,... ) Incremental abstraction Bidirectionality in abstraction Assessing quality aspects (runtime, memory usage) of abstractions Goal: Transparent Abstractions Christoph Reichenbach Evolving the SE Toolbox 10th January /22

50 with Noric Couderc, starting 2018 Christoph Reichenbach Evolving the SE Toolbox 10th January /22

51 Why we re-use Development Speed (Brooks, McIlroy) Take advantage of existing expertise to improve: Execution time Memory usage Christoph Reichenbach Evolving the SE Toolbox 10th January /22

52 Why we re-use Development Speed (Brooks, McIlroy) Take advantage of existing expertise to improve: Execution time Memory usage Compile time Christoph Reichenbach Evolving the SE Toolbox 10th January /22

53 Why we re-use Development Speed (Brooks, McIlroy) Take advantage of existing expertise to improve: Execution time Memory usage Compile time Security Christoph Reichenbach Evolving the SE Toolbox 10th January /22

54 Why we re-use Development Speed (Brooks, McIlroy) Take advantage of existing expertise to improve: Execution time Memory usage Compile time Security Portability Numeric range Robustness Scalability Parallelisability Re-entrance / thread-safety Traceability Christoph Reichenbach Evolving the SE Toolbox 10th January /22

55 Why we re-use Development Speed (Brooks, McIlroy) Take advantage of existing expertise to improve: Execution time Memory usage Compile time Security Portability Numeric range Robustness Scalability Parallelisability Re-entrance / thread-safety Traceability Latency and bandwidth needs (communications) Precision and recall (AI) Serialisability (data structures) Stability (containers, sorting) Christoph Reichenbach Evolving the SE Toolbox 10th January /22

56 Why we re-use Development Speed (Brooks, McIlroy) Take advantage of existing expertise to improve: Execution time Memory usage Compile time Security Trade-offs: Portability Who decides them? Numeric range When? Robustness Scalability How? Parallelisability Re-entrance / thread-safety Traceability Latency and bandwidth needs (communications) Precision and recall (AI) Serialisability (data structures) Stability (containers, sorting) Christoph Reichenbach Evolving the SE Toolbox 10th January /22

57 : Motivation Module search: User Christoph Reichenbach Evolving the SE Toolbox 10th January /22

58 : Motivation Module search: User Wants optimal Performance Size Portability Thread-safety Correctness Christoph Reichenbach... Evolving the SE Toolbox 10th January /22

59 : Motivation Module search: Domain expert Suggestions: A, B, C User Wants optimal Performance Size Portability Thread-safety Correctness... Christoph Reichenbach Evolving the SE Toolbox 10th January /22

60 : Motivation Module search: Domain expert Suggestions: A, B, C User Wants optimal Performance Size Portability Thread-safety Correctness... Validation Validation expert Christoph Reichenbach Evolving the SE Toolbox 10th January /22

61 : Motivation Module search: Domain expert Suggestions: A, B, C User Wants optimal Performance Size Portability Thread-safety Correctness... Validation Validation expert Christoph Reichenbach Evolving the SE Toolbox 10th January /22

62 : Motivation Module search: Domain expert Suggestions: A, B, C User Validation Validation expert Add C to program Christoph Reichenbach Evolving the SE Toolbox 10th January /22

63 : Motivation Module search: Domain expert Suggestions: A, B, C, D User Validation Validation expert New, superior module D developed Christoph Reichenbach Evolving the SE Toolbox 10th January /22

64 : Motivation Module search: Domain expert Suggestions: A, B, C, D User Validation Validation expert C D Who updates old code? Christoph Reichenbach Evolving the SE Toolbox 10th January /22

65 : Idea User Modulator Module Management Christoph Reichenbach Evolving the SE Toolbox 10th January /22

66 : Idea User Problem Domain Knowledge: qualitative requirements Modulator Module Management Christoph Reichenbach Evolving the SE Toolbox 10th January /22

67 : Idea Domain Expert DB Solution Domain Knowledge Implementation ideas Decision criteria User Problem Domain Knowledge: qualitative requirements Modulator Module Management Christoph Reichenbach Evolving the SE Toolbox 10th January /22

68 : Idea Domain Expert DB Solution Domain Knowledge Implementation ideas Decision criteria User Problem Domain Knowledge: qualitative requirements Modulator Module Management Validation procedures Validation Expert DB Christoph Reichenbach Evolving the SE Toolbox 10th January /22

69 : Idea Domain Expert DB Solution Domain Knowledge Implementation ideas Decision criteria User Problem Domain Knowledge: qualitative requirements Modulator Module Management Validation procedures Validation Expert DB Automatic updates Christoph Reichenbach Evolving the SE Toolbox 10th January /22

70 Agenda Set<Integer> = new HashSet<Integer>() Automate module choice Christoph Reichenbach Evolving the SE Toolbox 10th January /22

71 Agenda Set<Integer> = new Set<Integer>() Automate module choice Christoph Reichenbach Evolving the SE Toolbox 10th January /22

72 Agenda Set<Integer> = new Set<Integer>() Automate module choice Optimise module choice Determine / validate module qualities Distribute modules, trust management Machine-Learn Key Features for Module Choice Mine modules from Big Code Christoph Reichenbach Evolving the SE Toolbox 10th January /22

73 Leveraging Re-Use Common theme: re-use Residual Performance Investigation: re-use expert knowledge about programs & behaviour SW Requirements HW Christoph Reichenbach Evolving the SE Toolbox 10th January /22

74 Leveraging Re-Use Common theme: re-use Residual Performance Investigation: re-use expert knowledge about programs & behaviour : re-use expert knowledge about available software SW Requirements Modulator HW Christoph Reichenbach Evolving the SE Toolbox 10th January /22

75 Leveraging Re-Use Common theme: re-use Residual Performance Investigation: re-use expert knowledge about programs & behaviour : re-use expert knowledge about available software Transparent Abstractions: break down barriers between modules and abstraction layers SW Requirements Modulator HW Christoph Reichenbach Evolving the SE Toolbox 10th January /22

76 Leveraging Re-Use Common theme: re-use Residual Performance Investigation: re-use expert knowledge about programs & behaviour : re-use expert knowledge about available software Transparent Abstractions: break down barriers between modules and abstraction layers Future: Language SW Requirements Modulator HW Christoph Reichenbach Evolving the SE Toolbox 10th January /22

A Residual Investigation: Predictive and Precise Bug Detection

A Residual Investigation: Predictive and Precise Bug Detection A Residual Investigation: Predictive and Precise Bug Detection KAITUO LI, University of Massachusetts, Amherst, USA CHRISTOPH REICHENBACH, Goethe University Frankfurt, Germany CHRISTOPH CSALLNER, University

More information

The C Language Mapping Does it meet the needs of Embedded Real-time Applications?

The C Language Mapping Does it meet the needs of Embedded Real-time Applications? The C Language Mapping Does it meet the needs of Embedded Real-time Applications? S. Aslam-Mir Ph.D. Senior Software Architect 1 Agenda Motivations Key highlights of the mapping Some possible advantages

More information

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing

More information

FindBugs review of Glassfish v2 b09

FindBugs review of Glassfish v2 b09 FindBugs review of Glassfish v2 b09 William Pugh Univ. of Maryland http://www.cs.umd.edu/~pugh/ FindBugs Open source static analysis tool for finding defects in Java programs Analyzes classfiles Generates

More information

Bugs in software. Using Static Analysis to Find Bugs. David Hovemeyer

Bugs in software. Using Static Analysis to Find Bugs. David Hovemeyer Bugs in software Programmers are smart people We have good techniques for finding bugs early: Unit testing, pair programming, code inspections So, most bugs should be subtle, and require sophisticated

More information

Programming Languages Research at the University of Colorado, Boulder

Programming Languages Research at the University of Colorado, Boulder Amer Diwan Jeremy Siek Bor-Yuh Evan Chang Sriram Sankaranarayanan Programming Languages Research at the University of Colorado, Boulder PL research at CU has breadth! How do we effectively express computation?

More information

Program verification. Generalities about software Verification Model Checking. September 20, 2016

Program verification. Generalities about software Verification Model Checking. September 20, 2016 Program verification Generalities about software Verification Model Checking Laure Gonnord David Monniaux September 20, 2016 1 / 43 The teaching staff Laure Gonnord, associate professor, LIP laboratory,

More information

Think & Work like a Data Scientist with SQL 2016 & R DR. SUBRAMANI PARAMASIVAM (MANI)

Think & Work like a Data Scientist with SQL 2016 & R DR. SUBRAMANI PARAMASIVAM (MANI) Think & Work like a Data Scientist with SQL 2016 & R DR. SUBRAMANI PARAMASIVAM (MANI) About the Speaker Dr. SubraMANI Paramasivam PhD., MCT, MCSE, MCITP, MCP, MCTS, MCSA CEO, Principal Consultant & Trainer

More information

Today Program Analysis for finding bugs, especially security bugs problem specification motivation approaches remaining issues

Today Program Analysis for finding bugs, especially security bugs problem specification motivation approaches remaining issues Finding Bugs Last time Run-time reordering transformations Today Program Analysis for finding bugs, especially security bugs problem specification motivation approaches remaining issues CS553 Lecture Finding

More information

Design Pattern and Software Architecture: IV. Design Pattern

Design Pattern and Software Architecture: IV. Design Pattern Design Pattern and Software Architecture: IV. Design Pattern AG Softwaretechnik Raum E 3.165 Tele.. 60-3321 hg@upb.de IV. Design Pattern IV.1 Introduction IV.2 Example: WYSIWYG Editor Lexi IV.3 Creational

More information

Continuous performance monitoring. Vassil Vassilev

Continuous performance monitoring. Vassil Vassilev Continuous performance monitoring Vassil Vassilev Motivation Enabling performance optimization contributions (often external) to ROOT Making sure these contributions are sustainable (i.e. once the money

More information

Performance Tools for Technical Computing

Performance Tools for Technical Computing Christian Terboven terboven@rz.rwth-aachen.de Center for Computing and Communication RWTH Aachen University Intel Software Conference 2010 April 13th, Barcelona, Spain Agenda o Motivation and Methodology

More information

Static Program Analysis

Static Program Analysis Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-18/spa/ Preliminaries Outline of Lecture 1 Preliminaries Introduction

More information

Week 7. Statically-typed OO languages: C++ Closer look at subtyping

Week 7. Statically-typed OO languages: C++ Closer look at subtyping C++ & Subtyping Week 7 Statically-typed OO languages: C++ Closer look at subtyping Why talk about C++? C++ is an OO extension of C Efficiency and flexibility from C OO program organization from Simula

More information

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD Cairo University Faculty of Computers and Information CS251 Software Engineering Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD http://www.acadox.com/join/75udwt Outline Definition of Software

More information

Dr. SubraMANI Paramasivam. Think & Work like a Data Scientist with SQL 2016 & R

Dr. SubraMANI Paramasivam. Think & Work like a Data Scientist with SQL 2016 & R Dr. SubraMANI Paramasivam Think & Work like a Data Scientist with SQL 2016 & R About the Speaker Group Leader Dr. SubraMANI Paramasivam PhD., MVP, MCT, MCSE (x2), MCITP (x2), MCP, MCTS (x3), MCSA CEO,

More information

Principles of Programming Languages. Lecture Outline

Principles of Programming Languages. Lecture Outline Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation

More information

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs. In this Lecture you will Learn: Testing in Software Development Process Examine the verification and validation activities in software development process stage by stage Introduce some basic concepts of

More information

Software Verification and Validation (VIMMD052) Introduction. Istvan Majzik Budapest University of Technology and Economics

Software Verification and Validation (VIMMD052) Introduction. Istvan Majzik Budapest University of Technology and Economics Software Verification and Validation (VIMMD052) Introduction Istvan Majzik majzik@mit.bme.hu Budapest University of Technology and Economics Dept. of Measurement and Information s Budapest University of

More information

NVIDIA Think about Computing as Heterogeneous One Leo Liao, 1/29/2106, NTU

NVIDIA Think about Computing as Heterogeneous One Leo Liao, 1/29/2106, NTU NVIDIA Think about Computing as Heterogeneous One Leo Liao, 1/29/2106, NTU GPGPU opens the door for co-design HPC, moreover middleware-support embedded system designs to harness the power of GPUaccelerated

More information

Combining Static and Dynamic Analysis for Bug Detection and Program Understanding

Combining Static and Dynamic Analysis for Bug Detection and Program Understanding University of Massachusetts Amherst ScholarWorks@UMass Amherst Doctoral Dissertations Dissertations and Theses 2016 Combining Static and Dynamic Analysis for Bug Detection and Program Understanding Kaituo

More information

n HW5 out, due Tuesday October 30 th n Part 1: Questions on material we ll cover today n Part 2: BFS using your graph from HW4

n HW5 out, due Tuesday October 30 th n Part 1: Questions on material we ll cover today n Part 2: BFS using your graph from HW4 Subtype, Subtyping vs. Subclassing, Liskov Substitution Principle Announcements n HW5 out, due Tuesday October 30 th n Part 1: Questions on material we ll cover today n Part 2: BFS using your graph from

More information

HOW AND WHEN TO FLATTEN JAVA CLASSES?

HOW AND WHEN TO FLATTEN JAVA CLASSES? HOW AND WHEN TO FLATTEN JAVA CLASSES? Jehad Al Dallal Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait ABSTRACT Improving modularity and reusability are two key objectives in object-oriented

More information

Lecture 9 Dynamic Compilation

Lecture 9 Dynamic Compilation Lecture 9 Dynamic Compilation I. Motivation & Background II. Overview III. Compilation Policy IV. Partial Method Compilation V. Partial Dead Code Elimination VI. Escape Analysis VII. Results Partial Method

More information

Finding and Fixing Bugs in Liquid Haskell. Anish Tondwalkar

Finding and Fixing Bugs in Liquid Haskell. Anish Tondwalkar Finding and Fixing Bugs in Liquid Haskell Anish Tondwalkar Overview Motivation Liquid Haskell Fault Localization Fault Localization Evaluation Predicate Discovery Predicate Discovery Evaluation Conclusion

More information

[ANALYSIS ASSIGNMENT 10]

[ANALYSIS ASSIGNMENT 10] 2009 Pidgin Carlos Simões Higino Silva João Carlos Almeida Miguel Graça Oliveira [ANALYSIS ASSIGNMENT 10] INTRODUCTION The purpose of this project is to evaluate a testing tool chosen by the team and provide

More information

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process Objectives Chapter 19 Verification and Validation Assuring that a software system meets a user s need are to introduce software verification and validation (V&V) and to discuss the distinction between

More information

Lecture 21. Regression Testing Path Spectra. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim

Lecture 21. Regression Testing Path Spectra. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim Lecture 21 Regression Testing Path Spectra Today s Agenda (1) Regression Test Selection Path Spectra Presentation by David (skeptic) Presentation by Sidd (advocate) Presentation by Srinivas (skeptic) Today

More information

Analysis Tool Project

Analysis Tool Project Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University

More information

CERT C++ COMPLIANCE ENFORCEMENT

CERT C++ COMPLIANCE ENFORCEMENT CERT C++ COMPLIANCE ENFORCEMENT AUTOMATED SOURCE CODE ANALYSIS TO MAINTAIN COMPLIANCE SIMPLIFY AND STREAMLINE CERT C++ COMPLIANCE The CERT C++ compliance module reports on dataflow problems, software defects,

More information

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Introduction History, Characteristics of Java language Java Language Basics Data types, Variables, Operators and Expressions Anatomy of a Java Program

More information

Simply-Typed Lambda Calculus

Simply-Typed Lambda Calculus #1 Simply-Typed Lambda Calculus #2 Back to School What is operational semantics? When would you use contextual (small-step) semantics? What is denotational semantics? What is axiomatic semantics? What

More information

Special Topics: Programming Languages

Special Topics: Programming Languages Lecture #23 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 23 Lecture #23 1 Slide 1 Java: History Spring 1990 April 1991: Naughton, Gosling and Sheridan (

More information

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring Java Outline Java Models for variables Types and type checking, type safety Interpretation vs. compilation Reasoning about code CSCI 2600 Spring 2017 2 Java Java is a successor to a number of languages,

More information

Qualities of software and its development

Qualities of software and its development 1 / 17 Qualities of software and its development Miaoqing Huang University of Arkansas Spring 2010 Representative qualities 2 / 17 Correctness Robustness Performance Usability Maintainability Portability

More information

WA1278 Introduction to Java Using Eclipse

WA1278 Introduction to Java Using Eclipse Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc WA1278 Introduction to Java Using Eclipse This course introduces the Java

More information

SE310 Analysis and Design of Software Systems

SE310 Analysis and Design of Software Systems SE310 Analysis and Design of Software Systems Lecture 2-2 Systems Engineering for OO January 17, 2018 Sam Siewert Learning Objective Software Engineering Process? Lifecycle Phases feedback SPIRAL in Agile

More information

Programming Languages FILS Andrei Vasilateanu

Programming Languages FILS Andrei Vasilateanu Programming Languages FILS 2014-2015 Andrei Vasilateanu Course Master: Administration Andrei Vasilateanu, andraevs@gmail.com Teaching Assistants: Radu Serban Grading: Final exam 40% Laboratory 60% 2 Tests

More information

Testing, code coverage and static analysis. COSC345 Software Engineering

Testing, code coverage and static analysis. COSC345 Software Engineering Testing, code coverage and static analysis COSC345 Software Engineering Outline Various testing processes ad hoc / formal / automatic Unit tests and test driven development Code coverage metrics Integration

More information

Integrating MATLAB Analytics into Business-Critical Applications Marta Wilczkowiak Senior Applications Engineer MathWorks

Integrating MATLAB Analytics into Business-Critical Applications Marta Wilczkowiak Senior Applications Engineer MathWorks Integrating MATLAB Analytics into Business-Critical Applications Marta Wilczkowiak Senior Applications Engineer MathWorks 2015 The MathWorks, Inc. 1 Problem statement Democratization: Is it possible to

More information

You must define a class that represents songs. Your class will implement the Song interface in $master/proj2/cs61b/song.java.

You must define a class that represents songs. Your class will implement the Song interface in $master/proj2/cs61b/song.java. CS 61B Summer 2005 Project 2 (spec version 2.0) CD Database Due: July 22, 2005 5pm Overview This project will give you practice with Linked List data structures and sorting algorithms. You will be building

More information

Announcements. Working on requirements this week Work on design, implementation. Types. Lecture 17 CS 169. Outline. Java Types

Announcements. Working on requirements this week Work on design, implementation. Types. Lecture 17 CS 169. Outline. Java Types Announcements Types Working on requirements this week Work on design, implementation Lecture 17 CS 169 Prof. Brewer CS 169 Lecture 16 1 Prof. Brewer CS 169 Lecture 16 2 Outline Type concepts Where do types

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Bionic. Christoph. Code analysis, quality and security overview. July 26 th 2017

Bionic. Christoph. Code analysis, quality and security overview. July 26 th 2017 Bionic Code analysis, quality and security overview Christoph July 26 th 2017 stat /proc/self PhD on reflective OS architectures FOSS enthusiast (Linux fan since kernel 0.95) Tech support @ FraLUG (including

More information

CSE Lecture 3: Objects 2 September Nate Nystrom University of Texas at Arlington

CSE Lecture 3: Objects 2 September Nate Nystrom University of Texas at Arlington CSE 3302 Lecture 3: Objects 2 September 2010 Nate Nystrom University of Texas at Arlington Administration Out of town this afternoon thru Monday HW1 due next Thursday 9/9 Types Last time: strongly typed

More information

Software Architectures. Lecture 6 (part 1)

Software Architectures. Lecture 6 (part 1) Software Architectures Lecture 6 (part 1) 2 Roadmap of the course What is software architecture? Designing Software Architecture Requirements: quality attributes or qualities How to achieve requirements

More information

Java Design Goals. Lecture 32: Java. Java Original implementations slow! Exceptions & Subtyping. - void method readfiles() throws IOException {...}!

Java Design Goals. Lecture 32: Java. Java Original implementations slow! Exceptions & Subtyping. - void method readfiles() throws IOException {...}! Java Design Goals Lecture 32: Java CSC 131 Fall, 2014 Kim Bruce Portability across platforms Reliability Safety (no viruses) Dynamic Linking Multithreaded execution Simplicity and Familiarity Efficiency

More information

Fibonacci in Lisp. Computer Programming: Skills & Concepts (CP1) Programming Languages. Varieties of Programing Language

Fibonacci in Lisp. Computer Programming: Skills & Concepts (CP1) Programming Languages. Varieties of Programing Language Fibonacci in Lisp Computer Programming: Skills & Concepts (CP1) Programming Languages (defun fibonacci (n) (if (or (= n 0) (= n 1)) 1 (+ (fibonacci (- n 1)) (fibonacci (- n 2))))) 22nd November 2010 defun-

More information

Lecture 18: Structure-based Testing

Lecture 18: Structure-based Testing Test Case First Strategy White box testing: Statement Coverage Branch Coverage Condition Coverage Data Path Coverage Lecture 18: Structure-based Testing Testing with good and bad data Testing Object Oriented

More information

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley The Legacy Bridge Problem by Douglas Lyon and Chris Huntley Abstract We present a way to automate the reuse of legacy systems without multiple-inheritance, copying source code, accessing existing code

More information

Operating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst

Operating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst Operating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst Department of Computer Science Why C? Low-level Direct access to memory WYSIWYG (more or less) Effectively

More information

Using Static Code Analysis to Find Bugs Before They Become Failures

Using Static Code Analysis to Find Bugs Before They Become Failures Using Static Code Analysis to Find Bugs Before They Become Failures Presented by Brian Walker Senior Software Engineer, Video Product Line, Tektronix, Inc. Pacific Northwest Software Quality Conference,

More information

UX Research in the Product Lifecycle

UX Research in the Product Lifecycle UX Research in the Product Lifecycle I incorporate how users work into the product early, frequently and iteratively throughout the development lifecycle. This means selecting from a suite of methods and

More information

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized around the notion of procedures Procedural abstraction

More information

Why use inheritance? The most important slide of the lecture. Programming in C++ Reasons for Inheritance (revision) Inheritance in C++

Why use inheritance? The most important slide of the lecture. Programming in C++ Reasons for Inheritance (revision) Inheritance in C++ Session 6 - Inheritance in C++ The most important slide of the lecture Dr Christos Kloukinas City, UoL http://staff.city.ac.uk/c.kloukinas/cpp (slides originally produced by Dr Ross Paterson) Why use inheritance?

More information

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1 Verification and Validation Slide 1 Objectives To introduce software verification and validation and to discuss the distinction between them To describe the program inspection process and its role in V

More information

ECE 2400 / ENGRD 2140 Computer Systems Programming Course Overview

ECE 2400 / ENGRD 2140 Computer Systems Programming Course Overview ECE 2400 / ENGRD 2140 Computer Systems Programming Course Overview Christopher Batten School of Electrical and Computer Engineering Cornell University http://www.csl.cornell.edu/courses/ece2400 What is

More information

Verification and Validation

Verification and Validation Verification and Validation Assuring that a software system meets a user's needs Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 19 Slide 1 Objectives To introduce software verification

More information

Refactoring Without Ropes

Refactoring Without Ropes Refactoring Without Ropes Roger Orr OR/2 Limited The term 'refactoring' has become popular in recent years; but how do we do it safely in actual practice? Refactoring... Improving the design of existing

More information

Rubicon: Scalable Bounded Verification of Web Applications

Rubicon: Scalable Bounded Verification of Web Applications Joseph P. Near Research Statement My research focuses on developing domain-specific static analyses to improve software security and reliability. In contrast to existing approaches, my techniques leverage

More information

The PRISM infrastructure System Architecture and User Interface

The PRISM infrastructure System Architecture and User Interface The PRISM infrastructure System Architecture and User Interface Claes Larsson ECMWF UK PRISM Hamburg D&M presentation p.1/20 Architecture goals PRISM architecture to provide an efficient climate modelling

More information

Tutorial 1 Answers. Question 1

Tutorial 1 Answers. Question 1 Tutorial 1 Answers Question 1 Complexity Software in it what is has to do, is often essentially complex. We can think of software which is accidentally complex such as a large scale e-commerce system (simple

More information

Implementation of Customized FindBugs Detectors

Implementation of Customized FindBugs Detectors Implementation of Customized FindBugs Detectors Jerry Zhang Department of Computer Science University of British Columbia jezhang@cs.ubc.ca ABSTRACT There are a lot of static code analysis tools to automatically

More information

Performance Per Watt. Native code invited back from exile with the Return of the King:

Performance Per Watt. Native code invited back from exile with the Return of the King: 2009-1979-1989 Research: C with Classes, ARM C++ 1989-1999 Mainstream C++ goes to town (& ISO, & space, &c) 1999-2009 Coffee-based languages for productivity Q: Can they do everything important? Native

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized

More information

Jim Mains Director of Business Strategy and Media Services Media Solutions Group, EMC Corporation

Jim Mains Director of Business Strategy and Media Services Media Solutions Group, EMC Corporation Media Asset Management Databases The Heart of the System and Critical Decisions and Steps for Success Jim Mains Director of Business Strategy and Media Services Media Solutions Group, EMC Corporation Agenda

More information

SSC - Web applications and development Introduction and Java Servlet (I)

SSC - Web applications and development Introduction and Java Servlet (I) SSC - Web applications and development Introduction and Java Servlet (I) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics What will we learn

More information

Outline. Subtype Polymorphism, Subtyping vs. Subclassing, Liskov Substitution Principle. Benefits of Subtype Polymorphism. Subtype Polymorphism

Outline. Subtype Polymorphism, Subtyping vs. Subclassing, Liskov Substitution Principle. Benefits of Subtype Polymorphism. Subtype Polymorphism Subtype, Subtyping vs. Subclassing, Liskov Substitution Principle Outline Subtype polymorphism Subtyping vs. subclassing Liskov Substitution Principle (LSP) Function subtyping Java subtyping Composition:

More information

(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days

(800) Toll Free (804) Fax   Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days Course Description This course introduces the Java programming language and how to develop Java applications using Eclipse 3.0. Students learn the syntax of the Java programming language, object-oriented

More information

Semantic Analysis. Lecture 9. February 7, 2018

Semantic Analysis. Lecture 9. February 7, 2018 Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average

More information

Don t Be the Developer Whose Rocket Crashes on Lift off LDRA Ltd

Don t Be the Developer Whose Rocket Crashes on Lift off LDRA Ltd Don t Be the Developer Whose Rocket Crashes on Lift off 2015 LDRA Ltd Cost of Software Defects Consider the European Space Agency s Ariane 5 flight 501 on Tuesday, June 4 1996 Due to an error in the software

More information

Formal Methods for Java

Formal Methods for Java Formal Methods for Java Lecture 1: Introduction Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg October 26, 2011 Jochen Hoenicke (Software Engineering) Formal Methods for Java October

More information

From Feature to Code. SCRUM + NetBeans RCP + Featureous. John Kostaras JCrete August 2014

From Feature to Code. SCRUM + NetBeans RCP + Featureous. John Kostaras JCrete August 2014 From Feature to Code John Kostaras JCrete 25-29 August 2014 Agenda SCRUM NetBeans RCP Featureous 7/9/2014 1 SCRUM 7/9/2014 2 What is SCRUM a methodology an agile framework for software development relies

More information

Vertical Profiling: Understanding the Behavior of Object-Oriented Applications

Vertical Profiling: Understanding the Behavior of Object-Oriented Applications Vertical Profiling: Understanding the Behavior of Object-Oriented Applications Matthias Hauswirth, Amer Diwan University of Colorado at Boulder Peter F. Sweeney, Michael Hind IBM Thomas J. Watson Research

More information

Advanced Program Analyses for Object-oriented Systems

Advanced Program Analyses for Object-oriented Systems Advanced Program Analyses for Object-oriented Systems Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ July 2007 ACACES-3 July 2007 BG Ryder 1 Lecture

More information

Markus Völter

Markus Völter of Markus Völter voelter@acm.org www.voelter.de @markusvoelter Examples 1 Healthcare Context & Motivation Mobile Apps that help patients w/ treatments Monitor side-effects and recommend actions Manage

More information

Title: ====== Open Research Compiler (ORC): Proliferation of Technologies and Tools

Title: ====== Open Research Compiler (ORC): Proliferation of Technologies and Tools Tutorial Proposal to Micro-36 Title: ====== Open Research Compiler (ORC): Proliferation of Technologies and Tools Abstract: ========= Open Research Compiler (ORC) has been well adopted by the research

More information

1Z0-808 oracle. Number: 1Z0-808 Passing Score: 800 Time Limit: 120 min.

1Z0-808 oracle.   Number: 1Z0-808 Passing Score: 800 Time Limit: 120 min. 1Z0-808 oracle Number: 1Z0-808 Passing Score: 800 Time Limit: 120 min Exam A QUESTION 1 What is the name of the Java concept that uses access modifiers to protect variables and hide them within a class?

More information

1z z Java SE 8 Programmer I

1z z Java SE 8 Programmer I 1z0-808 Number: 1z0-808 Passing Score: 800 Time Limit: 120 min File Version: 4.4 1z0-808 Java SE 8 Programmer I Exam A QUESTION 1 Given: What is the result? A. 200.0 : 100.0 B. 400.0 : 200.0 C. 400.0 :

More information

SAFEREFACTOR Tool for Checking Refactoring Safety

SAFEREFACTOR Tool for Checking Refactoring Safety SAFEREFACTOR Tool for Checking Refactoring Safety Gustavo Soares 1, Diego Cavalcanti 1, Rohit Gheyi 1, Tiago Massoni 1, Dalton Serey 1,Márcio Cornélio 2 1 Department of Systems and Computing UFCG 2 Department

More information

Implementation Architecture

Implementation Architecture Implementation Architecture Software Architecture VO/KU (707023/707024) Roman Kern ISDS, TU Graz 2017-11-15 Roman Kern (ISDS, TU Graz) Implementation Architecture 2017-11-15 1 / 54 Outline 1 Definition

More information

COMPLEX SYSTEMS. Today. Complex Systems. Kinds of Systems. Embedded Systems. Software Engineering. Lectures 20: Engineering Complex Systems

COMPLEX SYSTEMS. Today. Complex Systems. Kinds of Systems. Embedded Systems. Software Engineering. Lectures 20: Engineering Complex Systems Chair of Software Engineering Today Software Engineering Prof. Dr. Bertrand Meyer Dr. Manuel Oriol Dr. Bernd Schoeller Lectures 20: Engineering Complex Systems Complex Systems What is it? Examples Technologies

More information

Prototype Environment for Refactoring Clean Programs

Prototype Environment for Refactoring Clean Programs Prototype Environment for Refactoring Clean Programs Extended abstract Rozália Szabó-Nacsa, Péter Diviánszky, Zoltán Horváth Department of Software Technology and Methodology, Eötvös Loránd University,

More information

CSE 374 Programming Concepts & Tools

CSE 374 Programming Concepts & Tools CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 11 gdb and Debugging 1 Administrivia HW4 out now, due next Thursday, Oct. 26, 11 pm: C code and libraries. Some tools: gdb (debugger)

More information

Massive Data Algorithmics

Massive Data Algorithmics Massive Data Algorithmics University of Aarhus Department of Computer Science Faglig Dag, January 17, 2008 running time The core problem... Normal algorithm I/O-efficient algorithm data size Main memory

More information

SOFTWARE CONFIGURATION MANAGEMENT

SOFTWARE CONFIGURATION MANAGEMENT SOFTWARE CONFIGURATION MANAGEMENT Cape Town SPIN - Albert Visagie - 19 March 2008 Goals Where were we? And get back there reliably. Where are we? How did we get here? Which bugs were fixed in this version?

More information

IDE for medical device software development. Hyun-Do Lee, Field Application Engineer

IDE for medical device software development. Hyun-Do Lee, Field Application Engineer IDE for medical device software development Hyun-Do Lee, Field Application Engineer Agenda SW Validation Functional safety certified tool IAR Embedded Workbench Code Analysis tools SW Validation Certifications

More information

Internal Classes and Exceptions

Internal Classes and Exceptions Internal Classes and Exceptions Object Orientated Programming in Java Benjamin Kenwright Outline Exceptions and Internal Classes Why exception handling makes your code more manageable and reliable Today

More information

Advanced Software Development with MATLAB

Advanced Software Development with MATLAB Advanced Software Development with MATLAB From research and prototype to production 2017 The MathWorks, Inc. 1 What Are Your Software Development Concerns? Accuracy Compatibility Cost Developer Expertise

More information

Ch 1: The Architecture Business Cycle

Ch 1: The Architecture Business Cycle Ch 1: The Architecture Business Cycle For decades, software designers have been taught to build systems based exclusively on the technical requirements. Software architecture encompasses the structures

More information

Software Architecture. Lecture 5

Software Architecture. Lecture 5 Software Architecture Lecture 5 Roadmap of the course What is software architecture? Designing Software Architecture Requirements: quality attributes or qualities How to achieve requirements : tactics

More information

Basic Principles of analysis and testing software

Basic Principles of analysis and testing software Basic Principles of analysis and testing software Software Reliability and Testing - Barbara Russo SwSE - Software and Systems Engineering Research Group 1 Basic principles of analysis and testing As in

More information

CS152: Programming Languages. Lecture 23 Advanced Concepts in Object-Oriented Programming. Dan Grossman Spring 2011

CS152: Programming Languages. Lecture 23 Advanced Concepts in Object-Oriented Programming. Dan Grossman Spring 2011 CS152: Programming Languages Lecture 23 Advanced Concepts in Object-Oriented Programming Dan Grossman Spring 2011 So far... The difference between OOP and records of functions with shared private state

More information

How We Refactor, and How We Know It

How We Refactor, and How We Know It Emerson Murphy-Hill, Chris Parnin, Andrew P. Black How We Refactor, and How We Know It Urs Fässler 30.03.2010 Urs Fässler () How We Refactor, and How We Know It 30.03.2010 1 / 14 Refactoring Definition

More information

Compositional Model Based Software Development

Compositional Model Based Software Development Compositional Model Based Software Development Prof. Dr. Bernhard Rumpe http://www.se-rwth.de/ Seite 2 Our Working Groups and Topics Automotive / Robotics Autonomous driving Functional architecture Variability

More information

The Virtual Brick Road Achievements and Challenges in NFV Space. Diego R. Lopez Telefónica NFV ISG Technical Manager October 2013

The Virtual Brick Road Achievements and Challenges in NFV Space. Diego R. Lopez Telefónica NFV ISG Technical Manager October 2013 The Virtual Brick Road Achievements and Challenges in NFV Space Diego R. Lopez Telefónica NFV ISG Technical Manager October 2013 The NFV Concept A means to make the network more flexible and simple by

More information

Scalable Software Engineering What is it? Why and How?

Scalable Software Engineering What is it? Why and How? Scalable Software Engineering What is it? Why and How? S. C. Kothari Electrical & Computer Engineering Department Iowa State University Contact: kothari@iastate.edu, 515-441-4412 January 25, 2008 Copyright

More information

Applications of Program analysis in Model-Based Design

Applications of Program analysis in Model-Based Design Applications of Program analysis in Model-Based Design Prahlad Sampath (Prahlad.Sampath@mathworks.com) 2018 by The MathWorks, Inc., MATLAB, Simulink, Stateflow, are registered trademarks of The MathWorks,

More information

Analyses, Hardware/Software Compilation, Code Optimization for Complex Dataflow HPC Applications

Analyses, Hardware/Software Compilation, Code Optimization for Complex Dataflow HPC Applications Analyses, Hardware/Software Compilation, Code Optimization for Complex Dataflow HPC Applications CASH team proposal (Compilation and Analyses for Software and Hardware) Matthieu Moy and Christophe Alias

More information

Advanced Caching Techniques (2) Department of Electrical Engineering Stanford University

Advanced Caching Techniques (2) Department of Electrical Engineering Stanford University Lecture 4: Advanced Caching Techniques (2) Department of Electrical Engineering Stanford University http://eeclass.stanford.edu/ee282 Lecture 4-1 Announcements HW1 is out (handout and online) Due on 10/15

More information