0% found this document useful (0 votes)
37 views42 pages

C 1

Uploaded by

pranawkumar2006
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views42 pages

C 1

Uploaded by

pranawkumar2006
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 42

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.
2. Software engineering includes a variety of techniques, tools, and methodologies, including requirements analysis,
design, testing, and maintenance.

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

4. 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.

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

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

7. 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
Main Attributes/Features of Software Engineering
• Software Engineering is a systematic, disciplined, quantifiable study and approach to the design,
development, operation, and maintenance of a software system. There are four main Attributes of Software
Engineering.

2. Efficiency: It provides a measure of the resource requirement of a software product in an efficient way.

3. Reliability: It provides the assurance that the product will deliver the same results when used in similar
working environment.

4. Reusability: This attribute makes sure that the module can be used in multiple applications.

5. Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily with changing
requirements.
Objectives of Software Engineering
1. Maintainability: It should be feasible for the software to evolve to meet changing requirements.

2. Efficiency: The software should not make wasteful use of computing devices such as memory, processor
cycles, etc.

3. Correctness: A software product is correct if the different requirements specified in the SRS Document have
been correctly implemented.

4. Reusability: A software product has good reusability if the different modules of the product can easily be
reused to develop new products.

5. Testability: Here software facilitates both the establishment of test criteria and the evaluation of the
software with respect to those criteria.

6. Reliability: It is an attribute of software quality. The extent to which a program can be expected to perform
its desired function, over an arbitrary time period.

7. Portability: In this case, the software can be transferred from one computer system or environment to
another.
Disadvantages of Software Engineering
1. Limited flexibility: Following established software engineering principles and methodologies can be rigid
and may limit the ability to quickly adapt to changing requirements.

2. Bureaucratic: Software Engineering can create an environment that is bureaucratic, with a lot of processes
and paperwork, which may slow down the development process.

3. Complexity: With the increase in the number of tools and methodologies, software engineering can be
complex and difficult to navigate.

4. Limited creativity: The focus on structure and process can stifle creativity and innovation among
developers.

5. High learning curve: The development process can be complex, and it requires a lot of learning and
training, which can be challenging for new developers.

6. High dependence on tools: Software engineering heavily depends on the tools, and if the tools are not
properly configured or are not compatible with the software, it can cause issues.

7. High maintenance: The software engineering process requires regular maintenance to ensure that the
software is running efficiently, which can be costly and time-consuming.
software crisis
• The term "software crisis" refers to a situation where the development or
maintenance of software becomes difficult, costly, and often leads to
unsatisfactory outcomes.
• The software crisis is characterized by several key issues:
• Complexity: As software systems grow in size and functionality, they become
increasingly complex. Managing this complexity becomes a significant
challenge, leading to difficulties in understanding, maintaining, and modifying
the software.
• Cost Overruns: Software projects often exceed their initially estimated
budgets. This can be due to the difficulty in accurately predicting the time and
resources required for development, as well as unexpected challenges that may
arise during the process.
• Quality Issues: Software systems may suffer from bugs, errors, and
other quality issues. Ensuring the reliability and correctness of
software can be challenging, especially as the size and complexity of
systems increase.
• Mismatch with User Expectations: Users may find that the delivered
software does not meet their expectations or does not align with their
actual needs. This can result from poor communication between
developers and users, leading to a gap in understanding requirements
• The diagram that helps in understanding and representing user requirements for a software project using
UML (Unified Modeling Language) is: [GATE CS 2017]

• (A) Entity Relationship Diagram

• (B) Deployment Diagram

• (C) Data Flow Diagram

• (D) Use Case Diagram


Qns
• Which of the following statements is/are true? [UGC NET CSE 2018]

• P: Software Reengineering is preferable for software products having high failure rates, poor design,
and/or poor code structure.

• Q: Software Reverse Engineering is the process of analyzing software with the objective of recovering its
design and requirement specification.

• (A) P only

• (B) Neither P nor Q

• (C) Q only

• (D) Both P and Q


