Unit III. (MIS)
Unit III. (MIS)
What is SDLC?
SDLC is a process followed for a software project, within a software
organization. It consists of a detailed plan describing how to develop,
maintain, replace and alter or enhance specific software. The life cycle
defines a methodology for improving the quality of software and the overall
development process.
SDLC models
Various SDLC methodologies have been developed to guide the processes
involved, including the original SDLC method, the Waterfall model. Other
SDLC models include rapid application development (RAD), joint
application development (JAD), the fountain model, the spiral model, build
and fix, and synchronize-and-stabilize. Another common model today is
called Agile software development.
Steps in SDLC
SDLC can be made up of multiple steps. There is no concrete set number
of steps involved. Around seven or eight steps appear commonly; however,
there can be anywhere from five upwards to 12. Typically, the more steps
defined in an SDLC model, the more granular the stages are.
3. Design: The proposed system is designed. Plans are laid out concerning
the physical construction, hardware, operating systems, programming,
communications and security issues.
7. Upkeep and maintenance: This step involves changing and updating the
system once it is in place. Hardware or software may need to be
upgraded, replaced or changed in some way to better fit the needs of
the end-users continuously. Users of the system should be kept up-to-
date concerning the latest modifications and procedures.
Other steps which may appear include project initiation, functional
specifications, detailed specifications, evaluation, end-of-life and other
steps that can be created by splitting previous steps apart further.
This model works best in scenarios where not all the project requirements
are known in detail ahead of time. It is an iterative, trial-and-error process
that takes place between the developers and the users.
4. The users thoroughly evaluate the first prototype and note its strengths
and weaknesses, what needs to be added and what should be removed.
The developer collects and analyzes the remarks from the users.
7. The preceding steps are iterated as many times as necessary, until the
users are satisfied that the prototype represents the final product
desired.
Incremental. This technique breaks the concept for the final product
into smaller pieces and prototypes are created for each one. In the end,
these prototypes are merged into the final product.
The spiral model combines the idea of iterative development with the
systematic, controlled aspects of the waterfall model. This Spiral model is
a combination of iterative development process model and sequential
linear development model i.e. the waterfall model with a very high
emphasis on risk analysis. It allows incremental releases of the product or
incremental refinement through each iteration around the spiral.
Spiral Model - Design
The spiral model has four phases. A software project repeatedly passes
through these phases in iterations called Spirals.
Identification
This phase starts with gathering the business requirements in the baseline
spiral. In the subsequent spirals as the product matures, identification of
system requirements, subsystem requirements and unit requirements are
all done in this phase.
This phase also includes understanding the system requirements by
continuous communication between the customer and the system analyst.
At the end of the spiral, the product is deployed in the identified market.
Design
The Design phase starts with the conceptual design in the baseline spiral
and involves architectural design, logical design of modules, physical
product design and the final design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product at
every spiral. In the baseline spiral, when the product is just thought of and
the design is being developed a POC (Proof of Concept) is developed in this
phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and
design details a working model of the software called build is produced
with a version number. These builds are sent to the customer for feedback.
Evaluation and Risk Analysis
Risk Analysis includes identifying, estimating and monitoring the technical
feasibility and management risks, such as schedule slippage and cost
overrun. After testing the build, at the end of first iteration, the customer
evaluates the software and provides feedback.
The following illustration is a representation of the Spiral Model, listing the
activities in each phase.
Based on the customer evaluation, the software development process
enters the next iteration and subsequently follows the linear approach to
implement the feedback suggested by the customer. The process of
iterations along the spiral continues throughout the life of the software.
Spiral Model Application
The Spiral Model is widely used in the software industry as it is in sync with
the natural development process of any product, i.e. learning with maturity
which involves minimum risk for the customer as well as the development
firms.
The following pointers explain the typical uses of a Spiral Model −
1. When there is a budget constraint and risk evaluation is important.
2. For medium to high-risk projects.
3. Long-term project commitment because of potential changes to
economic priorities as the requirements change with time.
4. Customer is not sure of their requirements which is usually the case.
5. Requirements are complex and need evaluation to get clarity.
6. New product line which should be released in phases to get enough
customer feedback.
7. Significant changes are expected in the product during the
development cycle.
Import/Export
Users frequently maintain records in small spreadsheet files, tracking
projects, creating charts and performing other daily tasks. A database
programmer can set up an application that allows for customized export
from the system, which the end users can open in a spreadsheet program.
In this situation, a database system process combs through the data and
writes select records into a spreadsheet format. To move data in the
opposite direction, the programmer sets up data-import routines that feed
the database from user-generated files.
Schedule
Some types of database management software process data automatically
on a schedule. This type of time-sensitive process can help a manager who
needs a daily report that summarizes the previous day's work. Running
overnight, a scheduled routine can generate this information. Other
scheduled database processes can create reports or export files for the
week, month or quarter. Once users describe and quantify their recurring
data needs, the programmer can set up the necessary processes.
Security
Database security must reflect users' organizational roles. Database
application configurations provide the flexibility to assure that information
reaches only those people with the need and the right to see it. For example,
an engineer receives full access to her parts database but can't read
records from the payroll database. Conversely, a human resources user
may gain full access to payroll data but lack the privileges necessary to
reach the parts database.
If you are reading this guide, it is likely that your organization has already
decided to build a data warehouse. Moreover, it is likely that the business
requirements are already defined, the scope of your application has been
agreed upon, and you have a conceptual design. So now you need to
translate your requirements into a system deliverable. In this step, you
create the logical and physical design for the data warehouse and, in the
process, define the specific data content, relationships within and between
groups of data, the system environment supporting your data warehouse,
the data transformations required, and the frequency with which data is
refreshed.
The logical design is more conceptual and abstract than the physical
design. In the logical design, you look at the logical relationships among
the objects. In the physical design, you look at the most effective way of
storing and retrieving the objects.
Your design should be oriented toward the needs of the end users. End
users typically want to perform analysis and look at aggregated data, rather
than at individual transactions. Your design is driven primarily by end-user
utility, but the end users may not know what they need until they see it. A
well-planned design allows for growth and changes as the needs of users
change and evolve.
A logical design is a conceptual, abstract design. You do not deal with the
physical implementation details yet; you deal only with defining the types of
information that you need.
You can create the logical design using a pen and paper, or you can use a
design tool such as Oracle Warehouse Builder or Oracle Designer.
The elements that help you to determine the data warehouse schema are
the model of your source data and your user requirements. Sometimes, you
can get the source model from your company's enterprise data model and
reverse-engineer the logical data model for the data warehouse from this.
The physical implementation of the logical data warehouse model may
require some changes due to your system parameters--size of machine,
number of users, storage capacity, type of network, and software.
Data Warehousing Schemas
Star Schemas
The star schema is the simplest data warehouse schema. It is called a star
schema because the diagram of a star schema resembles a star, with
points radiating from a center. The center of the star consists of one or
more fact tables and the points of the star are the dimension tables shown
in:
Functional Programming
Functional programming is style of programming language, which uses the
concepts of mathematical functions. A function in mathematics should
always produce the same result on receiving the same argument. In
procedural languages, the flow of the program runs through procedures, i.e.
the control of program is transferred to the called procedure. While control
flow is transferring from one procedure to another, the program changes
its state.
In procedural programming, it is possible for a procedure to produce
different results when it is called with the same argument, as the program
itself can be in different state while calling it. This is a property as well as a
drawback of procedural programming, in which the sequence or timing of
the procedure execution becomes important.
Functional programming provides means of computation as mathematical
functions, which produces results irrespective of program state. This
makes it possible to predict the behavior of the program.
Coding Guidelines
Practice of coding style varies with organizations, operating systems and
language of coding itself.
The following coding elements may be defined under coding guidelines of
an organization:
Naming conventions - This section defines how to name functions,
variables, constants and global variables.
Indenting - This is the space left at the beginning of line, usually 2-8
whitespace or single tab.
Whitespace - It is generally omitted at the end of line.
Operators - Defines the rules of writing mathematical, assignment
and logical operators. For example, assignment operator ‘=’ should
have space before and after it, as in “x = 2”.
Control Structures - The rules of writing if-then-else, case-switch,
while-until and for control flow statements solely and in nested
fashion.
Line length and wrapping - Defines how many characters should be
there in one line, mostly a line is 80 characters long. Wrapping defines
how a line should be wrapped, if is too long.
Functions - This defines how functions should be declared and
invoked, with and without parameters.
Variables - This mentions how variables of different data types are
declared and defined.
Comments - This is one of the important coding components, as the
comments included in the code describe what the code actually does
and all other associated descriptions. This section also helps creating
help documentations for other developers.
Software Documentation
Software documentation is an important part of software process. A well
written document provides a great tool and means of information
repository necessary to know about software process. Software
documentation also provides information about how to use the product.
A well-maintained documentation should involve the following documents:
Requirement documentation - This documentation works as key tool
for software designer, developer and the test team to carry out their
respective tasks. This document contains all the functional, non-
functional and behavioral description of the intended software.
Source of this document can be previously stored data about the
software, already running software at the client’s end, client’s
interview, questionnaires and research. Generally it is stored in the
form of spreadsheet or word processing document with the high-end
software management team.
This documentation works as foundation for the software to be
developed and is majorly used in verification and validation phases.
Most test-cases are built directly from requirement documentation.
Software Design documentation - These documentations contain all
the necessary information, which are needed to build the software. It
contains: (a) High-level software architecture, (b) Software design
details, (c) Data flow diagrams, (d) Database design
These documents work as repository for developers to implement the
software. Though these documents do not give any details on how to
code the program, they give all necessary information that is required
for coding and implementation.
Technical documentation - These documentations are maintained by
the developers and actual coders. These documents, as a whole,
represent information about the code. While writing the code, the
programmers also mention objective of the code, who wrote it, where
will it be required, what it does and how it does, what other resources
the code uses, etc.
The technical documentation increases the understanding between
various programmers working on the same code. It enhances re-use
capability of the code. It makes debugging easy and traceable.
There are various automated tools available and some comes with
the programming language itself. For example java comes JavaDoc
tool to generate technical documentation of code.
User documentation - This documentation is different from all the
above explained. All previous documentations are maintained to
provide information about the software and its development process.
But user documentation explains how the software product should
work and how it should be used to get the desired results.
These documentations may include, software installation procedures,
how-to guides, user-guides, uninstallation method and special
references to get more information like license updation etc.
Software Implementation Challenges
There are some challenges faced by the development team while
implementing the software. Some of them are mentioned below:
Code-reuse - Programming interfaces of present-day languages are
very sophisticated and are equipped huge library functions. Still, to
bring the cost down of end product, the organization management
prefers to re-use the code, which was created earlier for some other
software. There are huge issues faced by programmers for
compatibility checks and deciding how much code to re-use.
Version Management - Every time a new software is issued to the
customer, developers have to maintain version and configuration
related documentation. This documentation needs to be highly
accurate and available on time.
Target-Host - The software program, which is being developed in the
organization, needs to be designed for host machines at the
customers end. But at times, it is impossible to design a software that
works on the target machines.