geordee.com

29Jan/07Off

Microsoft Word 2003 Annoyances

A few steps to prevent Word from over-assisting you...

  • Always show full menus
    • Go to Tools - Customize - Options
    • Check 'Always show full menus'
  • Disable Reading Layout
    • Goto Tools - Options - General
    • Uncheck 'Allow starting in Reading Layout'
  • Prevent Word documents from bloating up
    • Goto Tools - Options - Save
    • Uncheck 'Allow fast saves'
    • Uncheck 'Allow background saves'
  • Disable startup task pane
    • Go to Tools - Options - View
    • Uncheck 'Startup Task Pane'
  • Hide Office Clipboard (AcbControl does not work for me)
    • Goto View - Task Pane - Clipboard
    • Click Option
    • Uncheck 'Show Office Clipboard Automatically'
    • Uncheck 'Show Office Clipboard When Ctrl+C Pressed Twice''
    • Uncheck 'Show Office Clipboard Icon on Taskbar'
    • Uncheck 'Show Status Near Taskbar When Copying'
    • Check 'Collect Without Showing Office Clipboard'
  • Prevent Normal style (or any other style) from getting "automatically updated"
    • Goto Format - Styles and Formatting
    • Click on Normal (on the combo option) - Modify
    • Uncheck "Automatically Update"
    • You may need to do this for individual documents

29 January 2007

Filed under: notes Comments Off
29Jan/07Off

Function Point Analysis

NOTES FROM LONGSTREET'S TRAINING BOOKLET
http://www.softwaremetrics.com/freemanual.htm

INTRODUCTION
Developed first by Allan J. Albrecht in the mid 1970s

  • FPA is a method to break systems into smaller components, so they can be better understood and analyzed
  • Function points are a unit measure for software
    • much like an hour is to measuring time, miles are to measuring distance or Celsius is to measuring temperature
  • One of the largest misconceptions of function points is understanding what functionality is being exposed to an end user versus the delivered functionality.
    • When we size software applications we want to understand what is exposed and what is under the surface.
  • There are two basic types of elementary processes in a software application.
    • Data in motion and data at rest
    • Data in motion has the characteristic of moving data inside to outside the application boundary or outside to inside the application boundary.
  • Data in motion
    • External Inputs
    • External Outputs
    • External Inquiries
  • Data at rest
    • Internal Logical Files
    • External Interface Files

Function points are not a very good measure when sizing maintenance efforts (fixing problems) or when trying to understand performance issues. Much of the effort associated with fixing problems (production fixes) is due to trying to resolve and understand the problem (detective work). Another inherent problem with measuring maintenance work is that much of maintenance programming is done by one or two individuals. Individual skill sets become a major factor when measuring this type of work. The productivity of individual maintenance programmers can vary as much as 1,000 percent.

Performance tuning may or may not have anything to do with functionality. Performance tuning is more a result of trying to understand application throughput and processing time. There are better metrics to utilize when measuring this type of work.

  • Three types of Function Point Counts
    • Development Project Function Point Count (a.k.a Baseline Function Point Count)
    • Enhancement Project Function Point Count
    • Application Function Point Count
  • Productivity of the Language
    • Hours per Function Point
  • Productivity of the Programmer

Frederick W. Taylor believed that application of scientific methods, instead of custom and rules of thumb could yield higher productivity. A century after Frederick Taylor most software managers use rules of thumb instead of systematic study.

  • Productivity = outputs/inputs (within a time period, quality considered)
  • Software Productivity = Function Points / Inputs
  • Software productivity is defined as hours/function points or function points/hours
  • Industry data shows is the unit cost of software goes up with size
  • Unit Costs
    • The unit cost for external inputs may not be the same as the unit cost of external outputs
    • The online external inputs and the batch external inputs do not have the same unit cost
    • The cost per unit to build and implement internal logical files is not the same per unit cost as the building and implementing of online reports

FUNCTION POINT COUNTING PROCESS
The overall objective is to determine adjusted function point count

  1. Determine type of function point count
  2. Determine the application boundary
  3. Identify and rate transactional function types to determine their contribution to the unadjusted function point count.
  4. Identify and rate data function types to determine their contribution to the unadjusted function point count.
  5. Determine the value adjustment factor (VAF)
  6. Calculate the adjusted function point count.
  • FPA can be broken into three major parts
    • FPA for transactinal function types
    • FPA for data function types
    • FPA for GSCs
  • Since the rating of transactions is dependent on both information contained in the transactions and the number of files referenced, it is recommended that transactions are counted first.
  • Every FTR must have at least one or more transactions
  • Each transaction must be an elementary process.
    • An elementary process is the smallest unit of activity that is meaningful to the end user in the business. It must be self-contained and leave the business in consistent state.

