domain modeling for mda using activity diagrams · 2009-05-28 · domain modeling for mda using...

61
Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services, Austin, Texas, 78751 [email protected]

Upload: others

Post on 15-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Domain Modeling for MDA Using Activity Diagrams

Srinivas Nedunuri,COMSYS Consultant,Texas Dept. of Human Services, Austin, Texas, [email protected]

Page 2: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Outline

❚ Introduction to software reuse at TDHS❚ MDA❚ Domains and Domain Engineering❚ Specifying inter-object behavior❚ Activity Diagrams❚ Example: Application Security and its sub-domains❚ Transforming PIMs to PSMs❚ Issues regarding a full blown code generator❚ Looking ahead

Page 3: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Software Reuse at TDHS

❚ A long term initiative to develop reusable assets that can be reused across a wide variety of applications across the State (and beyond).

❚ First area to be chosen: Application Security

Page 4: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Model Driven Architecture (MDA) Initiative

❚ “A complete MDA specification consists of a definitive platform-independent base UML™ model (PIM), plus one or more platform-specific models (PSM) and interface definition sets, each describing how the base model is implemented on a different middleware platform.”

Page 5: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Basic Idea

{PIM} x {PDM} => PSMExample:

Loan Processing + Finance + Security + ...x

J2EE App Server + EJBs + Oracle DB + LDAP + Web Browser

=>Loan Processing App

The PIMs (and PDMs) are domain models

Page 6: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Intent of PIM and PSM

❚ The PIM defines a complete model (the interface model) against which client domains will program.

❚ The PSM embodies that interface model in its implementation but it may not be easily visible (c.f. source -> assembly)

❚ This is true separation of interface from implementation

Page 7: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Outline

✔ Introduction to software reuse at TDHS✔ MDA❚ Domains and Domain Engineering❚ Specifying inter-object behavior❚ Activity Diagrams❚ Example: Application Security and its sub-domains❚ Transforming PIMs to PSMs❚ Issues regarding a full blown code generator❚ Looking ahead

Page 8: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Domain = An area of knowledge

❚ a set of concepts and terminology understood by practitioners in that area

+❚ knowledge of how to build software in that area

What is a Domain?

Page 9: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Domain Definition and Scope

A body of knowledge is only a domain to the extent that it is useful to a community of practitioners in that area. It is constantly being refined and added to.

A domain must be maintained (and therefore maintainable!) over time

Page 10: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Example Domains in an Implementation Hierarchy

Java Haskell Prolog C

Collections HashTables Trees Graphs

GUIs

HRAccounting

Events SchedulingSecurity

Shopping Cart

StateModels

WebArchitecture

ApplicationDomains

TechnologyDomains

ImplementationDomains

LanguageDomains

Page 11: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

So how are domains used?

❚ Every application can be considered as the composition of one or more domains

❚ Domains can be reused across a variety of applications

❚ We will need a library of domains❚ The various OMG Domain Task Forces are

busy constructing domain models for a number of pervasive domains

Page 12: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Stages of Domain Engineering

❚ Domain Analysis❙ Identify and scope the domain(s) and their

dependencies (Domain Scoping)❙ Identify features (Feature Analysis)

❚ Domain Modeling❙ Construct static and behavior models of each

domain (=> PIMs)

❚ Domain Implementation❙ Map them to the platforms to get a PSM

Page 13: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Feature Oriented Domain Analysis (FODA)

Describe the features of each domain, how the features relate to each other, and what the purpose and binding time† is of each feature.NOTE: features are externally visible aspects that are of interest to a user of the domain.

† When the choice of feature is bound in

Page 14: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Example feature analysis

From Generative Programming: Methods, Tools, and Applications by Czarnecki and Eisenecker, © Addison Wesley, 2000

EngineTransmission

Car

Car Body Warranty

Manual Electric GasolineAutomatic

mandatoryfeature

optionalfeature

exclusivealternatives

inclusivealternatives

concept

Page 15: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

What next?

❚ At this point, a class diagram may be drawn, but then most modeling tails off, either resorting to informal description or descending straight down to code. A few Interaction diagrams might be drawn or an API might be published. But this is not precise enough for MDA.

