• No results found

A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES

N/A
N/A
Protected

Academic year: 2021

Share "A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES"

Copied!
113
0
0

Loading.... (view fulltext now)

Full text

(1)

A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES ACQ. SFTWR DEV. SERV--A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES

A GUIDE FOR ACQUIRING SOFTWARE

DEVELOPMENT SERVICES

EXECUTIVE SUMMARY

The General Services Administration (GSA), Information Resources Management Service (IRMS), develops Governmentwide policies and guidance for automated data processing, records, and telecommunications. IRMS' objective is to ensure that Federal agencies acquire, manage, and use Federal information processing (FIP) resources that meet their requirements in an economical and efficient manner. This Guide provides Government program, information resources management, and contracting officials with an introduction to the acquisition of software development services. The Guide, written for readers unfamiliar with the Federal acquisition process for software development services, is not a complete reference work or a regulation and, therefore, directs the reader to other sources for detailed information and guidance.

FOREWORD

The General Services Administration (GSA) is issuing this Guide to assist Federal agencies in acquiring software development services. It should be used in conjunction with existing regulations. This is one of a series of acquisition guides under development by the Policy Analysis Division of the Information Resources Management Service (IRMS). The Federal Systems Integration and

Management Center (FEDSIM) is providing technical assistance in developing the series. The GSA Project Manager was Gloria Sochon, with assistance from Robert Karr. GSA gratefully acknowledges Rex Bolton, U.S. Army, who assisted in the review of the Guide as a member of the Interagency Acquisition Guide Advisory Group, and the following GSA staff: Doug Arai, Diane Herdt, Judy Steele, and Jeff Tucker. To obtain copies of this publication or to be added to the GSA IRM Reference Center mailing list, please use the order request forms provided as the last pages of this document. We welcome your comments regarding this Guide and the Acquisition Guide Series. Please use the "Reader's Comments" sheet at the back of the Guide or contact the Policy Analysis Division at (202) 501- 2462 with your suggestions or questions. G. Martin Wagner Acting Commissioner Information Resources Management Service U.S. General Services Administration This Guide was written by American Management Systems, Inc. Arlington, Virginia

TABLE OF CONTENTS

Page 1. INTRODUCTION. . . 1-1 1.1 THE ACQUISITION GUIDE SERIES. . . . 1-1 a. Background. . . 1-1 b. Audiences . . . 1-1 c. Objectives. . . 1-2 1.2 SCOPE OF THE SOFTWARE DEVELOPMENT

SERVICES GUIDE. . 1-3 a. The Complete Acquisition Life-Cycle . . . 1-3 b. Limitations . . . . . . . 1-5 1.3 ORGANIZATION OF THE SOFTWARE DEVELOPMENT SERVICES GUIDE. . . . 1-5 a. General Information . . . 1-5 b. Life-Cycle Focus. . . . . . . . 1-6 2. GENERAL INFORMATION . . . 2-1 2.1 DEFINITION OF KEY ACQUISITION TERMS . . . 2-1 a. Federal Information Processing Resources. . . . 2-2 b. Acquisition . . . 2-2 c. Requirements Analysis . . . 2-3 d. Analysis of Alternatives. . . 2-3 e. Acquisition Strategy. . . 2-4 2.2 WHAT ARE

SOFTWARE DEVELOPMENT SERVICES? . . . 2-4 a. Software. . . 2-4 (1) Already-existing Software . . . 2-7 (2) Custom-developed Software . . . 2-8 b. Scope of Software Development Services Acquisitions. . . .2-11 (1) Specific Services That Could be Included in a Software Development Services Acquisition. . . .2-11 (2)

(2)

Software Development Services Acquisitions vs. Systems Integration Services Acquisitions. . . . .2-11 c. Relation of Software Development Services to Other FIP Resources . . . .2-12 d. Relation of This Guide to Others in the Acquisition Guide Series. . . .2-12 2.3 ROLES AND RESPONSIBILITIES. . . .2-13 a. End User. . . .2-15 b. Program

Manager . . . .2-15 c. Information Resources Management/Technical Representative. . . . . . . .2-16 d. Contracting Officer . . . .2-17 e. Contracting Officer's Technical Representative. . . 18 2.4 KEYS TO SUCCESSFUL ACQUISITIONS . . . .2-19 a. Define Requirements Functionally. . . .2-.2-19 b. Obtain Full and Open Competition. . . . .2-21 c. Guard Procurement-Sensitive Information . . . .2-22 d. Identify, Agree on, and Document Assumptions and Constraints . . . .2-23 e. Involve All Three Staff Disciplines . . . .2-24 f. Consider Agency-Specific Requirements or Restrictions. . . .2-25 g. Begin the Acquisition Process Early . . . .2-25 2.5 PROTESTS. . . .2-27 3. SPECIAL CHARACTERISTICS OF SOFTWARE DEVELOPMENT SERVICES. . . . 3-1 3.1 HOW SOFTWARE IS DEVELOPED . . . 3-2 a. Typical Life-Cycle Stages . . . . . . . 3-2 (1) Functional and Data Requirements. . . 3-3 (2) Design. . . 3-6 (3) Build . . . 3-7 (4) Test. . . 3-8 (5) Implement . . . . 3-9 (6) Operate and Maintain. . . .3-10 b. Tools Used in the Software Development Process . . . . . .3-11 (1) Programming Languages . . . .3-11 (2) Automated Software Development. . . .3-14 (3) Prototyping . . . .3-22 3.2 SOFTWARE LIFE-CYCLE MANAGEMENT METHODOLOGIES. . . .3-25 a. Methodology Defined . . . .3-25 b. What a Methodology Should Include . . . .3-26 c. Benefits and Issues of Following a Life-Cycle Methodology . . . .3-28 d. Should the Agency Specify a Methodology?. . . .3-29 3.3 QUALITY . . . .3-30 a. Two Measures of Quality . . . .3-30 b. The Importance of Quality in Software Development Services Acquisitions . . . .3-32 c. Predicting Quality Before Award . . . .3-36 d. Ensuring Quality After Award. . . .3-37 3.4 MEASURING PROGRESS. . . .3-39 3.5 INVOLVEMENT OF MULTIPLE CONTRACTORS DURING SOFTWARE DEVELOPMENT . . . .3-41 3.6

SIGNIFICANT CONCERNS IN DEVELOPING SOFTWARE . . . .3-44 a. Development of Open Systems . . . .3-44 b. Designing-in Computer Security Throughout the Life-Cycle. . . . . . . .3-47 c. Software License Rights . . . .3-48 d. Data Administration Considerations. . . . . . .3-50 e. Emerging Trends in Software Development . . . .3-52 (1) Changes in the Economics of Software Development. . . .3-52 (2) Rightsizing . . . .3-53 (3) Incremental Software Development. . . . .3-54 (4) Interactive Design Techniques . . . .3-56 (5) Object-Oriented Programming . . . .3-59 (6) Reengineering . . . .3-60 (7) Reverse Engineering . . . . . . .3-61 4. OVERVIEW OF THE ACQUISITION LIFE-CYCLE. . . 4-1 4.1 PLANNING PHASE. . . 4-1 a. Identifying Automation Needs. . . 4-1 b. Planning. . . . . . . . 4-2 c. Budgeting . . . 4-3 4.2 ACQUISITION PHASE . . . . . . . 4-3 a. Requirements Analysis . . . 4-3 b. Analysis of Alternatives. . . . 4-4 c. Developing the Source Selection Plan (SSP). . . 4-5 d. Developing the Solicitation . . . . 4-5 e. Issuing the Solicitation. . . 4-6 f. Receiving Bids or Proposals . . . 4-6 g. Source Selection. . . 4-7 (1) Evaluating Bids or Proposals. . . 4-7 (2) Selecting the Contractor. . . 4-8 (3) Awarding the Contract . . . 4-8 4.3 IMPLEMENTATION PHASE. . . 4-8 4.4 ACTIVITIES AT THE END OF THE ACQUISITION LIFE-CYCLE. . . 4-9 5. REQUIREMENTS ANALYSIS . . . 5-1 5.1 INTRODUCTION. . . 5-1 5.2 KEY FACTORS FOR SUCCESSFUL