ESTABLISHING THE BOUNDARY

  • The boundary indicates the border between the project or application being measured and the external applications or user domain
  • A Boundary must be drawn according to the sophisticated user’s point of view
  • There is a tendency to create a "new" application for the Internet/Intranet extension, but this approach is incorrect.
  • The boundaries for client/server applications need to be drawn around client and server together.

IDENTIFYING RET’S, DET’S, FTR’S

  • Record Element Type (RET): A RET is user recognizable sub group of data elements within an ILF or an EIF
  • File Type Referenced (FTR): A FTR is a file type referenced by a transaction. An FTR must also be an internal logical file or external interface file.
  • Data Element Type (DET): A DET is a unique user recognizable, non-recursive (non-repetitive) field. A DET is information that is dynamic and not static. A dynamic field is read from a file or created from DET’s contained in a FTR. Additionally, a DET can invoke transactions or can be additional information regarding transactions. If a DET is recursive then only the first occurrence of the DET is considered not every occurrence.
  • All of the components are rated based upon DET’s, and either RET’s or FTR’s.
    • EI: FTR, DET
    • EO: FTR, DET
    • EQ: FTR, DET
    • ILF: RET, DET
    • EIF: RET, DET
  • Transaction DET’s
    • External Inputs: Data Input Fields, Error Messages, Calculated Values, Buttons
    • External Outputs: Data Fields on a Report, Calculated Values, Error Messages, and Column Headings that are read from an ILF. Like an EQ and EO can have an input side and output sides.
    • External Inquiries: Input Side - field used to search by, the click of the mouse. Output side displayed fields on a screen.

For example, a simple application to track distributors could have fields for Distributor Name, Address, City, State, Zip, Phone Number, and Fax Number. This would represent seven fields or (seven data elements) and the add command button would represent the eighth data element. In short, the “add” external input represent a one external input with eight data elements, the “change” external input represents another external input with eight (seven data elements plus the “change” command button), and the “delete” external input represents the last external input with eight data elements (seven fields plus the “delete” command button).

  • DET’s for GUI
    • Radio Buttons are treated as data element types
    • one data element type is counted for all the radio buttons contained in the frame
    • Each check box, within a frame, that can be selected should be treated as a data element
    • According to IFPUG counting rules each command button would be counted as a data element for the action it invokes
    • A display of a graphical image is simply another data element
    • Many GUI applications have a sound byte attached. This represents one data element.
    • A photographic image is another data element, and is counted as one. (e.g. HR Application with employee photo)
    • Messages
    • error messages and confirmation messages
      • are not an elementary or independent process alone, but they are part of another elementary process
    • notification messages
      • are treated as External Outputs
  • DET’s For Real Time Systems
    • time of diagnostics, hardware state during diagnostics, temperature, voltage, so on and so forth would all be examples of data elements.
    • Real Time Systems may not have any “traditional user interface.” That is, the stimulus for the Real Time System may be it’s own output – or state.
  • Record Element Types (RET’s)
    • one of the most difficult concepts in function point analysis
    • Most record element types are dependent on a parent - child relationship
  • Navigation
    • is moving from one transaction to another

EXTERNAL INPUTS

  • is an elementary process in which data crosses the boundary from outside to inside
  • data may come from a data input screen or another application
  • data may be used to maintain one or more internal logical files
  • data can be either control information or business information
  • If an external input adds, changes and deletes (maintains) information on an internal logical file, then this represents three external inputs
  • External inputs (especially change & delete) may be preceded by an external inquiry (see the section on external inquiries)
  • An FTR can be either an Internal Logical File and/or External Interface File
  • Any internal logical file or external interface file that is referenced by an external input as part of the elementary process of maintaining an internal logical file would be considered an FTR also
    • For example, an External Input may update an internal logical file, but must also reference a “security file” to make sure that the user has appropriate security levels. This would be an example of two FTR’s.
  • A unique set of data elements, and/or a different set of FTR’s, and/or a unique set of calculations make one external input unique or different from other external inputs.
  • That is, one of the following must be true:
    • Unique or different set of data elements
    • Unique or different set of FTR’s
    • Unique or different calculations
  • Modification of any of the items, which make an External Input unique from other external inputs, causes the EI to be “enhanced.”
    • DET’s added to an EI
    • DET’s modified on an EI. The DET was included in the last FP Count.
    • A New FTR
    • Modifications to a calculation that appears on an EI
  • Some sources of information to determine external inputs are
    • Screen Layouts
    • Screen Dialogs
    • Design Documentation
    • Functional Specifications
    • User Requirements
    • Any Input Forms
    • Context Diagrams
    • Data Flow Diagrams

