0% found this document useful (0 votes)
23 views26 pages

Se Unit - I

The document provides an overview of software, its categories, and the roles within software engineering, highlighting tasks performed by software engineers and the necessity of software evolution. It details the software development life cycle (SDLC), including stages and various models like Waterfall, Agile, and Spiral, along with factors to consider when choosing an SDLC model. Additionally, it addresses common software myths and key principles of software engineering that aim to ensure high-quality, maintainable software.
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)
23 views26 pages

Se Unit - I

The document provides an overview of software, its categories, and the roles within software engineering, highlighting tasks performed by software engineers and the necessity of software evolution. It details the software development life cycle (SDLC), including stages and various models like Waterfall, Agile, and Spiral, along with factors to consider when choosing an SDLC model. Additionally, it addresses common software myths and key principles of software engineering that aim to ensure high-quality, maintainable software.
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/ 26

SOFTWARE

Software is a set of instructions, data or programs used to operate


computers and execute specific tasks. It is the opposite of hardware,
which describes the physical aspects of a computer.
What are the 7 categories of software?
Software is mainly classified into seven categories – System software,
Application software, Engineering/scientific software, embedded
software, Product line software, Web applications, and Artificial
intelligence software.
FOLLOWING ARE THE JOB CHOICES IN
SOFTWARE ENGINEERING
SWE (Software Engineer)
SDE ( Software Development Engineer)
Web Developer
Quality Assurance Engineer
Web Designer
Software Test Engineer
Cloud Engineer ·
Front-End Developer
Back-End Developer
DevOps Engineer.
Security Engineer.

What Tasks do Software Engineers do?


 Requirement Analysis
 Design and Development
 Testing and Debugging
 Code Review
 Maintenance
 Documentation
UNIT – I

EVOLUTION OF SOFTWARE

Software Evolution is a term that refers to the process of developing software


initially, and then timely updating it for various reasons, i.e., to add new features
or to remove obsolete functionalities, etc.

What is Software Evolution?


The software evolution process includes fundamental activities of change
analysis, release planning, system implementation, and releasing a system to
customers.
1. The cost and impact of these changes are accessed to see how much the
system is affected by the change and how much it might cost to
implement the change.
2. If the proposed changes are accepted, a new release of the software
system is planned.
3. During release planning, all the proposed changes (fault repair,
adaptation, and new functionality) are considered.
4. A design is then made on which changes to implement in the next version
of the system.
5. The process of change implementation is an iteration of the development
process where the revisions to the system are designed, implemented, and
tested.
Necessity of Software Evolution
Software evaluation is necessary just because of the following reasons:
1. Change in requirement with time
2. Environment change
3. Errors and bugs
4. Security risks
5. For having new functionality and features
DEFINITION OF SOFTWARE ENGINEERING
Software is a program or set of programs containing instructions that provide
the desired functionality. Engineering is the process of designing and building
something that serves a particular purpose and finds a cost-effective solution to
problems.
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.
Key Principles of Software Engineering
1. Modularity: Breaking the software into smaller, reusable components
that can be developed and tested independently.
2. Abstraction: Hiding the implementation details of a component and
exposing only the necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a
single unit, and protecting the internal state of an object from external
modifications.
4. Reusability: Creating components that can be used in multiple projects,
which can save time and resources.
5. Maintenance: Regularly updating and improving the software to fix
bugs, add new features, and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of
bugs.
7. Design Patterns: Solving recurring problems in software design by
providing templates for solving them.
8. Agile methodologies: Using iterative and incremental development
processes that focus on customer satisfaction, rapid delivery, and
flexibility.
9. Continuous Integration & Deployment: Continuously integrating the
code changes and deploying them into the production environment.

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 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 concerning 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.
8. Adaptability: In this case, the software allows differing system
constraints and the user needs to be satisfied by making changes to the
software.
9. Interoperability: Capability of 2 or more functional units to process data
cooperatively.
The Changing Nature of Software
There are seven broad categories of computer software having different
forms, uses and challenges to software engineers
 SYSTEM SOFTWARE
 APPLICATION SOFTWARE
 ENGINEERING AND SCIENTIFIC SOFTWARE
 EMBEDDED SOFTWARE
 PRODUCT- LINE SOFTWARE
 WEN APPLICATION
 ARTIFICAL INTELLIGENCE SOFTWARE
