Database Java Beans Feng Chen
Outline Design (diagrams) Formal specification (OCL model) Software quality assurance plan Test plan Formal technical inspection
Design Use case diagram Class diagram Sequence diagram
Design – Use case diagram
Design – Class diagram DatabaseConnection Bean DatabaseTable Bean DrawChart Bean CopyFile Bean
Class diagram – Database Connection Bean
Class diagram – DatabaseTable Bean
Class diagram – DrawChart Bean
Class diagram – CopyFile Bean
Class diagram – total
Design – Sequence diagram
Formal specification -- OCL model Connection Bean extend JPanel Visualfields: JDBCDriver : String Default[oracle.jdbc.driver.OracleDriver] DatabaseURL : String DatabaseURL : String Username : String Default[null] Username : String Default[null] Password : String Default[null] Password : String Default[null] Tablename : String Default[null] Tablename : String Default[null] Control : connectionButton : JButton Properties : connectToTable : Boolean Default[false] connectToFile : Boolean Default[false] connectToFile : Boolean Default[false] connectToChart : Boolean Default[false] connectToChart : Boolean Default[false] inv correctInput : valid(username, password) & valid( DBUrl) implies isopen(connection) valid(username, password) & valid( DBUrl) implies isopen(connection) inv unique username: user.allInstances -> (forAll(c1, c2 | c1 <> c2 implies user.allInstances -> (forAll(c1, c2 | c1 <> c2 implies c1.username <> c2.username) Operations context ConnectionBean::setInputValue(DBUrl : String, Username : String, Password : String ) pre: true post: not valid(username, password, DBURL ) implies ErrorDialog context ConnectionBean::getConnect() pre : self.connection -> not exist pre : self.connection -> not exist post: self.connection-> exist & self.connection = connectionClass.getConnection() post: self.connection-> exist & self.connection = connectionClass.getConnection()
Formal specification --OCL model (cont’) DBtableBean : extends JTable Visual component: databaseTable : JTable default[empty] databaseTable : JTable default[empty] updateButtons : Jbutton default[not selected] updateButtons : Jbutton default[not selected] Control: insertButton : Jbutton insertButton : Jbutton deleteButton : Jbutton deleteButton : Jbutton UpdateButton : Jbutton UpdateButton : Jbutton Instance variables: Connection: Connection Connection: Connection tableModel: DafaultTableModel tableModel: DafaultTableModel rowVectors: Vector rowVectors: Vectorinv coonection = null implies table->empty coonection = null implies table->emptyoperations: context DBtableBean::usingTableBean(connection:Connection, tablename : String) pre: table->empty & tablename->empty pre: table->empty & tablename->empty post: (not tablename -> empty) & table = select * from tablename post: (not tablename -> empty) & table = select * from tablename context DBtableBean::insertNewRecord( newRecord:Record) pre: !table.include(newRecord)&!database.include(newRecord)& !newRecord->exist pre: !table.include(newRecord)&!database.include(newRecord)& !newRecord->exist pos: table.include(newRecord)& database.include(newRecord)& newRecord->exist pos: table.include(newRecord)& database.include(newRecord)& newRecord->exist context DBtableBean::deleteRecord() pre: table.include(oldRecord)&database.include(oldRecord)& oldRecord->exist pre: table.include(oldRecord)&database.include(oldRecord)& oldRecord->exist pos: !table.include(oldRecord)&!database.include(oldRecord)& !oldRecord->exist pos: !table.include(oldRecord)&!database.include(oldRecord)& !oldRecord->exist
Formal specification --OCL model (cont’) drawChartBean extend Jpanel visual component: BarChartPanel : Jpanel BarChartPanel : Jpanel PieChartPanel : Jpanel PieChartPanel : Jpanel DrawChartButton: JButton DrawChartButton: JButton Controls : DrawChartButton: Jbutton Descriptor : nameTo : Boolean : Default[1] nameTo : Boolean : Default[1] numbers : Boolean : Default[1] numbers : Boolean : Default[1] instance state variable: connection : Connection connection : Connection rowVector : Vector rowVector : Vectorinv: connection=null implies ChartPanels->empty connection=null implies ChartPanels->emptyoperation context drawChartBean::usingDrawChartBean(tableName:String) context drawChartBean::usingDrawChartBean(tableName:String) pre:true pre:true pos: PieChart = (select * from tableName) & BarChart= (select * from tableName) pos: PieChart = (select * from tableName) & BarChart= (select * from tableName)
Formal specification -- OCL model (cont’) CopyfileBean Visual component: Visual component: Filepath : JTexField Filepath : JTexField ViewFileArea : JTextArea ViewFileArea : JTextArea ViewButton : Jbutton ViewButton : Jbutton SaveButton : Jbutton SaveButton : JbuttonControl: ViewButton : Jbutton Default[not selected] ViewButton : Jbutton Default[not selected] SaveButton : Jbutton Default[not selected] SaveButton : Jbutton Default[not selected] Operation: context CopyFileBean::useingCopyFileBean(recordsfromfile:Record[]) context CopyFileBean::useingCopyFileBean(recordsfromfile:Record[]) pre: !database.include(recordsfromfile) & ! recordsfromfile->exist pre: !database.include(recordsfromfile) & ! recordsfromfile->exist pos: database.includ(recordsfromfile) & recordsfromfile->exist pos: database.includ(recordsfromfile) & recordsfromfile->exist
SQA plan PurposeReferencesManagementDocumentations Standard, Practices, Conventions, and Metrics Review and Audits Test, Tools, Techniques, and Methodologies Problem Reporting and Corrective Action Training Risk Management
SQA plan – Phase III documentation deliverables Web tutorials (general concepts) Installation guidance Reusable parts
Test plan – test cases DatabaseURLDatabaseDriverLogon Update the data information Delete unwanted product from table Use database table bean Use draw chart bean Use Copy File bean To use the Draw Chart bean
References “Software Formal Inspections”, Software Assurance Technology Center (SATC), 1997, “NASA Software Formal Inspections Guidebook”, NASA,1993, Weiss and Kimbrough Inspection Materials, A. R. Weiss and K. Kimbrough, 1995, IEEE Standard for Software Test Documentation, IEEE Std IEEE Standard for Software Quality Assurance Plans, ANSI/IEEE Std IEEE Guide for Software Quality Assurance Planning, DRAFT, P730.2/D4
Questions? Questions?