REQUIREMENTS ANALYSES. . 5-1 a. Identify, Agree on, and Document Assumptions and Constraints . . . 5-2 b. Devote an Appropriate Level of Effort to the Requirements Analysis . . . 5-2 c. Reassess Requirements Periodically. . . 5-3 d. Distinguish Between Mandatory Requirements and Optional Capabilities . . . 5-4 5.3 ROLES AND

RESPONSIBILITIES. . . 5-5 a. Program Personnel . . . 5-5 b. IRM/Technical Personnel . . . 5-6 c. Contracting Personnel . . . 5-6 5.4

PRELIMINARY STEPS . . . 5-6 a. Determining Overall Information Needs . . . 5-7 (1) Determining the Agency's Business Profile. . . 5-7 (2) Determining What the Current Systems Can Support. . . 5-8 (3) Defining Information Technology

(3)

Objectives . . . 5-9 b. Planning and Budgeting for Software Projects. . 5-9 (1)

Identifying Software Projects . . . .5-10 (2) Preparing Plans . . . .5-12 (3) Budgeting . . . . . . . . .5-13 (4) Deciding Whether to Continue. . . .5-13 5.5 TYPES OF REQUIREMENTS TO IDENTIFY . . . .5-16 a. Software Functional and Performance Requirements. . . . . . . .5-17 (1) Capabilities. . . .5-17 (2) User Interface. . . .5-18 (3) Workload. . . . .5-19 (4) Speed . . . .5-20 (5) Growth. . . .5-20 (6) Reliability . . . .5-21 (7) Availability. . . .5-21 (8) Accessibility by Individuals with Disabilities . . . .5-21 (9) Control . . . .5-24 (10) Security and Privacy . . . .5-24 (11) Training . . . .5-25 (12) Conversion . . . . .5-26 (13) Documentation . . . .5-26 (14) User and Operator Support. . . .5-26 (15) Standards. . . .5-27 b. Technical Environment Requirements . . . .5-28 (1) Hardware Environment. . . .5-28 (2) System Software Environment . . . .5-28 (3)

Telecommunications Environment. . . .5-29 (4) Integration with Other Systems. . . .5-29 5.6 DOCUMENTING THE REQUIREMENTS ANALYSIS . . . .5-29 6. ANALYSIS OF

ALTERNATIVES. . . 6-1 6.1 OBJECTIVE . . . 6-1 a. Analysis of Technical Options . . . 6-3 b. Analysis of Acquisition Options . . . 6-4 6.2 CHOOSING BETWEEN ALREADY-AVAILABLE AND CUSTOM- DEVELOPED SOFTWARE . . . . . . . 6-4 a. Mandatory-for-Use Programs. . . 6-5 b. Mandatory-for-Consideration Programs. . . . . . 6-7 c. Reengineering Existing Agency Software. . . 6-7 d. Using Another Agency's Software . . . . . . 6-9 e. Commercial Software . . . .6-10 f. Custom-Developed Software . . . . .6-11 6.3 KEY FACTORS FOR SUCCESSFUL ANALYSES OF ALTERNATIVES . . . . . . . .6-11 a. Base the Analysis on the Agency's Requirements. . . .6-12 b. Complete the Analysis Before Deciding on the Solution. . . .6-13 c. Identify, Agree on, and Document Assumptions and Constraints . . . .6-14 d. Use a Limited Set of Key Criteria to Distinguish among Options . . . .6-15 e. Do Not Eliminate Options by Dictating a Specific Approach . . . .6-17 f. Recognize that Requirements and Alternatives Evolve Over Time. . . . . .6-18 g. Test the Sensitivity of the Analysis to Changes in Assumptions and Constraints . . .6-21 6.4 ROLES AND RESPONSIBILITIES. . . .6-22 a. IRM/Technical Personnel . . . . . . . .6-22 b. Program Personnel . . . .6-23 c. Contracting Personnel . . . . .6-24 6.5 SURVEYING THE MARKET. . . .6-25 a. Sources of Information. . . . . . .6-27 (1) Trade Publications. . . .6-29 (2) Vendor Marketing Literature . . . .6-29 (3) Other Publications. . . .6-30 (4) Trade Shows and Exhibitions . . . .6-31 (5) User Groups and Other Professional Associations . . . 32 (6) Other Government Users. . . .6-32 (7) Request For Information (RFI) . . . .6-33 b. What Information to Gather. . . .6-34 (1) Technical Feasibility . . . .6-35 (2) Service Availability. . . .6-35 (3) Degree of Competition Available . . . . .6-36 (4) Pricing Information . . . .6-36 (5) Industry Support and Contractual Practices. . . .6-37 6.6 ANALYSIS OF TECHNICAL OPTIONS . . . . . .6-38 a. Performing Software Development Services On-site or Off-site . . . .6-39 b. Limiting the Techniques and Tools Used. . . . 40 c. Limiting Unilateral Personnel Replacement . . .6-40 d. Deciding the Range of Software Development Services . . . .6-42 e. Choosing Among Technical Options. . . .6-44 (1) Identifying the Options That Meet All Mandatory

Requirements . . . .6-45 (2) Identifying the Key Discriminators. . . .6-45 (3) Comparisons . . . . . . . .6-46 f. Documenting the Technical Choice. . . .6-48 6.7 ANALYSIS OF

ACQUISITION OPTIONS . . . .6-49 a. Noncontractual Options. . . .6-49 (1) Do Nothing. . . .6-49 (2) Reassign Software Development Services Resources within the Agency. . . .6-50 (3) Reschedule Software Development Services . . . .6-50 (4) Share Software Development Services with Another Agency . . . .6-50 b. Contractual Options . . . . . . .6-52 c. Choosing Among the Acquisition Options. . . . .6-53 d. Document the Analysis of Acquisition Options. .6-53 6.8 DOCUMENTING THE ACQUISITION STRATEGY. . . .6-54 7. COMPETITION REQUIREMENTS. . . 7-1 7.1 CONTRACTING UNDER FULL AND OPEN COMPETITION . . . . 7-1 7.2 DEGREES OF COMPETITION. . . 7-2 a. Full and Open Competition . . . 7-2 b. Full and Open Competition After Exclusion of Sources . . . 7-3 c. Other Than Full and Open Competition. . . 7-3 (1)

(4)

Other Than Full and Open Competition . . . 7-5 7.3 COMPETITION ADVOCATES . . . . . . . 7-6 8. REVIEW, APPROVAL, AND AUTHORIZATION PROCESS . . . 8-1 8.1 THRESHOLD LEVELS. . . 8-1 8.2 AGENCY-LEVEL REVIEW AND APPROVAL. . . 8-2 8.3 GSA REVIEW AND AUTHORIZATION. . . 8-5 9. GENERAL CONTRACTING CONSIDERATIONS. . . 9-1 9.1 SOUND ACQUISITION PLANNING AND EXECUTION. . . 9-1 a. Match the Level of Effort to the Size and Scope of the Acquisition. . . 9-1 b. Maximize Competition. . . 9-2 c. Develop Clear Specifications and Work Statements. . . 9-4 d. Avoid Providing Information to Potential Offerors Unless Authorized. . . 9-7 e. Document and Follow the Source Selection Process . . . 9-9 f. Involve Each Discipline throughout the Acquisition Process . . . . . . . .9-10 g. Actively Seek Parallel Reviews and Approvals. .9-11 h. Document the Bases for Decisions. . . .9-11 i. Assign a Team with a Level of Expertise Equal to the Size and Scope of the Acquisition. . .9-12 9.2 APPLICABLE REGULATIONS AND GUIDANCE . . . .9-13 9.3 ROLES AND RESPONSIBILITIES. . . .9-14 a. Program Personnel . . . .9-14 b. IRM/Technical Personnel . . . .9-15 c. Contracting Personnel . . . .9-16 9.4 IDENTIFYING REQUIREMENTS FOR THE SOFTWARE DEVELOPMENT CONTRACTOR . . . . . . . . .9-17 a. Specific Development Services . . . .9-17 b. Government and Contractor Responsibilities. . .9-18 c. Estimated Labor Hours by Personnel Category . .9-23 d. Minimum Personnel and Corporate Qualifications. . . .9-23 e. Deliverable Items and Delivery Schedule . . . .9-25 f. Interim Deliverables and Reviews. . . .9-27 g. Performance Measures. . . . . . . .9-28 (1) Quantifiable Performance Measures . . . .9-28 (2) Qualitative Software-Specific Measures. .9-32 (3) Compliance with Documentation Standards .9-33 (4) Compliance with Statement of Work (SOW) .9-34 h. Review, Approval, and Acceptance Procedures . .9-34 i. Financial Measures. . . . . .9-36 (1) Incentives. . . .9-36 (2) Liquidated Damages. . . .9-36 (3) Deduction Schedules . . . .9-37 j. Status Reports and Progress Briefings . . . . .9-37 k. Standards . . . .9-39 l. Development Methodology . . . .9-40 m. Technical Development Environment . . . .9-41 n. Software Maintenance. . . .9-41 o.