Where has the behavior been defined?

Page 16: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

There is a better way...

Instead of drawing Interaction Diagrams, we believe it is better to “open” up the behavior model, the same way that the static information is available in an open model (the Class Diagram).

Page 17: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Outline

✔ Introduction to software reuse at TDHS✔ MDA✔ Domains and Domain Engineering❚ Specifying inter-object behavior❚ Activity Diagrams❚ Example: Application Security and its sub-domains❚ Transforming PIMs to PSMs❚ Issues regarding a full blown code generator❚ Looking ahead

Page 18: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Modeling using Implicit Invocation

Implicit invocation (or event based) architectures are described in Shaw and Garlan’s book “Software Architecture”. Their benefits are:

❚ Inherently concurrent❚ Support loosely coupled architecture❚ Support an “open” model

Page 19: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

State Models

❚ State models are excellent for defining the behavior of instances of particular classes, and are used extensively in the Shlaer Mellor method and its descendents.

❚ However, sometimes the interesting behavior is in the interactions between the objects, and not in the objects themselves.

➨ Introducing Activity Diagrams...

Page 20: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Example Activity Diagram

Action state

ActivityObject flow state

ForkSynchronization

JoinSynchronization

Transition

Agent

Swimlane

Page 21: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Activity Diagrams: Benefits

❚ They represent implicit invocation architectures nicely

❚ Graphical, and easy to grasp❚ They have a clean implementation in

event driven standards (such as Java Beans or Message Driven EJBs)

❚ Concurrency and Asynchronicity are inherent

Page 22: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Activity Diagrams

❚ Activity diagrams have been used mainly for informal modeling of the sort illustrated previously. They have also been used to illustrate the flow of use cases [UML Distilled by Fowler & Scott].

❚ It is possible to use Activity diagrams in a more formal manner to model the inter object behavior of domains.

Page 23: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Extensions to UML Activity Diagrams notation

❚ Extensions made to visual representation (not the semantics). This is consistent with the UML spec which distinguishes activity diagrams from activity graphs.

❚ The extensions will be pointed out during the talk.

Page 24: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Outline

✔ Introduction to software reuse at TDHS✔ MDA✔ Domains and Domain Engineering✔ Specifying inter-object behavior✔ Activity Diagrams❚ Example: Application Security and its sub-domains❚ Transforming PIMs to PSMs❚ Issues regarding a full blown code generator❚ Looking ahead

Page 25: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Security Sub Domains†

❚ Authentication❚ Login❚ Security Attributes❚ Access Control (includes Authorization)❚ Auditing❚ Metasecurity❚ Confidentiality & Integrity

[†] Based on requirements drawn from the Common Criteria (www.commoncriteria.org/faq/faq.html)

Page 26: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Scoping the Security domain

Login

SessionManagement

DirectoryServices

AccessControl

Authorization

ResourceLogging

Auditing

ApplicationSecurity

Service Domains

MetasecurityCoreSecurity

Boundary

Authentication

SecurityData

Conf. &Integrity

Page 27: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authentication domain

SenderAddress

Verification

Authentication

Mechanism AccountDisabling

PasswordBased

CertificateBased Biometric

Feature Diagram

Page 28: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authentication domain

Behavior Model

the target of the callcallstate

objectflow

equals(pwEntry)

pW

[y]

[N]

Sender Address Verification is implemented by the Transport Level Protocol domain (e.g. using IPSec)

AuthenticationServer.authenticate(Id uid, Password pwEntry)

Authenticated(uid)

NotAuthenticated(uid)

securityData.Directory.lookupPassword(uid)PasswordExpired

UserIdNotFound

AccountDisabled

retransmittedevent

denotes pure action(side effect free)

exception

Page 29: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authentication domain

Class Model

Authentication Server

+authenticate(id : Id, password : Password) : void

Page 30: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Security Data domain

Feature Model

SecurityAttributes

UserIdCustomer

SpecifiableFields

GroupCurrentApp

Role

Name Description HierarchyMembers

AuthenticationInformation

Password

Policy

LengthRestriction

RegularExpression

