The Software Development Life Cycle
The SDLC has a similar set of four fundamental phases: planning, analysis,
design, and implementation. Each phase is itself composed of a series of steps,
which rely on techniques that produce deliverables (specific
documents files that provide understanding about the project).
Planning
- understanding why an information system should be built and determining
how the project team will go about building it
- identifying (proposed) system's business value to the organization (how
will it lower costs or increase profits?
- system request--a brief summary of a business need (generated by
a project sponsor) with an explanation of how a system that supports
the need with create business value
- feasibility analysis--examines the ideas technical feasibility
(i.e. can we build it?), economic feasibility (i.e. will it provide
business value?), and operational feasibility (i.e. if we build it,
will it be used?).
- approval (or steering) committee considers feasibility
analysis and decides whether or not project should be undertaken
- if approved, project management begins: project manager creates
a workplan (the deliverable for the project management), staffs the project,
and puts technology in place to help control and direct the project through
the entire SDLC
Analysis
- answers the question of who will use the system, what
the system will do, and where and when it will be used.
- analysis strategy--project team investigates the current system
(as-is system), identifies improvement opportunities, and develops
a concept for the new system (to-be system).
- gathering business requirements (through interviews, questionnaires, etc.)
and analysis of such requirements to create a requirements definition
- the requirements definition is then used to develop use cases and
a process model that describe how the business will operate if the
new system were developed.
- finally, a data model is developed to describe the information
that is needed to support the process.
- the analysis, requirement definition use cases, process models and data
models are combined into a document called the systems proposal.
Design
- decides how the system will operate, in terms of hardware, software,
and network infrastructure; the user interface, forms, and reports that will
be used; the specific programs, databases, and files that will be needed.
- design selection: will the system be designed by the company's
own programmers, will it be outsourced to another firm, or will the company
buy an existing software package?
- design considerations: architecture design, interface design,
data storage design, program design; all of these together
comprise the system specification that is handed to the programming
team for implementation.
Implementation
- during which the system is actually built (or purchased)
- construction--during which the system is built and tested to ensure
it performs as designed
- testing
- installation--the process by which the old system is turned off and the
new one turned on
- direct cutover approach--new system immediately replaces old
system
- parallel conversion approach--both the old and new systems
are operated for a month or two until it is clear that there are no bugs
in the new system
- phased conversion strategy--the new system is installed in
one part of the organization as an initial trail and then gradually installed
in others
- development of training plan to teach users how to use the new
system
- establishment of support plan (to include a formal and informal post-implementation
review as well as a systematic way of identifying major and minor changes
needed for the system
System Development Methodologies
Methodology: A formalized approach to implementing the SDLC (i.e.
it is a list of steps and deliverables).
Methodologies are process centered if they emphasize process models
as the core of the system concept. For example, process centered methodologies
will focus first on defining the processes.
Methodologies are data centered if they emphasize data models as the
core of the system concept. For example, data centered methodologies would focus
first of defining the contents of the storage areas and how the contents are
organized.
Others, like the object-oriented methodology, attempt to balance the focus
between process and data by incorporating both into one model.
Structured Design Methodologies
- adopt formal step-by-step approach to the SDLC that moves logically from
one phase to the next
- there are process- and data centered methodologies that follow the basic
approach of the two structured design categories:
Waterfall Development Methodology
- analysts and users proceed in sequence from one phase to the next
- once the sponsor approves the work that was conducted for a phase, the phase
ends and the next one begins
- called waterfall because although it is possible to go backward in the SDLC,
it is very difficult (think about a salmon trying to swim upstream in a waterfall
- 2 key advantages:
- it identifies system requirements long before programming begins, and
- it minimizes changes as the project proceeds
- 2 key disadvantages:
- the design must be completely specified on paper before programming
begins
- a long time elapses between the completion of the system proposal in
the analysis phase and the delivery of the system
Parallel Development Methodology
- attempts to address the problem of long delays between the analysis phase
and the delivery of the system
- performs a general design of the system and then divides the project into
a series of distinct sub-projects that can be designed and implemented in
parallel
- once all sub-projects are complete, there is a final integration of the
separate pieces, and the system is delivered
- advantage: reduction in schedule time required to deliver system
- disadvantage: not all sub-projects are completely independent; design decisions
made in one subproject may affect another
Rapid Application Development Methodologies
- adjust the SDLC phases to get some part of the system developed quickly
and into the hand of the user
- recommend using special techniques, computer tools (like CASE tools), JAD
(joint application design) sessions, 4th generation/visual programming languages
Phased Development Methodology
- breaks the overall system into a series of versions that are developed sequentially;
the most important and fundamental requirements are bundled into the first
version of the system. Once version 1 is implemented, work begins on version
2.
- advantage: quickly gets a useful system into the hands of users
- disadvantage: users begin to work with system that are (intentionally) incomplete
Prototyping Methodology
- performs the analysis, design, and implementation phases concurrently, and
all three phases are performed repeatedly in a cycle until until the system
is completed
- after the prototype (now called the "system") is installed, refinement
occurs until it is accepted as the new system
- key advantage: very quickly provides a system for the user to interact with
- disadvantage: may challenge attempts to conduct careful, methodical analysis
Throwaway Prototyping Methodology
- similar to prototyping, however, throwaway prototyping is done at different
point in SDLC
- has relatively thorough analysis phase that is used to gather information
and to develop ideas for the system concept
- use of the design prototype--a part of a system that contains only
enough detail to enable users to understand the issues under consideration
- key difference: the design prototypes are eventually thrown away, while
in prototyping, the prototype evolves into the final system
- advantage: balances the benefits of well-thought-out analysis and design
phases with the advantages of using prototypes to refine key issues before
a system is built. It may take longer to deliver the final system as compared
with prototyping (as the prototypes do not become the final system), but the
approach usually produces more stable and reliable systems
Agile Development Methodologies
- programming-centric methodologies that focus on streamlining the SDLC by
eliminating must of the modeling and documentation, overhead, and the time
spent on those tasks
- projects emphasize simple, iterative application development
- include extreme programming, scrum, and the dynamic systems development
method (DSDM)
Extreme Programming (XP)
- uses continuous testing, simple coding performed by pairs of developers,
and close interaction with end users to build systems very quickly
- superficial planning process; analysis, design, and implementation performed
iteratively; system functionality grows over time
- relies heavily on refactoring (a disciplined way to restructure
code to keep it simple)
- works well when requirements are undefined or rapidly changing and for projects
that have very short schedules or time-critical requirements
Selecting the Appropriate Development Methodology
The following criteria are pertinent to selecting an appropriate system development
methodology:
- Clarity of user requirements
- (Analysts' and programmers') familiarity with the technology with which
the proposed system will be built
- System complexity
- System reliability
- Short time schedules
- Schedule visibility
Project Team Skills and Roles
Project members must posses a set of skills which can be broken down into six
major categories:
- technical
- business
- analytical
- interpersonal
- management
- ethical
Further, organizations build project teams that contain several individuals
with clearly defined responsibilities:
Business Analyst
- focuses on the business issues surrounding the system: identifying the business
value that the system will create, developing ideas and suggestions for how
the business processes can be improved, and designing the new processes and
policies in conjunction with the system analyst
- likely have business experience and some type of professional training (e.g.
the business analyst for an accounting system will likely be a CPA)
- represents the interest of the project sponsor and the ultimate user
- assists in the planning and design phases, but most active in the analysis
phase
System Analyst
- focuses on the IS issues surrounding the system: develops ideas and suggestions
for how IT can improve business processes, designs the new business processes
with help from the business analyst, designs the new information system, and
ensures that all IS standards are maintained
- likely have significant training and experience in analysis and design,
programming, and even areas of the business
- represents the interest of the IS department
- works intensively throughout the project (but perhaps less so during the
implementation phase)
Infrastructure Analyst
- focuses on the technical issues surrounding how the system will interact
with the organization's technical infrastructure (e.g. hardware, software,
networks, and databases): ensuring that the new IS conforms to organizational
standards and identifying infrastructure changes needed to support the system
- likely have significant training and experience in networking, database
administration, and various hardware and software products
- represents the interest of the organization and IS group that ultimately
will have to operate and support the new system once it has been installed
- works throughout the project (but perhaps less so during the planning and
analysis phases)
Change Management Analyst
- focuses on the people and management issues surrounding the system installation:
ensuring that adequate documentation and support are available to users, providing
user training on the new system, and developing strategies to overcome resistance
to change
- likely have significant training and experience in organizational behavior
in general and change management in particular
- represents the interest of the project sponsor and users for whom the system
is being designed
- works most actively during the implementation phase but begins laying the
groundwork for change during the analysis and design phases
Project Manager
- responsible for ensuring that the project is completed on time and within
budget and that the system delivers all benefits that were intended by the
project sponsor: managing the team members, developing the project plan, assigning
resources, and being the primary point of contact when people outside the
team have questions about the project
- likely have significant experience in project management and likely has
worked for many years as a system analyst beforehand
- represents the interest of the IS department and the project sponsor
- works intensely during all phases of the project