Configuration Management. . . .9-42 p. Site Security . . . .9-43 q. Personnel Security. . . .9-44 r. Records Management. . . .9-44 s. Budget. . . . . . . .9-45 t. Contract Life . . . .9-46 9.5 SELECTING A CONTRACT TYPE . . . . . . . .9-46 a. Contract Types. . . .9-47 (1) Fixed-Price Contracts . . . .9-49 (2) Cost-Reimbursement Contracts. . . .9-49 (3) T∧M Contracts . . . .9-51 (4) Incentive Contracts . . . .9-52 b. Issuing Agencywide Indefinite Delivery Contracts . . . . . . . .9-56 10. CONTRACTING BY NEGOTIATION . . . .10-1 10.1 ATTRIBUTES OF NEGOTIATED CONTRACTS . . . .10-2 a. Differences Between Negotiation and Other Contracting Methods . . . .10-2 b. Contract Attributes . . . .10-4 10.2 THE SOURCE SELECTION PLAN (SSP). . . .10-4 a. Source Selection Team Organization. . . . .10-5 b. Determining the Evaluation Factors. . . .10-8 (1) Price or Cost . . . .10-8 (2) Technical or Quality. . . .10-9 c. Source Selection Approaches . . . 10-18 10.3 STEPS IN CONTRACTING BY NEGOTIATION. . . 10-21 a. Prepare and Issue the Solicitation. . . . 10-21 (1) Write the Solicitation. . . 10-21 (2) Develop an Independent Government Cost Estimate (IGCE). . . 10-27 (3) Obtain Industry Comments on the Draft Solicitation

(Optional). . . 10-28 (4) Hold a Presolicitation Conference (Optional) . . . 10-29 (5) Develop Source Selection Materials. . . 10-29 (6) Publicize the Solicitation in the CBD . 10-32 (7) Issue the Solicitation. . . 10-32 (8) Hold a Preproposal Conference (Optional) . . . . 10-32 (9) Answer Questions and Amend the Solicitation . . . 10-33 b. Evaluate Proposals. . . . . 34 (1) Train the SST . . . 35 (2) Receive Proposals . . . 10-36 (3) Determine Whether Proposals Comply with Solicitation Instructions. . . 10-10-36 (4) Evaluate Proposals Against Minimum Technical Requirements . . . 10-37 (5) Request Clarification . . . . . . . 37 (6) Rate Technical Proposals. . . 38 (7) Conduct Initial Total Cost Evaluation . 10-39 (8) Establish the Competitive Range . . . . 10-10-39 c. Selecting a Contractor. . . 10-40 (1) Conduct Discussions and Negotiations. . 10-40 (2) Request BAFOs . . . 10-41 (3) Evaluate BAFOs. . . 10-42 (4) Recommend the Apparent Winner . . . 10-43 (5) Conduct

(5)

10-45 (7) Notify Unsuccessful Offerors. . . 10-46 (8) Debrief Unsuccessful Offerors . . . 10-46 11. OTHER ACQUISITION METHODS. . . .11-1 11.1 ACQUISITION BY SMALL PURCHASE. . . .11-1 a. Purpose of Small Purchase Procedures. . . .11-2 b. Using Small Businesses. . . .11-3 c. Competition . . . .11-4 (1) Purchases of $2,500 or less . . . .11-4 (2) Purchases between $2,500 and $25,000. . .11-4 11.2 ACQUISITION FROM ESTABLISHED SOURCES OF SUPPLY . .11-5 a. Benefits of Using Established Sources of Supply. . . . . .11-5 b. Available Sources . . . .11-6 (1) Agencywide Indefinite Delivery Contracts. . . .11-6 (2) GSA Contracts . . . .11-7 11.3

ACQUISITION BY SEALED BIDDING. . . .11-8 12. CONTRACT ADMINISTRATION. . . . . . . .12-1 12.1 ROLES AND RESPONSIBILITIES . . . .12-1 a. Contracting Personnel . . . .12-1 b. IRM/Technical Personnel . . . .12-5 c. Program Personnel . . . . .12-5 12.2 PREPARING FOR THE CONTRACTOR . . . .12-6 a. Obtaining and Preparing Space, GFE, and GFI . .12-6 (1) Space . . . .12-6 (2) Government Furnished Equipment. . . .12-8 (3) Government Furnished Information. . . . .12-9 b. Preparing Agency Personnel to Work with the Contractor. . . .12-9 c. Reviewing the Contractor's Project Plan . . . 12-10 d. Developing a Tracking and Reporting System. . 12-12 12.3 POST-AWARD CONFERENCE. . . 12-13 12.4 CONTRACT MONITORING. . . . . . . 12-14 a. Communicating with the Contractor . . . 12-16 b. Enforcing Key Personnel Clauses . . . 12-17 c. Obtaining Performance . . . 12-18 (1) Technical Performance . . . . 12-19 (2) Cost Performance. . . 12-19 (3) Schedule Performance . . . 12-20 d. Determining Awards and Incentives . . . 12-21 e. Exercising Contract Options . . . 12-23 f. Contract Modifications. . . 12-24 (1) Administrative Changes. . . 12-25 (2)

Requirements Changes. . . 12-25 g. Warranties. . . 12-25 h. Quality Assurance (QA) Deduction Schedules. . 12-27 i. Claims. . . 12-28 j. Contract Terminations . . . 12-28 (1) Reasons for Termination . . . 12-29 (2) Procedures for Termination. . . 12-30 k. Contract Closeout . . . 12-32 l. Contract Reviews and Audits . . . 12-33 m. Importance of the COTR in Software Contract Monitoring. . . . . . . . 12-34 13. SOFTWARE DEVELOPMENT . . . .13-1 13.1 FUNCTIONAL AND DATA REQUIREMENTS ANALYSIS. . . . .13-1 a. Determine Detailed Functional Requirements. . .13-2 b. Determine Detailed Data Requirements. . . .13-4 13.2 DESIGN . . . . .13-6 a. Preliminary Design. . . .13-6 b. Detailed Design . . . .13-8 c. Design Review . . . 13-11 13.3 BUILD. . . 13-13 13.4 TESTING. . . 13-16 a. Ensure Thorough Testing . . . 13-17 b. Levels of Testing . . . 13-17 (1) Unit. . . 13-18 (2) Integration . . . . . 13-18 (3) System. . . 13-18 13.5 READINESS REVIEW . . . 13-19 14. SOFTWARE TESTING AND ACCEPTANCE. . . .14-1 14.1 SOFTWARE QUALITY ASSURANCE (QA). . . .14-1 a. Development Contractor. . . .14-3 b. Agency. . . . . . . .14-4 c. Support Contractor. . . .14-5 14.2 DETERMINING TEST OBJECTIVES. . . .14-6 14.3 DECIDING WHAT TO TEST. . . .14-7 14.4 TYPES OF TESTING . . . 14-10 a. Design Testing. . . 14-10 b. Software Testing. . . 14-11 14.5 CHOOSING AMONG TEST METHODS. . . . 14-12 a. Benchmark Testing . . . 14-13 b. Black Box Testing . . . 14-13 c. White Box Testing . . . 14-14 d. Testing with Fabricated Data. . . 14-14 e. Testing with Real Data. . . 15 14.6 DETERMINING RESOURCES FOR TESTING. . . 14-16 14.7 ACCEPTING THE SOFTWARE AFTER SUCCESSFUL TESTING. 14-14-16 15. SOFTWARE IMPLEMENTATION. . . .15-1 15.1 IMPLEMENTATION . . . .15-1 a. Implementation Steps. . . .15-2 (1) Pre-installation. . . .15-3 (2) Installation. . . . . .15-5 (3) Post-installation . . . .15-6 b. Implementation Considerations . . . . . . .15-6 (1) Cutover Approach. . . .15-8 (2) Site Preparation. . . 15-11 (3) Data Conversion . . . 15-12 (4) Interface Programs. . . 15-13 (5) Procedural Changes. . . . . . 15-14 (6) Documentation . . . 15-14 (7) Preparing the Users . . . 15-15 (8) User Training . . . 15-16 (9) Back-up Procedures. . . 15-16 (10) Security . . . . . . . 15-17 16. SOFTWARE OPERATION AND MAINTENANCE . . . .16-1 16.1 SOFTWARE OPERATION AND SUPPORT . . . .16-1 a. Performance Monitoring. . . .

