RCPT: Re: Forte productivity metrics

Confirmation of reading: your message -
Date: 13 Dec 96 9:07
To: [email protected]
Subject: Re: Forte productivity metrics
Was read at 20:10, 22 Mar 96.

Confirmation of reading: your message -
Date: 13 Dec 96 9:07
To: [email protected]
Subject: Re: Forte productivity metrics
Was read at 20:10, 22 Mar 96.

Similar Messages

  • Forte Estimating Metrics

    In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
    Lorenz in proposes an approach for estimating OO projects. Lorenz recommends
    the average amount of effort spent on a single class is the best indictor of
    the amount of work required on a new project. He suggests Smalltalk developers
    average 5-10 person-days per class, and C++ developers average 25-35
    person-days per class.
    Has anyone a view on average effort to build Forte classes?
    Note, the metrics quoted above relate to Design and Implementation. They
    assume Analysis has been completed, and do not include the time for project
    management, systems testing, and other support personnel. They assume a ratio
    of 1:6 OO experts to novices. Higher ratios should result in greater
    productivity (lower average efforts per class). The guidelines also assume no
    library of reusable components.
    Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
    consultant and author. His method is based on the results of 8-16 Smalltalk and
    C++ projects (not all statistics are available from all projects). Projects
    ranged in size from 60 to 700+ project-specific classes. Project durations
    ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
    Thanks for any help
    gjb.

    Ron,
    Many thanks for your input, and I agree with your comments.
    In this case, I do have a function point count which I am using for my primary
    estimate. However, a prudent estimator will use multiple techniques for
    comparison and reconciliation. The Class based approach, despite it's
    weaknesses, appears to be a quick and simple technique to get a rough number.
    As it's turned out, the function point estimate and the class based estimate
    have come within 10% of each other.
    Regards
    gjb
    ronald.ten-hove @ acm.org
    07/06/97 03:32 am
    To: Greg Barber
    cc: forte-users @ Sagesoln.com @ Internet
    Subject: Re: Forte Estimating Metrics
    Greg,
    In my experience, the class-count metric is a poor one for time estimation,
    for four reasons:
    1. The actual time/class is very domain- and implementation-
    sensitive. Industry averages are fairly unhelpful, unless
    you happen to employ average practices and work in domains
    of "average" complexity (whatever that means!)
    2. It does not account for the overall size of the project; the
    larger the project, the lower overall productivity is.
    3. It requires that a fairly detailed design be done already, which
    represents a fair amount of the total effort; as an estimation
    tool, it is only useful in the latter stages of a project.
    4. Lorenz's research is based on a very small sample; 18 projects are
    hardly enough to have statistical validity.
    (I almost included a fifth point, but it is hardly worthy: class-counting
    can be spoofed. Awareness of the use of class-count as a metric can give
    developers a motive to either artificially increase or decrease the class
    count, depending on other motivating factors.)
    I would recommend function point analysis as a more general purpose tool
    for project management. Using a good statement of the requirements, FPA
    generates a measure of the size of the application in terms of function
    points. This is independent of the implementation; it measures the
    behaviours of the application, rather than the particulars of design
    or implementation, such as class count or lines-of-code. Note that
    expected productivity varies as a function of the overall size of a project.
    FPA has been used as part of the study of literally thousands of
    software projects, so the conclusions drawn from FPA studies done
    by Capers Jones at Software Productivity Research have some
    statistical credibility.
    Looking at the general productivity numbers gathered by SPR
    (http://www.spr.com), there are some productivity measures that
    cover many languages, including Forte. In terms of lines-of-code
    per function point, Forte is 3 times more productive than C++.
    In terms of overall productivity (function points / man month), there
    are too many variable factors to make a simple statement of relative
    productivity levels between C++ and Forte meaningful. This has a lot
    to do with the Forte object model and run-time system, which, in certain
    problem domains, provides a lot of function points (or equivalent)
    "for free." In other words, if you can use Forte's plumbing package,
    you're automatically more productive. Providing the equivalent in
    C++ would be a daunting task (I should know -- I've done it!)
    The best method of determining your productivity is to measure it. There
    are many factors that affect the overall productivity of your software
    organisation; the programming language choice is just one. Using metrics
    drawn on industry averages concerning just ONE variable in the product
    development process is not terribly useful in project management.
    If you are looking for an extremely rough number that is more defensible
    that the good old "gut feel" technique, then class counting is probably
    the least intrusive on the development process.
    -Ron
    At 08:02 AM 6/5/97 +1000, you wrote:
    In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
    Lorenz in proposes an approach for estimating OO projects. Lorenzrecommends
    the average amount of effort spent on a single class is the best indictor of
    the amount of work required on a new project. He suggests Smalltalkdevelopers
    average 5-10 person-days per class, and C++ developers average 25-35
    person-days per class.
    Has anyone a view on average effort to build Forte classes?
    Note, the metrics quoted above relate to Design and Implementation. They
    assume Analysis has been completed, and do not include the time for project
    management, systems testing, and other support personnel. They assume aratio
    of 1:6 OO experts to novices. Higher ratios should result in greater
    productivity (lower average efforts per class). The guidelines also assumeno
    library of reusable components.
    Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
    consultant and author. His method is based on the results of 8-16Smalltalk and
    C++ projects (not all statistics are available from all projects). Projects
    ranged in size from 60 to 700+ project-specific classes. Project durations
    ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
    Thanks for any help
    gjb.

  • Re: Forte Estimating Metrics

    Greg,
    In my experience, the class-count metric is a poor one for time estimation,
    for four reasons:
    1. The actual time/class is very domain- and implementation-
    sensitive. Industry averages are fairly unhelpful, unless
    you happen to employ average practices and work in domains
    of "average" complexity (whatever that means!)
    2. It does not account for the overall size of the project; the
    larger the project, the lower overall productivity is.
    3. It requires that a fairly detailed design be done already, which
    represents a fair amount of the total effort; as an estimation
    tool, it is only useful in the latter stages of a project.
    4. Lorenz's research is based on a very small sample; 18 projects are
    hardly enough to have statistical validity.
    (I almost included a fifth point, but it is hardly worthy: class-counting
    can be spoofed. Awareness of the use of class-count as a metric can give
    developers a motive to either artificially increase or decrease the class
    count, depending on other motivating factors.)
    I would recommend function point analysis as a more general purpose tool
    for project management. Using a good statement of the requirements, FPA
    generates a measure of the size of the application in terms of function
    points. This is independent of the implementation; it measures the
    behaviours of the application, rather than the particulars of design
    or implementation, such as class count or lines-of-code. Note that
    expected productivity varies as a function of the overall size of a project.
    FPA has been used as part of the study of literally thousands of
    software projects, so the conclusions drawn from FPA studies done
    by Capers Jones at Software Productivity Research have some
    statistical credibility.
    Looking at the general productivity numbers gathered by SPR
    (http://www.spr.com), there are some productivity measures that
    cover many languages, including Forte. In terms of lines-of-code
    per function point, Forte is 3 times more productive than C++.
    In terms of overall productivity (function points / man month), there
    are too many variable factors to make a simple statement of relative
    productivity levels between C++ and Forte meaningful. This has a lot
    to do with the Forte object model and run-time system, which, in certain
    problem domains, provides a lot of function points (or equivalent)
    "for free." In other words, if you can use Forte's plumbing package,
    you're automatically more productive. Providing the equivalent in
    C++ would be a daunting task (I should know -- I've done it!)
    The best method of determining your productivity is to measure it. There
    are many factors that affect the overall productivity of your software
    organisation; the programming language choice is just one. Using metrics
    drawn on industry averages concerning just ONE variable in the product
    development process is not terribly useful in project management.
    If you are looking for an extremely rough number that is more defensible
    that the good old "gut feel" technique, then class counting is probably
    the least intrusive on the development process.
    -Ron
    At 08:02 AM 6/5/97 +1000, you wrote:
    In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
    Lorenz in proposes an approach for estimating OO projects. Lorenzrecommends
    the average amount of effort spent on a single class is the best indictor of
    the amount of work required on a new project. He suggests Smalltalkdevelopers
    average 5-10 person-days per class, and C++ developers average 25-35
    person-days per class.
    Has anyone a view on average effort to build Forte classes?
    Note, the metrics quoted above relate to Design and Implementation. They
    assume Analysis has been completed, and do not include the time for project
    management, systems testing, and other support personnel. They assume aratio
    of 1:6 OO experts to novices. Higher ratios should result in greater
    productivity (lower average efforts per class). The guidelines also assumeno
    library of reusable components.
    Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
    consultant and author. His method is based on the results of 8-16Smalltalk and
    C++ projects (not all statistics are available from all projects). Projects
    ranged in size from 60 to 700+ project-specific classes. Project durations
    ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
    Thanks for any help
    gjb.

    Greg,
    In my experience, the class-count metric is a poor one for time estimation,
    for four reasons:
    1. The actual time/class is very domain- and implementation-
    sensitive. Industry averages are fairly unhelpful, unless
    you happen to employ average practices and work in domains
    of "average" complexity (whatever that means!)
    2. It does not account for the overall size of the project; the
    larger the project, the lower overall productivity is.
    3. It requires that a fairly detailed design be done already, which
    represents a fair amount of the total effort; as an estimation
    tool, it is only useful in the latter stages of a project.
    4. Lorenz's research is based on a very small sample; 18 projects are
    hardly enough to have statistical validity.
    (I almost included a fifth point, but it is hardly worthy: class-counting
    can be spoofed. Awareness of the use of class-count as a metric can give
    developers a motive to either artificially increase or decrease the class
    count, depending on other motivating factors.)
    I would recommend function point analysis as a more general purpose tool
    for project management. Using a good statement of the requirements, FPA
    generates a measure of the size of the application in terms of function
    points. This is independent of the implementation; it measures the
    behaviours of the application, rather than the particulars of design
    or implementation, such as class count or lines-of-code. Note that
    expected productivity varies as a function of the overall size of a project.
    FPA has been used as part of the study of literally thousands of
    software projects, so the conclusions drawn from FPA studies done
    by Capers Jones at Software Productivity Research have some
    statistical credibility.
    Looking at the general productivity numbers gathered by SPR
    (http://www.spr.com), there are some productivity measures that
    cover many languages, including Forte. In terms of lines-of-code
    per function point, Forte is 3 times more productive than C++.
    In terms of overall productivity (function points / man month), there
    are too many variable factors to make a simple statement of relative
    productivity levels between C++ and Forte meaningful. This has a lot
    to do with the Forte object model and run-time system, which, in certain
    problem domains, provides a lot of function points (or equivalent)
    "for free." In other words, if you can use Forte's plumbing package,
    you're automatically more productive. Providing the equivalent in
    C++ would be a daunting task (I should know -- I've done it!)
    The best method of determining your productivity is to measure it. There
    are many factors that affect the overall productivity of your software
    organisation; the programming language choice is just one. Using metrics
    drawn on industry averages concerning just ONE variable in the product
    development process is not terribly useful in project management.
    If you are looking for an extremely rough number that is more defensible
    that the good old "gut feel" technique, then class counting is probably
    the least intrusive on the development process.
    -Ron
    At 08:02 AM 6/5/97 +1000, you wrote:
    In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
    Lorenz in proposes an approach for estimating OO projects. Lorenzrecommends
    the average amount of effort spent on a single class is the best indictor of
    the amount of work required on a new project. He suggests Smalltalkdevelopers
    average 5-10 person-days per class, and C++ developers average 25-35
    person-days per class.
    Has anyone a view on average effort to build Forte classes?
    Note, the metrics quoted above relate to Design and Implementation. They
    assume Analysis has been completed, and do not include the time for project
    management, systems testing, and other support personnel. They assume aratio
    of 1:6 OO experts to novices. Higher ratios should result in greater
    productivity (lower average efforts per class). The guidelines also assumeno
    library of reusable components.
    Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
    consultant and author. His method is based on the results of 8-16Smalltalk and
    C++ projects (not all statistics are available from all projects). Projects
    ranged in size from 60 to 700+ project-specific classes. Project durations
    ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
    Thanks for any help
    gjb.

  • Message Read Confirmation

    Your message with subject, Re: Forte productivity metrics, and dated 13 Dec 96 9:07 was read by Len Leber at Fri, 13 Dec 1996 18:35:01 PST.
    ==============================================
    Len Leber
    ATG Solutions, Incorporated
    [email protected]

    Hi Souvlaki
    If you are using Panther Mail you can use a plugin called MailPriority, which sadly doesn't work in Mail 2.0.
    There are some work-arounds that get close to offering what Outlook has, including an all-or-nothing terminal hack.
    You can read about them here.

  • Using third party tool to initiate a Forte batchprogram

    Hello Forte Users,
    Our company has acquired a software product called Maestro. It's a
    production scheduling facility that manages tasks for batch mode execution.
    We would like to know if anyone out there has had any experience using this
    product with Forte. One recommendation that we discussed was to have
    Maestro start a script on Escript to communicate to an agent that would
    start the batch process at a specified time. Has anyone done something
    similar or can offer any suggestions ?
    Thanks in advance,
    Jean Mercier
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Jean,
    We use Maestro for all our scheduling scripts. To start\stop the
    environment and start\stop applications. We create a shell script that uses
    escript to start/stop applications. Maestro just calls the shell scripts
    and monitor it for completion. I think you have to write the shell script
    in a standard way to return an error if it does not finish properly. Here
    is an example:
    #!/bin/csh
    source /appls/forte/fortedef.csh
    $FORTE_ROOT/install/bin/start_nodemgr -fm "(x:300000)" -e TR2ProdEnv
    ps -fu forte | grep -v grep|grep nodemgr>/appls/forte/production/scripts/KBB
    set KBB=/appls/forte/production/scripts/KBB
    if (-z $KBB) then
    exit 1
    else
    exit 0
    endif
    Hope this helps.
    ka
    Kamran Amin
    Forte Technical Leader, Core Systems
    (203)-459-7362 or 8-204-7362 - Trumbull
    [email protected]
    From: Jean Mercier[SMTP:[email protected]]
    Sent: Monday, April 12, 1999 10:36 AM
    To: Forte-Users (E-mail)
    Subject: Using third party tool to initiate a Forte batch program
    Hello Forte Users,
    Our company has acquired a software product called Maestro. It's a
    production scheduling facility that manages tasks for batch mode
    execution.
    We would like to know if anyone out there has had any experience using
    this
    product with Forte. One recommendation that we discussed was to have
    Maestro start a script on Escript to communicate to an agent that would
    start the batch process at a specified time. Has anyone done something
    similar or can offer any suggestions ?
    Thanks in advance,
    Jean Mercier
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Re: (forte-users) install

    Andrea,
    You cannot do it without shutting down and reinstalling.
    Partial builds are only for building what changed instead
    of rebuilding all the partitions. This is controlled by Forte
    which detremines which partition changed and what to build
    because of that change. Thats about it.
    The only way you can dynamically load something is through
    libraries. I am not sure if you have to shut down and reinstall in
    this case too.
    Hope this helps.
    Regards,
    Nirmal
    PSI Data Systems Ltd.
    -----Original Message-----
    From: andrea harper <[email protected]>
    To: Forte-Users <[email protected]>
    Date: Monday, November 08, 1999 4:34 PM
    Subject: (forte-users) install
    I am attempting to integrate some new code into a FORTE production
    application and I would like to do it without shutting the applicationdown.
    I have heard that this can be done by making a partial build. I was
    wondering if anyone could comment on the steps I should take to installthis
    partial build on the application without shutting it down.
    Thanks.
    Reserve your name now at http://www.email.com
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]

    If you want this kind of flexibility, you can, but it has to be part
    of your design right from the start. You should design your
    application not as a single, large application, but rather as a
    collection of several small components, that can be installed,
    de-installed and re-installed independantly. They should inter-
    act with each other not through reference partitions, but through
    the NameSevice (ObjectLocationMgr).
    This way, you can dynamically add and remove pieces of
    functionality, without the need to shut the whole system down.
    Pascal Rottier
    STP - MSS Support & Coordination Group
    Philip Morris Europe
    e-mail: [email protected]
    Phone: +49 (0)89-72472530
    +++++++++++++++++++++++++++++++++++
    Origin IT-services
    Desktop Business Solutions Rotterdam
    e-mail: [email protected]
    Phone: +31 (0)10-2428100
    +++++++++++++++++++++++++++++++++++
    /* All generalizations are false! */
    -----Original Message-----
    From: andrea harper [SMTP:[email protected]]
    Sent: Monday, November 08, 1999 7:29 PM
    To: Forte-Users
    Subject: (forte-users) install
    I am attempting to integrate some new code into a FORTE production
    application and I would like to do it without shutting the application
    down.
    I have heard that this can be done by making a partial build. I was
    wondering if anyone could comment on the steps I should take to install
    this
    partial build on the application without shutting it down.
    Thanks.
    Reserve your name now at http://www.email.com
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]

  • Installing Forte Software

    Sorry, slightly off topic, but not that much!
    I am about to install Forte 6.1 and I am faced with the normal procedure.
    Deinstall old Workshop software and install new version, since the packages
    use the same name and even the workrounds (see FAQ) does not give much hope!
    Why can't SUN have different package names in the updates. I do not see any
    major problems with that I installing/patching would be so easy!!!
    e.g.
    SPROcpl5
    SPROcpl6
    SPROcpl7
    etc....
    Install in /opt/SUNspro6 or /opt/SUNspro7....
    It would make life much easier
    Come on SUN it make sence....unless you think differently?
    Andrew Watkins

    Which Forte application are you trying to install? Forte C?
    Do you have libXm.so.4 in /usr/dt/lib by any chance?
    Most likely, you do not have the correct version of Motif installed for the Forte product which you are trying to use. You probably need Motif 2.1 and higher. You can check which version you have by issuing the following command:
    pkginfo -l SUNWmfrun
    If you do not have Motif 2.1 installed, remove the version you have and install
    Motif 2.1 from a Solaris 2.7 CDROM.
    -Moazam

  • Online Help to Accompany a Forte application

    Folks
    Does anyone know of a good on-line help editor that works well with
    Forte products? It needs to be a Windows NT compatible software.
    Does anybody have experience with WinHelp?
    Thanks ... Nigel
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Hi Nigel,
    I've recently had some experience with a product called Robohelp, and
    integrated it cleanly into a Forte development. The product itself
    generates your "Standard" standalone type help files (I believe it is
    also fairly simple to convert these help documents to Web based HTML
    help). The author of the web pages also found the product fairly easy
    to use, producing professional, easy to use detailed help pages.
    From an integration perspective it worked well for context sensitivehelp along with your typical menu help scenario. The only small (and
    I mean small) qualm I have here is the context sensitive references
    are numeric, and when entered into Forte are not easily recognisable
    as their help topic counter part (On the upside you can generate a
    report which displays the help topic number and topic description).
    Hope this is of some "help" !
    Regards,
    Kevin.
    ==
    Kevin Love <[email protected]>
    PricewaterhouseCoopers
    Management Consulting Services
    Direct : 61 3 8603-2278
    Mobile : 61 3 0418-341-048
    http://www.pwcglobal.com
    DO YOU YAHOO!?
    Get your free @yahoo.com address at http://mail.yahoo.com
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Regarding Forte Upgrade to L

    Hello Everybody,
    I did some digging around and found that Forte recommends using same
    revision in
    order to avoid problems. A good reading on this subject was found in
    ID # 310
    Subject: Forte Product Mix
    Category: Product/Platform alerts.
    Tech Note: 11803.
    Thanks for everybody's help.
    Sanjeev.

    Answer is NO. It will cost you $129.00.
    -Bmer
    Mac Owners Support Group
    Join Us @ MacOSG.com
    iTunes: MacOSG Podcast
     An Apple User Group 

  • Follow up on an old thread about memory utilization

    This thread was active a few months ago, unfortunately its taken me until now
    for me to have enough spare time to craft a response.
    From: SMTP%"[email protected]" 3-SEP-1996 16:52:00.72
    To: [email protected]
    CC:
    Subj: Re: memory utilization
    As a general rule, I would agree that memory utilzation problems tend to be
    developer-induced. I believe that is generally true for most development
    environments. However, this developer was having a little trouble finding
    out how NOT to induce them. After scouring the documentation for any
    references to object destructors, or clearing memory, or garbage collection,
    or freeing objects, or anything else we could think of, all we found was how
    to clear the rows from an Array object. We did find some reference to
    setting the object to NIL, but no indication that this was necessary for the
    memory to be freed.
    I believe the documentation, and probably some Tech-Notes, address the issue of
    freeing memory.
    Automatic memory management frees a memory object when no references to the
    memory
    object exist. Since references are the reason that a memory object lives,
    removing
    the references is the only way that memory objects can be freed. This is why the
    manuals and Tech-Notes talk about setting references to NIL (I.E. freeing memory
    in an automatic system is done by NILing references and not by calling freeing
    routines.) This is not an absolute requirement (as you have probably noticed
    that
    most things are freed even without setting references to NIL) but it accelerates
    the freeing of 'dead' objects and reduces the memory utilization because it
    tends
    to carry around less 'dead' objects.
    It is my understanding that in this environment, the development tool
    (Forte') claims to handle memory utilization and garbage collection for you.
    If that is the case, then it is my opinion that it shoud be nearly
    impossible for the developer to create memory-leakage problems without going
    outside the tool and allocating the memory directly. If that is not the
    case, then we should have destructor methods available to us so that we can
    handle them correctly. I know when I am finished with an object, and I
    would have no problem calling a "destroy" or "cleanup" method. In fact, I
    would prefer that to just wondering if Forte' will take care of it for me.
    It is actually quite easy to create memory leaks. Here are some examples:
    Have a heap attribute in a service object. Keep inserting things into
    the heap and never take them out (I.E. forgot to take them out). Since
    service objects are always live, everything in the heap is also live.
    Have an exception handler that catches exceptions and doesn't do
    anything
    with the error manager stack (I.E. it doesn't call task.ErrMgr.Clear).
    If the handler is activated repeatedly in the same task, the stack of
    exceptions will grow until you run out of memory or the task terminates
    (task termination empties the error manager stack.)
    It seems to me that this is a weakness in the tool that should be addressed.
    Does anyone else have any opinions on this subject?
    Actually, the implementation of the advanced features supported by the Forte
    product
    results in some complications in areas that can be hard to explain. Memory
    management
    happens to be one of the areas most effected. A precise explanation to a
    non-deterministic process is not possible, but the following attempts to
    explain the
    source of the non-determinism.
    o The ability to call from compiled C++ to interpreted TOOL and back
    to compiled C++.
    This single ability causes most of the strange effects mentioned in
    this thread.
    For C++ code the location of all variables local to a method is not
    know
    (I.E. C++ compilers can't tell you at run-time what is a variable
    and what
    isn't.) We use the pessimistic assumption that anything that looks
    like a
    reference to a memory object is a reference to a memory object. For
    interpreted
    TOOL code the interpreter has exact knowledge of what is a reference
    and what
    isn't. But the TOOL interpreter is itself a C++ method. This means
    that any
    any memory objects referenced by the interpreter during the
    execution of TOOL
    code could be stored in local variables in the interpreter. The TOOL
    interpreter
    runs until the TOOL code returns or the TOOL code calls into C++.
    This means
    that many levels of nested TOOL code can be the source of values
    assigned to
    local variables in the TOOL interpreter.
    This is the complicated reason that answers the question: Why doesn't a
    variable that is created and only used in a TOOL method that has
    returned
    get freed? It is likely that the variable is referenced by local
    variables
    in the TOOL interpreter method. This is also why setting the
    variable to NIL
    before returning doesn't seem to help. If the variable in question is a
    Array than invoke Clear() on the Array seems to help, because even
    though the
    Array is still live the objects referenced by the Array have less
    references.
    The other common occurrence of this effect is in a TextData that
    contains a
    large string. In this case, invoking SetAllocatedSize(0) can be used
    to NIL
    the reference to the memory object that actually holds the sequence of
    characters. Compositions of Arrays and TextData's (I.E. a Array of
    TextData's
    that all have large TextDatas.) can lead to even more problems.
    When the TOOL code is turned into a compiled partition this effect
    is not
    noticed because the TOOL interpreter doesn't come into play and
    things execute
    the way most people expect. This is one area that we try to improve
    upon, but it is complicated by the 15 different platforms, and thus
    C++ compilers,
    that we support. Changes that work on some machines behave
    differently on other
    machines. At this point in time, it occasionally still requires that
    a TOOL
    programmer actively address problems. Obviously we try to reduce
    this need over
    time.
    o Automatic memory management for C++ with support for multi-processor
    threads.
    Supporting automatic memory management for C++ is something that is
    not a very
    common feature. It requires a coding standard that defines what is
    acceptable and
    what isn't. Additionally, supporting multi-processor threads adds
    its own set of
    complications. Luckily TOOL users are insulated from this because
    the TOOL to C++
    code generator knows the coding standard. In the end you are
    impacted by the C++
    compiler and possibly the differences that occur between different
    compilers and/or
    different processors (I.E. Intel X86 versus Alpha.) We have seen
    applications that
    had memory utilization differences of up to 2:1.
    There are two primary sources of differences.
    The first source is how compilers deal with dead assignments. The
    typical TOOL
    fragment that is being memory manager friendly might perform the
    following:
    temp : SomeObject = new;
    ... // Use someObject
    temp = NIL;
    return;
    When this is translated to C++ it looks very similar in that temp
    will be assigned the
    value NULL. Most compilers are smart enough to notice that 'temp' is
    never used again
    because the method is going to return immediately. So they skip
    setting 'temp' to NULL.
    In this case it should be harmless that the statement was ignored
    (see next example for a different variation.) In more
    complicated examples that involve loops (especially long
    lived event loops) a missed NIL assignment can lead to leaking the
    memory object whose
    reference didn't get set to NIL (incidentally this is the type of
    problem that causes
    the TOOL interpreter to leak references.)
    The second source is a complicated interaction caused by history of
    method invocations.
    Consider the following:
    Method A() invokes method B() which invokes method C().
    Method C() allocates a temporary TextData, invokes
    SetAllocatedSize(1000000)
    does some more work and then returns.
    Method B() returns.
    Method A() now invokes method D().
    Method D() allocates something that cause the memory manager to look
    for memory objects to free.
    Now, even though we have returned out of method C() we have starting
    invoking
    methods. This causes us to use re-use portions of the C++ stack used to
    maintain the history of method invocation and space for local variables.
    There is some probability that the reference to the 'temporary' TextData
    will now be visible to the memory manager because it was not overwritten
    by the invocation of D() or anything invoked by method D().
    This example answers questions of the form: Why does setting a local
    variable to
    NIL and returning and then invoking task.Part.Os.RecoverMemory not
    cause the
    object referenced by the local variable to be freed?
    In most cases these effects cause memory utilization to be slightly
    higher
    than expected (in well behaved cases it's less than 5%.) This is a small
    price to pay for the advantages of automatic memory management.
    An object-oriented programming style supported by automatic memory
    management makes it
    easy to extended existing objects or sets of objects by composition.
    For example:
    Method A() calls method B() to get the next record from the
    database. Method B()
    is used because we always get records, objects, of a certain
    type from
    method B() so that we can reuse code.
    Method A() enters each row into a hash table so that it can
    implement a cache
    of the last N records seen.
    Method A() returns the record to its caller.
    With manual memory management there would have to be some interface
    that allows
    Method A() and/or the caller of A() to free the record. This
    requires
    that the programmer have a lot more knowledge about the
    various projects
    and classes that make up the application. If freeing doesn'
    happen you
    have a memory leak, if you free something while its still
    being used the
    results are unpredictable and most often fatal.
    With automatic memory management, method A() can 'free' its
    reference by removing
    the reference from the hash table. The caller can 'free' its
    reference by
    either setting the reference to NIL or getting another
    record and referring
    to the new record instead of the old record.
    Unfortunately, this convenience and power doesn't come for free. Consider
    the following,
    which comes from the Forte' run-time system:
    A Window-class object is a very complex beast. It is composed of two
    primary parts:
    the UserWindow object which contains the variables declared by the
    user, and the
    Window object which contains the object representation of the window
    created in
    the window workshop. The UserWindow and the Window reference each
    other. The Window
    references the Menu and each Widget placed on the Window directly. A
    compound Window
    object, like a Panel, can also have objects place in itself. These
    are typically
    called the children. Each of the children also has to know the
    identity of it's
    Mom so they refer to there parent object. It should be reasonably
    obvious that
    starting from any object that make up the window any other object
    can be found.
    This means that if the memory manager finds a reference to any
    object in the Window
    it can also find all other objects in the window. Now if a reference
    to any object
    in the Window can be found on the program stack, all objects in the
    window can
    also be found. Since there are so many objects and the work involved
    in displaying
    a window can be very complicated (I.E. the automatic geometry
    management that
    layouts the window when it is first opened or resized.) there are
    potentially many
    different reference that would cause the same problem. This leads to
    a higher than
    normal probability that a reference exists that can cause the whole
    set of Window
    objects to not be freed.
    We solved this problem in the following fashion:
    Added a new Method called RecycleMemory() on UserWindow.
    Documented that when a window is not going to be used again
    that it is
    preferably that RecycleMemory() is invoked instead
    of Close().
    The RecycleMemory() method basically sets all references
    from parent to
    child to NIL and sets all references from child to
    parent to NIL.
    Thus all objects are isolated from other objects
    that make up
    the window.
    Changed a few methods on UserWindow, like Open(), to check
    if the caller
    is trying to open a recycled window and throw an
    exception.
    This was feasible because the code to traverse the parent/child
    relationship
    ready existed and was being used at close time to perform other
    bookkeeping
    operations on each of the Widgets.
    To summarize:
    Automatic memory management is less error prone and more productive but
    doesn't come totally for free.
    There are things that the programmer can do that assists the memory
    manager:
    o Set object reference to NIL when known to be correct (this
    is the
    way the memory is deallocated in an automatic system.)
    o Use methods like Clear() on Array and SetAllocatedSize()
    on TextData to
    that allow these objects to set their internal
    references to NIL
    when known to be correct.
    o Use the RecycleMemory() method on windows, especially very
    complicated
    windows.
    o Build similar type of methods into your own objects when
    needed.
    o If you build highly connected structures that are very
    large in the
    number of object involved think that how it might be
    broken
    apart gracefully (it defeats some of the purpose of
    automatic
    management to go to great lengths to deal with the
    problem.)
    o Since program stacks are the source of the 'noise'
    references, try
    and do things with less tasks (this was one of the
    reasons that
    we implemented event handlers so that a single task
    can control
    many different windows.)
    Even after doing all this its easy to still have a problem.
    Internally we have
    access to special tools that can help point at the problem so that
    it can be
    solved. We are attempting to give users UNSUPPORTED access to these
    tools for
    Release 3. This should allow users to more easily diagnose problems.
    It also
    tends to enlighten one about how things are structured and/or point out
    inconsistencies that are the source of known/unknown bugs.
    Derek
    Derek Frankforth [email protected]
    Forte Software Inc. [email protected]
    1800 Harrison St. +510.869.3407
    Oakland CA, 94612

    I beleive he means to reformat it like a floppy disk.
    Go into My Computer, Locate the drive letter associated with your iPod(normally says iPod in it, and shows under removable storage).
    Right click on it and choose format - make sure to not have the "quick format" option checked. Then let it format.
    If that doesnt work, There are steps somewhere in the 5th gen forum( dont have the link off hand) to try to use the usbstor.sys to update the USB drivers for the Nano/5th gen.

  • Partitioning Question - range partition?

    Hello all
    we have an issue with the amount of data we have in a particular schema that we are using to store production metrics. I have looked at a few options and are now trying to design a solution using partitioning. At a very high level we have data in 7 tables that need to utilise partitioning:
    JOBS
    FILES
    MAILPIECES
    MAILPIECE_DETAILS
    TNT_DATA
    BAGFILES
    POSTAL_BAGS
    Ideally I would like to use a RANGE partition as I can fairly easily use a date as the range - my issue here though is that only the FILES table has a DATE column on it.
    So my question is, for the other tables, is it best practice to use the same 'sort of' partitions - in which case I would need to add a DATE column to each subsequent table and populate it correctly (based on the date in the FILES table - as the FILES table is acting as the PARENT table for all the other tables). Or, should each table be treated individually and partitioned using whatever method is appropriate for that table?
    Any help would be greatly appreciated.
    Many thanks
    Paul

    Hi,
    if you are running 11g and all other tables are indeed children to FILES then consider reference partitioning.

  • Currency Conversion using third party tool

    Hi,
    I am trying to access BW from a third party tool and so far been quite successfull accessing BW Infocubes and Bex Queries by using OLAP BAPIs. However my customer wants to use currency conversion as it is available in BEX in the third party tool as well. I need some thoughts in this direction from experts who have worked on Business Objects and BW integration.
    I believe Business Objects has a similar interface with BW using OLAP BAPIs. Is there a currency conversion functionality available in Business Objects for BW? Would really appreciate if somebody, who has tried out this feature, can share some of his/her experience.
    Thanks,
    Anurag.

    Jean,
    We use Maestro for all our scheduling scripts. To start\stop the
    environment and start\stop applications. We create a shell script that uses
    escript to start/stop applications. Maestro just calls the shell scripts
    and monitor it for completion. I think you have to write the shell script
    in a standard way to return an error if it does not finish properly. Here
    is an example:
    #!/bin/csh
    source /appls/forte/fortedef.csh
    $FORTE_ROOT/install/bin/start_nodemgr -fm "(x:300000)" -e TR2ProdEnv
    ps -fu forte | grep -v grep|grep nodemgr>/appls/forte/production/scripts/KBB
    set KBB=/appls/forte/production/scripts/KBB
    if (-z $KBB) then
    exit 1
    else
    exit 0
    endif
    Hope this helps.
    ka
    Kamran Amin
    Forte Technical Leader, Core Systems
    (203)-459-7362 or 8-204-7362 - Trumbull
    [email protected]
    From: Jean Mercier[SMTP:[email protected]]
    Sent: Monday, April 12, 1999 10:36 AM
    To: Forte-Users (E-mail)
    Subject: Using third party tool to initiate a Forte batch program
    Hello Forte Users,
    Our company has acquired a software product called Maestro. It's a
    production scheduling facility that manages tasks for batch mode
    execution.
    We would like to know if anyone out there has had any experience using
    this
    product with Forte. One recommendation that we discussed was to have
    Maestro start a script on Escript to communicate to an agent that would
    start the batch process at a specified time. Has anyone done something
    similar or can offer any suggestions ?
    Thanks in advance,
    Jean Mercier
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • FORTELINKORA for NT?

    G'day All
    On VMS I use FORTE_ROOT:[install.scripts]fortelinkora.com to relink forte to
    a new oracle installation. How do I do this on NT without having to
    reinstall the entire Forte product? I can't seem to find any file(name) in
    the Forte directories that fit's the bill.
    Forte v30G2 on a DELL NT4 Server using Oracle 7.3.abc2xyz
    TIA,
    Dirk Haben
    Fort&eacute; System Administrator
    SEALCORP
    Level 38, Central Park
    152 St George's Terrace
    Perth WA 6000
    Voice: +61-8-9265-5758

    You can expect iFS for NT to be downloadable from OTN within the next week.
    Thanks for your patience,
    Tim

  • PAS QUERY: parent-child in to different columns from single dimension

    Hello,
    We are looking for the syntax to execute a PAS (Pilot Application Server) query with the following characteristics:
    1)     Products dimension is hierarchically arranged by Product Type (parent) and the Product itself (child). There are other ancestors but we wonu2019t necessarily use them.
    2)     We want to obtain a report through PAS scripting which allows us to display product hierarchy names in two different columns, i.e.: Column1 (Product Type) Column2 (Product) , but since they are part of the same hierarchy (dimension), we are not able to present the results as shown in the example below:
    Example:
    Product_Type     Product        Metric
    Core               ProductX        MetricN
    Core              ProductY        MetricN
    New              ProductW        MetricN
    New              ProductZ        MetricN
    Any clues on how to attain this?
    Thanks in advance.

    Hi,
    You can make use of CrossJoin function in MDX, I give a sample MDX based on the AdventureWorks database:
    select {[Measures].[Reseller Sales Amount]} on 0,
    crossjoin({[Sales Territory].[Sales Territory Group].[Sales Territory Group].members},{[Sales Territory].[Sales Territory Country].[Sales Territory Country].members}) on 1
    from [Adventure Works]
    After execut the MDX you will get the result like this:
    Reseller Sales Amount
    Europe
    France
    $4,607,537.94
    Europe
    Germany
    $1,983,988.04
    Europe
    United Kingdom
    $4,279,008.83
    NA
    NA
    (null)
    North America
    Canada
    $14,377,925.60
    North America
    United States
    $53,607,801.21
    Pacific
    Australia
    $1,594,335.38
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • HTML Editors and Greek Language

    Hi all,
    When using the HTML Editor the value that is stored in the database
    is
    &Delta &epsilon &nu &upsilon &pi ά&rho &chi &epsilon &iota&alpha &pi ό&theta &epsilon &mu &alpha (Deleted ; in the end of each character so that I can show you what I mean).
    instead of Δεν υπάρχει απόθεμα
    This doesn't happen when I use text item or text area.
    Can I do something about it?
    APEX version 3.1.0.00.32
    Thanks in advance

    Peggy,
    FrontPage 97 / 98 have both worked really well for us, however we
    discovered a slight hitch with 98 where the Editor would gobble up
    <?FORTE ..> tags inside the SELECT OPTION tag, but you can work around
    that one, apart from this FP98 is a great HTML editor. I also thought
    HotMetal was a good fit.These observations come out of evaluating about
    5-6 leading HTML editors.
    Some recommended steps in the process:
    1) Create a prototype by laying out all the HTML using an Editor. Figure
    out all the navigation within your web. More recent features seen in
    HTML editors such as JavaScript generation and DHTML / CSS support are
    really difficult to work out on your own, let the advanced Editors do as
    much dirty work for you as poss.
    2) Once the prototype is finalized, for all the pages requiring any
    dynamic content generation, figure out all the Tag Handlers you will
    need. Change the HTML Content by inserting the FORTE tags as required,
    code the corresponding Handlers.
    3) Figure out the relation between page requests and the security
    requirements for your pages, design the Session properties and data
    tracing across requests using the Session object.
    4) Do refer to all the Tech Notes on the Forte web site for known
    issues.
    As for the Java applets frontend, we have used Java - IIOP - Forte since
    early beta through every Forte release (3.0.X) and it works fine with
    WebEnterprise and release 30f2.
    - Sameer
    From: Peggy Lynn Adrian <[email protected]>
    Date: Wed, 07 Jan 1998 15:19:58 -0500
    Subject: WebEnterprise - HTML Editors and Java
    I'd like to know any opinions on HTML editors and their use with
    WebEnterprise. Have any of you done
    evaluations to determine the best editor to use with the Forte
    product? Also,
    do you have experience using
    a Java applet as the front-end to a Forte service object? In this
    instance,
    are you able to do so with Forte 30f2 and
    WebSDK?
    Thanks,
    Peggy Adrian
    Eli Lilly and Company

Maybe you are looking for