1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Lecture # 2 : Process Models
Alternative Approach to Systems Analysis Structured analysis
Design Concepts and Principles
A survey of techniques for precise program slicing Komondoor V. Raghavan Indian Institute of Science, Bangalore.
Software Design Deriving a solution which satisfies software requirements.
OASIS Reference Model for Service Oriented Architecture 1.0
Object-Oriented Analysis and Design
SSP Re-hosting System Development: CLBM Overview and Module Recognition SSP Team Department of ECE Stevens Institute of Technology Presented by Hongbing.
Software Testing and Quality Assurance
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Software Requirements
1 Information Retrieval and Extraction 資訊檢索與擷取 Chia-Hui Chang, Assistant Professor Dept. of Computer Science & Information Engineering National Central.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
2 1 Chapter 2 Data Model Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel.
Why Analysis Process Refer to earlier chapters Models what the system will do makes it easier for understanding no environment considered (hence, system.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
Chapter 8 Architecture Analysis. 8 – Architecture Analysis 8.1 Analysis Techniques 8.2 Quantitative Analysis  Performance Views  Performance.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
CMSC 345 Fall 2000 Unit Testing. The testing process.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
An Introduction to Software Architecture
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Software Testing Testing types Testing strategy Testing principles.
SOFTWARE DESIGN.
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
Software Design Deriving a solution which satisfies software requirements.
Methodology - Conceptual Database Design. 2 Design Methodology u Structured approach that uses procedures, techniques, tools, and documentation aids to.
1/26/2004TCSS545A Isabelle Bichindaritz1 Database Management Systems Design Methodology.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
SE: CHAPTER 7 Writing The Program
Chapter 7 System models.
CS 4310: Software Engineering Lecture 4 System Modeling The Analysis Stage.
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Information Systems Engineering. Lecture Outline Information Systems Architecture Information System Architecture components Information Engineering Phases.
UML diagrams What is UML UML diagrams –Static modeoing –Dynamic modeling 1.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
Modelling Class T07 Conceptual Modelling – Behaviour References: –Conceptual Modeling of Information Systems (Chapters 11, 12, 13 and 14)
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Generic Tasks by Ihab M. Amer Graduate Student Computer Science Dept. AUC, Cairo, Egypt.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
Chapter 5 System Modeling. What is System modeling? System modeling is the process of developing abstract models of a system, with each model presenting.
Finite State Machines (FSM) OR Finite State Automation (FSA) - are models of the behaviors of a system or a complex object, with a limited number of defined.
Chapter : 9 Architectural Design
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
OBJECT-ORIENTED TESTING. TESTING OOA AND OOD MODELS Analysis and design models cannot be tested in the conventional sense. However, formal technical reviews.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Database Systems: Design, Implementation, and Management Tenth Edition
Algorithms and Problem Solving
Lecture 9- Design Concepts and Principles
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Software Architecture
Lecture 9- Design Concepts and Principles
An Introduction to Software Architecture
Review of Week 1 Database DBMS File systems vs. database systems
Algorithms and Problem Solving
Presentation transcript:

1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis

2 Overview  Software Reverse Engineering  Definitions  Program Understanding  Plan Recognition

3 Reverse Engineering “Reverse engineering” term derived from hardware development – the process of discovering of how competitor’s system worked. –in software engineering, it is the process of discovering how your own system works. Software systems become difficult to understand and maintain since over time their size and complexity has had a continuous evolution.

4 Reverse engineering is usually applied to large legacy systems: – to make them easier to understand and maintain –to increase the potential for continued evolution. Often, the most fundamental reverse engineering reason is: – structural re-documentation. the structure of the system is derived with some of the design architecture recaptured. Reverse Engineering

5 Reverse Engineering Terminology Design recovery –is a subset of reverse engineering in which domain knowledge, external information, and deduction or fuzzy reasoning are added to the observations of the subject system to identify meaningful higher level abstractions. Design recovery recreates design abstractions from a combination of code, existing design documentation (if available), personal experience, and general knowledge about problem and application domains. Redocumentation –is the creation or revision of a semantically equivalent representation within the same relative abstraction level.. Redocumentation is the simplest and oldest form of reverse engineering, and can be considered to be an unintrusive, weak form of restructuring.

6 forward and reverse engineering can be illustrated as: Specifications Design Code Behavior Specifications Design Code Behavior Forward Engineering Reverse Engineering

7 Two distinct phases 1.identify the system’s components and any dependencies among them 2.a discovery phase which tends to be highly interactive and may involve: constructing the hierarchical subsystem components based on cohesion and coupling principles, the reconstruction of design and requirements specifications providing a ‘domain model’ and the matching of the model to the code. Reverse Engineering

8 Reverse engineering tends to be influenced heavily by the amount of domain knowledge available: –limits the degree of automation that is possible –limits the level of abstraction obtained. The uncovering of entities allows them to be classified and to determine shared properties and relationship attributes. Reverse Engineering

9 The concepts of aggregation can be applied to determine the part-of relationship between a composite and its constituents. Generalization and specialization allows an element to be related to a more general or specific element. Possible to apply grouping to form a set of elements and their necessary relationships to form a context.

10 various activities are performed during reverse engineering: –gathering (identifying) the software artifacts usually obtained from: specification/design documents, the code, any related documentation, application knowledge and syntactic pattern matching to identify program (functional) ‘units’. Reverse Engineering

11 –creating the repository of information: filter out immaterial information while selecting relevant information. –construct the abstraction layers at: the structural, functional and application levels. –May need to perform semantic and behavioral matching during this process. Reverse Engineering

12 the software system can be reasoned about in may different views: –structural view: the basis is from structure charts, call graphs (unit interaction), module and subsystem graphs, various metrics and organizational views [many can be constructed with CASE tools]. –functional view: usually can be obtained from the design, specification and requirements documents. –behavioral views: conceptual, temporal, process, domain and user interactive views. Reverse Engineering

13 Program Understanding A program is understood : –when it is possible to explain the program, its structure, behavior, how/what it effects in its operational context and its relationships to its operational domain. for large legacy systems, the program understanding phase is rather difficult,

14 human-oriented concepts are generally decoupled from the formal patterns of their algorithms –they involve an arbitrary semantic mapping from their operations on numbers and data to computational intentions based on their domain concepts. Automatic program analysis is usually quite limited in knowledge acquisition and the concept matching process. Program Understanding

15 Some general tool directions include: –Parsing and text analysis –Flow analysis (call graphs, control flow graphs, etc.) –Complexity analysis and anomaly detection (complexity measures, dataflow analysis, etc.) –Program segmentation (different slicing techniques to isolate behavior). Program Understanding

16 Program Segmentation Try to isolate areas of the implementation such that program understanding can be constrained to these segments which potentially implement the desired program behavior under consideration. Program slicing techniques can be applied at the source code level to isolate or highlight different behavioral properties of the program.

17 condition-based slice: in many cases, programs are structured along conditional tests. –for example, we could find all program slices for which the condition phone_off-hook or phone_ringing, etc. are true. Program Segmentation

18 in an accounting program, the tax paid and the collection method may be dependent on the province and tax_payable. Thus it may be desirable to locate areas of the code that are reachable under the globally specified condition that province=Ontario and tax=payable. In this case the user specifies the logical expression and optionally a slicing range (where to start and end slicing). Then all reachable flow paths for which the logical expression is true are found for examination. Program Segmentation

19 forward slice: many functions base computations on the values of the input variables. –Given a variable and the slicing range, it is possible to determine all statements which can be potentially affected by that variable –Similar to using dataflow techniques –This process tends to be recursive in nature since all variables in left-hand side of an included statement are repeatedly used as slicing variables. Program Segmentation

20 backward slice: basically, the classical interpretation of a slice: – those statements that can affect the value of a variable (produce some result). –This process is also recursive in nature. Program Segmentation

21 event-based slices: –for a given input event to the system, obtain the program segment which can be executed based on the occurrence of the event. –Slice can be obtained for input or output events (program segment(s) that could potentially be executed to generate the specific output event). –This is often useful in object-oriented implementations providing a list of objects and methods involved. Program Segmentation

22 Recognizing Plans we define a cliché as a frequently occurring pattern found in programs (e.g. an algorithm, some domain specific pattern or data structure). we define a plan as a representation of a cliché –e.g. using flow graphs, source code templates, and sets of logical constraints. –Then an understanding problem may be to locate the clichés using plans.

23 the plans can be viewed as describing design elements using common implementation patterns. –Thus the program contains a design element when a portion of its code matches one of the implementation patterns. Recognizing Plans

24 Program Understanding Strategies (with plans ) top-down : –begin with knowledge about the goals the program should achieve, –determine which plans can achieve these goals, and –attempt to associate these plans to the actual program code. –this process would require matching rules or constraints to determine how this code achieves various subgoals within a plan, and difference rules to recognize how they differ from code expected by the plan.

25 –This requires detailed advance knowledge of the goals of the program which in many cases may not be achievable. –Difficult to perform partial understanding since a program fragment is only ‘understood’ when it is connected to a top-level program goal.

26 bottom-up: starts at the code level, determines which plans might have this code as a component and attempt to infer higher level goals from these plans. –Continue until the programmer’s actual goals are recognized or the understander runs out of candidate plans to match against the goals. –Tends to suffer from a potential combinatorial explosion of possible paths since each code segment could be a part of a large number of plans, etc. –This is possibly the greatest limitation (for length and complexity of programs applied to) for use of this approach.

27 Automated program understanders have in the past avoided the size of the search space by either – restricting the top-down searches using a limited number of plans or –performing bottom-up searches using a library containing a limited number of mostly domain- independent plans. But understanding real-world software requires a bottom-up search and a reasonably large library. –These programs are naturally described in terms of domain-specific objects and operations; – thus we need to recognize both the plans which carry out these operations as well as the plans which represent the objects being manipulated.