(6)

. . .16-2 b. Continued Configuration Management. . . .16-4 16.2 SOFTWARE MAINTENANCE . . . . . .16-6 16.3 SOFTWARE MODIFICATION/ENHANCEMENT. . . .16-8

APPENDIX A GLOSSARY AND ACRONYMS . . . A1 APPENDIX B LEGISLATIVE AND REGULATORY ENVIRONMENT. . . B1 APPENDIX C

-BIBLIOGRAPHY. . . C-1 APPENDIX D - GSA ASSISTANCE PROGRAMS . . . . . . . . D-1 APPENDIX E - CONTACTS FOR MORE INFORMATION . . . E-1 APPENDIX F - OFFICE OF FEDERAL PROCUREMENT POLICY (OFPP) POLICY LETTER 91-2 . . . . . . . F-1

LIST OF EXHIBITS

Page 3-1 Differences Between Source and Object Code. . . .3-12 4-1 The Acquisition Life-Cycle. . . . . . 4-2 6-1 Overview of the Analysis of Alternatives Process. . . . 6-2 6-2 Key Factors for Successful Analyses of Alternatives . .6-12 6-3 The Analysis Process. . . .6-19 6-4 Examples of Information Sources for the Software Development Services Market Survey. . . . .6-28 6-5 Examples of Costs and Benefits by Type. . . .6-47 8-1 Typical Agency-Level Reviews. . . . 8-3 10-1 Acquisition Steps . . . 10-22 10-2 Uniform Contract Format . . . 10-24 12-1 Division of Contract Administration Tasks . . . .12-2 12-2 Typical Contract Administration Responsibilities. . . .12-4 12-3 Sample Agenda Items . . . . . . . . 12-15 15-1 Sample Activities of Software Implementation. . . .15-7 15-2 Advantages and Disadvantages of Cutover Approaches. . .15-9 A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES

CHAPTER 1: INTRODUCTION

1.1 THE ACQUISITION GUIDE SERIES

The General Services Administration (GSA) initiated the Acquisition Guide series to help promote effective and efficient acquisition of Federal information processing (FIP) resources. The Policy Analysis Division (KMP) of the Office of Information Resources Management Policy (KM) develops and issues the guides.

a. Background

The acquisition guides resulted from a survey of Federal agencies by GSA to determine the types of guidance that agencies would find helpful when acquiring FIP resources. In addition to guidance on approaches and techniques, the guides also address laws, regulations, directives, and policies that affect Federal acquisitions.

b. Audiences

GSA developed the guides for Government professionals who are new to, unfamiliar with, or need to refresh their knowledge of the process for acquiring FIP resources. While other groups may also find them useful, the guides are directed to the three staffs most involved in the acquisition of FIP resources: o Program personnel (users supported directly by the FIP resources being acquired) -- For functional expertise o Information Resource Management (IRM)/Technical personnel -- For technical expertise on FIP resources o Contracting personnel -- For contracting expertise In discussing each phase of the acquisition life-cycle, the guides outline the roles and responsibilities for each of the three staff disciplines.

c. Objectives

The guides are intended to provide basic advisory and factual information to acquisition team members who are relatively new to or want to reinforce their knowledge of the process. They are not intended to be encyclopedias of acquisition information. Where applicable, they refer to the most commonly

(7)

applied laws, regulations, and guidance and then direct the reader to other sources for more complete information.

1.2 SCOPE OF THE SOFTWARE DEVELOPMENT SERVICES

GUIDE

This Guide, entitled A Guide for Acquiring Software Development Services, includes all phases of the acquisition life-cycle, from the first consideration of software as part of the solution to an agency's information need to contract closeout. It addresses acquisitions that focus on software development services. A Guide for Acquiring Systems Integration Services, another guide in this series, covers acquisitions that include other products and services (e.g., hardware, maintenance services) as well as software development services. While this Guide does not describe every activity at every step of the acquisition process, it does provide an overview of these steps and the key success factors for completing them and the overall acquisition successfully.

a. The Complete Acquisition Life-Cycle

This Guide covers four phases of the acquisition life-cycle process: o Planning -- This phase consists of the early steps of an acquisition, including identifying the agency's information needs, identifying the needs that can be met through software, and budgeting resources for it. o Acquisition -- This phase consists of activities necessary for acquiring software development services, including developing the solicitation. These activities include the requirements analysis, the analysis of alternatives, and other documentation to support the acquisition strategy. The analysis of alternatives examines the choice between software already available (e.g., commercial) and custom-developed. It also examines both technical options (i.e., how the software development services will be performed) and acquisition options (i.e., what source will provide the services, including both contractual and noncontractual). Finally, this phase usually includes the solicitation of proposals or bids, their evaluation, and award of a contract. o Implementation -- This phase consists of tasks from contract award to the point at which the contractor has completed the software development services required under the contract. o End of Life-Cycle -- This phase consists of all the tasks for closing out the contract and making final payment to the contractor. Chapter 4 provides additional information about the acquisition life-cycle, including typical tasks for each phase.

b. Limitations

This Guide is not a complete source for information about software development services acquisitions. Agencies' requirements are so varied that one guide could not adequately address every situation. In addition, the restrictions that apply to Federal agencies are subject to change. Rather than duplicate the sources that articulate these restrictions, including the Federal Information Resources Management Regulation (FIRMR), the Federal Acquisition Regulation (FAR), the Federal Property Management Regulation (FPMR), Federal Information Processing Standards Publications (FIPS PUBS), Office of Management and Budget (OMB) Circulars and Bulletins, and agency-specific directives, this Guide directs the reader to the appropriate sources for current information.

1.3 ORGANIZATION OF THE SOFTWARE DEVELOPMENT

SERVICES GUIDE

a. General Information

In Chapter 2, the Guide provides the overall context for software development services acquisitions, including the scope of software development services, key terms, roles of each staff discipline, and the key factors for successful acquisitions. Chapter 3 describes special characteristics of software

(8)

b. Life-Cycle Focus

