Design 2: System Architecture CS406 Tivoli 1
Overview Refined use cases Functionality Components Classes System Behavior Prototype
Refined Use Cases Convert Scripts - Without a GUI the user only has one interaction with the system
Component Overview XML parser Intermediate Script Representation Component Generator Script Converters
XML Parser Third party component Many free implementations available IBM, GNU, SUN, … We will wrap the component to produce blocks instead of tags Tag Block
XML Parser Class Diagram XML Parser -Internal Parser setFile(fileName:String) getBlock():String This is the third party component that we will wrap.
Intermediate Script Representation Designed and provided by us Provides us a generic way to deal with scripts internally Script Component class implements Visitor design pattern
Intermediate Script Representation class diagram Database Script -scriptComponents addComponent(component: ScriptComponent) getComponents():Vector Script Component visit(producer:ScriptProducer) Drop Table -tableName:String
Component Generator Designed and provided by us Takes XML blocks Produces Script Components Abstract Factory Design Pattern Singleton
Component Generator Class Diagram Component Generator generateComponent(block:String) :ScriptComponent
Script Converter Takes a intermediate representation and converts to text scripts Abstract base class which will be inherited from for each database platform
Script Converter Class Diagram Script Converter addBlock(block:Block) outputFile() #dropTable(name:String) #… many script elements
System Behavior: XML Parser :ScriptGenerator:XMLParser SpecifyFile (fileName) SetFile(fileName)
System Behavior: Specify Database Platforms :ScriptGenerator:ScriptConverter SpecifyPlatforms (platforms:text) 1:Create(dbType:text)
System Behavior: Internal Script Build :ScriptGenerator :Component :Script :XMLParser :ScriptConverter 3 addBlock(block) 2 create() 2.1 create() create() :Component :Component Generator 3.1*comp:=generateComponent(block) create() 1*block:=[for each block]getBlock()
System Behavior: Internal Script Build :ScriptGenerator :Component :Script :XMLParser :ScriptConverter 1*block:=[for each block]getBlock()3 addBlock(block) 2 create() 2.1 create() create() 3.2 addComponent(comp) 3.2 add (comp) 4 writeScript() 4.1*:[for each component]comp::getComponent() :Component 4.2 visit(this) dropTable(string) :File 4.3 write(string)
System Behavior: View Errors :ScriptGenerator:Reports 1:createReport() 2:populateReport() 3:displayReport()
Prototype Functionality DB2, Oracle, SQL Server Script Converters XML Parser Wrapper Component Converter (block- >Component) Components for many script operations: Create Table, Drop Table, Create View, etc…
Our Status Continuing to revise design Starting with high level code Considering some general implementation details
Finally Questions For Us?