Software Development Life Cycle (SDLC)
• The Software Development Life Cycle (SDLC) is a systematic process for
planning, creating, testing, deploying, and maintaining information systems.
• Software Development Life Cycle is a method or process by which quality
software can be developed in the given time and according to the customer
expectations .
• SDLC ensures quality products .
• The software development lifecycle (SDLC) is the cost-effective and time-
efficient process that development teams use to design and build high-
quality software.
• The goal of SDLC is to minimize project risks through forward planning so
that software meets customer expectations during production and beyond.
• Planning:
• Defining the scope of the project, its goals, and deliverables.
• Establishing project timelines and resource requirements.
• Conducting feasibility studies and risk assessments.
Requirement analysis
• 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).
• It is performed by the senior members of the team with inputs from the customer,
the sales department, market surveys and domain experts in the industry.
• This information is then used to plan the basic project approach and to conduct
product feasibility study in the economical, operational and technical areas.
• In short …
• Gathering and analyzing requirements from stakeholders.
• Creating system specifications and documentation.
• Identifying any potential challenges or constraints.
Designing
• Creating a high-level design that outlines the architecture of the software.
• Developing detailed specifications for each component.
• Designing user interfaces and data structures.
• DFD and UML
Coding:

• Writing the actual code based on the design specifications.


• Conducting unit testing to ensure each component works as intended.
• Collaborating with other team members to integrate code.
• Developers use a specific programming code as per the design in the DDS
(Data Distribution Service).
• 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.
Testing:
• Conducting various types of testing (unit testing, integration testing,
system testing, acceptance testing) to identify and fix defects.
• Verifying that the software meets the specified requirements.
• Ensuring the software is reliable and robust
Deployment:

• Releasing the software to users or customers.


• Providing documentation and training if necessary.
• Monitoring the software's performance in a live environment.

• Maintenance:
• Addressing any issues or bugs discovered after deployment.
• Implementing updates or enhancements as needed.
• Managing the software throughout its lifecycle.
Waterfall Model

• The Waterfall Model was the first Process Model to be introduced.


• It is also referred to as a linear-sequential life cycle model.
• It is very simple to understand and use.
• In a waterfall model, each phase must be completed before the
next phase can begin and there is no overlapping in the phases.
• In this Waterfall model, typically, the outcome of one phase acts
as the input for the next phase sequentially.

22
Classical Waterfall Model

23
Advantages of Waterfall Model

• Simple and easy to understand and use


• Easy to manage due to the rigidity of the model. Each phase has
specific deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well
understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented
24
Disadvantages Waterfall Model

• The disadvantage of waterfall development is that it does not allow much reflection or revision.
• Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-documented or thought upon in the concept stage.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of changing.

25
Iterative Waterfall Model

26
Iterative Waterfall Model

• The iterative waterfall model provides feedback paths from every phase to its preceding
phases, which is the main difference from the classical waterfall model.
• When errors are detected at some later phase, these feedback paths allow for correcting errors
committed by programmers during some phase.
• The feedback paths allow the phase to be reworked in which errors are committed and these
changes are reflected in the later phases.
• But, there is no feedback path to the stage – feasibility study, because once a project has been
taken, does not give up the project easily.
• It is good to detect errors in the same phase in which they are committed.

27
Prototyping Model
• Prototyping Model is a software development model in which prototype is built,
tested, and reworked until an acceptable prototype is achieved.
• It also creates base to produce the final system or software.
• It is an iterative, trial and error method which takes place between developer and
client.
• This model is used when the customers do not know the exact project requirements
beforehand.

28
29
30
Step 1: Requirements gathering and analysis

• A prototyping model starts with requirement analysis.


• In this phase, the requirements of the system are defined in detail.
• During the process, the users of the system are interviewed to know what is their
expectation from the system.

• Step 2: Quick design


• In this stage, a simple design of the system is created.
• However, it is not a complete design.
• It gives a brief idea of the system to the user.
• The quick design helps in developing the prototype

31
Step 3: Build a Prototype

• In this phase, an actual prototype is designed based on the information gathered from
quick design.
• It is a small working model of the required system.

• Step 4: Initial user evaluation


• In this stage, the proposed system is presented to the client for an initial evaluation.
• It helps to find out the strength and weakness of the working model.
• Comment and suggestion are collected from the customer and provided to the developer

32
Step 5: Refining prototype