In addition to describing special characteristics of software development services, Chapter 3 provides an overview of the software development life-cycle, as distinguished from the acquisition life-cycle. Chapter 4 provides an overview of the acquisition life-cycle. Chapters 5 through 12 proceed sequentially through the activities to acquire a software development services contractor. Chapter 5 describes the requirements analysis, which defines the agency's software needs in functional and technical terms. Chapter 6 covers the analysis of alternatives, which examines both technical (what to acquire) and acquisition (how to acquire) options. Chapters 7, 8, and 9 provide general guidance for activities important to acquiring software development services by contract. Chapter 9 also describes how to define the requirements for the development process that the contractor must follow. Chapter 10 covers the steps of contracting by negotiation. Chapter 11 addresses other acquisition methods. Finally, Chapter 12 describes contract administration and implementation activities. Chapters 13 through 16 describe the process of developing, implementing, and maintaining the new software. For convenient reference, Appendix A provides a glossary of commonly used terms and acronyms. Appendix B describes the regulatory environment for acquisitions. Appendix C is a bibliography of other publications related to software development services. Appendix D describes GSA assistance programs that may be useful in software development services acquisitions, and Appendix E provides a list of contacts for more information. Appendix F is a policy letter about quality in contracting for services from the Office of Federal Procurement Policy (OFPP). A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES

CHAPTER 2: GENERAL INFORMATION

This chapter provides the following important general information about software development services acquisitions: o Definition of key terms used in the Guide o Scope of software development services acquisitions o Roles and responsibilities of Government personnel who participate in the acquisition process o Key actions that will help make software development services acquisitions successful o Protests and ways to avoid them

2.1 DEFINITION OF KEY ACQUISITION TERMS

The Federal Acquisition Regulation (FAR) and the Federal Information Resources Management Regulation (FIRMR) define most terms used in an acquisition of Federal information processing (FIP) resources. Definitions of the following key terms are included to provide maximum use of this Guide.

a. Federal Information Processing Resources

The FIRMR defines FIP resources as automatic data processing equipment (ADPE) and any equipment or interconnected system or subsystems of equipment that is used in the automatic acquisition, storage, manipulation, management, movement, control, display, switching, interchange, transmission, or reception of data or information-- (1) by a Federal agency, or (2) under a contract with a Federal agency which-- (a) requires the use of such equipment, or (b) requires the performance of a service or the furnishing of a product which is performed or produced making significant use of such equipment. Such term includes computers; ancillary equipment; software, firmware, and similar procedures; services, including support services; and related resources as defined by regulations issued by the Administrator of General Services.

b. Acquisition

According to the FAR, acquisition is: [T]he acquiring by contract with appropriated funds of supplies or services (including construction) by and for the use of the Federal Government through purchase or lease, whether the supplies or services are already in existence or must be created, developed,

demonstrated, and evaluated. Acquisition begins at the point when agency needs are established and includes the description of requirements to satisfy agency needs, solicitation and selection of sources, award of contracts, contract financing, contract performance, contract administration, and those

(9)

technical and management functions directly related to the process of fulfilling agency needs by contract.

c. Requirements Analysis

A requirements analysis establishes the agency's need for software development support services. It includes the early stages of determining information needs based on the agency's mission and activities, identifying how software can help achieve long-term automation objectives and short-term automation needs, and considering budgeting needs for the software. The initial requirements analysis also forms the basis for later development of detailed objectives and requirements for the software.

d. Analysis of Alternatives

While the requirements analysis establishes the agency's need for software, the analysis of alternatives establishes how they will be met. This includes choosing between already-existing software and custom-developed software. This analysis helps the agency choose the most advantageous alternative (consisting of technical and acquisition options) for its need. The analysis also examines both noncontractual (e.g., sharing with another agency) and contractual choices.

e. Acquisition Strategy

The end result of the analysis of alternatives is an acquisition strategy that defines, in detail, the mechanisms and methodology to be used to acquire software development services. It includes decisions about the degree of competition, contract type (including pricing structure), and delivery schedule.

2.2 WHAT ARE SOFTWARE DEVELOPMENT SERVICES?

a. Software

According to the FIRMR, FIP software means any software, including firmware, specifically designed to make use of and extend the capabilities of FIP equipment. Software was invented in the early days of computers, when equipment was designed to solve specific numerical problems (e.g., artillery ballistics). The equipment could not easily be adapted to solve other problems; therefore, engineers conceived separate categories of "hardware" and "software," so computers could support a wider range of problems. They built general capabilities (e.g., data storage, basic calculation) into the physical hardware and left the solution of specific problems to software, which told the hardware in what order to apply the general capabilities. Thus, software is the set of instructions that tells the hardware what to do. A series of instructions that performs a particular task is called a "program." Software stored in non-volatile memory (i.e., memory that is not erased when the computer is turned off) is called

"firmware." Software falls into two broad categories: o System Software -- This directs the operation of the hardware on which the software runs. System software also supports the development and

operation of applications software (see below). The basic classes of systems software include-- oo Operating environment -- Operating system, security, job scheduling, transaction processing, and performance monitoring software oo Applications development -- Programming languages, database management systems, text editing, computer-aided software engineering (CASE), debugging tools, and test data generators oo Utility -- Code conversion, copying, disk management, tape management, backup, archiving, recovery, printing, chargeback and billing, and configuration management o Application Software -- This provides the capabilities to meet the software users' computing needs and support their job activities. The basic classes of applications software include oo Office Tools Word processing, spreadsheets, electronic mail, graphics, and desktop publishing oo Functional --Software that supports agency missions and activities, including financial management, project management, inventory control, etc. This Guide distinguishes between software that already exists and software that is custom developed to meet the agency's information needs. The Guide covers

(10)

that cannot be met with existing software. (1) Already-existing Software Software may already exist that can meet the agency's needs. Software packages and tools sold commercially are referred to as commercial software. The FIRMR defines commercial software as software that is available through lease or purchase in the commercial market from a concern representing itself to have ownership of marketing rights in the software. This includes software furnished as part of the FIP system, but separately priced. An operating system would be an example of software that falls into this category. The other category of existing software covers software packages that, while not commercial, were developed by an agency to solve a similar need. Other agencies may be able to utilize this existing software for their own purposes with little or no customization. The acquisition of already-existing software, commercial or otherwise, is outside the scope of this acquisition guide. A Guide for

Acquiring Commercial Software, another guide in this series, describes the acquisition of commercial software in detail. (2) Custom-developed Software In certain circumstances, acquiring existing software might not meet the needs of or be most advantageous to an agency. In this case, the agency would develop new application software. The decision to use existing software or develop new software should be based on two factors: (1) the ability of existing software to meet the agency's requirements and (2) the risk tradeoff between customizing existing software and developing new software. A. Ability to Meet Agency Requirements To determine whether existing software can meet its requirements, the agency must first define the functional and performance capabilities the software must have (e.g., the ability to consolidate X million records of size Y during Z hours). The agency must then determine if software packages available in the marketplace or from other agencies can meet its requirements. The software must not only provide all the capabilities that the agency defined, but must also operate in the agency's FIP resources environment (i.e., with the existing or planned hardware and systems software). If commercial software or another agency's software meets the agency's requirements at a reasonable price, it should acquire the existing software rather than develop new software. In some cases, the agency may find it advantageous to modernize its FIP environment (hardware and software) to take advantage of existing software. Even if no specific software package meets all the agency's requirements, it may be possible to customize one so that it meets the

requirements. If customization is required, the agency should determine if the degree of modification is within acceptable limits. B. Risks of Customizing Existing Software Before deciding to customize existing software, the agency should assess the risks involved. When a significant portion of an existing software package's capabilities is altered, many of its benefits may be lost or reduced. Such benefits include: o Ease of training, maintenance, and support o Using proven software with an established track record o Compatibility and integration with other existing software o Ability to use standard documentation and training materials o The software developer's warranty against defects Another risk of customization is that the new code may affect the software's performance or introduce errors into the existing code. In addition, later versions of the software may be incompatible with the customized code or require a significant rewrite of it. The agency should weigh these risks and their costs against the risks and costs of customizing existing software to determine which would be safer and cheaper.

b. Scope of Software Development Services Acquisitions

(1) Specific Services That Could be Included in a Software Development Services Acquisition To make full use of new software, the agency may also require related services, such as training,

conversion, software maintenance, and user support. Many software developers offer these additional services. If the agency can obtain them from the same source as the software development services, they could be covered by a single software development services acquisition. (2) Software