EXTERNAL OUTPUTS

  • an elementary process in which derived data passes across the boundary from inside to outside
  • Derived Data is data that is processed beyond direct retrieval and editing of information from internal logical files or external interface files
  • Derived data occurs when one or more data elements are combined with a formula to generate or derive an additional data element(s)
    • This derived data does not appear in any FTR
  • The rating is based upon the total number of unique (combined unique input and out sides) data elements (DET’s) and the file types referenced (FTR’s)
  • A unique set of data elements, and/or a different set of FTR’s, and/or a unique set of calculations makes one external output unique or different from other external outputs.
  • That is, one of the following must be true:
    • Unique or different set of data elements
    • Unique or different set of FTR’s
    • Unique or different calculations
    • Unique processing logic
  • Modification of any of the items, which make an External Output unique from other external outputs, causes the EO to be “enhanced.”
    • DET’s added to an EO
    • DET’s modified on an EO. The DET was included in the last FP Count.
    • A New FTR
    • Modifications to a calculation that appears on an EO.
  • Some sources of information to determine external outputs are
    • Report Layouts
    • Design Documentation
    • Functional Specifications
    • User Requirements
    • Database descriptions
    • Field Sizes and Formats
    • Graphical Report Layouts
  • External Output have an input side if the input side is not stand-alone and required by external output process
    • The FTR’s and DET’s used to search should be included in the count
  • An external output can update an internal logical file, but it is incorrect to say that an external output can maintain an internal logical file.

EXTERNAL INQUIRIES

  • an elementary process with both input and output components that result in data retrieval from one or more internal logical files and external interface files
  • the input process does not update or maintain any FTR’s and the output side does not contain derived data
  • A unique set of data elements, and/or a different set of FTR’s make one external inquiry unique or different from other external inquiry.
  • That is, one of the following must be true:
    • Unique or different set of data elements
    • Unique or different set of FTR’s
    • Unique processing logic
  • Modification of any of the items, which make an External Inquiry unique from other external inquiries, causes the EQ to be “enhanced.”
    • DET’s added to an EQ
    • DET’s modified on an EQ. The DET was included in the last FP Count.
    • A New FTR
  • Some sources of information to determine external inquiries are
    • Screen Layouts
    • Design Documentation
    • Functional Specifications
    • Table Layouts
    • User Requirements
    • Database descriptions
    • Pick lists
    • Field sizes and formats
  • all external inquiries have an input side
  • an external inquiry may update an internal logical file, but it is incorrect to say that an external inquiry can maintains an internal logical file

INTERNAL LOGICAL FILES

  • a user identifiable group of logically related data that resides entirely within the application boundary and is maintained through External Inputs
  • an ILF can consist of multiple physical files with different record types
  • Some sources of information to determine internal logical files are
    • Table Layouts
    • Database descriptions
    • Logical data models
    • Field sizes and formats
    • Design Documentation
    • Functional Specifications
    • User Requirements

EXTERNAL INTERFACE FILES

  • a user identifiable group of logically related data that is used for reference purposes only.
  • data resides entirely outside the application boundary.
  • pull theory
    • external application “reaching into” another applications and retrieving data
  • push theory
    • applications to create interfaces (EO or EQ) which other applications read
  • Some sources of information to determine internal logical files are
    • Table Layouts
    • Interface Diagrams
    • Database descriptions
    • Logical data models
    • Field sizes and formats
    • Design Documentation
    • Functional Specifications
    • User Requirements

GENERAL SYSTEM CHARACTERISTICS

  • to rate the general functionality of the application being counted
  • 14 general system characteristics
  • each characteristic has associated descriptions to determine the degrees of influence.
  • the degrees of influence range on a scale of zero to five, from no influence to strong influence.
    • 0 Not present, or no influence
    • 1 Incidental influence
    • 2 Moderate influence
    • 3 Average influence
    • 4 Significant influence
    • 5 Strong influence throughout
  • General System Characteristics
    1. Data communications
      • How many communication facilities are there to aid in the transfer or exchange of information with the application or system?
    2. Distributed data processing
      • How are distributed data and processing functions handled?
    3. Performance
      • Did the user require response time or throughput?
    4. Heavily used configuration
      • How heavily used is the current hardware platform where the application will be executed?
    5. Transaction rate
      • How frequently are transactions executed daily, weekly, monthly, etc.?
    6. On-Line data entry
      • What percentage of the information is entered On-Line?
    7. End-user efficiency
      • Was the application designed for end-user efficiency?
    8. On-Line update
      • How many ILF’s are updated by On-Line transaction?
    9. Complex processing
      • Does the application have extensive logical or mathematical processing?
    10. Reusability
      • Was the application developed to meet one or many user’s needs?
    11. Installation ease
      • How difficult is conversion and installation?
    12. Operational ease
      • How effective and/or automated are start-up, back up, and recovery procedures?
    13. Multiple sites
      • Was the application specifically designed, developed, and supported to be installed at multiple sites for multiple organizations?
    14. Facilitate change
      • Was the application specifically designed, developed, and supported to facilitate change?
  • the Value Adjustment Factor (VAF) is based on general system characteristics
    • VAF = 0.65 + SUM(GSC[1:14])/100