• If the user is not happy with the current prototype, you need to refine the prototype
according to the user’s feedback and suggestions.
• This phase will not over until all the requirements specified by the user are met.
Once the user is satisfied with the developed prototype, a final system is developed
based on the approved final prototype.
• Step 6: Implement Product and Maintain
• Once the final system is developed based on the final prototype, it is thoroughly
tested and deployed to production.
• The system undergoes routine maintenance for minimizing downtime and prevent
large-scale failures.

33
Advantages of the Prototyping Model

• Users are actively involved in development. Therefore, errors can be detected in


the initial stage of the software development process.
• Missing functionality can be identified, which helps to reduce the risk of failure as
Prototyping is also considered as a risk reduction activity.
• Customer satisfaction exists because the customer can feel the product at a very
early stage.
• The prototype helps to gain a better understanding of the customer’s needs.
• It is a straightforward model, so it is easy to understand.

34
Spiral Model
• The Spiral Model is one of the most important Software Development Life Cycle models,
which provides support for Risk Handling.
• The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a
systematic and iterative approach to software development.
• 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.
• The exact number of phases needed to develop the product can be varied by the project
manager depending upon the project risks.
• 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.
• 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.
35
36
• Each phase of the Spiral Model is divided into four quadrants as shown in the above figure:
• Objectives determination and identify alternative solutions: Requirements are gathered
from the customers and the objectives are identified, elaborated, and analyzed at the start of
every phase. Then alternative solutions possible for the phase are proposed in this quadrant.
• Identify and resolve Risks: During the second quadrant, all the possible solutions are
evaluated to select the best possible solution. Then the risks associated with that solution are
identified and the risks are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
• Develop the next version of the Product: During the third quadrant, the identified features
are developed and verified through testing. At the end of the third quadrant, the next version
of the software is available.
• Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so-
far developed version of the software. In the end, planning for the next phase is starte
37
38
Advantages of the Spiral Model
• Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to
the risk analysis and risk handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
• Flexibility in Requirements: Change requests in the Requirements at a later phase can
be incorporated accurately by using this model.
• Customer Satisfaction: Customers can see the development of the product at the early
phase of the software development and thus, they habituated with the system by
using it before completion of the total product.
• Improved Quality: The Spiral Model allows for multiple iterations of the software
development process, which can result in improved software quality and reliability.

39
Disadvantages of the Spiral Model
• Complex: The Spiral Model is much more complex than other SDLC models.
• Expensive: Spiral Model is not suitable for small projects as it is expensive.
• Too much dependability on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced experts, it is going to be
a failure to develop a project using this model.
• Difficulty in time management: As the number of phases is unknown at the start of the
project, time estimation is very difficult.
• Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.
• Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.

40
Functional Requirements Non-functional requirements
A functional requirement defines a system or its A non-functional requirement defines the quality attribute
component. of a software system.
It•specifies
. “What should the software system do?” A non-functional requirement defines the quality attribute
of a software system.
Functional requirements help to understand the functions of the They help to understand the system's performance.
system
Functional requirements are mandatory. While non-functional requirements are not mandatory.
They are easy to define They are hard to define

They describe what the product does They describe the working of product.

It concentrates on the user's requirement


It concentrates on the expectation and experience of the user.
It helps us to verify the software's functionality It helps us to verify the software's performance
There is functional testing such as API testing, system, There is non-functional testing such as usability,
integration, etc. performance, stress, security, etc.

Examples of the functional requirements are - Examples of the non-functional requirements are -
Authentication of a user on trying to log in to the system. The background color of the screens should be light41 blue.
Mcqs
• Identify which of the following life cycle contains the phases: test case design, test
execution, defect tracking, maintenance.
1. SDLC 2.STLC 3.SQLC 4.BLC

2. Identify the simplest model of SDLC?


A) Spiral model b) waterfall model c)rad model d)none

3) Which is the following is the most important feature of the spiral model?
a)Efficency managent b)time managent c) risk managent d)quality managent

4)Which of the following is the first step of SDLC?


a) Coding bbbDesign cPreliminary Investigation and Analysis Testing
5) identify the correct functional requirement.
Robustness Portability Maintainability None
42

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy