0% found this document useful (0 votes)
5 views

SE Unit-1

Software Engineering is a systematic approach to designing, developing, testing, and maintaining software, aiming to create high-quality and reliable applications. It encompasses various methodologies and processes, such as Waterfall and Agile, to address the complexities of software development and improve efficiency. The Software Development Life Cycle (SDLC) outlines the stages of software creation, ensuring that the final product meets user requirements and quality standards.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

SE Unit-1

Software Engineering is a systematic approach to designing, developing, testing, and maintaining software, aiming to create high-quality and reliable applications. It encompasses various methodologies and processes, such as Waterfall and Agile, to address the complexities of software development and improve efficiency. The Software Development Life Cycle (SDLC) outlines the stages of software creation, ensuring that the final product meets user requirements and quality standards.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

What is Software Engineering?

Software Engineering is the process of designing, developing, testing, and maintaining software. It is
a systematic and disciplined approach to software development that aims to create high-quality,
reliable, and maintainable software.

Software engineering includes a variety of techniques, tools, and methodologies, including


requirements analysis, design, testing, and maintenance.

It is a rapidly evolving field, and new tools and technologies are constantly being developed to
improve the software development process.

By following the principles of software engineering and using the appropriate tools and
methodologies, software developers can create high-quality, reliable, and maintainable software
that meets the needs of its users.

Software Engineering is mainly used for large projects based on software systems rather than single
programs or applications.

The main goal of Software Engineering is to develop software applications for improving quality,
budget, and time efficiency.

Software Engineering ensures that the software that has to be built should be consistent, correct,
also on budget, on time, and within the required requirements.

Components of Software

There are three main components of the software:

1. Program: A computer program is a list of instructions that tell a computer what to do.
2. Documentation: Source information about the product contained in design documents,
detailed code comments, etc.
3. Operating Procedures: Set of step-by-step instructions compiled by an organization to help
workers carry out complex routine operations.

Other Software Components

Other Software Components are:

1. Code: the instructions that a computer executes in order to perform a specific task or set of
tasks.
2. Data: the information that the software uses or manipulates.
3. User interface: the means by which the user interacts with the software, such as buttons,
menus, and text fields.
4. Libraries: pre-written code that can be reused by the software to perform common tasks.
5. Documentation: information that explains how to use and maintain the software, such as
user manuals and technical guides.
6. Test cases: a set of inputs, execution conditions, and expected outputs that are used to test
the software for correctness and reliability.
7. Configuration files: files that contain settings and parameters that are used to configure the
software to run in a specific environment.
8. Build and deployment scripts: scripts or tools that are used to build, package, and deploy
the software to different environments.
9. Metadata: information about the software, such as version numbers, authors, and copyright
information.

All these components are important for software development, testing and deployment.

Software Characteristics – Software Engineering

Software is defined as a collection of computer programs, procedures, rules, and data. Software
Characteristics are classified into six major components. Software engineering is the process of
designing, developing, testing, and maintaining software. In this article, we will look into the
characteristics of Software in detail. We have also discussed each component of Software
characteristics in detail.

Characteristics of “Software” in Software Engineering

1. Software is developed or engineered; it is not manufactured in the classical sense:


 Although some similarities exist between software development and hardware
manufacturing, few activities are fundamentally different.
 In both activities, high quality is achieved through good design, but the manufacturing phase
for hardware can introduce quality problems than 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 the
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 pieces of 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.

Characteristics of the Software

 It is intangible, meaning it cannot be seen or touched.


 It is non-perishable, meaning it does not degrade over time.
 It is easy to replicate, meaning it can be copied and distributed easily.
 It can be complex, meaning it can have many interrelated parts and features.
 It can be difficult to understand and modify, especially for large and complex systems.
 It can be affected by changing requirements, meaning it may need to be updated or
modified as the needs of users change.
 It can be impacted by bugs and other issues, meaning it may need to be tested and
debugged to ensure it works as intended.

What is Software Crisis?

Software Crisis is a term used in computer science for the difficulty of writing useful and efficient
computer programs in the required time. The software crisis was due to using the same workforce,
same methods, and same tools even though rapidly increasing software demand, the complexity of
software, and software challenges. With the increase in software complexity, many software
problems arose because existing methods were insufficient.

Suppose we use the same workforce, same methods, and same tools after the fast increase in
software demand, software complexity, and software challenges. In that case, there arise some
issues like software budget problems, software efficiency problems, software quality problems,
software management, and delivery problems, etc. This condition is called a Software Crisis.

