DDS_-_check_digit_functions

advertisement
Detailed Design Specification
© 2006, 2009 Ingres Corporation
Project Name
Check Digit SQL Functions
Author Marty Bowes
Last Saved Date
March 6, 2016
Revision 1.0
Template Revision 1.7
533574468
Responsibility List
Assigned To
Marty Bowes
Steve Ball
Chris Rogers
David Reed
Pam Fowler
Bill Maimone
Elaine Grieco
Christine
Normile
Action
Owner
Peer Review
Peer Review
Test Review
Peer Review
Sustainability
Review
Peer Review
Peer Review
Peer Review
Peer Review
Responsibility
Engineer/Architect
Development Manager
QA Manager
QA Engineer
Sustaining Engineering
Manager
Sustaining Engineering
Engineer
Level 1 Support Manager
Chief Architect
Technical Writer
Product Manager
Peer Review
Peer Review
Services
Services
Signature
Note: The Responsibility List reflects those required to review and provide
feedback for the document. Signoff by those listed is required prior to the
beginning of the development phase.
Additional reviewers
Assigned To
Steve Ball
Teresa King
Teresa King
Joe Kronk
Roger Whitcomb
Emma
McGrattan
Action
Information
Information
Information
Information
Information
Information
Responsibility
DBMS
Gateways
Connectivity
OpenROAD
Tools
Usability
Signature
533574468
Page 2 of 32
Note: The additional reviewers list reflects other people that should be copied
on the document and invited to review meetings, but feedback from them is
not required for the document to be approved. Managers of other engineering
groups are copied for comment on how it affects their product or product area.
The manager for your own engineering area is included in first table and can
be removed from here.
SQL Language Review
Assigned To
Steve Ball
Teresa King
Teresa King
Joe Kronk
David Reed
Action
Language
Review
Language
Review
Language
Review
Language
Review
Language
Review
Responsibility
DBMS
Signature
Gateways
Connectivity
OpenROAD
Supportability and
Backward
Compatability
Note: The SQL language review table lists people that should be sent an initial
draft copy of this document if you answered “yes” to any questions in section
2.2. If you did not answer yes to any of those questions you may delete this
table.
533574468
Page 3 of 32
Change History:
Revision
Date
Last Revision By
Description of Change
30-Nov-2007
Steve Ball
Template: Fixed up instructions to be more Ingres
product range specific and added sections specific
to Ingres/OpenROAD
3-Dec-2007
Steve Ball
Template: Add tech writing changes and examples
section
4-Dec-2007
Steve Ball
Template: changes based on feedback
1-May-08
Christine Normile
Template: changes based on working meeting
Punta Cana, DR, Development Summit 2008
22-May-08
Christine Normile
Template: removed confidential markings
21-Aug-2008
Steve Ball
Template: Add language review elements
4-Apr-2009
Steve Ball
Template: Added section on catalog changes
28-May-2009
Mary Bowes
V 1.0: Initial draft for review
533574468
Page 4 of 32
TABLE OF CONTENTS
1
INTRODUCTION ...................................................................................................... 8
1.1
1.2
1.3
1.4
2
SCOPE AND SUMMARY ............................................................................................ 8
DEFINITIONS, ACRONYMS AND ABBREVIATIONS .................................................... 8
REFERENCES ......................................................................................................... 10
NOTEWORTHY ISSUES ........................................................................................... 10
ARCHITECTURE OVERVIEW ........................................................................... 12
2.1 HIGH LEVEL DESCRIPTION ..................................................................................... 12
2.2 SQL LANGUAGE CHANGES ................................................................................... 12
2.3 IMPLICATIONS FOR GCA ....................................................................................... 13
2.4 CONNECTION PARAMETERS .................................................................................. 13
2.5 LANGUAGE, UNICODE AND INTERNATIONALIZATION ISSUES ................................. 13
2.6 IMPLICATIONS FOR INGRES/STAR .......................................................................... 13
2.7 IMPLICATIONS FOR DBA TOOLS ............................................................................. 13
2.8 NEW IMA/MIB OBJECTS .......................................................................................... 13
2.9 NEW TRACE POINTS ............................................................................................... 13
2.10
CATALOG ALTERATIONS.................................................................................... 14
2.11
IMPLICATION FOR GATEWAYS ........................................................................... 14
2.12
IMPLICATIONS FOR DATABASE DRIVERS............................................................. 14
2.13
IMPLICATIONS FOR OPENROAD .......................................................................... 14
2.14
DESIGN LIMITATIONS AND ASSUMPTIONS ......................................................... 14
2.15
PLATFORM SPECIFIC ISSUES .............................................................................. 16
2.16
PRODUCT INTERACTION..................................................................................... 16
2.17
PATENT INFORMATION ...................................................................................... 16
3
EXTERNAL SPECIFICATION ............................................................................. 17
3.1
3.2
3.3
3.4
4
USER PERSPECTIVE ............................................................................................... 17
INSTALLATION AND ADMINISTRATION PERSPECTIVE ............................................ 21
MIGRATION ISSUES ............................................................................................... 21
SECURITY IMPACT ................................................................................................ 21
INTERNAL SPECIFICATION .............................................................................. 22
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
ESTIMATED TASKS AND EFFORT ........................................................................... 22
PROGRAMMING ..................................................................................................... 23
COMPATIBILITY LIBRARY INTERFACE CHANGES ................................................... 24
INTERFACE............................................................................................................ 24
BUILD IMPLICATIONS ............................................................................................ 24
UI RESOURCE/PROPERTIES FILES ......................................................................... 25
BITMAP RESOURCES ............................................................................................. 25
ICON FILES ........................................................................................................... 25
533574468
Page 5 of 32
4.9
5
IMPACT AND DOCUMENTATION SUMMARY .............................................. 27
5.1
5.2
6
PICCOLO CHANGE NUMBERS.................................................................................. 26
PRODUCT/COMPONENT IMPACTS .......................................................................... 27
DOCUMENTATION ................................................................................................. 27
QUALITY ISSUES .................................................................................................. 28
6.1
6.2
6.3
6.4
UNIT TESTING SUMMARY ..................................................................................... 28
HANDOFFQA IMPACT ............................................................................................. 29
TESTING RECOMMENDATIONS .............................................................................. 30
REGRESSION RISK ASSESSMENT ........................................................................... 30
7
PACKAGING AND INSTALLATION IMPACT ................................................ 31
8
SUPPORT IMPACT ................................................................................................ 32
8.1
EXAMPLES AND TESTS ........................................................................................... 32
533574468
Page 6 of 32
PREFACE
This document describes external functional specifications as well as design
specifications for one feature of a release project. There will be many Detailed
Design Specifications (DDS) for each project, one for each major feature
described in the Software Requirements Specification (SRS) or project wiki page.
The SRS or the wiki page is the master document for the entire project.
This is intended to be a living document. The product development cycle is a
dynamic process in which our understanding of the project and its criteria for
success are refined over time. It is therefore expected that the completed
Detailed Design Specification will undergo many revisions during the course of a
project as requirements; resources and constraints evolve. The engineer would
not be expected to complete all sections in the initial draft; some sections are
designed so that they can only be completed one the project is coded. *note that
you are expected to continue updating this document until the release
project is handed over to SE*
The Development Manager is responsible for the contents of this document.
Deliverables that must be completed prior to releasing this document are at least
one of:
 Software Requirements Specification
 Wiki page on the engineering web describing the components of the
