Assignments: Software Engineering (MC 0019)
Assignments: Software Engineering (MC 0019)
Amitava Mudi,
MCA – 4th Semester, Roll Number: 510545511, LC Code 1608
Software crisis
The term is used to describe the impact of rapid increases in computer
power and the complexity of the problems which could be tackled. In
essence, it refers to the difficulty of writing correct, understandable, and
verifiable computer programs. The roots of the software crisis are
complexity, expectations, and change.
The causes of the software crisis were linked to the overall complexity of
hardware and the software development process. The crisis manifested
itself in several ways:
Various processes and methodologies have been developed over the last
few decades to "tame" the software crisis, with varying degrees of
success. However, it is widely agreed that there is no "silver bullet" ― that
is, no single approach which will prevent project overruns and failures in
all cases. In general, software projects which are large, complicated,
poorly-specified, and involve unfamiliar aspects, are still particularly
vulnerable to large, unanticipated problems
Requirements analysis
Requirements analysis in systems engineering and software engineering,
encompasses those tasks that go into determining the needs or conditions
to meet for a new or altered product, taking account of the possibly
conflicting requirements of the various stakeholders, such as beneficiaries
or users.
Specification process
Requirements specification is a complete description of the behaviour of
the system to be developed. It includes a set of use cases that describe all
of the interactions that the users will have with the software. Use cases
are also known as functional requirements. In addition to use cases, the
Code reading
Code reading involves careful reading of the code by the programmer to
detect any discrepancies between the design specifications and the actual
implementation. It involves determining the abstraction of a module and
then comparing it with its specifications. The process is the reverse of the
design. In design we start from an abstraction and move toward an
abstract description.
Static analysis
Static code analysis is the analysis of computer software that is performed
without actually executing programs built from that software (analysis
performed on executing programs is known as dynamic analysis). In most
cases the analysis is performed on some version of the source code and in
the other cases some form of the object code. The term is usually applied
to the analysis performed by an automated tool, with human analysis
being called program understanding, program comprehension or code
review.
Proving correctness
In proof of correctness, the aim is to prove the program is correct. So
correctness is never really established but is implied and hoped by the
absence of detection of any errors.
Unit Testing
In computer programming, unit testing is a software verification and
validation method in which a programmer tests if individual units of source
code are fit for use. A unit is the smallest testable part of an application. In
procedural programming a unit may be an individual function or
procedure.
Some different types of integration testing are big bang, top-down, and
bottom-up.
Validation testing
In the computer architecture and hardware world, validation refers to the
process of verifying that the operations of the piece of hardware or
architecture meets the specification. In some cases, validation not only
refers to finding bugs in the hardware but also proving absence of certain
critical bugs which may not have workarounds and may lead to project
cancellation or product recall.
Validation refers to the process of data validation, ensuring that data
inserted into an application satisfies pre-determined formats or complies
with stated length and character requirements and other defined input
criteria. It may also ensure that only data that is either true or real can be
entered into a database.