Causes of Software Crisis

Following are the causes of Software Crisis:

 The cost of owning and maintaining software was as expensive as developing the software.
 At that time Projects were running overtime.
 At that time Software was very inefficient.
 The quality of the software was low quality.
 Software often did not meet user requirements.
 The average software project overshoots its schedule by half.
 At that time Software was never delivered.
 Non-optimal resource utilization.
 Challenging to alter, debug, and enhance.
 The software complexity is harder to change.

What are Software Processes?

Software processes in software engineering refer to the methods and techniques used to develop
and maintain software. Some examples of software processes include:

 Waterfall: a linear, sequential approach to software development, with distinct phases such
as requirements gathering, design, implementation, testing, and maintenance.
 Agile: a flexible, iterative approach to software development, with an emphasis on rapid
prototyping and continuous delivery.
 Scrum: a popular Agile methodology that emphasizes teamwork, iterative development, and
a flexible, adaptive approach to planning and management.
 DevOps: a set of practices that aims to improve collaboration and communication between
development and operations teams, with an emphasis on automating the software delivery
process.

Each process has its own set of advantages and disadvantages, and the choice of which one to use
depends on the specific project and organization.

Software Engineering Process

Software Engineering Process is an engineering process that is mainly related to computers and
programming and developing different kinds of applications through the use of information
technology.

Conventional Engineering Process

Conventional Engineering Process is an engineering process that is highly based on empirical


knowledge and is about building cars, machines, and hardware. It is a process that mainly involves
science, mathematics, etc.

Conventional Engineering is related to computers, writing programs, and implementing them.

Similarities Between Software Engineering Process and Conventional Engineering Process

 Both Software Engineering and Conventional Engineering Processes become automated


after some time.
 Both these processes are making our day-to-day place better.
 Both these processes have a fixed working time.
 Both processes must consist of deeper knowledge.

What is Software Quality?

Software Quality shows how good and reliable a product is. To convey an associate degree example,
think about functionally correct software. It performs all functions as laid out in the SRS document.
But, it has an associate degree virtually unusable program. even though it should be functionally
correct, we tend not to think about it to be a high-quality product.

Another example is also that of a product that will have everything that the users need but has an
associate degree virtually incomprehensible and not maintainable code. Therefore, the normal
construct of quality as “fitness of purpose” for code merchandise isn’t satisfactory.

Factors of Software Quality

The modern read of high-quality associates with software many quality factors like the following:

1. Portability: A software is claimed to be transportable, if it may be simply created to figure in


several package environments, in several machines, with alternative code merchandise, etc.
2. Usability: A software has smart usability if completely different classes of users (i.e.
knowledgeable and novice users) will simply invoke the functions of the merchandise.
3. Reusability: A software has smart reusability if completely different modules of the
merchandise will simply be reused to develop new merchandise.
4. Correctness: Software is correct if completely different needs as laid out in the SRS
document are properly enforced.
5. Maintainability: A software is reparable, if errors may be simply corrected as and once they
show up, new functions may be simply added to the merchandise, and therefore the
functionalities of the merchandise may be simply changed, etc
6. Reliability: Software is more reliable if it has fewer failures. Since software engineers do not
deliberately plan for their software to fail, reliability depends on the number and type of
mistakes they make. Designers can improve reliability by ensuring the software is easy to
implement and change, by testing it thoroughly, and also by ensuring that if failures occur,
the system can handle them or can recover easily.
7. Efficiency. The more efficient software is, the less it uses of CPU-time, memory, disk space,
network bandwidth, and other resources. This is important to customers in order to reduce
their costs of running the software, although with today’s powerful computers, CPU time,
memory and disk usage are less of a concern than in years gone by.

Software Development Life Cycle (SDLC)


Software development life cycle (SDLC) is a structured process that is used to design, develop, and
test good-quality software. SDLC, or software development life cycle, is a methodology that defines
the entire procedure of software development step-by-step. The goal of the SDLC life cycle model is
to deliver high-quality, maintainable software that meets the user’s requirements. SDLC in software
engineering models outlines the plan for each stage so that each stage of the software development
model can perform its task efficiently to deliver the software at a low cost within a given time frame
that meets users requirements. In this article we will see Software Development Life Cycle (SDLC) in
detail.

What is the Software Development Life Cycle (SDLC)?