Development Services Acquisitions vs. Systems Integration Services Acquisitions Systems integration, a widely-used term in both Government and industry, refers to the acquisition of large, complex information systems with integrated support. As discussed in A Guide for Acquiring Systems Integration Services, another guide in this series, a systems integration services (SIS) acquisition has the following key elements: o It is a complete information solution o It includes several types of FIP resources o A single vendor is responsible for the project Because SIS acquisitions are intended to solve information problems, they frequently include custom-developed software as a component.

(11)

However, they also include other components (e.g., hardware). SIS acquisitions are outside the scope of this guide. However, this guide supplements A Guide for Acquiring Systems Integration Services in the detailed guidance it provides about the software development component of an SIS acquisition.

c. Relation of Software Development Services to Other FIP Resources

Software development services are one type of FIP support service. FIP support services are defined in FIRMR Part 201-4 as "any commercial nonpersonal services, including FIP maintenance, used in support of FIP equipment, software, or services." FIRMR Bulletin A-1 lists several examples of FIP support services, including custom software development.

d. Relation of This Guide to Others in the Acquisition Guide Series

In addition to the commercial software and SIS guides mentioned above, three other guides in this series provide agencies with useful information about acquiring software development services: o A Guide to Acquiring FIP Support Services covers FIP support services as a group. o A Guide to

Requirements Analysis and Analysis of Alternatives describes policies and procedures for carrying out these two steps of the FIP resources acquisition process. o A Guide to Performance and Capability Validation (P∧CV), describes P∧CVs and their use in acquiring FIP resources, including software.

2.3 ROLES AND RESPONSIBILITIES

A successful software development services acquisition requires involvement of program, Information Resource Management (IRM)/technical, and contracting staff. Some responsibilities are specified by regulation. Others, however, may vary from acquisition to acquisition and from agency to agency. For these, the nature and degree of involvement varies with the complexity of the acquisition and the stage of the acquisition life-cycle. A senior official in the agency should designate a team with responsibility for each large, complex software development services acquisition. The team should consist of representatives from each staff discipline (program, IRM/technical, contracting). The team is

responsible for ensuring that the acquisition-- o Successfully meets the agency's needs, o Satisfies all legal and regulatory requirements, and o Remains on schedule and within budget. Teamwork is an important factor in successful software development services acquisitions. Although team members have specific assignments, success requires both cooperation and consultation among the three staff disciplines. By conducting their assignments in parallel (e.g., reviewing solicitations) rather than sequentially, they can significantly shorten the acquisition lead time. Most large, complex software development services acquisitions involve six staff roles: End User, Program Manager (PM),

IRM/Technical Representative, Contracting Officer (CO), Contracting Officer's Representative (COR), and Contracting Officer's Technical Representative (COTR). Representatives from the three staff disciplines take these roles.

a. End User

The end users will interact with and use the software on a day-to- day basis. The ultimate success of the acquisition will be judged by how well the software supports the end users' needs, including both system capabilities and ease of use. End users are typically program (i.e., line) staff, although they could be IRM/technical staff for particular applications (e.g., specialized data manipulation utilities). End users should be involved throughout the life-cycle of each major acquisition of software development services, as well as during the development of the actual software. Their input is particularly valuable during the initial requirements analysis phase. They should remain involved, by receiving status updates and serving as advisors, whenever a long time lag develops between the requirements analysis and the contract award.

(12)

b. Program Manager

The agency should designate a PM for all software development services acquisitions. The PM represents the end users throughout the acquisition and is responsible for ensuring that the software meets the agency's long- and short-term needs. Initially, the PM may participate in strategic and tactical planning that leads to the acquisition. The PM will typically complete the analyses and documents (e.g., analysis of alternatives) required by the FIRMR. The PM may also help prepare some of the supporting acquisition documents (e.g., program-related portions of the solicitation).

c. Information Resources Management/Technical Representative

The IRM/technical organization provides technical expertise to the PM and the CO throughout the acquisition process. One of their key functions is translating end users' requirements for automated support of particular business functions into specific types of FIP resources, such as software

development services. As acquisition requirements dictate, the IRM/technical staff may be called upon to assist in: o Defining requirements for software functions, the technical environment in which the software will run, and the process by which it will be developed o Conducting market research o Writing statements of work, specifications, evaluation factors and criteria, and technical material for the solicitation o Performing the technical evaluation of proposals

d. Contracting Officer

FAR Part 1 places authority and responsibility with agency heads to contract for authorized supplies and services. Agency heads, in turn, delegate to COs the authority to enter into, administer, and terminate contracts. Agency heads (or their designees) issue warrants to COs stating the limits of their authority. However, only GSA can provide agencies with the authority to contract for FIP resources. A delegation of procurement authority (DPA) to the agency's Designated Senior Official (DSO) provides this authority. GSA provides DPAs to DSOs in three ways: o A regulatory DPA with thresholds up to those set forth in the FIRMR o A specific agency DPA with thresholds higher or lower than those provided by the FIRMR o A specific acquisition DPA in response to an Agency Procurement Request (APR) Although the agency's DSO may redelegate GSA's exclusive authority for FIP resources to qualified officials, only a CO may enter into and sign a contract on behalf of the Government; therefore, GSA's procurement authority for FIP resources must be redelegated to the CO.

e. Contracting Officer's Technical Representative

A CO usually administers several contracts at the same time and generally designates a COTR to handle specific contract administration functions. The COTR usually has technical expertise and may come from either the program or IRM/technical organization. Typically, the COTR serves as a technical liaison between the Government and the contractor. Duties assigned may include monitoring the contractor's technical, schedule, and cost performance against the terms of the contract, approving invoices, and accepting deliverables. The contract must identify the COTR, who is limited to the activities specifically authorized in the contract and identified in writing by the CO. The COTR does not have authorization to change (add, delete, or modify) contract terms, conditions, or requirements, or to take any action that might give this appearance. The CO alone has the authority to make changes. Any changes must be confirmed in writing. A very large, complex contract for software development services may require multiple COTRs. In this case, the CO may appoint a COR as an interface between the COTRs and the CO. The COR is frequently a contract specialist, but may also come from the program or IRM/technical organization. Some agencies use the terms COR and COTR

interchangeably.

2.4 KEYS TO SUCCESSFUL ACQUISITIONS

Successful acquisitions have several basic characteristics. By following the advice below, agencies can avoid the majority of situations that hamper the acquisition of software development services.

(13)

a. Define Requirements Functionally

Avoid deciding in advance on a specific solution to the agency's software development needs. With the tremendous growth in Government computing over the last decade, program personnel have become sophisticated and knowledgeable about information products and services and about the detailed aspects of systems. Every office develops its own computer "experts" who have their own favorite user interfaces, database management systems (DBMS), programming languages, CASE tools, and

development methodologies. Sometimes users will borrow brand names adopted by particular vendors and inappropriately apply them to whole classes of products or services. These factors can lead agencies to think of their software development needs in terms of a particular interface, DBMS, CASE tool, or methodology. Avoid this pitfall, especially for large or complex acquisitions, for the following reasons: o Using brand names, even unintentionally, precludes full and open competition, which is mandated by statute. o An in-house "expert's" particular favorite may not be well suited for less sophisticated users in the organization. o In some cases, real or perceived bias towards a particular vendor's products or services has resulted in contract protests, adverse publicity, and Congressional investigations. Instead of naming a specific interface, DBMS, or other piece of system software, focus on defining the agency's underlying functional needs þ the capabilities that the new software should provide. Chapter 5, Requirements Analysis, describes this functional approach to defining software requirements in detail. Similarly, avoid naming a specific CASE tool or proprietary development methodology, but instead define the agency's needs for quality and efficiency in the development process. Chapter 9, General Contracting Considerations, describes the functional approach to the software development process. Occasionally, it may be appropriate to specify a product, methodology, or tool by name; e.g., when the agency has already established an organizational standard by careful study and competition. However, the agency must justify such action using the procedures discussed in Chapter 7, Competition Requirements.

b. Obtain Full and Open Competition

