Professional Documents
Culture Documents
UNIT-1
Introduction: Introduction to Software Engineering, Software Components, Software
Characteristics, Software Crisis, Software Engineering Processes, Similarity and Differences
from Conventional Engineering Processes, Software Quality Attributes. Software Development
Life Cycle (SDLC) Models: Water Fall Model, Prototype Model, Spiral Model, Evolutionary
Development Models, Iterative Enhancement Models.
__________________________________________________________________________
Software Engineering
Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to maintaining
the system after it has gone into use.
Software engineering is concerned with theories, methods and tools for professional
software development.
Definitions
IEEE defines software engineering as:
The application of a systematic,disciplined,quantifiable approach to the
development,operation and maintenance of software; that is, the application of
engineering to software.
Software Components
“A software component is a unit of composition with contractually
specified interfaces and explicit context dependencies only. A software component can be
deployed independently and is subject to composition by third parties.”
Software=Program+Documentation+ Operating Procedures
1 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
Transitional
This aspect is important when the software is moved from one platform to another:
• Portability
• Interoperability
• Reusability
• Adaptability
Maintenance
This aspect briefs about how well a software has the capabilities to maintain itself in the ever-
changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
2 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
1) Usability
It is described as how the user is utilizing a system effectively and the ease of which
users can learn to operate or control the system. The well-known principle of usability is
KISS (Keep It Simple Stupid). Software applications should be user-friendly.
2) Reliability
It is the ability of a system to continue to keep operating over time
3) Availability
It is the ratio of the available system time to the total working time it is required or
expected to function.
4) Portability
It is the ability of a software application to run on numerous platforms such as data
portability, hosting, viewing, etc.,
5) Testability
It shows how well the system or component facilitates to perform tests to determine
whether the predefined test criteria have been met.
6) Scalability
It is the ability of a system to handle the demand for stress caused by increased usage
without decreasing performance.
7) Flexibility
It is the ability of a system to adapt to future changes
8) Reusability
It is the use of existing software I more than one software with small or no change. It is a
cost-efficient and time-saving quality attribute.
9) Maintainability
It is the ability of a software application to maintain easily and support changes cost-
effectively.
3 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
10) Supportability
It is the ability of a system that satisfies necessary requirements and needs to identifying
and solving problems.
11) Interoperability
It is the ability of two or more systems to communicate or exchange data easily and to
use the data that has been exchanged.
12) Performance
It is the ability of a system in the form of responsiveness to various actions within a
certain period of time
13) Security
It is the ability of a system to resist or block malicious or unauthorized attempts that
destroy the system and at the same time provide access to legitimate users.
4 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
• SDLC is a framework defining tasks performed at each step in the software development
process.
SDLC Models
There are various software development life cycle models defined and designed which are
followed during the software development process. These models are also referred as
Software Development Process Models.
Each process model follows a Series of steps unique to its type to ensure success in the
process of software development.
Following are the most important and popular SDLC models followed in the industry −
• Waterfall Model
• Iterative Model
• Spiral Model
• V-Model
• Big Bang Model
Other related methodologies are Agile Model, RAD Model, Rapid Application Development
and Prototyping Models
5 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
System Design −
The requirement specifications from first phase are studied in this phase and the system
design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
Implementation − With inputs from the system design, the system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and
tested for its functionality, which is referred to as Unit Testing. All these phases are cascaded
to each other in which progress is seen as flowing steadily downwards (like a waterfall)
through the phases.
The next phase is started only after the defined set of goals are achieved for previous phase
and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is tested
for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the product
is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the
defined set of goals are achieved for previous phase and it is signed off, so the name
"Waterfall Model". In this model, phases do not overlap.
6 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
• Since the testing done at a later stage, it does not allow identifying the challenges and
risks in the earlier phase, so the risk reduction strategy is difficult to prepare.
• Prototype Model
The prototype model requires that before carrying out the development of actual software, a
working prototype of the system should be built. A prototype is a toy implementation of the
system. A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as
compared to actual software. In many instances, the client only has a general view of what is
expected from the software product. In such a scenario where there is an absence of detailed
information regarding the input to the system, the processing needs, and the output requirement,
the prototyping model may be employed.
8 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
Important software projects have failed because project risks were neglected & nobody was
prepared when something unforeseen happened.
Barry Boehm recognized this and tired to incorporate the “project risk” factor into a life cycle
model.
The result is the spiral model, which was presented in 1986.
The radial dimension of the model represents the cumulative costs. Each path around the spiral is
indicative of increased costs. The angular dimension represents the progress made in completing
each cycle. Each loop of the spiral from X-axis clockwise through 360o represents one phase.
One phase is split roughly into four sectors of major activities.
_ Planning: Determination of objectives, alternatives & constraints.
_ Risk Analysis: Analyze alternatives and attempts to identify and resolve the risks involved.
_ Development: Product development and testing product.
_ Assessment: Customer evaluation
Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.
Disadvantages
o Can be a costly model to use.
o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.
RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element based construction approach. If the requirements are well
understood and described, and the project scope is a constraint, the RAD process enables a
development team to create a fully functional system within a concise time period.
9 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
RAD (Rapid Application Development) is a concept that products can be developed faster and of
higher quality through:
o Gathering requirements using workshops or focus groups
o Prototyping and early, reiterative user testing of designs
o The re-use of software components
o A rigidly paced schedule that refers design improvements to the next product version
o Less formality in reviews and other team communication
Advantage of RAD Model
o This model is flexible for change.
o In this model, changes are adoptable.
o Each phase in RAD brings highest priority functionality to the customer.
o It reduced development time.
o It increases the reusability of features.
Disadvantage of RAD Model
o It required highly skilled designers.
o All application is not compatible with RAD.
o For smaller projects, we cannot use the RAD model.
o On the high technical risk, it's not suitable.
o Required user involvement.
Agile Model
Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements. Each
iteration involves a team working through a full software development life cycle including
planning, requirements analysis, design, coding, and testing before a working product is
demonstrated to the client.
10 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]
11 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut