Create Presentation
Download Presentation

Download Presentation

Advanced Topics in Software Engineering

Download Presentation
## Advanced Topics in Software Engineering

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Advanced Topics in Software Engineering**Marjan Sirjani Tehran University Faculty of Engineering ECE Department Tehran, 1383-1384**Subjects to be covered**• Modeling concurrency • Formal verification methods • Transition systems • Petri Nets • Process Algebra • Actor Model • Rebeca: an actor-based model • Reo: a coordination language • Constraint automata**Models of concurrency**The Temporal Logic of Reactive and Concurrent Systems (Specification), Z. Manna, A. Pnueli, Springer-Verlag, 1992 Part one: Models of Concurrency • Process algebra Communicating Sequential Processes C.A.R. Hoare, 2004**Actors**Actors: a Unifying Model for Parallel and Distributed Computing, Agha G., Kim W., Open Systems Laboratory, 1998. • Rebeca Modeling and Verification of Reactive Systems using Rebeca, Sirjani M., Movaghar A, Shali A., and de Boer F., Fundamenta Informaticae, Dec. 2004**Coordination languages**• Reo: A Channel-based Coordination Model for Component Composition, F. Arbab, Mathematical Structures in Computer Science, 2004 • Modeling Component Connectors in Reo by Constraint Automata, F. Arbab, C. Baier, J.J.M.M. Rutten and M. Sirjani, in Proceedings of FOCLASA'03, Marseille, France, September 2003, ENTCS, Elsevier Science.**Overview**• Concurrent and Reactive Systems • Formal methods • Modeling language • Process algebra, Petri nets, Actor languages • Specification language • Temporal logic, Automata • Analysis • Theorem proving, Model checking**Models of Concurrency**Manna, chapter 1,2**Chapter 1**• 1.1 The Generic Model • 1.2 Model 1: Transition Diagrams • 1.3 Model 2: Shared-Variables Text • 1.4 Semantics of Shared-Variables Text • 1.5 Structural Relations Between Statements • 1.6 Behavioral Equivalence • 1.7 Grouped Statements • 1.8 Semaphore Statements • 1.9 Region Statements • 1.10 Model 3: Message-Passing Text • 1.11 Model 4: Petri-Nets**Chapter 1- Basic Models**• Programs and systems they control • Transformational • Reactive**Transformational program**• More conventional • Produce final result at the end of a terminating computation • A function from an initial state to a final state • Appropriately specified by properly characterizing the relation between initial and final states: predicate logic**Reactive program**• Not to produce a final result but to maintain some ongoing interaction with its environment**Reactivity and Concurrency**• Program and its environment act concurrently • in transformational case, they act sequentially • When we have parallel processes, even if the whole program has a transformational role, it should be analyzed as a reactive system.**Reactive systems**• Communication • Coordination**Communication**• Shared variables • Message passing • Remote procedure calls**Coordination**• Semaphores • Critical regions • Monitors • Handshaking • Rendezvous • Asynchronous transmission**The Generic Model**• V – Vocabulary • E – Expressions • A – Assertions • I - Interpretations**V – Vocabulary**• A countable set of typed variables. • Data variables • Range over data domains used in programs, such as booleans, integers, or lists. • Control variables • Indicate progress in the execution of a program, range over locations in the program.**E – Expressions**• Expressions are constructed from the variables of V and constants (such as 0, (empty list), (empty set)) to which functions (such as +,•,) and predicates (such as >, null, and ) over the appropriate domains (such as integers, lists, and sets) are applied. • x+3y hd(u) •tl(v) A B**A – Assertions**• Assertions are constructed out of boolean expressions using boolean connectives and quantification(,) over some variables that appear in the expressions.**I – Interpretation**• An interpretation I I of a set of typed variables VV is a mapping that assigns to each variable y V a value I[y] in the domain of y. • If I[]=T, we say I satisfies : I |= **Basic Transition System**A basic transition system (,,,), intended to represent a reactive program. • ={u1,…,u2} V – a finite set of flexible state variables. • - a set of states. • - a finite set of transitions. • - an initial condition.**={u1,…,u2} V – a finite set of flexible state**variables. • Data variables • Explicitly declared and manipulated • Control variables • Represent progress in the execution of the program (label of a statement)** - a set of states.**• Each state s in is an interpretation of , assigning to each variable u in a value over its domain, denoted by s[u]. • A state s that satisfies an assertion , i.e., s |= , is sometimes referred to as –state.** - a finite set of transitions.**• Each transition in T represents a state-transforming action of the system and is defined as a function : 2 that maps a state s in into the (possibly empty) set of states (s) that can be obtained by applying action to state s.** - an initial condition.**• This assertion characterizes the states at which execution of the program can begin. • A state s that satisfies , i.e., s |= , is called an initial state.**The Transition Relation **• Each transition is characterized by an assertion, called the transition relation (,’) (,’): C () (y’1=e1) … (y’k=ek) Enabling condition: C () Conjunction of modification statements**Enabled and disabled transitions**• Idling and diligent transitions • Computation: infinite sequence of steps • Computation prefix • Reachable states**Concrete models**• Model 1: Transition Diagram • Model 2: Shared-Variables text • Model 3: Message-Passing text • Model 4: Petri Nets**Model 1 : Transition diagrams**• Program P, and processes Pi • P::[declaration][P1 || P2 … ||Pm] m>=1 • Data variables Y={y1, …, yn} n>=1 • Shared for all the processes**Declarations**• At the head of the program • Modes, Types, Initial conditions mode var, …,var: type where i • Mode: in, local, out • Types: basic (int,char), structured (array, list, set) • Assertion i , imposes constraint on the values of some of the variables in this statement**in k,n :integer where 0kn**local y1,y2 : integer where y1=n y2=1 out b : integer where b=1 Data precondition of the program i : 0kn y1=n y2=1 b=1**Processes**• Each process Pi is represented by a transition diagram (directed graph) • Nodes: locations • For Pi : Li ={li0, li1 , … , liti} • Entry and exit locations • Edges: (atomic) instructions • Guarded assignment • c [(y1, …):=(e1, …)] • State of a program: Control variables (i current location of control in Pi)+ data variables**Diagrams as Basic Transition Systems**• State variables • States • Transition • Initial condition**State variables**• All the data and control variables • = {1, …, m, y1, … , yn} • States • All the possible interpretations that assign to the state variables values over their respective domains. • Domain of control variable I is the set of locations Li**Transition**• Idling transition I is defined by transition relation I : T • Diligent transitions: labeled edges that appear within the processes.**C [yi := ei]**l’ l • is the edge. : (i =l) c (’i=l’) (yi =ei)**Initial condition**• Program P: [dcl where ][P1 || … || Pm] • Initial condition : /\i=1m (i = loi) • A process is enabled, or disabled on a state.**Example: Binomial coefficient**( nk ) = (n(n-1)…(n-k+1)) / (1.2….k)**Representing Concurrency by Interleaving**X=0,Y=0 X=0,Y=0 Y:=1 X:=1 X:=1 Y:=1 X:=1 Y:=1 Process P1 Process P2 Program B Program A**Scheduling**• The choice of the enabled transition to be executed next. • A sequence of choices that leads to a complete computation is called a schedule.**Chapter 1**• 1.1 The Generic Model • 1.2 Model 1: Transition Diagrams • 1.3 Model 2: Shared-Variables Text • 1.4 Semantics of Shared-Variables Text • 1.5 Structural Relations Between Statements • 1.6 Behavioral Equivalence • 1.7 Grouped Statements • 1.8 Semaphore Statements • 1.9 Region Statements • 1.10 Model 3: Message-Passing Text • 1.11 Model 4: Petri-Nets**Model 2: shared-variable text**• In transition diagram representation of shared-variables programs • We only have guarded assignment • We need structured constructs to allow hierarchical programs • readability, modifiability, analysis**Shared-variable text language**• Basic (simple) statements • Grouped statements (atomic execution) • Synchronization statements • Semaphore • Region statement**Simple statements**Basic steps, atomic • Skip: a trivial do-nothing statement • skip • Assignment: for ŷa list of variables andēa list of expressions of the same length and corresponding types. • ŷ:=ē • Await: for c a boolean expression • await c**awaitc**• c is the guard • Wait until c becomes true, and then terminates. • What happens if in a sequential program we have an await ?**In which states is awaitc enabled?**• What about skip and assignment statements?**Compound statements**A controlling frame applied to one or more simpler statements (body). May require several computation steps. • Conditional (if then else) • Concatenation (sequential composition) • Selection (non-deterministic choice) • Cooperation (parallel composition) • While (while do) • Block (a block with local dcls, like in Algol)**Conditional**• If c thenS1 elseS2 • Step1: evaluate c • Step 2: execute one of statements What is the difference between conditional statement and await (await c)?**Concatenation**• S1;S2 • Step 1: first step of S1 • Subsequent steps: rest of S1 and then S2 • Multiple concatenation statement S • S1;S2; …;Sn • Si children of S