As mandated by statute, COs must promote and provide for full and open competition when soliciting offers and awarding contracts. A competitive market serves the best interests of the agencies, the taxpayers, and the vendor community. Agencies' interests are best served because full and open competition provides them with the widest possible offerings to meet their information needs. The taxpayers' interests are best served because full and open competition encourages vendors to offer their best prices. Vendors' interests are best served because their access to Government business is

maximized. Although the contracting staff is usually sensitive to the need for full and open competition, program and IRM/technical staffs sometimes overlook its benefits. Therefore, the acquisition team should periodically take time for a deliberate, objective review of the requirements, alternatives, solicitations, source selection plan, and other materials to ensure that they do not unnecessarily limit competition. Although full and open competition is generally in the agency's best interests, occasionally circumstances may arise in which it becomes necessary to restrict competition to a degree. This is discussed in more detail in Chapter 7, Competition Requirements.

c. Guard Procurement-Sensitive Information

One essential element for maintaining full and open competition is ensuring that all potential offerors have access to the same information about the acquisition. At the same time, offerors do not need access to all information about the acquisition. The agency must withhold some information from offerors, such as the Government's independent cost estimate and the source selection materials, in order not to influence their proposals. No offeror should be given information about the number or identity of other offerors or the nature of their technical offerings or cost. An offeror with access to information that others lack has an unfair advantage. This offeror could use the information to change its proposal and win the contract, even though another offeror's proposal would have provided more value to the Government. Agency personnel need to exercise special caution if contractor personnel are working on site at the agency. Most often the disclosure of information happens accidentally: an overheard remark, a report lying open on a desk, a slip during a phone conversation. However, laws

(14)

prohibit the release of procurement-sensitive information (e.g., the Procurement Integrity Act, Trade Secrets Act). The release of such information has sometimes led to protests, scandal, adverse publicity, Congressional investigations, and criminal and civil penalties.

d. Identify, Agree on, and Document Assumptions and Constraints

Identify explicitly assumptions used in the analyses supporting the acquisition. Assumptions can be both quantitative (e.g., the contract life will be five years) and qualitative (e.g., the agency will need to lease extra office space before awarding a contract for on-site software development services).

Program, IRM/technical, and contracting staff should agree that the assumptions reflect the agency's best estimate. Document assumptions so they can be discussed, analyzed, and modified if necessary. Also, test the sensitivity of the analyses and conclusions to changes in the assumptions. Finally, document the constraints that affect the software development services acquisition. These include any policy, staffing, organizational, or budgetary factors that limit the agency's discretion. For example, the agency's need to monitor the software development process closely may be constrained by lack of space for on-site contractor personnel. Documenting the constraints and their impacts on the acquisition is essential.

e. Involve All Three Staff Disciplines

Chapter 1, Introduction, points out that this Guide was written for three audiences: program,

IRM/technical, and contracting personnel. All three staff disciplines bring knowledge and skills to the acquisition process. The program staff understands the requirements to be met. The IRM/technical staff helps translate these requirements into the software development services to be acquired. They do this because they are familiar with the types of software development services available in the marketplace. The contracting staff provides liaison with the vendor community and is generally more aware of any legislative and regulatory constraints affecting the acquisition. The CO manages the contractual aspects of the acquisition. Although one group may have the lead responsibility for a particular step in the acquisition life-cycle, it should seek the advice and counsel of the other two during that step. In addition, each group should be kept informed of the status of the acquisition throughout its life-cycle. Sharing information will help keep the acquisition running smoothly and identify any potential problems or constraints early, when they are easier to handle. Parallel involvement and review can also shorten the acquisition lead time.

f. Consider Agency-Specific Requirements or Restrictions

This Guide is written for Governmentwide use. It describes legislative and regulatory constraints and acquisition procedures that apply to every agency. In addition, an agency may have its own specific documentation requirements, review and approval process, or contracting mechanisms (e.g., an agencywide requirements-type contract already in place). Review and understand the agency's internal procedures and situation before acting on the advice and guidance provided in this Guide.

g. Begin the Acquisition Process Early

The acquisition process for any type of FIP resources may be a lengthy one because of the legislative and regulatory framework in which it operates. To protect the interests of the taxpayers, the

Government, and industry, agencies must fully analyze and document their requirements. They must weigh and document the benefits and costs of alternatives. They must follow review and approval procedures -- both internal and external to the agency. They must solicit bids or proposals, give offerors time to respond, and evaluate the bids or proposals carefully. If an offeror files a protest, it generally must be resolved before the contract is awarded or the software development services can be provided. Each of these steps takes time. Even in an acquisition of software development services for a small system, months may elapse between the initial determination of the need and the acquisition of the software development services. For large negotiated acquisitions of software development services to support mission-critical systems, the elapsed time could be 18 to 36 months. An agency also must have funds available to acquire the software development services. The normal budget lead time is two

(15)

years. Take these lead times into account in planning the acquisition. The length of time an acquisition requires often surprises program and IRM/technical staff. An agency can minimize frustration by beginning the process early, before the need for the software development services or the resulting new system becomes acute, and anticipating the documentation needs for future acquisition activities during the early stages of the process.

2.5 PROTESTS

Protests challenge contract awards or other actions of agencies on specific acquisitions. The number of protests has increased dramatically since the passage of the Competition in Contracting Act (CICA). Protests occur when an interested party challenges the agency's solicitation document, objects to a contract award or proposed award, or perceives a procedural violation during the acquisition process. Many protests assert that an interested party has been or will be wrongfully excluded from

consideration for award. Protests are usually filed with the agency, the General Accounting Office (GAO), or the General Services Board of Contract Appeals (GSBCA). While the procedures of and remedies available from each of these organizations differ, a successful protest could result in one or more of the following: o Suspending, revoking, or revising the agency's procurement authority o Modifying or terminating the contract o Withholding exercise of options under the contract o Asking for new Best and Final Offers (BAFOs) or reopening negotiations o Amending the solicitation or issuing a new one o Awarding protest costs, proposal preparation costs, and attorney's fees o Awarding the contract to the protestor These are serious consequences and may prevent the agency from

acquiring or using the software development services until the protest is resolved. Agencies can avoid many protests by anticipating the potential impact of decisions made while developing and executing the acquisition. To conduct successful acquisitions, the agency should: o Eliminate unnecessarily restrictive specifications o State the agency's requirements clearly and exactly o Develop fair and meaningful evaluation factors and apply them during source selection o Provide all potential offerors with the same information o Develop and follow an explicit source selection plan o Document decisions made throughout the acquisition life- cycle, particularly those restricting competition o Follow all pertinent Government and agency laws, regulations, and procedures o Review past GSBCA and GAO protest rulings before completing the FIRMR studies and source selection plan A GUIDE FOR ACQUIRING SOFTWARE DEVELOPMENT SERVICES

CHAPTER 3: SPECIAL CHARACTERISTICS OF

SOFTWARE DEVELOPMENT SERVICES

Acquisitions of software development services, commercial software, and Federal information processing (FIP) support services are similar in a number of ways. Two other guides in this series, A Guide for Acquiring Commercial Software and A Guide for Acquiring FIP Support Services, discuss the latter commodities. However, each commodity also has unique characteristics that must be identified and addressed to conduct a successful acquisition. This chapter discusses some unique characteristics of software development services acquisitions that program, Information Resources Management (IRM)/technical, and contracting personnel should know about. However, these discussions are overviews, not comprehensive treatises. A full, detailed discussion of all aspects of software development is beyond the scope of this Guide. For this reason, IRM/technical and/or program staff experts in software development should always be involved in an acquisition of software development services. This chapter assumes that the Government will acquire the needed software development services through contracting. If an agency uses another acquisition method (e.g., a GSA assistance program), the Government developer would typically assume contractor responsibilities.

3.1 HOW SOFTWARE IS DEVELOPED

Software development is still largely a labor-intensive process. Although automated tools and thousands of books and training courses are available to assist design, programming, and testing, the process requires craftsmanship by individuals or small teams of developers. Standardization in

(16)