CustomerDefined

Differs fromPrev

Password

Aging History Changeability Default

Resettable

Page 31: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Security Data domain

Class Model

«type»Subject

+currentStatus : Status+id : Id

«type»Security Attribute

+name : String+description : String

0..n

0..n

securityAttributes

«type»Role

«type»Group

«type»CurrentApp

«type»Principal

+name : String+description : String

0..nsubroles 0..n subgroups

0..n

0..n

members

roles

0..n

0..n

members

groups1..1

1..n

subject

principals

1..n

1..1

Observes

«adapter»Directory

+lookupPasswordFor(userId : Id) : Password+SetPasswordFor(userId : Id, newPw : Password) : void+lookupSubject(userId : Id) : Subject#getPasswordFor(userId : Id) : Password

«type»Password

+equals(anotherPw : Password) : boolean

+length : int+age : Time = 0

«type»Policy

0..N

passwordHistory1..1

current

Page 32: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Security Data domain

Behavior Model

Password Directory.lookupPasswordFor(Id uid)

Policy.checkCompliance(currentPw, newPw)

Y

Directory.lookupSubject(uid).passwordHistory.

add(newPw)

currentPw.age >Password.EXPIRATION_PERIOD

PasswordChanged

PasswordExpired(currentPw)YcurrentPw

[N] PasswordNotChanged

Directory.SetPasswordFor

(uid, newPw)

UserIdNotFoundgetPasswordFor(

uid)

currentPw

void DataManager.changePassword(Id uid, Password currentPw, Password newPw)

currentPw

AccountDisabled

Page 33: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Login domain

Feature Model

Anonymous

Login

MultipleWarningMessage History ID

Expiration

PreviousFailed

Attempt

PreviousLogon

MaxTrials

Action ToTake

Exit WaitInterval

EmailContact

AlertContact

Make LogEntry

All

Bad LoginDetection

IncreaseDelay

Page 34: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Login domain

Behavior Model

uid:Id us:UserStatus

authentication.authenticationServer

.authenticate(uid, pwEntry)

pwEntry:Password

Authenticated

NotAuthenticated

us.loggedIn?(uid)

loggedIn

YAlreadyLoggedIn

us.setLoggedIn(uid)

Y

LoggedIn

loggedIn

numAttempts <MAX_ATTEMPTS

MAX_ATTEMPTS

numAttempts++Y

numAttempts :=0

loginServer.actions.do()N /LoginFailed

uid->uid, pwEntry->pwEntry

initialize

loggedIn

uid==ANON &&ANON_LOGINS_OK us.setLoggedIn(uid)

LoggedInY

numAttempts ANON_LOGINS_OK

/LoginFailed

LoginFailed(uid) failedAttemptHistory.adduid

LoggedIn(uid) loginHistory.adduid

! loggedIn ||MULTIPLE_LOGINS_OK

uid==ANON &&!ANON_LOGINS_OK

AnonLoginsNotPermittedN

loginServer.login(uid, pwEntry) uid PasswordExpired

Page 35: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Login domain

Class Model

LoginServer

+login(id : Id, password : Password) : void

+MAX_ATTEMPTS : int = 3#numAttempts : int = 0+ANON_LOGINS_OK : boolean = false

tdhs.notifications.Action

0..n

0..n

loginFailureActions

Page 36: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authorization domain

Feature Model

AccessControl

Declarative

ControlMethod

ProgrammaticTargetsUnder ACommon

Policy

Class

SimpleDelegation

Get Set CustomerDefined

Role toTargets

AccessRights

AccessControl

List

Object Field

SecurityAttributes

Method

Type

PolicyDomain

Run As

Constraints: If "Run As" is not chosen, then "Delegation" is a mandatory feature

RightsBased

Page 37: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authorization domain (access control list based)

Class Model

Type of Access Control: No specific class structure. Implemented by interfacing to application logic(programmatic) or by generating the interface to application logic (declarative)

Map<Object x Set<securityData.Role> x String, Boolean>

+lookup(resource : Object, role : Set<securityData.Role>, methodName : String) : Boolean

Page 38: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authorization domain (access control list based)

