Process document for a small startup I worked with as engineering manager prior to Symantec. We created 2 products for Nike & subsidiaries over period of 7 years.
2. Project BCOOL Standards Document
Table of Contents
PROJECT BCOOL STANDARDS DOCUMENT.............................................................................................................. 1
DOTHESIMPLESTTHINGTHATCOULDPOSSIBLYWORK............................................................................................. 1
TABLE OF CONTENTS................................................................................................................................................... 2
TABLE OF FIGURES....................................................................................................................................................... 2
1. ENGINEERING STANDARDS...................................................................................................................................... 2
2 REFERENCE WEBSITES............................................................................................................................................ 14
EPILOGUE
EAT OWN DOG FOOD.
COURTESY: “SHOW-STOPPER!: THE BREAKNECK RACE TO CREATE WINDOWS NT AND THE NEXT
GENERATION AT MICROSOFT”
BY G. PASCAL ZACHARY. HARDCOVER (OCTOBER 1994)................................................................................15
Table of figures
FIGURE 1: THE BCOOL HIERARCHY OF JAVA PACKAGES SHOULD LOOK LIKE COMBINATION OF THESE TWO.
.......................................................................................................................................................................................... 5
FIGURE 2: SAP R/3 SUPPORT IN VAJ ENTERPRISE.................................................................................................... 6
FIGURE 3: CONNECTING VAJ WITH VSS “CODEBASE”............................................................................................... 7
FIGURE 4: DEFINING/CHANGING THE VSS CONNECTION FROM VAJ......................................................................7
FIGURE 5: ADDING VAJ FILES TO VSS "CODEBASE".................................................................................................. 8
FIGURE 6: PROPOSED BUILD CONFIGURATION INFRASTRUCTURES.....................................................................9
FIGURE 7: THE RESULTS OF RUNNING ANT BUILD TOOL FROM COMMAND-LINE...............................................10
FIGURE 8: SETTING ANT.MAIN PROPERTIES AFTER IMPORTING AND VERSIONING ANT AND JAXP................11
FIGURE 9: THE RESULTS OF RUNNING BUILD.XML IN VISUALAGE FOR JAVA.....................................................12
FIGURE 10: BRISTLECONE SOFTWARE DEVELOPMENT PROCESS MODEL.........................................................13
1. Engineering Standards
The proposed engineering standards and toolset for the BCOOL project are as follows:
1.1 Baseline Standards
Baseline Standards w/ Version Development PC Dev/Staging Servers Demo Servers Demo Client
1.1.1 Basic “Image”
Operating System v4.0SP6/2000 NT2000 Pro NT2k Server NT2k Server Win95/98/2k
Browsers (HTML4.0 compliant) IE 5.xx IE5, IE5.5 IE5.5 IE5.5
Web Server (HTTP1.1 complaint) MS Personal Web Server IIS Server IIS NONE
Database (SQL-92/3.0 compliant) Connect to database server SQL Server 7.0 SQL Server 7.0 NONE
B2B XML Server (XML 1.0 based) NONE BizTalk Server BizTalk Server NONE
Personalization Engine (MS DB 2.1) File-system SQL Server SQL Server NONE
Visualization Engine (2.0.3) InXight InXight InXight NONE
Optimization Engine(ILOG OPL 3.1) OPLCOM API OPLCOM API OPLCOM API NONE
Rules Engine (ILOG JRules) ILOG JRules (optional) (optional) NONE
1.1.2 Source Control + Defect/Feature Tracking on LOKI
VSS v6.0 SCCS API client VSS Server NONE NONE
ClearQuest v2001 client for vss, or web version CQ Server NONE NONE
Confidential Page 2 of 15 1/17/2013
3. Project BCOOL Standards Document
1.1.3 Java 2 Platform
Java 2 Standard Edition v1.2.2 IBM JDK 1.2.2 IBM JDK 1.2.2 IBM JRE 1.2.2 IE w/ MSVM
Java 2 Enterprise Edition server jBoss WebLogic 6.0 / IBM WAS 3.5 WebLogic 6.0 / IBM WAS 3.5 NONE
1.2 Toolset
1.2.1 Java Technology
IDE for Java 2 platform v3.5 IBM VAJ Pro/Ent IBM VAJ Pro 3.5 NONE NONE
JDBC 2.0 Driver jdbc-odbc bridge (IBM/MS) WebLogic / OPTA2000 WebLogic / OPTA2000 NONE
JavaServlets v2.2 IBM VAJ Pro/Ent WebLogic / Websphere WebLogic / WebSphere NONE
JavaServer Pages v1.1 WebSphere Studio WebLogic jspc compiler NONE NONE
Scripting HTML/ASP/JavaScript etc… ScriptBuilder / SitePad pro ScriptBuilder NONE NONE
EJB v1.1 VAJ Websphere Test Env WebLogic/ Websphere WebLogic / Websphere NONE
JavaMail (for alerts) v1.1.3 1.1.3 ref implementation ? ? NONE
Java De-compiler tool DeCafe NONE NONE NONE
1.2.2 XML tools for Java
XML parser for Java (v1.1.2) Xerces/XML4J Xerces/XML4J Xerces Aelfred
XML-Schema v4/7/2000 XML Spy 3.5 XML Spy 3.5 NONE NONE
XML v1.0 editor XML Spy 3.5 XML Spy 3.5 NONE NONE
XML DTD editor (v 12/17/1999) XML Spy 3.5 XML Spy 3.5 NONE NONE
XSL v1.0 editor XML Spy 3.5 XML Spy 3.5 NONE NONE
XSLT v1.0 editor XML Spy 3.5 XML Spy 3.5 NONE NONE
WML v1.0 editor ScriptBuilder ScriptBuilder NONE NONE
Xpath v1.0 for Java (v0.20.0) Xalan XSLT Processor Xalan XSLT Processor Xalan XSLT Processor NONE
XSLT Processor for Java (v0.20.0) Xalan XSLT Processor Xalan XSLT Processor Xalan XSLT Processor NONE
1.2.3 OOAD/Schema Design
UML/OOD (UML 1.3) Rose/Ent 2001/Visio Ent NONE NONE NONE
ER Modeling (UML data modeling ext) Rose/Ent 2001/Visio Ent NONE NONE NONE
1.2.4 Microsoft Java
Micorsoft Java SDK v4.0 MS Java SDK (NOT VJ++) NONE NONE NONE
1.2.5 Life Cycle tools (for each iteration)
Build tool Ant Ant NONE NONE
EJB Deployment tool Ant / Bean-test Ant / Bean-test NONE NONE
Installation software InstallAnywhere InstallAnywhere NONE NONE
Demo software DemoShield / Toolbook NONE NONE DemoShield
HTML Documentation tool Frontpage w/ CSS styles NONE NONE NONE
Confidential Page 3 of 15 1/17/2013
4. Project BCOOL Standards Document
1.3 Coding Standards
The “WIKI” web is the best programming practices reference: http://www.c2.com/cgi/wiki?
ExtremeProgrammingRoadmap
1.3.1 Java Coding Standard
The coding standards that we should use are described in the pocketbook “the elements of Java Style” by Scott Ambler
and Rougewave developers. These are based on the Sun Code Conventions
(http://java.sun.com/docs/codeconv/).
1.3.2 Java Source Code Beautifier
Use JIndent with the Sun-Style.jin configuration
http://home.wtal.de/software-solutions/jindent/frameset.html
1.3.3 C++ Coding Standard
C++ code should be gcc 2.95.2 compilable.
C++ coding rules from Ellemtel
http://www.cs.umd.edu/users/cml/cstyle/Ellemtel-rules.pdf
Also available in “Industrial Strength C++: Rules and Recommendations” by Mats Henricson and Erik Nyquist, a book
recommended on the “WIKI” web: http://www.c2.com/cgi/wiki?IndustrialStrengthCplusPlus
See Also books like:
“Effective C++” book/CD by Scott Myers.
“Large-Scale C++ Software Design” by John Lakos
1.4 QA & Testing Standards
1.4.1 Unit Testing Standards
XP framework for unit testing:
1.4.1.1 Junit 3.2
JavaUnit link from the “WIKI” web:
http://www.c2.com/cgi/wiki?JavaUnit
JunitCreator for VAJ from “BigBenTools” link on the “WIKI” web:
http://www.xpdeveloper.com/cgi-bin/wiki.cgi?BigBenTools
1.4.1.2 CPPunit 1.5
http://www.c2.com/cgi/wiki?CppUnit
1.4.2 Use Case (Scenario) Testing Standards
Rational QualityArchitect, an addin for Rational Rose Enterprise, should be used for scenario based test of J2EE and
COM components.
1.4.3 Load Testing & Performance Testing Standards
We can use Microsoft Web Stress Testing tool for now.
Tool such as Empirix Bean-Test or Rational PerformanceArchitect may be required in future.
1.4.4 Regression Testing Standards
Rational TestStudio or similar regression testing tool may be required in future.
Confidential Page 4 of 15 1/17/2013
5. Project BCOOL Standards Document
1.5 Version Control
Visual SourceSafe clients should be used from development PCs. VSS server will be running on the LOKI server.
Typical VSS options- checking in a file in respective java package, checking it out for write access, canceling a checkout
in case the build broke or your code regressed, and getting latest for readonly access.
Three types of Visual SourceSafe databases should be used:
1.5.1 UmlModel- Model database
The “UmlModel” is the database version controlled for the entire architectural baseline- use case models, system
functions w/ algorithms, UML diagrams (domain object models, sequence diagram. class designs, state machines etc),
and the data model (schema design).
1.5.2 Codebase- Code database
The “Codebase” is the database version controlled for the entire codebase, pluggable into Java IDE and modeling tool.
The schema “file” will be stored in the codebase. (Note that the schema “design”-diagram- should be stored in the
UmlModel database.) Even the Java Archieve files – JARs, WARs and EARs, XML meta-info, EJB descriptors – are
stored here. JavaDoc files also are generated from within the codebase. It should conform to the JavaDoc standards, for
API documentation in the least. Patch release is used whenever branching is made.
J2EE comes with an enterprise application, eStore. The codebase should be structurally baselined on the eStore
package structures, to begin with. The entire BCOOL hierarchy of java packages should look like combination of these:
Figure 1: The BCOOL hierarchy of java packages should look like combination of these two.
1.5.3 Docs- Document database
The “Docs” is the database version controlled for the entire documentation- Word/html documents, and so on. Refer to
the “BristleCone Technical Notes Process”, technotes.doc for further details. The HTML documentation created can also
be used in the RUP style sophisticated project website, by inserting “css-“stylish html docs into javadoc style comments.
Confidential Page 5 of 15 1/17/2013
6. Project BCOOL Standards Document
1.6 Using IBM VisualAge for Java
1.6.1 VAJ with EJB/JSP support
Refer to IBM’s website for the ”VisualAge for Java and WebSphere Studio Tutorials” series, e.g.
http://www7.software.ibm.com/vad.nsf/data/document3936
1.6.2 VAJ with SAP R/3 support
The screenshots for Advanced generation of Java proxies using the “AccessBuilder for SAP R/3” in VAJ3.5 are given
below. The AdvancedGenerationDlg option in the AccessBuilder.ini file has to be set to 'true' for it to be enabled, default
is false. Setting it to true brings up the screen in AccessBuilder as shown below:
Figure 2: SAP R/3 support in VAJ Enterprise
Confidential Page 6 of 15 1/17/2013
7. Project BCOOL Standards Document
1.6.3 VAJ with VSS
1.6.3.1 Connecting VAJ with VSS “codebase”
To point to the VSS “codebase” database, you will have to first install VSS client on your machine and then you need to
point to the “//loki/vss/codebase/sourcesafe.ini” file, vss is the share on the //loki server.
Figure 3: Connecting VAJ with VSS “codebase”
When you define your “connection” to the VSS “codebase” database, with the “$ProductName/src” VSS project; you
have to set to the “src” subdir of your working folder on your hard disk.
Figure 4: Defining/changing the VSS connection from VAJ
Confidential Page 7 of 15 1/17/2013
8. Project BCOOL Standards Document
1.6.3.2 Adding class “files” from VAJ to VSS “codebase”
You need to add to “codebase” the class “files” you created newly in VAJ as follows:
Figure 5: Adding VAJ files to VSS "codebase"
1.6.3.3 Other VSS options
These options work from within VAJ, just as they do for any other tool such as Rational Rose. But what if you do NOT
use VAJ repository? If you use a file editor instead, then you must add your file to the VSS codebase “packages”,
appropriately. VAJ developers then can either “get” or “checkout” that file, if needed.
1.7 Labeling the Build from command-line into VSS “codebase”
The VSS "codebase" should have all files checked in for the build. The build process should begin with an email
notification of the "check-in within 15 minutes" kind. After the VSS “get latest” codebase, the build process should end
up in a (hopefully unbroken) successful build. Start labeling the build with the build date, e.g. 20000731-1 for a build #1,
dated 07/31/2000. Most "Rational" builds follow this type of convention. For each build, the labeling should be done by
the build master against the VSS “project” $/bcoolBuild/src. We will use the ant build tool to do the command line label
operations with VSS at the end of the successful “build”. We will also explore if we can use the ant build tool to do
deployment for Bea Weblogic server. Please refer to the updated documentation on the build process from VSS “docs”.
The buildmaster sends an email to development@bcone.com re. the structure of bcool build document whenever it is
updated. That will reinforce the classpath across the dev/qa boxes for the bcool team.
Confidential Page 8 of 15 1/17/2013
9. Project BCOOL Standards Document
1.8 Proposed Build configuration infrastructure: hardware & software
DEVELOPMENT STAGING SERVER DEMO I (SERVER) DEMO II (Mirror)
SERVER Win2k Server (MSDN) Win2k Server (MSDN) Win2k Server (MSDN)
Win2k Server (MSDN) WebLogic WebLogic WebLogic
WebLogic SQL Server (MSDN) R/3 w/ SQL Server R/3 w/ SQL Server
SQL Server (MSDN) Dashboard (MSDN) (SAP Customer copy) (SAP customer copy)
Dashboard (MSDN) ILOG COM API Dashboard (MSDN) Dashboard (MSDN)
ILOG COM API Bcool build ILOG (node-locked) ILOG (node-locked)
Bcool build Bcool build Bcool build
DATABASE SERVER
R/3 SERVER NT 4.0 Server (MSDN) BW SERVER APO SERVER
NT 4.0 Server (MSDN) SQL Server (MSDN) NT 4.0 Server (MSDN) NT 4.0 Server (MSDN)
R/3 w/ Oracle ClearQuest and Rose BW 2.0B w/ Oracle APO 2.0B w/ Oracle
(SAP Production copy) (floating license server) (SAP Production copy) (SAP Production copy)
SourceSafe Server
File server
ILOG (floating server)
Figure 6: Proposed Build configuration infrastructures
1.8.1 Nightly Build on Build Machine
We run the ant build.xml based builds to develop the web/ejb/eis tiers on development build machine.
The build should be scheduled to start exactly at 2 AM every night.
1.8.2 Nightly Deployment on Development Server (Stage I)
We should ideally not do builds on development servers, since other developers might be testing their JSPs against the
servlets and EJBs deployed the previous night. We run the ant deploy.xml script to deploy the WAR, the EJB-JAR and
the EAR files (wherever applicable) on the development server.
The deployment script should be scheduled to start exactly at 2 AM every night.
1.8.3 Weekly Deployment on Staging Server (Stage II)
We should ideally not do builds on staging servers. We run the ant deploy.xml script to deploy the WAR, the EJB-JAR
and the EAR files (wherever applicable) on the staging server.
The deployment script should be scheduled to start exactly at 2 AM every Friday.
Confidential Page 9 of 15 1/17/2013
10. Project BCOOL Standards Document
1.8.4 Milestone Deployment on Demo/Mirror Servers (Stage III)
We should never do builds on demo/production servers. We run the ant deploy.xml script to deploy the WAR, the EJB-
JAR and the EAR files (wherever applicable) on the demo/production boxes. The deployment script should be
scheduled to start exactly at 2 AM every milestone-end.
We also update the database server and the R/3 server with the latest test data.
1.8.5 Making the build on Development Servers
1.8.5.1 Bill of Materials(BOM) for builds
Refer to the build document, “Structure of Bcool Build” for Bcool build structure & the build process.
1.8.5.2 Making the Build using Ant command-line
Assuming you have Ant installed, to execute this build, change to the directory where you've done a VSS “get” on the file
“build.xml” and from a command line enter ant. You should see the output shown below.
Figure 7: The results of running Ant build tool from command-line
Admittedly, it's not too useful so far, but it does show you the basic structure of a build.xml file. The Ant documentation
explains the options and tasks available, and Ant provides its own build file that you can model your builds on.
Confidential Page 10 of 15 1/17/2013
11. Project BCOOL Standards Document
1.8.5.3 Making the Build using Ant in VisualAge for Java
While Ant is most often used as a command-line tool for automated nightly builds, the command line is not the easiest
place to debug problems with your build or create custom tasks. It's easier to integrate Ant into VisualAge for Java to
create and debug custom tasks.
1.8.5.3.1 Importing Ant into VisualAge for Java
The most effective way to import Ant into VisualAge for Java is to import the source code. It's easier to debug your
custom tasks when you can step through all the code and see what's happening. Ant uses a Java API for XML Parsing
(JAXP) compliant XML parser to read the build.xml files. The binary release of Ant includes Sun's jaxp.jar and parser.jar
files, the reference implementation of JAXP. You can get the JAXP parser from Sun.
To import Ant into VisualAge for Java:
Extract the source code from jakarta-ant.tar.gz into the /tmp directory.
Import from the directory /tmp/jakarta-ant/src into a new project named Ant.
Import the .jar files /tmp/jakarta-ant/lib/jaxp.jar and /tmp/jakarta-ant/lib/parser.jar into a project named JAXP.
Select the class org.apache.tools.ant.Main in the Ant project, and select Properties from the Selected menu.
Select the Classpath tab, and select Edit beside the Project Path field.
Select JAXP, then OK twice.
Select IBM XML Parser for Java, then OK twice.
Version the Ant project to 1.1, IBM XML Parser for Java to 1.0, and the JAXP project to 1.0.
Once you are done, set the ant.Main properties in your Workbench as shown below:
Figure 8: Setting ant.Main properties after importing and versioning Ant and JAXP
Confidential Page 11 of 15 1/17/2013
12. Project BCOOL Standards Document
1.8.5.4 Running & Debugging the build from within VisualAge for Java
The simplest way to run a build from within VisualAge for Java is to execute the main method of the
org.apache.tools.ant.Main class, passing in any parameters on the command line. When you run Ant without any options,
it looks for a build.xml file in its current directory. Due to the way VisualAge for Java starts an application, that current
directory will always be ~/vaj/ide/project_resources/Ant, where ~/vaj is the directory where you installed VisualAge for
Java. So to run your build, you can either import build.xml with the Import dialog into your project resources directory, or
you can use the -buildfile command-line option, which lets you specify which build file to use.
Running the main method of the org.apache.tools.ant.Main class produces the output as shown below:
Figure 9: The results of running build.xml in VisualAge for Java
Confidential Page 12 of 15 1/17/2013
13. Project BCOOL Standards Document
1.9 Deploying the BCOOL application from the build machine
Refer to “Structure of Bcool Deployment” document for details on Bcool deployment structure & deployment process.
Also refer to the “Bristlecone Software Development Process Model” shown below, Implementation, test and deployment process workflows:
Bristlecone Software Process Model
Product Management Engineering Engineering Engineering Engineering Product Management
Roll In Roll Out
Business Analysis &
Process Workflow: Requirements Implementation Test Deployment
Modeling Design
Business Systems Software Tech Leads & DBA with QA & Test Release
Roles responsible:
Analyst(s) Analyst(s) Architect(s) Build Master Lead(s) Manager
Business Scope-level Analysis Model Build-level Scope-level Build-level
Responsibilities:
Domain Model Use-Case Model & design Model Implementation Model Test Plans Deployments
Output artifacts:
Business requirements doc
Use-case Models Analysis models Component Design Diagrams System test plan execution "Bcool" Bill of Materials
Scope-level block diagrams
Use-case specs Design models Structure of "Bcool" Build Defect/feature tracking database Deployment Plan
Business Process flowcharts
Scope-level seq diagrams Object-level seq diagrams Html API/Javadoc & technotes Use-case based system testing Installation & Release Notes
Requirement Attributes
UI-level activity/state charts UI-level Proofs of Concept Scope-level build w/ junit tests regression test dev & exec User Manual
SAP Mappings
Scope-level Data model Design-level Data model Implementation-level Schema Test data creation & replication On-line Help files
Business Rules
Domain object model Model of Systems Architecture Ant-based build development Ant-based build deployment Manual/Auto Demo scripts
Glossary
Resource Infrastructure: Laptop Desktop Desktop Build Machine Stage I (Dev) Server Stage II (Staging) Server
with with with
Word, Excel & Visio Rose and Visio Rose and Visio
Figure 10: Bristlecone Software Development Process Model
1.10 What if the Build is “broken”?
Penalty ;-) Penalize the developer responsible for breaking the build!
Even if the unit tests were successful, it does not mean that the build can be integrated from these.
1.11 Installation Process for demos
1.11.1 InstallAnywhere Standard Edition API
Reference website http://www.zerog.com
1.12 Testing the build for demos
Refer to the test plan documentation, created by test lead, Vijay Aliseti.
Confidential Page 13 of 15 1/17/2013
14. Project BCOOL Standards Document
2 Reference websites
We need to expand this list for all items listed in the topics “Engineering Standards”, “Coding Standards”, and “Bill of
materials for the build machine”:
• The Apache XML project
http://xml.apache.org/index.html
• UNIX toolset for Windows
http://sourceware.cygnus.com/cygwin/
2.1 Issues
• The JSP developer’s JSP tag library can call the EJB developer’s session bean, which may call the entity
beans or directly execute the SQL statements (using JDBC) on the build machine running SQL server.
• The repository of IBM VisualAge for Java connects using the SCCS API to the VSS version control “codebase”
database on the build machine.
• The JDBC RowSet 1.0 spec (part of JDBC 2.0 Optional package API) should be used for client-side caching.
This concept is similar to Microsoft COM+ concept of disconnected recordsets.
• When does Rational Rose “synchronize” code with VSS codebase? The “code freeze” time looks good for this,
after the build is installed and tested on the build machine, with no major regressions.
• Test planning documentation pending until Vijay Aliseti begins working on it.
• The command line scripts need to be developed- for labeling the VSS codebase, incremental builds, and to do
the master build.
• Defect/Feature tracking process and tool TBD.
Confidential Page 14 of 15 1/17/2013
15. Project BCOOL Standards Document
Epilogue
Eat own dog food.
Courtesy: “Show-Stopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft”
By G. Pascal Zachary. Hardcover (October 1994)
Confidential Page 15 of 15 1/17/2013
16. Project BCOOL Standards Document
Epilogue
Eat own dog food.
Courtesy: “Show-Stopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft”
By G. Pascal Zachary. Hardcover (October 1994)
Confidential Page 15 of 15 1/17/2013