Satzinger: Systems Development Life Cycle (SDLC) (p. 107):
Planning.
Requirement Analysis.
Design.
Implementation.
(Our) Expanded Systems Development Life Cycle:
System Planning:
Analysis of existing problems and/or opportunities.
Specification of measures of success of the solution (evaluation/impact assessment starts here).
Feasibility study:
Evaluation of existing and possible (new) architectures (technical feasibility).
Phasing estimates.
Estimates of organizational requirements (org. feasibility).
Project management plan.
Cost/benefit estimates (economic feasibility).
Prepares an organizaton for the commitment to an IS.
Needs Analysis (Ch. 4):
Inventory of business processes and the role of people, tasks, programs and information in this process:
Can we conceptualize the business processes as a set of tasks?
Who and what are conducting these tasks?
How does information flow along and between tasks?
Which task needs which informaton? When? For how long?
How precise and reliable must information be to serve the task?
System Design (Ch. 5, 7, 8, 11):
Engineering Design (First year Engineering Course, University of Colorado at Boulder):
"Iterative, decision-making process for developing engineering devices or systems whereby resources are optimally converted into desired results."
"Process using engineering tools and scientific principles to evolve a plan which when fully carried out will satisfy a human need."
"Process of using compromise and iteration to solve problems relating to the creation of a product or a service to satisfy an existing or perceived human need."
Design as Engineering (Experimental Stress Analysis Notebook, 1994):
"Design is the essence of engineering."
"Design is the art of engineering."
"Design is the intent of engineering."
Design for the four F's (Dally (1997) Introduction to Engineering Design):
Function: does the product/service/device do what it is supposed to do?
Fit: does the design permit all components and subcomponents to fit and operate together (architecture)?
Is there a nominal fit; a fit in principle (meet minimum constraints)?
Tolerances and exception handling on the interfaces between components.
Form &Finish: Ergonomics and handling.
Functional design (Ch. 4, 11):
User functions (user interfaces).
System/batch functions.
Model design.
QA/QC design.
Architectural) design (Ch. 8):
Main components, statics & dynamics of the information
infrastructure.
1, n tier solution specifications.
Specification of third party tools vs. in-house vs. outsourced development.
Specification of OSs, languages, development tools.
Etc.
Software design (Ch. 5, 7):
Database schema (if applicable).
Datatypes, classes, functions, etc.
File structures.
Internal vs. external information (e.g., environment variables).
Development:
Development environment:
Indiv. developer environments; Makefiles, env. vars, resource files etc.
Code repositories (e.g., CVS, SourceSafe, etc.)
Overnight builds.
Regression testing.
Profilers, debuggers, IDEs, etc.
System release policy.
Bug tracking tools.
Program documentation policies and tools.
Database development:
Generation of schema.
Physical layout.
Population:
Static tables.
Dynamic tables.
Model development:
Integrate existing model codes.
Develop new (additional) codes.
Link models with the database(s).
Develop QA/QC codes.
Develop user interfaces and link with other components.
Develop system/batch system codes.
Test:
Testing protocols (unit & integration).
Testing environments.
Processing of test results.
Implementation or Rollout:
Hardware and third-party software installations.
System releases and/or installation on sponsor's computers.
All-or-nothing cutover.
Parallel systems.
On-site system testing.
User training.
Maintenance:
User support.
Continued bug tracking, fixing and performance enhancements.
"Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging."
"Given a large enough beta-tester and co-developer base, almost
every problem will be characterized quickly and the fix obvious to someone"
(Torvalds: "Given enough eyeballs, all bugs are shallow.")
"If you treat your beta -testers as if they are your most valuable
resource, they will respond by becoming your most valuable resource."
"Provided the development coordinator has a communications medium
at least as good at the Internet, and knows how to lead without coercion,
many heads are inevitably better than one."