What is of System software?
System software is a type of computer program designed to run a computer's
hardware and application programs.
System Software:
1. Operating Systems (Windows, macOS, Linux, etc.)
2. Device Drivers (printers, scanners, etc.)
3. Firmware (BIOS, UEFI, etc.)
4. Virtual Machines (VMware, VirtualBox, etc.)
5. Utilities (antivirus, disk cleanup, backup and recovery, etc.)

What is Application software with example?


The sole purpose of application software is to aid the user in doing specified
tasks. Web browsers like Firefox, and Google Chrome, as well as Microsoft
Word and Excel, are examples of application software that is used on a
personal computer or laptop.
Application Software:
1. Word Processors (Microsoft Word, Google Docs, etc.)
2. Spreadsheets (Microsoft Excel, Google Sheets, etc.)
3. Graphics Editors (Adobe Photoshop, GIMP, etc.)
4. Media Players (Windows Media Player, VLC, etc.)
5. Video Editing Software (Adobe Premiere Pro, Final Cut Pro, etc.)
6. Gaming Software (Steam, Origin, etc.)
7. Accounting Software (QuickBooks, Xero, etc.)
8. Web Browsers (Google Chrome, Mozilla Firefox, etc.)
9. Database Management Systems (Oracle, MySQL, etc.)
10.Communication Software (Skype, Slack, Zoom, etc.)

Software Myths
Most, experienced experts have seen myths or superstitions (false beliefs or
interpretations) or misleading attitudes (naked users) which creates major
problems for management and technical people. The types of software-related
myths are listed below.

Types of Software Myths


(i) Management Myths:
Myth 1:
We have all the standards and procedures available for software development.
Fact:
 Software experts do not know all the requirements for the software
development.
 And all existing processes are incomplete as new software development is
based on new and different problem.
Myth 2:
The addition of the latest hardware programs will improve the software
development.
Fact:
 The role of the latest hardware is not very high on standard software
development; instead (CASE) Engineering tools help the computer, they
are more important than hardware to produce quality and productivity.
 Hence, the hardware resources are misused.
Myth 3:
 With the addition of more people and program planners to Software
development can help meet project deadlines (If lagging behind).
Fact:
 If software is late, adding more people will merely make the problem
worse. This is because the people already working on the project now
need to spend time educating the newcomers, and are thus taken away
from their work. The newcomers are also far less productive than the
existing software engineers, and so the work put into training them to
work on the software does not immediately meet with an appropriate
reduction in work.
(ii)Customer Myths:
The customer can be the direct users of the software, the technical team,
marketing / sales department, or other company. Customer has myths leading to
false expectations (customer) & that’s why you create dissatisfaction with the
developer.
Myth 1:
A general statement of intent is enough to start writing plans (software
development) and details of objectives can be done over time.
Fact:
 Official and detailed description of the database function, ethical
performance, communication, structural issues and the verification
process are important.
 Unambiguous requirements (usually derived iteratively) are developed
only through effective and continuous
communication between customer and developer.
Myth 2:
Software requirements continually change, but change can be easily
accommodated because software is flexible
Fact:
 It is true that software requirements change, but the impact of change
varies with the time at which it is introduced. When requirements changes
are requested early (before design or code has been started), the cost
impact is relatively small. However, as time passes, the cost impact grows
rapidly—resources have been committed, a design framework has been
established, and change can cause upheaval that requires additional
resources and major design modification.

Different Stages of Myths


(iii)Practitioner’s Myths:
Myths 1:
They believe that their work has been completed with the writing of the plan.
Fact:
 It is true that every 60-80% effort goes into the maintenance phase (as of
the latter software release). Efforts are required, where the product is
available first delivered to customers.
Myths 2:
There is no other way to achieve system quality, until it is “running”.
Fact:
 Systematic review of project technology is the quality of effective
software verification method. These updates are quality filters and more
accessible than test.
Myth 3:
An operating system is the only product that can be successfully exported
project.
Fact:
 A working system is not enough, the right document brochures and
booklets are also required to provide guidance & software support.
Myth 4:
Engineering software will enable us to build powerful and unnecessary
document & always delay us.
Fact:
 Software engineering is not about creating documents. It is about creating