Behavior Model

.roles:Set<subjectInfo.Role>

currentPrincipal:subjectInfo.Principal

access?Y

N

AUTHORIZATION_ENABLED

currentPrincipal holds, at runtime, the principalmaking the current access to the resource ACL.lookup(e.resource,

e.methodName, roles)

(Map<Object x String xSet<subjectInfo.Role>

Boolean>)

e:BeforeMethod

restrictedResources.contains(e.resource)

AccessGranted(e.methodName, resource)

AccessDenied(e.methodName, resource)

Page 39: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authorization domain (access rights based)

Class Model

RightGrantingPolicy

+DetermineGrantedRights(sA : Set<Security Attribute>) : Set<Right> Right

Get Set Update Manage

ApplicationResource

0..n

reqdRights

1..1

RGpolicy

Type of Access Control: No specific class structure. Implemented by interfacing to application logic(programmatic) or by generating the interface to application logic (declarative)

PolicyDomain

Class

0..1

0..1

methodName

Page 40: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Authorization domain (access rights based)

Behavior Model

.roles:Set<subjectInfo.Role>

currentPrincipal:subjectInfo.Principal

superset?access?

appResource.rightGrantingPolicy.

DetermineGrantedRights

(AccessPolicy)

Y

N

AUTHORIZATION_ENABLED

currentPrincipal holds, at runtime, the principalmaking the current access to the resource

appResource.reqdRights[methodName]:

Set<subjectInfo.Role>

grantedRights:Set<Right>

e:BeforeMethod

isRestrictedMethod(e.methodName)

AccessGranted(e.methodName, resource)

AccessDenied(e.methodName, resource)

Page 41: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Auditing domain

Feature Model

Auditing

RecordEvents

Protectionof AuditRecords

AuditReduction

Filter

Startup &shutdown of

audit fns

Intro andRemovalof users

Changes touser security

profiles

CustomerDefined

Date &Time

EventType

SubjectIdentity

CustomerDefinedOutcome

InfoRecorded

Sort Search

WithLogicalCriteria

WithExclusion

PreventionDetection

FromModification

PreventDeletion

AfterRestart

AfterFailure

PeriodicCopy

Trail limitDetection

email soundalarm

generatelog entry

Review

Page 42: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Auditing domain

Behavior Model

currentPrincipal:subjectInfo.Principal

Y

auditTrail.add()

AterMethod e

AfterAuditMethod("auditTrail.add",

auditTrail,auditRecord)

AUDTING_ON &&!auditTrail.full

1. currentPrincipal holds, at runtime, the principal making the current access to the resource2. AfterAuditMethod extends AfterMethod with extra attrs

MethodFailed

auditTrail:AuditTrail

auditTrail.length >= MAX_LENGTH?

Full(auditTrail)

Full e.auditTrail.action.doe

AuditRecordFactory.new(Time.currentTime(),Time.currentDate(),

e.methodName,e.appResource,currentPrincipal,

SUCCESS)

auditRecord

AuditRecordFactory.new(Time.currentTime(),Time.currentDate(),

methodName,appResource,

currentPrincipal,FAILURE)

auditRecord

AuditableEvent

AuditRecordFactory.new(Time.currentTime(),Time.currentDate(),

methodName,appResource,

currentPrincipal)

auditRecord

AUDTING_ON

Page 43: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Auditing domain

Class Model

AuditableEventType

AuditableEvent

EventDetail

+name : String+date : Date+time : Time+identity : subjectInfo.Principal+outcome : Outcome

1..1

1..1«type»

AuditRecord

+signed : Boolean1..1

1..1

AuditTrail

+Sort() : void+Search(criteria : LogicExpression) : List<AuditRecord>+filter() : void

#MAX_LENGTH : int

0..MAX_LENGTH{ordered}{addOnly}

{frozen}

«type»Outcome

Filter

+criteria : LogicExpression0..n0..n

{ordered}

«type»SecurityFunctionStartup

«type»SecurityFunctionShutdown

«type»AdditionOfUser

«type»RemovalOfUser

Page 44: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Metasecurity domain

Feature Model

Metasecurity

