SE Unit 1 - Notes
SE Unit 1 - Notes
EVOLUTION
• Software engineering principles have evolved over the last sixty
years
• The early programmers used an ad hoc programming style, where
a program is quickly developed without making any specification,
plan, or design. This style was widely adopted by the programmers
in the early years of computing history.
• Software engineering principles are now being widely used in
industry
A Solution to the Software Crisis
• Organizations are spending increasingly larger portions of
their budget on software
• Software products are difficult to alter, debug, and enhance
• Often fail to meet the user requirements
Impact of Software Engineering
• Software engineering is an engineering branch associated
with development of software product using well-defined
scientific principles, methods and procedures.
• The outcome of software engineering is an efficient and
reliable software product.
SOFTWARE LIFE CYCLE MODELS
• A software development life cycle (SDLC) model (also called
software life cycle model and software development process
model ) describes the different activities that need to be
carried out for the software to evolve in its life cycle.
• An SDLC graphically depicts the different phases through
which a software evolves.
Waterfall Model
• Waterfall model is the simplest model of software
development
• All the phases of SDLC will function one after another in linear
manner. That is, when the first phase is finished then only the
second phase will start and so on.
• In this approach, the whole process of software development
is divided into separate phases. Typically, the outcome of one
phase acts as the input for the next phase sequentially.
• Requirement Gathering and analysis − All possible
requirements of the system to be developed are captured in
this phase and documented in a requirement specification
document.
• 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.
• 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.
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.
• 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.
Evolutionary model
• In the evolutionary model, all the work is done during the
development phase.
• In this model, all work divided into small chunks or modules.
• The user feedback is very helpful for the development of the
next stage because after the completion of one stage we get
the feedback to the user, the user feedback is very essential
for the development of the next phase.
• In the evolutionary model, all work divided into smaller
chunks. These chunks present to the customer one by one.
The confidence of the customer increased.
• It is very useful in a large project where you can easily find a
module for step by step implementation.
• The evolutionary model is used when the users need to start
using the many features instead of waiting for the complete
software.
• The big advantage of the evolutionary model is that the user
has checked every stage during the development and it is
helpful in achieving customer confidence.
Spiral Model
• The spiral model, initially proposed by Boehm, is an
evolutionary software process model that couples the
iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model.
• Using the spiral model, the software is developed in a series
of incremental releases.
• Objective setting: Each cycle in the spiral starts with the
identification of purpose
• Risk Assessment and reduction: The next phase in the cycle is
to calculate these various alternatives based on the goals and
constraints. The focus of evaluation in this stage is located on
the risk perception for the project.
• Development and validation: The next phase is to develop
strategies that resolve uncertainties and risks.
• Planning: Finally, the next step is planned. The project is
reviewed, and a choice made whether to continue with a
further period of the spiral.
Advantages
• High amount of risk analysis
• Useful for large and mission-critical projects.
• Suitable for large-scale products.
• New functionality or changes can be accommodated at later
stages.
• Efficient cost estimation.
• Development is fast.
• Proper risk management.
Disadvantages
• Can be a costly model to use.
• Risk analysis needed highly particular expertise
• It is not suitable for small projects as it is expensive.
• It is much more complex than other SDLC models. ...
• Too much dependable on Risk Analysis and requires highly
specific expertise.
• Difficulty in time management. ...
• Spiral may go on indefinitely.
• End of the project may not be known early.
Feasibility study
• The objective of the feasibility study is to establish the
reasons for developing the software that is acceptable to
users, adaptable to change and conformable to established
standards.
• To analyze whether the software will meet organizational
requirements.
• To determine whether the software can be implemented
using the current technology and within the specified budget
and schedule.
• To determine whether the software can be integrated with
other existing software.
Types of Feasibility
• technical feasibility,
• operational feasibility, and
• economic feasibility.
• Technical feasibility assesses the current resources (such as
hardware and software) and technology, which are required
to accomplish user requirements in the software within the
allocated time and budget.
• Operational feasibility assesses the extent to which the
required software performs a series of steps to solve business
problems and user requirements. This feasibility is dependent
on human resources (software development team)
• Economic feasibility determines whether the required
software is capable of generating financial gains for an
organization. It involves the cost incurred on the software
development team, estimated cost of hardware and software,
cost of performing feasibility study, and so on.
Types of Requirements
• Functional Requirements
• Non-Functional Requirements
Functional requirements
• Functional requirements define what a software system
should do.
• Functional requirement implementation in a system is
planned in the System Design phase
• Tells about the behavior of a function or feature.
• The user will pass input and check whether the output is
correctly displayed.
• Functional requirements form the skeleton of Software
system implementation
• These are mostly visible to the customer.
• Example, Profile photo on Facebook should be visible on
login.
Types of Functional Requirements
• Interoperability: Requirement describes whether a software
system is interoperable across different systems. Example:
email service systems like Gmail allows importing emails from
other mail exchange servers like Yahoo.com or
Rediffmail.com.
• Security: The functional requirement describes the security
aspect of software requirements. Example: the social
networking site Facebook. A user’s data should be secure and
must not be leaked to an outsider.
• Accuracy: Accuracy defines a data entered into the system is
correctly calculated and used by the system and that the
output is correct. Example an online banking solution, when
the user receives a fund, the amount received should be
correctly credited to the account and no variation in the
accuracy is accepted.
• Compliance: Compliance functional requirements validate
that the developed system is compliant to Industrial
standards. Example can be from a Web-based application for
the railway ticketing system. The website should follow the
cyber security guidelines and comply with the World Wide
Web in terms of accessibility.
Non-functional requirements
• Non-functional requirements in software engineering refer to
the characteristics of a software system that are not related to
specific functionality or behavior.
• They describe how the system should perform, rather than
what it should do.
• Examples of non-functional requirements include:
• Performance: This is related to the speed, scalability, and
responsiveness of the system. For example, system should be
able to handle a certain number of concurrent users.
• Security: This is related to the protection of the system and its
data from unauthorized access.
• Usability: This requirements related to the ease of use and
understandability of the system for the end-users.
• Reliability: This requirements related to the system’s ability to
function correctly and consistently under normal and
abnormal conditions.
• Maintainability: This requirements related to the ease of
maintaining the system, including testing, debugging, and
modifying the system.
• Portability: This requirements related to the ability of the
system to be easily transferred to different hardware or
software environments.
• Compliance: This requirements related to adherence to laws,
regulations, industry standards, or company policies.
Types of Non-functional requirements
Types of Non-functional requirements
• Usability: This requirements related to the ease of use and
understandability of the system for the end-users.
• Performance: This is related to the speed, scalability, and
responsiveness of the system. For example, system should be
able to handle a certain number of concurrent users.
• Reliability: This requirements related to the system’s ability to
function correctly and consistently under normal and
abnormal conditions.
• Portability: This requirements related to the ability of the
system to be easily transferred to different hardware or
software environments.
• Compliance: This requirements related to adherence to laws,
regulations, industry standards, or company policies.
Differences between
Functional Requirements Non Functional Requirements
1. Planning
Planning starts with the requirements gathering which
enables XP team to understand the rules for the software.
• The customer and developer work together for the final
requirements
2. Design
• The XP design follows the 'keep it simple' principle.
• A simple design always prefers the more difficult
representation.
The XP process comprises four framework activities:
3. Coding
• After the initial design work is done, the team creates a set of unit
tests which can test each situation that should be a part of the
release.
• The developer is focused on what must be implemented to pass the
test.
• Two people are assigned to create the code. It is an important
concept in coding activity.
4. Testing
• Validation testing of the system occurs on a daily basis. It gives the
XP team a regular indication of the progress.
• 'XP acceptance tests' are known as the customer test