Function Point Count

  • Function Point Count (FPC) is the product of Unadjusted Function Point Count (UFC) and Value Adjustment Factor (VAF)
    • FPC = UFC * VAF

30 January 2007
References
http://www.softwaremetrics.com/freemanual.htm

Filed under: notes Comments Off
16Jan/070

Qualify Qualitatively

Quality is one of the evergreen topics for discussion in business world. I attended yet another session on quality a few days back and that made me think a bit deeper - more on concept and perceptions. Our instructor described quality as conformance to requirements and fitness for use, the common definitions from Philip Crosby and Joseph Juran. Next, our instructor mentioned that the need for quality is to survive in competition and to get repeat business - with heavy overtones from sales and marketing.

Many talk about product and process qualities further complicating the matter. They point out the competing objectives in product and process qualities (e.g. beyond a point an increase in efficiency of product decreases efficiency of process). It is much easier consider quality of product alone, and create a scope based on limitations in the process - such as budget, schedule, resources or techniques. The concept cost of quality is more useful than dealing with multiple perspectives of quality. I also prefer the word maturity over quality when talking about processes.

QualityIn my opinion, the word qualification suits better to the descriptions of quality mentioned above. It's high time we should differentiate quality and 'quality management/control/assurance'. The latter is more associated with qualification - ensuring that the product/process is qualified according to the requirements.

The dictionary defines quality as An essential and distinguishing attribute of something or someone, A degree or grade of excellence or worth, A characteristic property that defines the apparent individual nature of something or Of superior grade. A few synonyms for quality are caliber, character and select. These phrases and words give a more accurate definition - devoid of sales and marketing pressures - making us understand that quality is more of a character of products and processes than a set of methodologies and tools. ISO defines quality as degree to which a set of inherent characteristic fulfills requirements.

In my opinion, achieving quality thus becomes part of work-culture. Methods and tools are important because it is difficult and time-consuming to permeate the concepts and organizational philosophies into individuals. However, those are just some means to and end, and the importance of quality as part of organization's culture should not be overlooked. The success of Toyota is not their methods or lean tools, but the quality that is instilled into organization's culture.

Thus I would say, "make quality as the character of your organization or product and qualify your services (and products) to suit customer's requirements".

Filed under: blog No Comments
11Jan/070

Systems Approach

Currently I am reading a book named Long-Range Forecasting - From Crystal Ball To Computer (LRF). The author - J Scott Armstrong - begins by introducing a simple idea which he calls systems approach as the first lesson to be learned in forecasting. The approach is an elementary technique for analysis and planning. Many such important techniques in management have been known for decades or even centuries. We keep reinventing, repackaging and reselling!!!

The systems approach helps in developing, evaluating & implementing projects (programs) with a holistic perspective. Quoting from LRF:

"The systems approach uses two basic ideas. First, one should examine objective before considering ways of solving a problem; and second, one should begin by describing the system in general terms before proceeding to the specific."

It helps to break down a problem into four generic steps: 1. Identify objectives, 2. Develop indicators of success, 3. Generate alternative strategies, and 4. Develop and select programs.

It is often found that the projects are executed without finalizing or understanding the objectives, postponing the definition of validation mechanisms and not considering the alternative strategies and designs. I have seen this happening among managers while estimation and planning, designers while creating systems architectures, and software developers while coding the foundation modules (I was also a partaker). I have worked in a couple of projects that did not have any purpose but to exhaust the budget or justify some previous mistakes/investment.

These real experiences helped me to appreciate the basic steps illustrated by Armstrong in a very simple, but striking manner. Here's an analogy for easy recollection.

  • Rainmaker Theory Number One: "The rainmaker gets so involved with the dance that he sometimes forgets that he has to make rain."
  • Rainmaker Theory Number Two: "Yes, I know it didn't rain - but didn't you like the dance?" In other words, the successful rainmaker is the one who can convince his client that he really didn't want rain - he wanted to watch the dance.
  • Rainmaker Theory Number Three: "Who cares why it rains?" The science of rainmaking evolves into the science of rainmaking dances.
- LRF, Chapter Two - The Systems Approach, Page 16
Filed under: blog No Comments