project
All template instructions can be identified by their gray italic type. This
information may be removed after completing the necessary project
information.
Ant information detailed in this document should not be repeated in the wiki
page for this feature unless there is a compelling reason to do otherwise
one of the copies of the information may become out-of-date. If you need
to, refer to the DDS on the wiki page.
533574468
Page 7 of 32
1 INTRODUCTION
1.1
SCOPE AND SUMMARY
Add the ability to generate or validate a check digit on a string using a
specific check digit encoding scheme.
The functions added are:
 generate_digit('scheme', 'string')
which returns the check digit as a character.
 validate_digit('scheme', 'string')
which returns 1 for valid, 0 for invalid.
In both cases the scheme may be one of:
 LUHN, LUHN_A
 VERHOEFF, VERHOEFFNR
 ISBN
 ISBN_13
 ISSN
 UPC (aka: UPC_A, EAN_12)
 UPC_E.
 EAN (aka: EAN_13, GTIN_13, JAN)
 EAN_8 (aka: GTIN_8)
The scheme names are case insensitive.
Note that the luhn and verhoeff schemes can function on a character
string of any length and no restriction is made by the function. That is, if
you wish to generate a luhn digit for a string of 1024 characters then you
may...whether or not that's a useful exercise is upto you.
The other schemes are 'fixed length' schemes and can only be applied to
a string of the correct length. An error will be generated if a string of
incorrect length string is supplied.
1.2
DEFINITIONS, ACRONYMS AND ABBREVIATIONS
Detailed Design Specification: (DDS) A representation of a software
system or component of a system created to facilitate analysis,
533574468
Page 8 of 32
planning, implementation and decision-making. The DDS is used as
the primary medium for communicating software design
information.
LUHN:
The luhn algorithm was invented by Hans Peter Luhn. It is used in
most credit cards and many other applications.
LUHN_A:
This version of the luhn algorithm allows for alphabetical characters
by assigning numbers 10 == ‘A’, 11 == ‘B’ and so on.
VERHOEFF:
The verhoeff algorithm was invented by the Dutch Mathematician
Jacobus Verhoeff. This algorithm detects all transposition errors as
well as other types of error that would not be detected by the Luhn
Algorithm.
This implementation is the one as described in wikipedia.
VERHOEFFNR:
The verhoeff algorithm as found in 'Numerical Recipes in C'.
ISBN: International Standard Book Number.
The standard ISBN is a 10 character numeric identifier for printed
material. Since 1st January, 2007, the ISBN have been 13 digits.
Note that these are compatible with EAN_13.
ISBN_13: International Standard Book Number - 13 character version.
ISSN: International Standard Serial Number.
UPC: Universal Product Code
Also known as UPC_A or EAN_12. These are 12 character product
identification numbers.
UPC_E: Universal Product Code.
This is an eight character UPC used on smaller packages where a
12 character number would be too cumbersome to print.
EAN: European Article Number
Also known as: EAN_13, GTIN_13, JAN
The European Article Number is another product identification code
under the umbrella of the Global Trade Identification Number
(GTIN). In japan it also referred to as a Japanese Article Number
(JAN).
EAN_8: European Article number
Also known as GTIN_8.
These are eight character numbers designed for use on smaller
packages.
533574468
Page 9 of 32
1.3
REFERENCES
The Luhn and Luhn_A algorithms are described in:
http://en.wikipedia.org/wiki/Luhn_algorithm
The Verhoeff Algorithm is described by:
http://en.wikipedia.org/wiki/Verhoeff_Algorithm.
The verhoeff algorithm may be corroborated against:
http://www.augustana.ab.ca/~mohrj/algorithms/checkdigit.html
ISBN and ISBN_13 are described in: http://en.wikipedia.org/wiki/ISBN
ISSN International Standard Serial Number is described in:
http://en.wikipedia.org/wiki/ISSN
UPC and UPC_E are described in:
http://en.wikipedia.org/wiki/Universal_Product_Code
EAN is described in:
http://en.wikipedia.org/wiki/EAN-13
1.4
NOTEWORTHY ISSUES
Since the DDS is an evolving representation of the design (a "living
document"), this section is used to keep track of issues that arise during
the project life cycle and items that need special attention. If you add a
FIX_ME or comment similar to “need to do something about blah here” to
the code, you should note the issue here.
Verhoeff Algorithm:
There seems to be two opinions on the Verhoeff Algorithm. The version in
wikipedia (http://en.wikipedia.org/wiki/Verhoeff_Algorithm) and the version
as published in "Numerical Recipes in C". These do give different
answers.
The wikipedia version is also supported by:
http://www.augustana.ab.ca/~mohrj/algorithms/checkdigit.html
533574468
Page 10 of 32
I have coded both versions as I could not decide which would be
considered the ‘correct’ version.
Scope of validation.
The algorithms apply only what is required to mathematically validate the
check digit. Some schemes have further rules that give embedded
meaning to sets of characters within the string. No attempt has been made
to enforce such rules. For example the GTIN have reserved 2 or 3
characters at the start of the string as a country code.
Length of Check Digit.
The check digit is generated as a char(1) item. From a scan of Wikipedia it
appears that single character check digits are by far the norm. However
there are some two character check digit schemes. (eg. the Australian
Business Number).
All schemes can generate check digits.
Users are allowed to generate check digits on schemes for which they
would have no ‘right’ to do so. For example a user can generate an EAN
number, but that seems an act of dubious worth. Realistically only the
validation of an EAN number would be a reasonable user act.
533574468
Page 11 of 32
2 ARCHITECTURE OVERVIEW
2.1
HIGH LEVEL DESCRIPTION
Describe the overall architecture. Architectural design may be represented
in many forms, including text, graphical description, pseudo-code
representation or combination.
Simple addition of extra SQL functions generate_digit() and check_digit()
2.2
SQL LANGUAGE CHANGES
The functions added are:
 generate_digit('scheme', 'string')
which returns the check digit as a character.
 validate_digit('scheme', 'string')
which returns 1 for valid, 0 for invalid.
2.2.1 Language changes to Ingres/Star’
It will be available as per other functions.
2.2.2 Language Changes to ABF
It will be available as per other functions.
2.2.3 Language Changes to Database Procedures
It will be available as per other functions.
2.2.4 Language Changes to Embedded SQL pre-compilers
It will be available as per other functions.
2.2.5 Effects on dynamic SQL
It will be available as per other functions.
533574468
Page 12 of 32
2.3
IMPLICATIONS FOR GCA
None
2.4
CONNECTION PARAMETERS
None
2.5
LANGUAGE, UNICODE AND INTERNATIONALIZATION ISSUES
Is there anything about this feature that causes it to have unique
characteristics or testing requirements when implemented for the
international market and support for international or multi-byte character
sets including Unicode (UTF16 or UTF8)?
No
2.6
IMPLICATIONS FOR INGRES/STAR
Does this feature have any implication for Ingres/Star? If so what are
they?
None
2.7
IMPLICATIONS FOR DBA TOOLS
Does the feature have any implications for the DBA tools such as copydb,
auditdb, rollforwarddb, verifydb? Would a new verifydb option be useful?
No.
2.8
NEW IMA/MIB OBJECTS
Did you add any IMA objects as part of this feature? Are there any that
would be useful that perhaps you didn’t add because of lack of time?
None.
2.9
NEW TRACE POINTS
Trace points should be avoided in favor of IMA objects. If you added any
trace points detail them here with an explanation of why it was not
siuitable for an IMA object.
None.
533574468
Page 13 of 32
2.10 CATALOG ALTERATIONS
Does the feature add or alter the Ingres catalogs, either DBMS catalogs,
front-end catalogs, or iidbdb catalogs? If so, fill in the details here and be
sure to update the document containing the catalog spec, which can be
found here: http://community.ingres.com/wiki/Ingres_Catalogs
None.
2.11 IMPLICATION FOR GATEWAYS
Does this feature have any implications for the Ingres gateways? Do any
SQL language changes need to be considered for implementation in
gateway products?
None.
2.12 IMPLICATIONS FOR DATABASE DRIVERS
Does this feature have any implications for any of the database drivers
such as ODBC, JDBC, Python, PHP, Ruby, etc? Do any SQL language
changes need to be considered for implementation in these drivers?
None.
2.13 IMPLICATIONS FOR OPENROAD
Does this feature have any implications for OpenROAD? De sure to
mention any changes to ADF that are necessary to implement this feature,
they often impact OpenROAD. Do any SQL language changes need to be
considered for implementation in OpenROAD
None.
2.14 DESIGN LIMITATIONS AND ASSUMPTIONS
This section should list current limitations and assumptions made in the
design.
2.14.1 Generation on all schemes.
The generate_digit() function will work on all schemes the validate_digit()
function supports. This includes those schemes controlled by various
533574468
Page 14 of 32
International bodies such as ISBN, EAN. This might be excessive, who
would want to generate ISBNs?
Although it is useful from a testing perspective to have the generate_digit()
function act on all schemes, perhaps it should only be allowed on the
‘generic’ schemes, namely: luhn, luhn_a, verhoeff and verhoeffnr.
Alternatively a configuration variable could be set to restrict/permit the
function to offer all schemes.
If the generate_digit() Is called with an 'inappropriate' scheme the code
would have to be altered to generate an error 'Invalid scheme for
generate' message.
2.14.2 Scope of validation.
The algorithms apply only what is required to mathematically validate the
check digit. Some schemes have further rules that give embedded
meaning to sets of characters within the string. No attempt has been made
to enforce such rules.
For example an EAN is split into a GS1 Prefix, The Company Number, an
Item reference and the check digit. The GS1 Prefix is two or three
characters, essentially being a country code. The code will not attempt to
validate the GS1 prefix.
2.14.3 Length of Check Digit.
The check digit is generated as a char(1) item. From a scan of Wikipedia it
appears that single character check digits are by far the norm. However the
Australian Business Number has a two character check digit. There may
be others.
A code change to allow for varchar(2) check digits would be possible and
would not adversely affect anything which had been built on the single
character version.
533574468
Page 15 of 32
2.14.4 Dependencies
Does this feature depend on any external functionality (such as an XML
parser, or some other similar piece of code that does not belong to
Ingres)? Does this feature depend on another feature that will be, or has
been coded in this release of the product? Describe the dependency.
No.
2.15 PLATFORM SPECIFIC ISSUES
Is there anything about this feature that causes it to have unique
characteristics or testing requirements when implemented on a specific
platform? Are there any platform limitations to this feature, or is it
intended to run only on one platform? Will the feature need to re-coded
for other platforms (e.g. CL additions or re-architecture)
No.
2.16 PRODUCT INTERACTION
Does this feature cause any changes in the way that Ingres products
interact with each-other other than already detailed in the above sections?
Are there certain products that will/will no work with this feature (this is
more relevant to tools such as VDBA and new middle-ware servers)?
No.
2.17 PATENT INFORMATION
If there is any technology being developed for this feature that could be
considered for a patent, note the information here.
No.
533574468
Page 16 of 32
3 EXTERNAL SPECIFICATION
3.1
USER PERSPECTIVE
In this section, the focus is on the tasks that a user will perform with this
feature. Describe what the feature does and how it works form a user
perspective. Focus on how it is used to perform the function described in
the high level description.

Provide screen shots if appropriate
3.1.1 generate_digit()
(char(1) )C = generate_digit((varchar )scheme, (varchar )string);
This function generates the check digit ‘C’ for the string using the nominated
encoding scheme. The check digit is a single character computed from the other
characters in the string and is typically appended to the string for validation. Note
that this function does not append the check digit to the string.
The check digit may be employed as a means to help determine if a string has
been entered correctly. There are several error types that a check digit may be
able to detect.
Specifically:
- mistyped characters: eg '0123' not '0124'
- omissions or additions of characters.
- adjacent transposition errors: eg '01234' not '01243'
- twin errors: eg '11' becomes '22'
- jump transpositions: 123 becomes 321
- jump twin errors: 121 becomes 323
- phonetic errors: ie. the mixing of similar sounding numbers
- eg. sixty '60' not sixteen '16'
There are many check digit schemes of varying complexity, purpose and abilities.
For example the Luhn algorithm is widely used in credit card numbers and is
programmatically simple to implement. But the Verhoeff algorithm is considered
superior in detection of certain error types such as jump transpositions. However
it is a more complicated algorithm.
533574468
Page 17 of 32
Note that a check digit is not an infallible error detector; it simply improves the
chance of detecting errors in keying. Furthermore a check digit does not provide
error correction capability.
For a description on supported schemes please refer to validate_digit.
3.1.2 validate_digit()
(int1 )r = validate_digit((varchar )scheme, (varchar )string);
This function validates the check digit in the string is mathematically correct for
the nominated scheme. The function returns 1 for valid and 0 for invalid.
This function has the same caveats on scheme name and strings as noted for
generate_digit().
A brief description of each supported check digit scheme follows.
NOTE:
- The scheme name may be in mixed case.
- Although many schemes use whitespace, dashes etc to separate their
strings into 'blocks', this implementation demands that such separators are
removed from the strings as in many cases the separation is not clearly
defined.
- Some schemes have internal formatting rules. For example an EAN is split
into a GS1 Prefix, The Company Number, an Item reference and the
check digit. This function will only calculate the check digit. It will not
attempt to enforce any other formatting rules.
Scheme
EAN
Description
European Article Number
Synonyms: EAN_13, GTIN, GTIN_13, JAN
The EAN is a barcoding standard defined by the standards
organisation GS1. It is used worldwide for marking retail goods.
It was developed as a superset of the original 12 digit Universal
Product Code (UPC) system. It is also called a Japanese
Article Number (JAN) in Japan. UPC, EAN, and JAN numbers
are collectively called Global Trade Item Numbers (GTIN).
An EAN string is a 13 character string composed entirely of
digits. The check digit is the rightmost character in the string.
533574468
Page 18 of 32
Scheme
EAN_8
Description
European Article Number
Synonyms: GTIN_8, RCN_8
The EAN_8 are 8 character numbers derived from the longer
EAN_13 and are intended for usage on small packages where
the longer number would be awkward.
The EAN_8 may also be used internal to companies to identify
restricted or 'own-brand' products to be sold within their stores
only. These are often referred to with the synonym: RCN_8.
ISBN
An EAN_8 string is an eight character string composed entirely
of digits. The check digit is the rightmost character in the string.
International Standard Book Number
ISBN_13
The standard ISBN is a 10 character alphanumeric identifier for
printed material. The check digit is the right most character and
may be either a digit or the alpha 'X'. The other characters in
the string must be digits.
International Standard Book Number
ISSN
This is the 13 character version of the ISBN. The string is
composed entirely of digits. The check digit is the rightmost
character in the string.
International Standard Serial Number
LUHN
ISSNs are 8 character alphanumeric identifiers for electronic or
print periodicals. The check digit is the right most character and
may be either a digit or the alpha 'X'. The other characters in
the string must be digits.
The LUHN algorithm
Created by IBM scientist Hans Peter Luhn. Most credit cards
and many government identification numbers are based on this
simple algorithm. For example the Canadian Social Security
number is a nine digit number based on the Luhn algorithm.
The string may be of any permitted length, but must be
composed entirely of digits. The check digit is the right most
character in the string.
533574468
Page 19 of 32
Scheme
LUHN_A
Description
The LUHN algorithm (alphanumeric)
This is an extension of the Luhn Algorithm which allows for
alphabetic characters by assigning numbers 10 to 'A', 11 to 'B',
...35 to 'Z'. Note that it is case insensitive.
The Committee on Uniform Security Identification Procedures
(CUSIP) provides a 9-character alphanumeric string based on
this algorithm. Also the International Securities Identification
Number (ISIN) is a 12 character version of this algorithm.
UPC
The string may be of any permitted length, but must be
composed entirely of alphanumeric characters. The check digit
is the right most character in the string.
Universal Product Code
Synonyms: UPC_A, EAN_12
Used to mark retail goods as per the EAN (see above).
UPC_E
These are composed of 12 digits with the check digit being the
right most character.
Universal Product Code
VERHOEFF
A UPC_E is composed of six digits and were intended for
smaller packages where a full size UPC_A would be
cumbersome. Unlike the UPC_A the check digit is not
appended to the number. Rather, it is used to determine the
'odd/even' parity assigned to the numbers for when they are
encoded as bar-code lines.
The Verhoeff Algorithm as described in Wikipedia
Developed by Dutch Mathematician Jacobus Verhoeff. This
algorithm detects all transposition errors as well as other types
of error that would not be detected by the Luhn Algorithm.
The Verhoeff Algorithm, like the Luhn algorithm can also handle
strings of any permitted length. The strings must be composed
entirely of digits and the check digit will be the right most
character.
VERHOEFFNR Verhoeff Algorithm as described in ‘Numerical Recipes in C’.
533574468
Page 20 of 32
Scheme
Description
A variation on the Verhoeff algorithm published in ‘Numerical
recipes in C’ by Press, Teukolsky, Vetterling and Flannery.
3.2
INSTALLATION AND ADMINISTRATION PERSPECTIVE
Include any special installation and setup tasks, system parameters or
other preparations that are necessary prior to use. Describe the steps
needed to setup and get the component going and any ongoing
administration that will need to be performed if relevant. List all
configuration parameters that apply to this feature here.
None
3.3
MIGRATION ISSUES
Describe any special steps required to migrate from existing versions
Ingres/OpenROAD to this version that arise because of this feature. Does
this feature have any new catalogs or other implications for upgradedb?

Is the component going to be backward compatible?

Can this version co-exist with an older version?
There are no new catalogs.
These are new functions so they are not backwards compatible.
3.4
SECURITY IMPACT
Does anything about the function need securing? Could it do any
damage? Could it cause the display of sensitive information?
Does the implementation methodology do anything that produces a
potential security exposure, such as run as root or Ingres (if this is an
application)?
None.
533574468
Page 21 of 32
4 INTERNAL SPECIFICATION
4.1
ESTIMATED TASKS AND EFFORT
Estimate the engineering effort to code and test the component ready for
hand over to QA and Technical Writing. If it is a large function, break it up
into smaller “function points” and estimate each one. For large projects,
filling out the table below and should help but is not required. Estimates
should be effort to code complete; that is engineering effort assuming
100% of an engineer’s time is used, which will not normally be equal to
elapsed time for the project. Estimates should include time to:

Code the feature and all of the error checking required for the
feature (error checking may be up to 50% of the code in the DBMS)

Test your code and make corrections

Write and post an integration plan (or more than one for large
projects)

Run HandoffQA for each proposed submission and check the
results
As a guide, an experienced engineer who already knows the code will
normally write and sanity test about 100 lines of code per day; engineers
with less experience or those that are new to the code will write less.
Factor about 20% of the time it took to code for final testing and fixes.
Look at existing modules to help make an estimate of the number of lines
of code required. Tasks should normally be submitted as they are sane
and complete, so the formula might be something like:
Time for task = (no_of_lines / 100) + 2 days for IP and HandoffQA
Total time = Sum (time for all tasks) + 20% for overall testing and fixes
Click here to begin typing
Task
Effort
(persondays)
Assigned to
Done
(yes/no)
Tested
(yes/no)
Description of task
TOTAL
Total days
-
-
-
533574468
Page 22 of 32
4.2
PROGRAMMING
List programs and modules written, changed or deleted. Initially this will
be a first pass estimate of what needs to be changed, it will likely change
during the course if the project. The version of this document at code
complete will contain the modules or programs that actually changed.
4.2.1 $ING_SRC/common/adf/adg/adgoptab.roc
Add references to the new functions.
4.2.2 $ING_SRC/common/adf/adg/fi_defn.txt
Add the function instances for the new functions.
4.2.3 $ING_SRC/common/adf/adu/aduerror.c
Allow for the new error codes generated by the functions.
4.2.4 $ING_SRC/common/adf/adu/adustring.c
Create the function executor code for the new functions.
4.2.5 $ING_SRC/common/adf/hdr/adffiids.h
Allow for the new function instance id’s.
4.2.6 $ING_SRC/common/adf/hdr/aduint.h
Include the new function prototypes.
4.2.7 $ING_SRC/common/hdr/hdr/adf.h
Set up the error code numbers for the new functions errors.
4.2.8 $ING_SRC/common/hdr/hdr/adfops.h
Allow for the new functions in table of function identifiers.
4.2.9 $ING_SRC/common/hdr/hdr/eradf.msg
Add trhe formatted error message strings for the new functions.
533574468
Page 23 of 32
4.3
COMPATIBILITY LIBRARY INTERFACE CHANGES
Describe any changes made to the compatibility library interface. Any
changes described here should be copied to CL platform reviewers for
approval before changes are made, and the CL spec should be updated to
reflect the new interface. Current platform reviewers are:
Joe Abbate – VMS
Viktoriya Driker - Windows
Bob Bonchik, Hong Hwe – UNIX
Mike Touloumtzis - Linux
None
4.4
INTERFACE
How do other components that are external to the design interact with
this component? Describe methods and rules of interaction.

Communication protocols; is GCA affected? Other?

Changes of facility call interfaces in the DBMS (e.g. is dmf_call
changed?)

Changes to the interface of non static functions

New error codes or error conditions that will be logged or propagated
up the stack to other functions. Has the error handling for those
functions been updated?
New error codes:
4.5

E_AD2055_CHECK_DIGIT_SCHEME

E_AD2056_CHECK_DIGIT_STRING

E_AD2057_CHECK_DIGIT_EMPTY

E_AD2058_CHECK_DIGIT_STRING_LENGTH:
BUILD IMPLICATIONS
Does this feature require any special jam rules? Did it require any
changes in jam MANIFEST files? Any new build targets? Any other build
alterations?
533574468
Page 24 of 32
No.
4.6
UI RESOURCE/PROPERTIES FILES
This section is largely relevant to GUI applications like OpenROAD and
can be removed for DBMS features.
Provide the names of the files required by the UI and Messages
File Name
4.7
Byte Count
Word Count
Format
Comments
BITMAP RESOURCES
This section is largely relevant to GUI applications like OpenROAD and
can be removed for DBMS features.
Provide the bitmap resources.
File
4.8
Comments
ICON FILES
This section is largely relevant to GUI applications like OpenROAD and
can be removed for DBMS features.
Provide the icon files used..
File
Comments
533574468
Page 25 of 32
Release note
System
requirements
4.9
PICCOLO CHANGE NUMBERS
Provide piccolo change numbers for changes made for this feature. This
will be filled in after the fact and should include change numbers for
propagations of the same change to other branches if appropriate
Change Number
Submitted to (code-branch)
Submission date
main
533574468
Page 26 of 32
5 IMPACT AND DOCUMENTATION SUMMARY
The estimates in this section are approximate and are intended to give
other groups such as Technical Writing, Services, Support and QA an idea
of the impact this change will have.
5.1
PRODUCT/COMPONENT IMPACTS
5.1.1 Entities
List the tools, commands, reports and messages that are impacted by the
development of the module/function. Use the table below to summarize
these changes; you can refer to other sections for details.
Entity
New
Modified
Comments
Tool
Commands
Messages
Help Modules
5.2
DOCUMENTATION
List the existing end-user documentation that is affected by modules
changes, and how it is affected. Be as specific and thorough as possible.
MANUAL
CHANGES NEEDED
Installation Guide
Database Administrator Guide
System Administrator Guide
Connectivity Guide
SQL Reference Guide
Command Reference Guide
Migration Guide
No
No
No
No
Yes, chapter 4.
Refer to details in section
3.1
No
No
Estimated
# of Pages
4
533574468
Page 27 of 32
6 QUALITY ISSUES
Look at the component from the QA point of view. Suggest any special
tests that will stress the component. Think how to make the component
NOT work and what special tests should be performed on this
component. This is a guideline to the QA testing procedures.
6.1
UNIT TESTING SUMMARY
Testing individual functions or subroutines in isolation is called unit
testing. Unit testing in some cases requires the developer to use stubs
and drivers. Describe the unit testing you did in these sections. Attach all
unit tests to the wiki page for this feature so that they are available to QA.
6.1.1 Unit Testing Description
List and unit testing planned or done..
Several test scripts have been created. These should be executed as follows.
6.1.1.1 test_basics.sh
The program will first display all the error messages I've added. These should be
checked manually for correct formatting.
It will then perform other basic tests and generate a summary at the end. Ensure
this has no errors listed.
6.1.1.2 Required data files
Several data files have been provided. These contain known valid check digits
for a scheme. The files are:
-
ean_8s.dat
-
eans.dat
-
isbn_13s.dat
-
isbns.dat
-
issns.dat
-
upces.dat
-
upcs.dat
533574468
Page 28 of 32
6.1.1.3 Required symlinks
Several scheme names are synonyms; to test these ensure the following
symlinks are loaded:
ln -s ./test_upc.sh test_ean_12.sh
ln -s ./test_ean.sh test_ean_13.sh
ln -s ./test_ean.sh test_gtin_13.sh
ln -s ./test_ean_8.sh test_gtin_8.sh
ln -s ./test_ean.sh test_gtin.sh
ln -s ./test_ean.sh test_jan.sh
ln -s ./test_ean_8.sh test_rcn_8.sh
ln -s ./test_upc.sh test_upc_a.sh
6.1.1.4 test all schemes
Then execute each of the remaining test programs...Simply check the summary
at end to see if errors have been listed.
- test_ean_12.sh
- test_ean_13.sh
- test_ean_8.sh
- test_ean.sh
- test_gtin_13.sh
- test_gtin_8.sh
- test_gtin.sh
- test_isbn_13.sh
- test_isbn.sh
- test_issn.sh
- test_jan.sh
- test_luhn_a.sh
- test_luhn.sh
- test_rcn_8.sh
- test_upc_a.sh
- test_upc_e.sh
- test_upc.sh
- test_verhoeffnr.sh
- test_verhoeff.sh
6.2
HANDOFFQA IMPACT
In this section you should document expected or observed diffs in
HandofQA caused by the feature as well as other things that impact
533574468
Page 29 of 32
HandoffQA; should any new tests be added to HandoffQA for this feature
to prevent regression?
6.3
TESTING RECOMMENDATIONS
Suggest other additional function tests that are necessary. Special test
requirements, for example: the security levels, hardware or software
configurations, code page and multiple code pages, multi-system issues.
Note anything that cannot be tested in a lab and which might require field
tests. What can go wrong? How are these situations dealt with?
The tests mentioned in 6.1 are extensive ands should be sufficient in
themselves.
6.4
REGRESSION RISK ASSESSMENT
What would be the implications of failure in the component? Is the code
complex? What is the potential for destabilizing existing functions?
What other areas of the product/component interact with this module?
A failure in the code would result in generating bad check digits or
incorrectly validating check digits. Such a failure would be local to the
application and would not hurt existing functions.
The code is not complex and should a bug arise then it should be a
straightforward fix.
6.4.1 Backward Compatibility Issues
Is there anything that should be tested for backward compatibility? Does
this feature affect how a down-rev client connects the current version of
the DBMS? Did the GCA protocol level change? Is upgradedb required?
No
533574468
Page 30 of 32
7 PACKAGING AND INSTALLATION IMPACT
Indicate any special packaging or installation requirements. Detail what
the packaging and installation requirements, if any, will be. Detail any
new files that are required, remember they should be added to the
manifest, you are responsible for doing this as part of the project.
None
533574468
Page 31 of 32
8 SUPPORT IMPACT
Detail any diagnostics or trace facilities built in to the component
including new IMA objects, trace points, or other build time or run-time
diagnostics. Note anything that could be made into a good supportability
tool. Note components that are:

Difficult to diagnose (for example: no tracing facility, dependent on
specific timing)

Difficult to service
Include workarounds where appropriate.
None.
8.1
EXAMPLES AND TESTS
Detail any example or test code that you wrote during the development of
the feature that may be useful to help support, QA, or customers to
understand the feature or useful to QA for testing. Attach all example and
test code or details to the wiki page for this feature
See list in 6.1.1
533574468
Page 32 of 32
Download