software design has not evolved to the degree that it has in hardware design, and software cannot be manufactured on an assembly line. This section provides an overview of the typical steps, techniques, and tools used to develop software. The combination will vary among development projects,

depending on an agency's internal development standards and the size and complexity of the software system.

a. Typical Life-Cycle Stages

Most software goes through several identifiable stages from initial requirements to operational system. Sometimes these stages are explicitly defined and followed rigorously, especially for large systems that need the efforts of many people. For smaller systems, some of the stages may be extremely short, very informal, or not conducted at all. Some or all of the stages may be conducted by agency personnel, some or all by a contractor. The names of the stages, their duration, the allocation of development activities among them, and the organization responsible for carrying them out vary for different life-cycle management methodologies and for different projects. The explanation presented in this Guide describes only one of many possibilities, but it represents a common division of stages. Chapters 13-16 provide details on each stage. (1) Functional and Data Requirements In the functional and data

requirements stage, the agency and/or contractor defines in detail the system requirements, including both the automated software and related manual activities/procedures. However, this is not the first time the agency has defined requirements. It is an iterative process. Before this stage, during overall FIP resources planning, the agency developed a high- level view of its information needs. After the agency identified specific software initiatives, it developed more detailed requirements for the capabilities the software must have, the workload it must support, etc. However, during these initial requirements analysis activities, described in Chapter 5, the agency knows only that it needs software. It has not yet analyzed whether commercial software can meet its needs or whether it requires custom-developed software. At the beginning of the development life-cycle, the agency or the contractor defines the requirements for the software's capabilities and features at much greater levels of detail. Agency program and IRM/technical staff must be deeply involved in identifying detailed requirements to ensure the software meets the agency's and users' needs. The two primary classes of requirements are: o Functional -- These describe aspects such as: oo The flows of data to, from, and within the software oo The sources or recipients of the data oo How the software manipulates or transforms the data oo The workload volumes for the data flows oo Performance requirements (e.g., response times) for specific functional processes oo The data contained in user interface/data entry screens and output reports, potentially including their physical layout The functional requirements can be described by narrative, graphics (e.g., data flow or process flow diagrams, structured flowcharts or matrices), or a combination. o Data -- These requirements describe the data the system will maintain. Data models may be developed and the data normalized to eliminate unnecessary elements. Often, the developer creates a data dictionary, defining each element in terms of name, attributes (e.g., alphanumeric, logical), length, format, permissible values, ownership (i.e., who can create the data element, who can modify it), and so forth. The functional and data requirements may be called by other names, especially if graphical representations (e.g., data flow diagrams) divide the software into logical modules.

Different methodologies call this step the system concept, conceptual design, or logical design. Before moving to the next stage, the agency ensures that the technical environment (i.e., hardware, systems software, telecommunications) has been specified for both the development and the operation of the software. This should occur during the requirements analysis described in Chapters 5 and 9, well before the development contract is awarded and the development process begins. (2) Design After the agency or the contractor establishes the functional and data requirements, the contractor knows "what" the software must do. In the design stage, the contractor defines "how" the software will do it.

Frequently, more than one solution is available, so the contractor must consider several alternative physical methods for implementing the functions and managing the data, then choose the one that will most effectively meet the contract requirements. At this point in the development life-cycle, the software moves from logical to physical structures (programs and data files). The contractor defines programs to carry out specific system functions and divides the data into data stores, files, or data bases. In presenting the design graphically, the contractor can use different representations (e.g., data

(17)

or process flow diagrams, flowcharts). Several methodologies refer to this first portion of the design stage as the general design. During the next portion, detailed design, the contractor writes

specifications for the programs and data files, providing the level of detail programmers need for coding. The specifications can be represented in several different ways, depending on the life-cycle methodology used [e.g., hierarchical input-process-output (HIPO) charts, process action diagrams, Structured English, pseudo code, Warnier-Orr diagrams]. Computer-Aided Software Engineering (CASE) tools can automate much of both the general and detailed design activities, including graphic representations, narrative, and pseudo coding. The agency's primary responsibilities typically lie in the review of written design documents, which may also include graphical representations, and plans (e.g., Test Plan). The design methodology should include periodic review by users to ensure that the

emerging design continues to meet agency needs. To assist this review, the agency may want to construct a manual or automated Requirements Traceability Matrix (RTM) that maps functional requirements to physical "configuration items," such as programs or databases. Then, whenever a physical software component is reviewed, audited, or tested during the development life-cycle, the agency can use the RTM to identify the related functional requirements. (3) Build During the build stage, programmers write or generate the software code (i.e., instructions the computer can

understand). These instructions control the various hardware, systems software, and

telecommunications components. The programmers usually develop the software components in sections from smallest to largest: first program units, then modules (groups of units) supporting major processes, then interfaces among modules and with external systems. The programs are debugged (i.e., errors are detected and removed) and documented. Finally, the entire software system is made ready for testing. The agency's primary activities during this stage include conducting regular audits,

walkthroughs, and reviews of build stage products (e.g., code walkthroughs), as well as monitoring status and test reports submitted by the contractor. Different methodologies may refer to this stage as construction, coding, or programming. (4) Test Testing takes place in two major stages. First, the development contractor conducts its own tests of the software. Some life-cycle methodologies consider this testing part of the build stage. The contractor conducts unit tests, integration tests, and system tests, correcting errors as they surface. The contractor may also conduct regression testing, ensuring that correcting a particular part of the software does not cause problems in other parts. The contractor should conduct testing in accordance with a Test Plan that the agency reviewed and approved. The agency monitors the contractor's testing process and results, ensuring that the contractor conducts thorough testing consistent with the approved Test Plan and corrects any errors. In the second stage of testing, the agency takes a much more active role, conducting its own system tests to determine whether the software meets the contract requirements and can be accepted for production use. The agency may duplicate some of the contractor's tests using its own test data. The agency may also validate performance with benchmarking tests. (5) Implement The implementation stage includes pre-installation activities (e.g., site preparation, user training), pre-installation of the software in the agency's hardware/systems software environment, and post-installation activities such as converting data from the old software systems to the new. If the software is installed at multiple sites, the implementation activities may take place in repeated waves. Depending on the tasks defined in the contract, the primary responsibility for software implementation may lie with the contractor, the agency, or a combination of the two. (6) Operate and Maintain When the software has been successfully

implemented at all sites, and users and operators trained to use it, the system moves into the operation and maintenance stage. The software is now stable, with few changes except to correct lingering errors or to improve performance (i.e., tuning). The software may also require modification if the underlying hardware, systems software, or telecommunications environment changes. As new requirements develop, the software may be enhanced to add new functions, features, or capabilities. Software operation typically falls under the agency's responsibility. Maintenance may become the responsibility of the development contractor, if required by the contract. Alternatively, agency personnel may assume maintenance responsibility. The decision will be based on many factors, such as the availability of trained personnel within the agency, other sources of maintenance services (e.g., established sources of supply or a separate contract), for this system or a group of systems.

References

Related documents

Broom Hall, Melbourne Place, Wolsingham, Bishop Auckland, DL13 3EQ Detached four bedroomed family home with a garage and large drive providing ample off street

A chart review was conducted analyzing the following recommendations from the 2016 CDC Guideline for Prescribing Opioids for Chronic Pain: (1) avoid opioids in patients

Source: Forrester’s North American Social Technographics Online Benchmark Survey Part 1, 2015. Once you know whether social media matters to your audience, dig deeper to learn

An extensive parametric study has been undertaken whereby the slenderness, load eccentricity, cross- sectional geometry and reinforcement ratio of the concrete-filled columns

Figure 10, a plot of strength and elongation as a function of distance from the weld centerline, shows that the strength returns to base plate val- ues at a distance of approximately

Program optimization in polyhedral model is usually done in three steps: (1) static analysis of input program resulting in alge- braic representation of static control loop nests

The purpose of the present research is to determine the impact of internal heat removal, relieving heat from RTP’s of the PCBN type, on the smoothness of machined surfaces and

If a member of the Las Vegas chapter has a client with a business litigation problem in New York, we would hope that the Las Vegas INBLF member would consider referring the client