a quality product. Better quality leads to reduced rework. And reduced
rework results in faster delivery times.
What are Terminologies in software engineering?
Here are some of the important terminology (in no particular order)
learned in a software engineering class: Three S's — Software, Systems,
Service. Three P's — Product, Process, People. Three C's — Competence,
Commitment, Coordination (people).
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.

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.

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

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

Software Development Life Cycle Models


The top five most popular SDLC models:
1. Waterfall Model
It is the fundamental model of the software development life cycle. This is a
very simple model. The waterfall model is not in practice anymore, but it is the
basis for all other SDLC models. Because of its simple structure, the waterfall
model is easier to use and provides a tangible output. In the waterfall model,
once a phase seems to be completed, it cannot be changed, and due to this less
flexible nature, the waterfall model is not in practice anymore.
2. Agile Model
The agile model in SDLC was mainly designed to adapt to changing requests
quickly. The main goal of the Agile model is to facilitate quick project
completion. The agile model refers to a group of development processes. These
processes have some similar characteristics but also possess certain subtle
differences among themselves.
3. Iterative Model
In the Iterative model in SDLC, each cycle results in a semi-developed but
deployable version; with each cycle, some requirements are added to the
software, and the final cycle results in the software with the complete
requirement specification.
4. Spiral Model
The spiral model in SDLC is one of the most crucial SDLC models that
provides support for risk handling. It has various spirals in its diagrammatic
representation; the number of spirals depends upon the type of project. Each
loop in the spiral structure indicates the Phases of the Spiral model.
5. V-Shaped Model
The V-shaped model in SDLC is executed in a sequential manner in V-shape.
Each stage or phase of this model is integrated with a testing phase. After every
development phase, a testing phase is associated with it, and the next phase will
start once the previous phase is completed, i.e., development & testing. It is also
known as the verification or validation model.
6. Big Bang Model
The Big Bang model in SDLC is a term used to describe an informal and
unstructured approach to software development, where there is no specific
planning, documentation, or well-defined phases.
How to Choose an SDLC Model?
Choosing the right SDLC (Software Development Life Cycle) model is
essential for project success. Here are the key factors to consider:
1. Project Requirements:
 Clear Requirements: Use Waterfall or V-Model if requirements
are well-defined and unlikely to change.
 Changing Requirements: Use Agile or Iterative models if
requirements are unclear or likely to evolve.
2. Project Size and Complexity:
 Small Projects: Use Waterfall or RAD for small, simple projects.
 Large Projects: Use Agile, Spiral, or DevOps for large, complex
projects that need flexibility.
3. Team Expertise:
 Experienced Teams: Use Agile or Scrum if the team is familiar
with iterative development.
 Less Experienced Teams: Use Waterfall or V-Model for teams
needing structured guidance.
4. Client Involvement:
 Frequent Client Feedback: Use Agile, Scrum, or RAD if regular
client interaction is needed.
 Minimal Client Involvement: Use Waterfall or V-Model if client
involvement is low after initial planning.
5. Time and Budget Constraints:
 Fixed Time and Budget: Use Waterfall or V-Model if you have
strict time and budget limits.
 Flexible Time and Budget: Use Agile or Spiral if you can adjust
time and budget as needed.
6. Risk Management:
 High-Risk Projects: Use Spiral for projects with significant risks
and uncertainties.
 Low-Risk Projects: Use Waterfall for projects with minimal
risks.
7. Product Release Timeline:
 Quick Release Needed: Use Agile or RAD to deliver products
quickly.
 Longer Development Time: Use Waterfall or V-Model for
projects with no urgent deadlines.
8. Maintenance and Support:
 Long-Term Maintenance: Use Agile or DevOps for projects
needing continuous updates and support.
 Minimal Maintenance: Use Waterfall or V-Model if little future
maintenance is expected.
9. Stakeholder Expectations:
 High Stakeholder Engagement: Use Agile or Scrum if
stakeholders want ongoing involvement.
 Low Stakeholder Engagement: Use Waterfall or V-Model if
stakeholders prefer involvement only at major milestones.

What is Software Modeling?