SDLC is a process followed for software building within a software organization. SDLC consists of a
precise plan that describes how to develop, maintain, replace, and enhance specific software. The
life cycle defines a method for improving the quality of software and the all-around development
process.

Stages of the Software Development Life Cycle

SDLC specifies the task(s) to be performed at various stages by a software engineer or developer. It
ensures that the end product is able to meet the customer’s expectations and fits within the overall
budget. Hence, it’s vital for a software developer to have prior knowledge of this software
development process. SDLC is a collection of these six stages, and the stages of SDLC are as follows:

Stage-1: Planning and Requirement Analysis


Planning is a crucial step in everything, just as in software development. In this same stage,
requirement analysis is also performed by the developers of the organization. This is attained from
customer inputs, and sales department/market surveys.

The information from this analysis forms the building blocks of a basic project. The quality of the
project is a result of planning. Thus, in this stage, the basic project is designed with all the available
information.

Stage-2: Defining Requirements

In this stage, all the requirements for the target software are specified. These requirements get
approval from customers, market analysts, and stakeholders.

This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of document that
specifies all those things that need to be defined and created during the entire project cycle.

Stage-3: Designing Architecture

SRS is a reference for software designers to come up with the best architecture for the software.
Hence, with the requirements defined in SRS, multiple designs for the product architecture are
present in the Design Document Specification (DDS).

This DDS is assessed by market analysts and stakeholders. After evaluating all the possible factors,
the most practical and logical design is chosen for development.

Stage-4: Developing Product


At this stage, the fundamental development of the product starts. For this, developers use a specific
programming code as per the design in the DDS. Hence, it is important for the coders to follow the
protocols set by the association. Conventional programming tools like compilers, interpreters,
debuggers, etc. are also put into use at this stage. Some popular languages like C/C++, Python, Java,
etc. are put into use as per the software regulations.

Stage-5: Product Testing and Integration

After the development of the product, testing of the software is necessary to ensure its smooth
execution. Although, minimal testing is conducted at every stage of SDLC. Therefore, at this stage, all
the probable flaws are tracked, fixed, and retested. This ensures that the product confronts the
quality requirements of SRS.

Stage-6: Deployment and Maintenance of Products

After detailed testing, the conclusive product is released in phases as per the organization’s strategy.
Then it is tested in a real industrial environment. It is important to ensure its smooth performance. If
it performs well, the organization sends out the product as a whole. After retrieving beneficial
feedback, the company releases it as it is or with auxiliary improvements to make it further helpful
for the customers. However, this alone is not enough. Therefore, along with the deployment, the
product’s supervision.

Software Development Life Cycle (SDLC) Models


Software development models are various processes or methods that are chosen for project
development depending on the objectives and goals of the project. Many development life cycle
models have been developed to achieve various essential objectives. Models specify the various
steps of the process and the order in which they are executed.

What is the SDLC Waterfall Model?

The waterfall model is a software development model used in the context of large, complex
projects, typically in the field of information technology. It is characterized by a structured,
sequential approach to project management and software development.

The waterfall model is useful in situations where the project requirements are well-defined and the
project goals are clear. It is often used for large-scale projects with long timelines, where there is
little room for error and the project stakeholders need to have a high level of confidence in the
outcome.

Importance of Waterfall Model

Following are the importance of waterfall model:

1. Clarity and Simplicity: The linear form of the Waterfall Model offers a simple and
unambiguous foundation for project development.
2. Clearly Defined Phases: The Waterfall Model phases each have unique inputs and outputs,
guaranteeing a planned development with obvious checkpoints.
3. Documentation: A focus on thorough documentation helps with software comprehension,
maintenance, and future growth.
4. Stability in Requirements: Suitable for projects when the requirements are clear and stable,
reducing modifications as the project progresses.
5. Resource Optimization: It encourages effective task-focused work without continuously
changing contexts by allocating resources according to project phases.
6. Relevance for Small Projects: Economical for modest projects with simple specifications and
minimal complexity.

Phases of Waterfall Model

The Waterfall Model has six phases which are:

1. Requirements: The first phase involves gathering requirements from stakeholders and
analyzing them to understand the scope and objectives of the project.
2. Design: Once the requirements are understood, the design phase begins. This involves
creating a detailed design document that outlines the software architecture, user
interface, and system components.
3. Development: The Development phase include implementation involves coding the
software based on the design specifications. This phase also includes unit testing to
ensure that each component of the software is working as expected.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets
the requirements and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves
fixing any issues that arise after the software has been deployed and ensuring that it
continues to meet the requirements over time.