Recovery SelfTesting

Non-bypassability

ReilableTimestamps

SecuringSecurity Info

<SecurityAttribute>*

SecurityData

SecureValues

RestrictOperation

DefineBehaviorDisableEnable Revoke

ReplayDetection

Action ToTake

SeperateDomain

ChangeDefault Query Modify Delete

RestrictOperation

CopyAuditTrails

Reportingvalues ofsecurity

parameters

<SecurityFunction>*

RestrictOperation

Page 45: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Confidentiality & Integrity domain

Feature Model

Confidentialityand Integrity

TransferProtection

ResidualInformation

Cleanup

ConfidentialObject

Identification

DataIntegrity

Internal External

DataAuthenticity

ReplayAttack

Prevention

Page 46: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The Metasecurity and C&I domains

Neither of these domains have interesting class or behavior models. Rather they are implemented by procedural steps or by lower level domains (e.g. using IPSEC for the Transport Level Protocol domain to prevent replay attacks).

Page 47: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

This is visual modeling, NOT visual programming!

❚ Notice that the algorithmic, platform specific parts of the model (the method bodies) are not described graphically.❚ They are filled in separately, either directly with code (Java), or in an Action Semantics† language† an extension to UML 1.4

Page 48: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Outline

✔ Introduction to software reuse at TDHS✔ MDA✔ Domains and Domain Engineering✔ Specifying inter-object behavior✔ Activity Diagrams✔ Example: Application Security and its sub-domains❚ Transforming PIMs to PSMs❚ Issues regarding a full blown code generator❚ Looking ahead

Page 49: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Approach

❚ PIM -> PSM is done in two stages:❙ PIM -> Base❙ Base -> PSM

❚ PIM -> Base: Generate the APIs + base implementation as a framework. Currently looking into a code generator for this

❚ Base -> PSM: Code the PS parts in the methods

Page 50: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Example Base API

package tdhs.security.authentication;

import java.util.EventObject;import tdhs.security.securityData.*;import java.util.Vector;

/** * Provides methods and events to support authentication of a potential user(identified by an <code>id</code>). * Depends on password based authentication. * An interface to be implemented by a singleton class. * Creation date: (7/25/2002 6:11:02 PM) * @author: Srinivas Nedunuri */public interface AuthenticationServer{

public void authenticate(Id id, Password pwEntry);public Vector getAuthenticationEventListeners();public java.util.Vector getPasswordEventListeners();

}

❚ The following slides show the API and implementations that could be automatically generated from the Authentication domain models

Page 51: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Example Base Implementation

package tdhs.security.authentication;

import java.util.EventObject;import java.util.Vector;import tdhs.events.*;import tdhs.exceptions.*;import tdhs.security.securityData.*;

/** * Implements the AuthenticationServer interface and Authentication domainmodel * @creationDate (9/20/2002 12:23:46 PM) * @author S Nedunuri */class AuthenticationServerImpl implements AuthenticationServer{

Vector authenticationEventListeners = new Vector();Vector passwordEventListeners = new Vector();

public AuthenticationServerImpl(){

super();}

//<authenticate, getAuthenticationEventListeners, and// getPasswordEventListeners on next slide>

/** * Starts the application. * @param args an array of command-line arguments */public static void main(java.lang.String[] args) {

throw new NotImplementedException();}

}

Page 52: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Base Implementation contd: authenticate

public void authenticate(Id id, Password pwEntry) throws AccountDisabledException,UserIdNotFoundException{

Password pW;Directory directory = tdhs.security.securityData.Factory.instance.getDirectoryInstance();

/* this next part would not even be generated by a code generator since it would directly descendthe event subscription nesting in the model, and carry this out itself (directly hook this class'sPasswordEventListeners to the Directory object's list of listeners, bypassing this class entirely)*/directory.getPasswordEventListeners().add(new tdhs.security.securityData.PasswordEventAdaptor());for(int i=0; i<passwordEventListeners.size(); i++)

//hook up the passwordEventListeners directly to the supplier down belowdirectory.getPasswordEventListeners().add(passwordEventListeners.get(i));

try{

pW = directory.lookupPasswordFor(id);}catch(AccountDisabledException e){ throw e;}catch(UserIdNotFoundException e){ throw e;}

AuthenticationEvent e = new AuthenticationEvent(this);e.id = id;

for(int i=0; i<authenticationEventListeners.size(); i++)if (pwEntry.equals(pW))

((AuthenticationEventListener)authenticationEventListeners.get(i)).Authenticated(e);else

((AuthenticationEventListener)authenticationEventListeners.get(i)).NotAuthenticated(e);}