Software modeling is the process of creating abstract representations of a
software system. These models serve as blueprints that guide developers,
designers, and stakeholders through the system’s structure, behavior, and
functionality.
1. Waterfall Model
Waterfall model is a famous and good version of SDLC(System Development
Life Cycle) for software engineering. The waterfall model is a linear and
sequential model, which means that a development phase cannot begin until the
previous phase is completed. We cannot overlap phases in waterfall model.

1. Requirement phase:- Requirement phase is the first phase of


the waterfall model. In this phase the requirements of the system are
collected and documented. This phase is very crucial because the next
phases are based on this phase.
2. Design phase:- Design phase is based on the fact how the software will
be built. The main objective of the design phase is to prepare the
blueprint of the software system so that no problems are faced in the
coming phases and solutions to all the requirements in the requirement
phase are found.
3. Implementation phase:- In this phase, hardware, software and
application programs are installed and the database design is
implemented. Before the database design can be implemented, the
software has to go through a testing, coding, and debugging process. This
is the longest lasting phase in waterfall.
4. Verification phase:- In this phase the software is verified and it is
evaluated that we have created the right product. In this phase, various
types of testing are done and every area of the software is checked. It is
believed that if we do not verify the software properly and there is any
defect in it then no one will use it, hence verification is very important.
One advantage of verification is that it reduces the risk of software
failure.
5. Maintenance phase:- This is the last phase of waterfall. When the
system is ready and users start using it, then the problems that arise have
to be solved time-to-time. Taking care of the finished software and
maintaining it as per time is called maintenance.
2. V-Model
V-Model is an SDLC model, it is also called Verification and
Validation Model. V-Model is widely used in the software
development process, and it is considered a disciplined model. In
V-Model, the execution of each process is sequential, that is, the
new phase starts only after the previous phase ends.
V-Design: In V-Design the left side represents the development
activity, the right side represents the testing activity.

Advantages of V-Model
 This is a simple and easy to use model.
 Planning, testing and designing tests can be done even before coding.
 This is a very disciplined model, in which phase by phase development
and testing goes on.
 Defects are detected in the initial stage itself.
 Small and medium scale developments can be easily completed using it.
Disadvantages of V-Model
 This model is not suitable for any complex projects.
 There remains both high risk and uncertainty.
 This is not a suitable model for an ongoing project.
 This model is not at all suitable for a project which is unclear and in
which there are changes in the requirement.
3. Incremental Model
In Incremental Model, the software development process is
divided into several increments and the same phases are
followed in each increment. In simple language, under this model
a complex project is developed in many modules or builds.

Advantages of Incremental Model


 Important modules/functions are developed first and then the rest are
added in chunks.
 Working software is prepared quickly and early during the software
development life cycle (SDLC).
 This model is flexible and less expensive to change requirements and
scope.
 The customer can respond to each module and provide feedback if any
changes are needed.
 Project progress can be measured.
 It is easier to test and debug during a short iteration.
 Errors are easy to identify.
Disadvantages of Incremental Model
 Management is a continuous activity that must be handled.
 Before the project can be dismantled and built incrementally,
 The complete requirements of the software should be clear.
 This requires good planning and designing.
 The total cost of this model is higher.
4. RAD Model
RAD model stands for rapid application development model. The
methodology of RAD model is similar to that of incremental or
waterfall model. It is used for small projects.

Advantage of RAD Model


 It reduces the time taken in development.
 In this the components are reused.
 It is flexible and it is easy to make any changes in it.
 It is easy to transfer like scripts because high level abstraction and
intermediate codes are used in it.
 There are very few defects in it because it is a prototype by nature.
 In this, productivity can be increased in less time with less people.
 It is cost effective.
 It is suitable for small projects.
Disadvantages of RAD Model
 In this we need highly skilled developers and designers.
 It is very difficult to manage.
 It is not suitable for project that are complex and takes long time.
 In this, feedback from the client is required for the development of each
phase.
 Automated code generation is very expensive.
 This model is suitable only for component based and scalable systems.

5. Iterative Model

In Iterative model we start developing the software with some


requirements and when it is developed, it is reviewed. If there
are requirements for changes in it, then we develop a new
version of the software based on those requirements. This
process repeats itself many times until we get our final product.
6. Spiral Model
Spiral model is a software development process model. This model has
characteristics of both iterative and waterfall models. This model is used in
projects which are large and complex.