Prototyping Model – Software Engineering

Prototyping is defined as the process of developing a working replication of a product or system that
has to be engineered. It offers a small-scale facsimile of the end product and is used for obtaining
customer feedback. The Prototyping concept is described below:

The Prototyping Model is one of the most popularly used Software Development Life Cycle Models
(SDLC models). This model is used when the customers do not know the exact project requirements
beforehand. In this model, a prototype of the end product is first developed, tested, and refined as
per customer feedback repeatedly till a final acceptable prototype is achieved which forms the basis
for developing the final product.

In this process model, the system is partially implemented before or during the analysis phase
thereby allowing the customers to see the product early in the life cycle. The process starts by
interviewing the customers and developing the incomplete high-level paper model. This document is
used to build the initial prototype supporting only the basic functionality as desired by the customer.
Once the customer figures out the problems, the prototype is further refined to eliminate them. The
process continues until the user approves the prototype and finds the working model to be
satisfactory.
Steps of Prototyping Model

Step 1: Requirement Gathering and Analysis: This is the initial step in designing a prototype model.
In this phase, users are asked about what they expect or what they want from the system.

Step 2: Quick Design: This is the second step in the Prototyping Model. This model covers the basic
design of the requirement through which a quick overview can be easily described.

Step 3: Build a Prototype: This step helps in building an actual prototype from the knowledge
gained from prototype design.

Step 4: Initial User Evaluation: This step describes the preliminary testing where the investigation of
the performance model occurs, as the customer will tell the strengths and weaknesses of the design,
which was sent to the developer.

Step 5: Refining Prototype: If any feedback is given by the user, then improving the client’s
response to feedback and suggestions, the final system is approved.

Step 6: Implement Product and Maintain: This is the final step in the phase of the Prototyping
Model where the final system is tested and distributed to production, here the program is run
regularly to prevent failures.

Types of Prototyping Models

There are four types of Prototyping Models, which are described below.

 Rapid Throwaway Prototyping


 Evolutionary Prototyping
 Incremental Prototyping
 Extreme Prototyping

1. Rapid Throwaway Prototyping

 This technique offers a useful method of exploring ideas and getting customer feedback for
each of them.
 In this method, a developed prototype need not necessarily be a part of the accepted
prototype.
 Customer feedback helps prevent unnecessary design faults and hence, the final prototype
developed is of better quality.

2. Evolutionary Prototyping

 In this method, the prototype developed initially is incrementally refined based on customer
feedback till it finally gets accepted.
 In comparison to Rapid Throwaway Prototyping, it offers a better approach that saves time
as well as effort.
 This is because developing a prototype from scratch for every iteration of the process can
sometimes be very frustrating for the developers.

3. Incremental Prototyping

 In this type of incremental prototyping, the final expected product is broken into different
small pieces of prototypes and developed individually.
 In the end, when all individual pieces are properly developed, then the different prototypes
are collectively merged into a single final product in their predefined order.
 It’s a very efficient approach that reduces the complexity of the development process,
where the goal is divided into sub-parts and each sub-part is developed individually.
 The time interval between the project’s beginning and final delivery is substantially reduced
because all parts of the system are prototyped and tested simultaneously.
 Of course, there might be the possibility that the pieces just do not fit together due to some
lack of ness in the development phase – this can only be fixed by careful and complete
plotting of the entire system before prototyping starts.

4. Extreme Prototyping
This method is mainly used for web development. It consists of three sequential independent
phases:
 In this phase, a basic prototype with all the existing static pages is presented in HTML
format.
 In the 2nd phase, Functional screens are made with a simulated data process using a
prototype services layer.
 This is the final step where all the services are implemented and associated with the final
prototype.

What is the Spiral Model?


The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a systematic and
iterative approach to software development. In its diagrammatic representation, looks like a spiral
with many loops. The exact number of loops of the spiral is unknown and can vary from project to
project. Each loop of the spiral is called a phase of the software development process.

Some Key Points regarding the phase of a Spiral Model:


1. The exact number of phases needed to develop the product can be varied by the project
manager depending upon the project risks.
2. As the project manager dynamically determines the number of phases, the project manager
has an important role in developing a product using the spiral model.
3. It is based on the idea of a spiral, with each iteration of the spiral representing a complete
software development cycle, from requirements gathering and analysis to design,
implementation, testing, and maintenance.

