230 likes | 327 Views
From Natural Language Requirements to Executable Models of Software Components. Barrett R. Bryant Beum-Seuk Lee Fei Cao Wei Zhao Carol C. Burt Jeffrey G. Gray Rajeev R. Raje Andrew M. Olson Mikhail Auguston. Component Deployment. Distributed Resource Discovery. Component
E N D
From Natural Language Requirements to Executable Models of Software Components
Barrett R. Bryant Beum-Seuk Lee Fei Cao Wei Zhao Carol C. Burt Jeffrey G. Gray Rajeev R. Raje Andrew M. Olson Mikhail Auguston
Component Deployment Distributed Resource Discovery Component Quality Measures Modified Query Query Component Developer System Integrator Generative Domain Model Standards No Yes Deploy (End) Domain Expert (Start) Quality Validation UniFrame Process
Key Issues Define a process for construction of heterogeneous distributed systems from pre-existing components who advertise functional and non-functional contracts for quality assurance. • Distributed Resource Discovery - component specification for deployment and location on the network • Architecture-based Interoperability – generation of glue/wrapper code to connect heterogeneous components • Validation of Quality Requirements – specification of Quality of Service contracts of components
Possible Solutions • Unified Meta-Component Model (UMM) - informal specification of component functional and non-functional contracts • Two-Level Grammar (TLG) – formal specification language for describing UMM and domain-specific information • Model Driven Architecture (MDA) – model-based interoperability among heterogeneous components
ATM - Requirements Document Bank keeps list of accounts. It verifies ID and PIN giving the balance and updates the balance with ID. An account has three data fields; ID, PIN, and balance. ID and PIN are integers and balance is a real number. ATM has 3 service types; withdraw, deposit, and balance check. For each service first it verifies ID and PIN from the bank giving the balance. ATM withdraws an amount with ID and PIN giving the balance in the following sequence. If the amount is less than or equal to the balance then it decreases the balance by the amount. And then it updates the balance in the bank with ID. ATM deposits an amount with ID and PIN giving the balance in the following order. It increases the balance by amount and then updates the balance in the bank with ID. ATM checks the balance with ID and PIN giving the balance.
ATM - Requirements Document in XML <document> <p> <s>Bank keeps list of accounts.</s> </p> <p> <s>It verifies ID and PIN giving the balance in the following order.</s> <s>It selects the account from the list of accounts where the ID of the account is equal to the ID and the PIN of the account is equal to the PIN.</s> <s>And then it assigns the balance of the account into the balance.</s> </p> <p> <s>It updates the balance with ID in the following sequence.</s> . . . . . </document>
Two-Level Grammar • Syntax class Class_Name. Data_Name {, Data_Name} :: Data_Type {, Data_Type}. Rule_Name : Rule_Body {, Rule_Body}. end class. • Example class Account. Id, PIN :: Integer. Balance, Amount :: Float. withdraw Amount : Amount <= Balance, Balance := Balance - Amount. deposit Amount : … end class. • Properties • Natural-language-like syntax Flexibility • Formal notation Formalism • Object-oriented structure Abstraction • Logic/Functional operation Computation
ATM – Two-Level Grammar class ATM. Balance, Amount :: Float. ID, PIN :: Integer. withdraw Amount with ID and PIN : Bank verify ID and PIN giving Account, Account withdraw Amount. deposit Amount with ID and PIN : Bank verify ID and PIN giving Account, Account deposit Amount. check balance with ID and PIN giving Balance : Bank verify ID and PIN giving Account, Account getBalance Balance. end class.
ATM – Vienna Development Method class ATM instance variables private bank : Bank operations public withdraw : real * int * int ==> void withdraw (amount, ID, PIN) == (dcl account : Account; account := bank . verify (ID, PIN); account . withdraw (amount); ); public deposit : real * int * int ==> void deposit (amount, ID, PIN) == (dcl account : Account; account := bank . verify (ID, PIN); account . deposit (amount); ); public checkBalance : int * int ==> real checkBalance (ID, PIN) == (dcl account : Account; account := bank.verify (ID, PIN); return account . getBalance (); ); end ATM
Model Driven Architecture • OMG initiative for interoperating between different component technologies (http://www.omg.org/mda) • Application logic of components conforming to some domain specification is expressed as a Platform Independent Model (PIM) • PIM is converted into a Platform Specific Model (PSM) using a specific component technology
Problems • Application domain logic is typically expressed in natural language (NL) • Automated tools are needed to develop the domain specifications from the NL requirements • Transformation from PIM’s to PSM’s should also be automated or semi-automated, based upon technology domain knowledge • Models must consider not only functional aspects of domain logic, but also non-functional properties (i.e., Quality of Service – QoS)
uav.navair.navy.mil/home.htm Video Streaming Naval Application
Model Transformation • Aspect-oriented approach enhanced with TLG formalism • Augment Abstraction with Separation • Generate PSM by weaving separated PIM level modules together with various domain knowledge
Model Transformation Domain knowledge (Technology,etc..) PIM Aspect Weaver PSM
Approach Merits • Natural language as the starting point for developing the business domain models • Sufficient automation that components may be modified at the model level or even the natural language level as opposed to the code level • Complement MDA with formal methods and QoS • Targeting the construction of heterogeneous distributed software systems by the automated generation of glue/wrapper code elicited from technology domain knowledge
Acknowledgements This research was supported by U. S. Army Research Laboratory and U. S. Army Research Office Grant DAAD190-00-1-0350 and U. S. Office of Naval Research Grant N000014-01-01-0746.
Webpage http://www.cis.uab.edu/UniFrame