Software Crisis:-: Dictionary As "A Turning Point in The Course of Anything Decisive or Crucial Time, Stage or Event."
Software Crisis:-: Dictionary As "A Turning Point in The Course of Anything Decisive or Crucial Time, Stage or Event."
Many industry observers (including this author) have characterized the problems associated with
software development as a "crisis." More than a few books (e.g.,[GLA97], [FLO97], [YOU98a])
have recounted the impact of some of the more spectacular software failures that have occurred over
the past decade. Yet, the great successes achieved by the software industry have led many to question
whether the term software crisis is still appropriate. Robert Glass, the author of a number of books on
software failures, is representative of those who have had a change of heart. He states [GLA98]: “I
look at my failure stories and see exception reporting, spectacular failures in the midst of many
successes, a cup that is [now] nearly full.” It is true that software people succeed more often than
they fail. It also true that the software crisis predicted 30 years ago never seemed to materialize.
What we really have may be something rather different. The word crisis is defined in Webster's
Dictionary as “a turning point in the course of anything; decisive or crucial time, stage or event.”
Yet, in terms of overall software quality and the speed with which computer-based systems and
products are developed, there has been no "turning point," no "decisive time," only slow,
evolutionary change, punctuated by explosive technological changes in disciplines associated with
software. The word crisis has another definition: "the turning point in the course of a disease,
when it becomes clear whether the patient will live or die." This definition may give us
a clue about the real nature of the problems that have plagued software development.
What we really have might be better characterized as a chronic affliction. 2 The
word affliction is defined as "anything causing pain or distress." But the definition of
the adjective chronic is the key to our argument: "lasting a long time or recurring
often; continuing indefinitely." It is far more accurate to describe the problems we
have endured in the software business as a chronic affliction than a crisis.
Regardless of what we call it, the set of problems that are encountered in the development
of computer software is not limited to software that "doesn't function properly." Rather, the affliction
encompasses problems associated with how we develop software, how we support a growing volume
of existing software, and how we can expect to keep pace with a growing demand for more software.
We live with this affliction to this day—in fact, the industry prospers in spite of it.
And yet, things would be much better if we could find and broadly apply a cure.
The linear sequential model is the oldest and the most widely used paradigm for
software engineering. However, criticism of the paradigm has caused even active
supporters to question its efficacy [HAN95]. Among the problems that are sometimes
encountered when the linear sequential model is applied are:
1. Real projects rarely follow the sequential flow that the model proposes.
Although the linear model can accommodate iteration, it does so indirectly.
As a result, changes can cause confusion as the project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly. The
linear sequential model requires this and has difficulty accommodating the
natural uncertainty that exists at the beginning of many projects.
3. The customer must have patience. A working version of the program(s) will
not be available until late in the project time-span. A major blunder, if undetected
until the working program is reviewed, can be disastrous.
In an interesting analysis of actual projects Bradac [BRA94], found that the linear
nature of the classic life cycle leads to “blocking states” in which some project team
members must wait for other members of the team to complete dependent tasks. In
fact, the time spent waiting can exceed the time spent on productive work! The blocking
state tends to be more prevalent at the beginning and end of a linear sequential
process.
Each of these problems is real. However, the classic life cycle paradigm has a definite
and important place in software engineering work. It provides a template into
which methods for analysis, design, coding, testing, and support can be placed. The
classic life cycle remains a widely used procedural model for software engineering.
While it does have weaknesses, it is significantly better than a haphazard approach
to software development.
ER Diagrams:
In software engineering, an entity-relationship model (ERM) is an abstract and conceptual representation of data.
Entity-relationship modeling is a database modeling method, used to produce a type of conceptual
schema or semantic data model of a system, often a relational database, and its requirements in atop-down fashion.
Diagrams created by this process are called entity-relationship diagrams, ER diagrams, or ERDs.
This article refers to the techniques proposed in Peter Chen's 1976 paper.[1]However, variants of the idea existed
previously,[2] and have been devised subsequently.
entities, relationships, and attributes
Primary key
SRS:
A Software Requirements Specification (SRS) - a requirements specification for a software system - is a
complete description of the behavior of a system to be developed. It includes a set of use cases that
describe all the interactions the users will have with the software. In addition to use cases, the SRS also
contains non-functional (or supplementary) requirements. Non-functional requirements are
requirements which impose constraints on the design or implementation (such as performance
engineering requirements, quality standards, or design constraints).
Coupling:
In computer science, coupling or dependency is the degree to which each program module relies on
each one of the other modules
Types of coupling