Page 53: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Base Implementation contd: get<Named>EventListeners

/*** @return the list of current <code>AuthenticationEventListener</code>s.* To subscribe to {@link AuthenticationEvent}s, add your implementation of {@link* AuthenticationEventListener} to this list. NB: Listeners that are added to this list in the midst of a* broadcast are not guaranteed to receive the event.* Listeners added more than once will receive the event more than once.*/public java.util.Vector getAuthenticationEventListeners(){

return authenticationEventListeners;}

/*** @return the list of current <code>PasswordEventListener</code>s.* NB These are just passthru events sent from the domain below* **NOT REQUIRED IN A CODE GENERATOR*** To subscribe to {@link PasswordEvent}s, add your implementation of {@link PasswordEventListener} to this* list. NB: Listeners that are added to this list in the midst of a broadcast are not guaranteed to* receive the event. Listeners added more than once will receive the event more than once.*/public java.util.Vector getPasswordEventListeners() {

return passwordEventListeners;}

The code for the more complex domain models such as Login and Authentication will be correspondingly longer and more detailed!

Page 54: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

The PSM

❚ The platform specific implementation would provide implementation of the method directory.lookupPasswordFor(Id)which in turn would call directory.getPasswordFor(Id).This method is implemented by making calls Java LDAP calls on a directory service such as NDS.

Page 55: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Outline

✔ Introduction to software reuse at TDHS✔ MDA✔ Domains and Domain Engineering✔ Specifying inter-object behavior✔ Activity Diagrams✔ Example: Application Security and its sub-domains✔ Transforming PIMs to PSMs❚ Issues regarding a full blown code generator❚ Looking ahead

Page 56: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Difficulties in the way of a full blown code generator

❚ The huge number of combinations of implementation technologies in use (e.g. choice of web server x choice of database x choice of directory server x choice of messaging x choice of component model) makes it difficult to cover them all.

Page 57: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Difficulties (contd.)

❚ Non-local effects of replacing one technology piece by another. E.g. replacing say the web server has implications for whether or not you useEJBs, which may affect how you do security. Also, different vendors implement different pieces of the puzzle (some databases offer their own security solution)

Page 58: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Standard Architecture

❚ At the Dept of Human Services, we are in the process of standardizing on a target system architecture:❙ NDS (via LDAP) for directory services❙ J2EE compliant web server (IBM Websphere

4.x) in Struts framework❙ Oracle database for backend❙ (for larger apps) Novell Secure Login for SSO❙ others?

Page 59: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Even so...❚ Cleverness will be needed in

implementing (e.g. J2EE Design Patterns)❚ Support for alternatives (CORBA access to

EJBs, open source, or Web Services)❚ Some apps will be “lighter” than others❚ Technology changes (e.g. smart cards,

PDA access, vendor upgrades)❚ Incompleteness in “specs”. E.g. EJB

Security: leeway to the container provider

Page 60: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

Summary of the technical challenges in MDA

❚ How to transform the domain models to efficient implementations on a variety of target platform configurations, when the structure of those configurations can be quite different from the structure of the original domain models?

❚ Composition of domain models (c.f. aspect oriented modeling?)

Page 61: Domain Modeling for MDA Using Activity Diagrams · 2009-05-28 · Domain Modeling for MDA Using Activity Diagrams Srinivas Nedunuri, COMSYS Consultant, Texas Dept. of Human Services,

For effective reuse…(the ultimate purpose of MDA)

❚ Need to change processes. Existing processes are based on the old waterfall style for developing one off applications

❚ Team organization and structure❚ Incentives for reuse❚ Asset certification & revision process❚ Library & admin