CS315: Session 3
- Final exam guide will be on web by Friday; see HyperNews group for details
- Final exam case will be on web by Friday
- Let's go for a beer after presentations on Wednesday!
Notes from Class (copied from slides)
- 6 Steps to Determining HOW to implement system design.
- Identify several alternative strategies
- Document each alternative
- Estimate costs for each alternative (e.g., cost of development/purchase, installation, maintenance, training)
- Perform a cost/benefit analysis for each given alternative.
- Recommend a preferred alternative
- Prepare a development plan.
- Industry wisdom suggests offering three alternatives: expensive, moderate, and cheap
- Defining Alternatives
- No-brainer alternatives: Do nothing (note here that there are costs involved with doing nothing; the cost of the problem; legal/licensure costs, etc.)
- Define system triggers and maximum response times to develop alternative
views of system
- Define automation boundaries (circles around processes/modules that
are somehow related functionally or will share code)
- Costs and Benefits
- Fiscal year--may be different from the calendar year, depending on company.
- Prior to start of new fiscal year, functional areas asked to provide
a list of planned projects and priorities for coming year. These should
include the following information for each project:
- what we want to do (project description)
- why we want to do it (what problem will this solve?)
- benefits of doing this project (cost savings, happy employees, etc.)
- costs of doing this project
- Project costs are separated into two categories: Development costs and
- Development Costs
- cost of analysis, design
- cost of new equipment and software development
- cost of testing system
- cost of traning system administrators and end users
- site preparation costs (network connectivity; cooling system, etc.)
- Operational Costs
- on-going costs
- maintenance on system/operating system
- additional RAM and disk
- personnel (system administrator(s))
- outside service providers (off-site backup storage)
- data and voice services
- Costing Methodologies
- COCOMO COnstructive COst MOdel
- Person doing cost estimates should not be a stakeholder in project
- Professional estimators for software development costs exist
- Divide the project into its [functional] modules and determine cost to
develop each module.
- Model for determining programming time is: Programmer Months (K sub m) equals 2.4*lines of code (S sub k) to the power of 1.05 (sorry--no time to look up entity tags for super/subscript)
- Once an estimate is complete, an auditor may come in to spot check estimate, talking with programmers, trainers, etc., to see how on-target estimate is from their standpoint.
- Most jobs have accountability to the estimate included in the contract.
- Always pad the budget with well-though-out contingencies for things like
delays, equipment failure, price fluctuation, etc.
- Always state the costs for a project as estimates--you can never know
the actual cost of a project until you're finished with the project.