InvariantDiscovery - 272 Software Engineering Fall 2008...

Info icon This preview shows pages 1–8. Sign up to view the full content.

View Full Document Right Arrow Icon
272: Software Engineering Fall 2008 Instructor: Tevfik Bultan Lecture 16: Dynamic Invariant Discovery
Image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Specifications We saw various specification techniques contracts for classes JML object oriented design OCL, Alloy interfaces Interface grammars, interface state machines All these specification techniques help software developers to document the design decisions at a higher level of abstraction than the code
Image of page 2
Specifications There is one problem with software specifications Software developers do not like to write them! I personally believe that it is all about cost/benefit ratio If there is enough benefit in writing specifications reduced development time, more reliable programs, etc. then people will write specifications Maybe current tools and techniques used in software development do not provide enough benefit for writing specifications This may change in the future based on all the techniques and tools we discussed in this course
Image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Lack of Specifications However, the fact remains, there is a lot of code out there with no specifications maybe even no comments What should we do about them? You may say “Why do I care? I write detailed specifications when I develop software.” There may be some code written by somebody else that you need to maintain, modify, or reuse none of the original developers may still be around there may not be any specifications the specifications may not have been maintained with the software
Image of page 4
Reverse Engineering Reverse engineering is the process of analyzing a subject system to identify the system’s components and their inter-relationships, and to create representations of the system in another form or at a higher level of abstraction Examples Producing call graphs or control flow graphs from the source code Generating class diagrams from the source code Two types of reverse engineering Redocumentation : the creation or revision of a semantically equivalent representation within the same relative abstraction layer Design recovery : involves identifying meaningful higher level abstractions beyond those obtained directly by examining the system itself
Image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Reverse Engineering The main goal is to help with the program comprehension Most of the time reverse engineering makes up for lack of good documentation We already saw a reverse engineering technique (a design recovery technique): Automated interface extraction
Image of page 6
Dynamically Discovering Likely Invariants Today I will talk about another reverse engineering approach References ``Dynamically discovering likely program invariants to support program evolution,’’ Michael D. Ernst, Jake Cockrell, William G.
Image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 8
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern