What Is Software Engineering?: Unit 1
What Is Software Engineering?: Unit 1
Software Engineering
Software Engineering provides a standard procedure to design and develop a software.
Our Software Engineering Tutorial contains all the topics of Software Engineering like Software
Engineering Models, Software Development Life Cycle, Requirement Engineering, Software Design
tools, Software Design Strategies, Software Design levels, Software Project Management, Software
Management activities, Software Management Tools, Software Testing levels, Software Testing
approaches, Quality Assurance Vs. Quality control, Manual Testing, Software Maintenance,
Software Re-engineering and Software Development Tool such as CASE Tool.
Computer programs and related documentation such as requirements, design models and user
manuals.
Software
Engineering is an engineering branch related to the evolution of software product using well-
defined scientific principles, techniques, and procedures. The result of software engineering is an
effective and reliable software product.
4. Good communication skills. These skills comprise of oral, written, and interpersonal skills.
5. High motivation.
7. Intelligence.
As we know that in the early 1950s, computers were slow and expensive. Though the programs at
that time were very small in size, these computers took considerable time to process them. They
relied on assembly language which was specific to computer architecture. Thus, developing a
program required lot of effort. Every programmer used his own style to develop the programs.
High Level Language Programming
With the introduction of semiconductor technology, the computers became smaller, faster, cheaper,
and reliable than their predecessors. One of the major developments includes the progress from
assembly language to high-level languages. Early high level programming languages such as
COBOL and FORTRAN came into existence. As a result, the programming became easier and thus,
increased the productivity of the programmers. However, still the programs were limited in size and
the programmers developed programs using their own style and experience.
Control Flow Based Design
With the advent of powerful machines and high level languages, the usage of computers grew
rapidly: In addition, the nature of programs also changed from simple to complex. The
increased size and the complexity could not be managed by individual style. It was analyzed
that clarity of control flow (the sequence in which the program’s instructions are executed) is of
great importance. To help the programmer to design programs having good control flow
structure, flowcharting technique was developed. In flowcharting technique, the algorithm is
represented using flowcharts. A flowchart is a graphical representation that depicts the
sequence of operations to be carried out to solve a given problem.
Note that having more GOTO constructs in the flowchart makes the control flow messy, which makes
it difficult to understand and debug. In order to provide clarity of control flow, the use of GOTO
constructs in flowcharts should be avoided and structured constructs-decision, sequence, and
loop-should be used to develop structured flowcharts. The decision structures are used for
conditional execution of statements (for example, if statement). The sequence structures are used for
the sequentially executed statements. The loop structures are used for performing some repetitive
tasks in the program. The use of structured constructs formed the basis of the structured
programming methodology.
Structured programming became a powerful tool that allowed programmers to write moderately
complex programs easily. It forces a logical structure in the program to be written in an efficient and
understandable manner. The purpose of structured programming is to make the software code easy
to modify when required. Some languages such as Ada, Pascal, and dBase are designed with
features that implement the logical program structure in the software code.
Data-Flow Oriented Design
Data-flow diagrams are a useful and intuitive way of describing a system. They are generally
understandable without specialized training, notably if control information
Data-flow design is an integral part of several design methods, and most CASE tools support data-
flow diagram creation. Different ways may use different icons to represent data-flow diagram
entities, but their meanings are similar.
is excluded. They show end-to-end processing. That is the flow of processing from when data
enters the system to where it leaves the system can be traced.
Object-Oriented Design
In the object-oriented design method, the system is viewed as a collection of objects (i.e., entities).
The state is distributed among the objects, and each object handles its state data. For example, in a
Library Automation Software, each library representative may be a separate object with its data
and functions to operate on these data. The tasks defined for one purpose cannot refer or change
data of other objects. Objects have their internal data which represent their state. Similar objects
create a class. In other words, each object is a member of some class. Classes may inherit features
from the superclass.
The different terms related to object design are:
1. Objects: All entities involved in the solution design are known as objects. For example, person,
banks, company, and users are considered as objects. Every entity has some attributes associated
with it and has some methods to perform on the attributes.
2. Classes: A class is a generalized description of an object. An object is an instance of a class. A
class defines all the attributes, which an object can have and methods, which represents the
functionality of the object.
3. Messages: Objects communicate by message passing. Messages consist of the integrity of the
target object, the name of the requested operation, and any other action needed to perform the
function. Messages are often implemented as procedure or function calls.
4. Abstraction In object-oriented design, complexity is handled using abstraction. Abstraction is the
removal of the irrelevant and the amplification of the essentials.
5. Encapsulation: Encapsulation is also called an information hiding concept. The data and
operations are linked to a single unit. Encapsulation not only bundles essential information of an
object together but also restricts access to the data and methods from the outside world.
6. Inheritance: OOD allows similar classes to stack up in a hierarchical manner where the lower or
sub-classes can import, implement, and re-use allowed variables and functions from their
immediate superclasses. This property of OOD is called an inheritance. This makes it easier to
define a specific class and to create generalized classes from specific ones.
7. Polymorphism: OOD languages provide a mechanism where methods performing similar tasks
but vary in arguments, can be assigned the same name. This is known as polymorphism, which
allows a single interface is performing functions for different types. Depending upon how the
service is invoked, the respective portion of the code gets executed.