Advantages of Spiral Model


 If we have to add additional functionality or make any changes to the
software, then through this model we can do so in the later stages also.
 Spiral model is suitable for large and complex projects.
 It is easy to estimate how much the project will cost.
 Risk analysis is done in each phase of this model.
 The customer can see the look of his software only in the early stages of
the development process.
 Since continuous feedback is taken from the customer during the
development process, the chances of customer satisfaction increases.
Disadvantage of Spiral Model
 This is the most complex model of SDLC, due to which it is quite
difficult to manage.
 This model is not suitable for small projects.
 The cost of this model is quite high.
 It requires more documentation than other models.
 Experienced experts are required to evaluate and review the project from
time to time.
 Using this model, the success of the project depends greatly on the risk
analysis phase.
7. Prototype model
Prototype model is an activity in which prototypes of software applications are
created. First a prototype is created and then the final product is manufactured
based on that prototype.
 The prototype model was developed to overcome the shortcomings of the
waterfall model.
 This model is created when we do not know the requirements well.
 The specialty of this model is that this model can be used with other
models as well as alone.

Advantages of Prototype model


 Prototype Model is suggested to create applications whose prototype is
very easy and which always includes human machine interaction within
it.
 When we know only the general objective of creating software, but we do
not know anything in detail about input, processing and output. Then in
such a situation we make it a Prototype Model.
 When a software developer is not very sure about the capability of an
algorithm or its adaptability to an operating system, then in this situation,
using a prototype model can be a better option.
Disadvantages of Prototype model
 When the first version of the prototype model is ready, the customer
himself often wants small fixes and changes in it rather than rebuilding
the system. Whereas if the system is redesigned then more quality will be
maintained in it.
 Many compromises can be seen in the first version of the Prototype
Model.
 Sometimes a software developer may make compromises in his
implementation, just to get the prototype model up and running quickly,
and after some time he may become comfortable with making such
compromises and may forget that it is completely inappropriate to do so.
8. Agile Model
Agile model is a combination of iterative and incremental
models, that is, it is made up of iterative and incremental
models.

Advantages of Agile Model


 In this, two programmers work together due to which the code is error
free and there are very few mistakes in it.
 In this the software project is completed in a very short time.
 In this the customer representative has an idea of each iteration so that he
can easily change the requirement.
 This is a very realistic approach to software development.
 In this, focus is given on teamwork.
 There are very few rules in this and documentation is also negligible.
 There is no need for planning in this.
 It can be managed easily.
 It provides flexibility to developers.
Disadvantages of Agile Model
 It cannot handle complex dependencies.
 Due to lack of formal documentation in this, there is confusion in
development.
 It mostly depends on the customer representative, if the customer
representative gives any wrong information then the software can become
wrong.
 Only experienced programmers can take any decision in this. New
programmers cannot take any decision.
 In the beginning of software development, it is not known how much
effort and time will be required to create the software.

What is a build and fix model?


Build-and-Fix Model. The Build-and-Fix Model is essentially the model used in
the development of the earliest computer programs. No requirements are
specified and no real design is done.

What are evolutionary process models?


An evolutionary model involves breaking down the software development
process into smaller, manageable increments or iterations.
Selection Process Parameters for a Software Life Cycle Model

Selection Process parameters plays an important role in software development


as it helps to choose the best suitable software life cycle model. Following are
the parameters which should be used to select a SDLC.
1. Requirements characteristics :
 Reliability of Requirements
 How often the requirements can change
 Types of requirements
 Number of requirements
 Can the requirements be defined at an early stage
 Requirements indicate the complexity of the system
2. Development team :
 Team size
 Experience of developers on similar type of projects
 Level of understanding of user requirements by the developers
 Environment
 Domain knowledge of developers
 Experience on technologies to be used
 Availability of training
3. User involvement in the project :
 Expertise of user in project
 Involvement of user in all phases of the project
 Experience of user in similar project in the past
4. Project type and associated risk :
 Stability of funds
 Tightness of project schedule
 Availability of resources
 Type of project
 Size of the project
 Expected duration for the completion of project
 Complexity of the project
 Level and the type of associated risk

You might also like