What Are the Phases of the Spiral Model?

The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through multiple
iterations of the software development process. It consists of the following phases:

1. Objectives Defined: In first phase of the spiral model we clarify what the project aims to
achieve, including functional and non-functional requirements.
2. Risk Analysis: In the risk analysis phase, the risks associated with the project are
identified and evaluated.
3. Engineering: In the engineering phase, the software is developed based on the
requirements gathered in the previous iteration.
4. Evaluation: In the evaluation phase, the software is evaluated to determine if it meets
the customer’s requirements and if it is of high quality.
5. Planning: The next iteration of the spiral begins with a new planning phase, based on
the results of the evaluation.

Evolutionary Model – Software Engineering

The evolutionary model is a combination of the Iterative and Incremental models of the software
development life cycle. Delivering your system in a big bang release, delivering it in incremental
process over time is the action done in this model. Some initial requirements and architecture
envisioning need to be done. It is better for software products that have their feature sets redefined
during development because of user feedback and other factors. This article focuses on discussing
the Evolutionary Model in detail.

What is the Evolutionary Model?


The Evolutionary development model divides the development cycle into smaller, incremental
waterfall models in which users can get access to the product at the end of each cycle.

1. Feedback is provided by the users on the product for the planning stage of the next cycle
and the development team responds, often by changing the product, plan, or process.
2. Therefore, the software product evolves with time.
3. All the models have the disadvantage that the duration of time from the start of the project
to the delivery time of a solution is very high.
4. The evolutionary model solves this problem with a different approach.
5. The evolutionary model suggests breaking down work into smaller chunks, prioritizing them,
and then delivering those chunks to the customer one by one.
6. The number of chunks is huge and is the number of deliveries made to the customer.
7. The main advantage is that the customer’s confidence increases as he constantly gets
quantifiable goods or services from the beginning of the project to verify and validate his
requirements.
8. The model allows for changing requirements as well as all work is broken down into
maintainable work chunks.

What is the Iterative Enhancement Model?

Software development uses a dynamic and adaptable method called the iterative enhancement
Model. The iterative enhancement model encourages a software product's ongoing evolution and
improvement. This methodology is noticeable due to its concentration on adaptability, flexibility and
change responsiveness. It makes it easier for a product to evolve because it gives developers the
freedom to progressively enhance the software, making sure that it complies with evolving
specifications, user demands, and market demands. This helps products evolve more easily.
The Iterative Enhancement Model creates an environment where development teams can more
effectively adjust to changing requirements by segmenting the software development process into
smaller, more manageable parts. Every iteration improves on the one before it, adding new features
and fixing problems found in earlier stages. Members of the team, stakeholders and end users are
encouraged to collaborate and communicate continuously to make sure the software meets
changing needs and expectations. Until the software is finished being built, the iteration process is
carried out, which involves giving the user the increments.

Advantages of Iterative Enhancement Model

 Adaptation to changing requirements is made possible by its flexibility in accomodating


modifications and improvement during each iteration.
 Early software iterations provide clients with functional portions of the product, facilitating
prompt feedback and validation.
 Problems and risks can be identified and addressed early in the developement process, reduces
chances of issue for future stages.
 Feedback and constant client involvement are encouraged to make sure the finished product
lives up to user expectations.
 Every iteration is put through testing and improvement, leading to higher quality product.

Disadvantages of Iterative Enhancement Model

 Especially in larger projects, managing several iterations at once can add complexity.
 Higher cost
 Due to constant changes, there may be delays in documentation, making it more difficult to
maintain comprehensive documentation.
 Continuous customer engagement may not be possible in all scenarios, which impacts the
effectiveness of the model.

Specific use cases where this model proves beneficial include:

1. Mobile app developement: Updates and improvements are often needed for mobile
apps to stay current with new devices, operating system versions and user preferences.
By using an iterative process developers can release the beta versions of their apps, get
user feedback and then improve functionality of those iterations in future release.
2. Web Application Development: The requirements for developing web applications
frequently change as a result of shifting user demand and advancements in technology.
The Iterative Enhancement Model makes it possible to developed features
incrementally and guaranteeing that the application can be modified to satisfy changing
user and market demands. In later iterations it also makes it easier to incorporate new
features based on input from users.
3. E-commerce Platforms: Developement in e-commerece field often involves constant
updates. Implementing an iterative approach enables the introduction of new
functionality.

You might also like