Unit 1 Software Engineering
Unit 1 Software Engineering
SOFTWARE ENGINEERING
LOVELY PROFESSIONAL UNIVERSITY
SYLLABUS OF 3 r d Semester
Unit I Introduction to software engineering : Evolution and impact of software engineering, The
evolving role of Software & changing nature of software., Definition of a Software, Characteristics of
a Software, Software Engineering –Definition of Software Engineering, Need of Software
Engineering, Software engineering challenges., Software life cycle models: Waterfall model,
Prototyping model, Spiral models and V-models.
Unit III Software project management : Software Project, Need of Software Project Management,
Software Management Activities- Project Planning, Scope Management, Project Estimation, Function
points, COCOMO model, Project scheduling using PERT and GANTT charts.
Unit IV Detailed Design : Module specification, file design, data base design, Design of files, types of
files and methods of file organization., Top-Down and Bottom-up approach of designing, Physical
and logical design, Module Coupling and Cohesion techniques.
Unit V Software Testing : Fundamentals of testing, Definition of Software testing, code review, test
plan, test cases, test data, Characteristics of Testing Strategies., Software Validation and software
verification, Black box testing techniques, White box testing techniques, Levels of testing.
Unit VI Software Maintenance and Quality : Software Quality Assurance, Software Quality
Challenge, Software Maintenance, Need for Maintenance, Types of maintenance, Software Re-
engineeringReverse Engineering, Forward Engineering.
UNIT-1 INTRODUCTION TO SOFTWARE ENGINEERING
Software takes on a dual role. It is a product, and at the same time, the vehicle for delivering
a product. As a product, it delivers the computing potential embodied by computer
hardware or more broadly, by a network of computers that are accessible by local
hardware. . As the vehicle used to deliver the product, software acts as the basis for the
control of the computer (operating systems), the communication of information (networks),
and the creation and control of other programs (software tools and environments).
The role of computer software has undergone significant change over the last half-century.
Dramatic improvements in hardware performance, profound changes in computing
architectures, vast increases in memory and storage capacity, and a wide variety of exotic
input and output options, have all precipitated more sophisticated and complex computer-
based systems.
2. Definition of a Software.
Software is instruction that when executed provide desired features, function, and
performance.
Software is data structures that enable the programs to adequately manipulate information
It is descriptive information in both hard copy and virtual forms that describes the operation
and use of the programs.
3. Characterstics of Software.
2. The software doesn’t “wear out-: Hardware components suffer from the growing effects of many
other environmental factors. Stated simply, the hardware begins to wear out.Software is not
susceptible to the environmental maladies that cause hardware to wear out.When a hardware
component wears out, it is replaced by a spare part.There are no software spare parts.Every
software failure indicates an error in design or in the process through which design was translated
into machine-executable code. Therefore, the software maintenance tasks that accommodate
requests for change involve considerably more complexity than hardware maintenance. However,
the implication is clear—the software doesn’t wear out. But it does deteriorate.
3. The software continues to be custom-built-: A software part should be planned and carried out
with the goal that it tends to be reused in various projects.Current reusable segments encapsulate
the two information and the preparation that is applied to the information, empowering the
programmer to make new applications from reusable parts.In the hardware world, component reuse
is a natural part of the engineering process.
Software Engineering
Software Engineering-:
the establishment and use of sound engineering principles in order to obtain economically
software that is reliable and works efficiently on real machines.
Software Engineering is the application of a systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of software; that is, the application of
engineering to software.
The software engineering process is the glue that holds the technology layers together and
enables rational and timely development of computer software.
1. Waterfall Model-: The waterfall model, sometimes called the classic life cycle, suggests a
systematic, sequential approach6 to software development that begins with customer
specification of requirements and progresses through planning, modeling, construction, and
deployment, culminating in ongoing support of the completed software.
The problems that are sometimes encountered when the waterfall model is applied are:
. 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
It is often difficult for the customer to state all requirements explicitly. The waterfall
model requires this and has difficulty accommodating the natural uncertainty that
exists at the beginning of many projects
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.
2. V Model-: The V-model depicts the relationship of quality assurance actions to the actions
associated with communication, modeling, and early construction activities. As a software
team moves down the left side of the V, basic problem requirements are refined into
progressively more detailed and technical representations of the problem and its solution.
Once code has been generated, the team moves up the right side of the V, essentially
performing a series of tests (quality assurance actions) that validate each of the models
created as the team moved down the left side. The V-model provides a way of visualizing
how verification and validation actions are applied to earlier engineering work.
4. Spiral model-: The spiral development model is a risk-driven process model generator that is
used to guide multi-stakeholder concurrent engineering of software intensive systems. It has
two main distinguishing features. One is a cyclic approach for incrementally growing a
system’s degree of definition and implementation while decreasing its degree of risk. The
other is a set of anchor point milestones for ensuring stakeholder commitment to feasible
and mutually satisfactory system solutions.
EVOLUTION AND IMPACT OF SOFTWARE ENGINEERING
Software Evolution is a term which refers to the process of developing software initially, then timely
updating it for various reasons.
The impact of these changes are accessed to see how much system is affected by the change and
how much it might cost to implement the change. If the proposed changes are accepted, a new
release of the software system is planned. During release planning, all the proposed changes are
considered.
2. Environment change: As the working environment changes the things(tools) that enable us
to work in that environment also changes proportionally same happens in the software
world as the working environment changes then, the organizations need reintroduction of
old software with updated features and functionality to adapt the new environment.
3. Errors and bugs: As the age of the deployed software within an organization increases their
preciseness or impeccability decrease and the efficiency to bear the increasing complexity
workload also continually degrades. So, in that case, it becomes necessary to avoid use of
obsolete and aged software. All such obsolete Softwares need to undergo the evolution
process in order to become robust as per the workload complexity of the current
environment.
4. Security risks: Using outdated software within an organization may lead you to at the verge
of various software-based cyberattacks and could expose your confidential data illegally
associated with the software that is in use. So, it becomes necessary to avoid such security
breaches through regular assessment of the security patches/modules are used within the
software. If the software isn’t robust enough to bear the current occurring Cyber attacks so
it must be changed (updated).
5. For having new functionality and features: In order to increase the performance and fast
data processing and other functionalities, an organization need to continuously evolute the
software throughout its life cycle so that stakeholders & clients of the product could work
efficiently.