0% found this document useful (0 votes)
67 views21 pages

Software Engineering

The document describes an internship report submitted by Rhythm Bhaumik to fulfill the requirements for a Bachelor of Technology degree. It focuses on describing the main features of Python programming, including loops and control statements. Python is highlighted as a modern, easy-to-learn object-oriented programming language with powerful built-in data types and control constructs. The report will discuss applications of Python programming. It was submitted under the guidance of Prof. Sukanti Pal at NIST Institute of Science & Technology.

Uploaded by

Rhythm Bhaumik
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)
67 views21 pages

Software Engineering

The document describes an internship report submitted by Rhythm Bhaumik to fulfill the requirements for a Bachelor of Technology degree. It focuses on describing the main features of Python programming, including loops and control statements. Python is highlighted as a modern, easy-to-learn object-oriented programming language with powerful built-in data types and control constructs. The report will discuss applications of Python programming. It was submitted under the guidance of Prof. Sukanti Pal at NIST Institute of Science & Technology.

Uploaded by

Rhythm Bhaumik
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/ 21

SOFTWARE ENGINEERING

Internship Report
Submitted in fulfillment of
the requirements for the
Degree of Bachelor of Technology
Under BijuPattnaik University of Technology
.

Submitted By
Rhythm Bhaumik Roll No. ECE_201910286

2022-2023

Under the guidance of


Prof. Sukanti Pal

NIST INSTITUTE OF SCIENCE & TECHNOLOGY (Autonomous)


Institute Park, Palur Hills, Berhampur - 761008, Odisha, India
Software Engineering B.Tech 2022-2023

ABSTRACT
Python is a modern, easy-to-learn, object-oriented programming language. It has a
powerful set of built-in data types and easy-to-use control constructs. Since Python
is an interpreted language, it is most easily reviewed by simply looking at and
describing interactive sessions. It is used in vast number of applications due to the
various standard libraries that come along with it and its capacity to integrate with
other languages and use their features. Python can be used for scripting, web
scraping, and creating data sets. It’s popular in the scientific community for scientific
computing; there are libraries that make it easy to share academic code projects in
Python. Python is a web programming language, so it interfaces with the internet. It
knows how to receive and send web requests and talk to databases. This paper
describes the main features of Python programming, loops and control statements in
python then discusses applications of Python programming.

NIST Institute of Science & Technology (Autonomous) BPUT i


Software Engineering B.Tech 2022-2023

ACKNOWLEDGEMENT
It is my privilege to epitomize my deepest sense of gratitude and indebtedness to my advisor
Prof. Sukanti Pal, Internship Coordinator for her valuable guidance, keen and sustained
interest, and intuitive support. I would like to extend our sincere thanks to her for giving me
his valuable time for the completion of our project.

I acknowledge with immense pleasure the sustained interest, encouraging attitude and
constant inspiration rendered by Dr. Sukant K. Mohapatra (Chairman), Dr. Priyadarshi
Tripathy (Principal) and Prof. M. Suresh(HoD, Dept. of ECE) N.I.S.T. Their continued
drive for better quality in everything that happens at N.I.S.T. and selfless inspiration has
always helped us to move ahead

Rhythm Bhaumik

NIST Institute of Science & Technology (Autonomous) BPUT ii


Software Engineering B.Tech 2022-2023

TABLE OF CONTENTS
ABSTRACT...............................................................................................................................i
ACKNOWLEDGEMENT.......................................................................................................ii
TABLE OF CONTENTS.......................................................................................................iii
LIST OF FIGURES................................................................................................................iv
1. INTRODUCTION................................................................................................................1
2. EVOLUTION OF SOFTWARE………………………………………………………….2
3. SOFTWARE CRISIS……………………………………………………………………...4
4.CHARACTERISTICS OF SOFTWARE………………………………………………...6
4.1 Functionality……………………………………………………………………………6
4.2 Reliability:………………………………………………………………………………6
4.3 Efficiency………………………………………………………………………………..6
4.4 Usability…………………………………………………………………………………7
4.5 Maintainability…………………………………………………………………………7
4.6 Portability………………………………………………………………………………7
5. SOFTWARE DEVELOPMENT LIFE CYCLE………………………………………...8
6. MODEL OF SOFTWARE ENGINEERING…………………………………………..10
6.1 Waterfall Model……………………………………………………………………….10
6.2 Evolutionary Model…………………………………………………………………...12
6.3 Spiral Model…………………………………………………………………………...13
6.4 Prototype Model………………………………………………………………………14
7.CONCLUSION……………………………………………………………………………16
REFERENCES…………………………………………………………………………………..17

NIST Institute of Science & Technology (Autonomous) BPUT iii


Software Engineering B.Tech 2022-2023

LIST OF FIGURES
Fig.1 Software Evolution……………………………………………………………………...2
Fig. 2 Software Crisis…………………………………………………………………….........4
Fig 3. Characteristics of Software……………………………………………………………..6
Fig 4. Software Development Life……………………………………………………….........8

NIST Institute of Science & Technology (Autonomous) BPUT iv


Software Engineering B.Tech 2022-2023

1. INTRODUCTION

Python is a high-level, interpreted, interactive and object-oriented scripting language.


Python is designed to be highly readable. It uses English keywords frequently where
as other languages use punctuation, and it has fewer syntactical constructions than
other languages.
• Python is Interpreted : Python is processed at runtime by the interpreter. You do
not need to compile your program before executing it. This is similar to PERL and
PHP.
• Python is Interactive: You can actually sit at a Python prompt and interact with the
interpreter directly to write your programs.
• Python is Object-Oriented: Python supports Object-Oriented style or technique of
programming that encapsulates code within objects.
• Python is a Beginner's Language: Python is a great language for the beginner-
level programmers and supports the development of a wide range of applications
from simple text processing to WWW browsers to games.

NIST Institute of Science & Technology (Autonomous) BPUT v


Software Engineering B.Tech 2022-2023

2. EVOLUTION OF SOFTWARE
Python's features include:
• Easy-to-learn: Python has few keywords, simple structure, and a clearly defined
syntax. This allows the student to pick up the language quickly.
• Easy-to-read: Python code is more clearly defined and visible to the eyes.
• Easy-to-maintain: Python's source code is fairly easy-to-maintain.
• A broad standard library: Python's bulk of the library is very portable and cross-
platform compatible on UNIX, Windows, and Macintosh.
• Interactive Mode: Python has support for an interactive mode which allows
interactive testing and debugging of snippets of code.
• Portable: Python can run on a wide variety of hardware platforms and has the
same interface on all platforms.
• Extendable: You can add low-level modules to the Python interpreter. These
modules enable programmers to add to or customize their tools to be more
efficient. • Databases: Python provides interfaces to all major commercial
databases.
• GUI Programming: Python supports GUI applications that can be created and
ported to many system calls, libraries and windows systems, such as Windows
MFC, Macintosh, and the X Window system of Unix.
• Scalable: Python provides a better structure and support for large programs than
shell scripting.
Python has a big list of good features:
• It supports functional and structured programming methods as well as OOP.
• It can be used as a scripting language or can be compiled to byte-code for
building large applications.
• It provides very high-level dynamic data types and supports dynamic type
checking.
• IT supports automatic garbage collection.
• It can be easily integrated with C, C++, COM, ActiveX, CORBA, and Java.

NIST Institute of Science & Technology (Autonomous) BPUT vi


Software Engineering B.Tech 2022-2023

2. ARITHMETIC OPERATORS
Operator Description Example

Addition Adds values on either side a + b = 30


of the operator
Subtraction Subtracts right hand a – b = -10
operand from left hand
operand

Multiplication Multiplies values on either a * b = 200


side of the operator

Division Divides left hand operand b/a=


by right hand operand

Modulus Divides left hand operand b%a=0


by right hand operand and
returns remainder

Exponent Performs exponential a**b =10 to the power 20


calculation on operators

NIST Institute of Science & Technology (Autonomous) BPUT vii


Software Engineering B.Tech 2022-2023

 The average software project overshoots its schedule by half


 At that time Software was never delivered
 Non-optimal resource utilization.
 Difficult to alter, debug, and enhance.
 The software complexity is harder to change.

The factors are contributing to the software crisis.

 Poor project management.


 Lack of adequate training in software engineering.
 Less skilled project members.
 Low productivity improvements.

NIST Institute of Science & Technology (Autonomous) BPUT viii


Software Engineering B.Tech 2022-2023

Solution of Software Crisis:

There is no single solution to the crisis. One possible solution to a software crisis is
Software Engineering because software engineering is a systematic, disciplined, and
quantifiable approach. For preventing software crises, there are some guidelines:

 Reduction in software over budget.


 The quality of software must be high.
 Less time is needed for a software project.
 Experienced and skilled people working over the software project.
 Software must be delivered.
 Software must meet user requirements.

NIST Institute of Science & Technology (Autonomous) BPUT ix


Software Engineering B.Tech 2022-2023

4. CHARACTERISTICS OF SOFTWARE
Software is defined as a collection of computer programs, procedures, rules, and
data. Software Characteristics are classified into six major components:

Fig3: Characteristics of software

These components are described below:


4.1 Functionality:
It refers to the degree of performance of the software against its intended purpose.
Required functions are:

4.2 Reliability:
A set of attributes that bears on the capability of software to maintain its level of
performance under the given condition for a stated period of time.
Required functions are:

NIST Institute of Science & Technology (Autonomous) BPUT x


Software Engineering B.Tech 2022-2023

4.3 Efficiency:
It refers to the ability of the software to use system resources in the most effective
and efficient manner. The software should make effective use of storage space and
executive command as per desired timing requirements.
Required functions are:

4.4 Usability:
It refers to the extent to which the software can be used with ease. the amount of
effort or time required to learn how to use the software.
Required functions are:

4.5 Maintainability:
It refers to the ease with which the modifications can be made in a software system
to extend its functionality, improve its performance, or correct errors.
Required functions are:

4.6 Portability:
A set of attributes that bears on the ability of software to be transferred from one
environment to another, without or minimum changes.
Required functions are:

NIST Institute of Science & Technology (Autonomous) BPUT xi


Software Engineering B.Tech 2022-2023

5. Software Development Life Cycle

Fig 4: Software Development Life Cycle


Software Development is the development of software for distinct purposes. For
software development, there is a specific programming language like Java, Python,
C/C++, etc. The entire process of software development isn’t as simple as its
definition, it’s a complicated process. Accordingly, it requires an efficient approach
from the developer in the form of the Software Development Life Cycle (SDLC).
Proper planning and execution are the key components of a successful software
development process. The entire software development process includes 6 stages.
Software Development Life Cycle (SDLC) is the common term to summarize these 6
stages. SDLC specifies the task(s) to be performed at various stages by a software
engineer/developer. It ensures that the end product is able to meet the customer’s
expectations and fits in the overall budget. Hence, it’s vital for a software developer
to have prior knowledge of this software development process.
These 6 stages are discussed below.
Stage-1: Planning and Requirement Analysis:
Planning is the crucial step in everything and so as in software development. In this
same stage, requirement analysis is also performed by the developers of the
organization. This is attained from the inputs from the customers, sales
department/market surveys. The information from this analysis forms the building
block of a basic project. The quality proof 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 the customers, market analysts, and stakeholders.

NIST Institute of Science & Technology (Autonomous) BPUT xii


Software Engineering B.Tech 2022-2023

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 out 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 the 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.
Software documentation is an essential part of the software development life cycle. A
well-written document acts as a tool and means to information repository necessary
to know about software processes, functions and maintenance. Documentation also
provides information about how to use the product.
Stage 6: Deployment and Maintenance of Product:
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. Because 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.

6. MODEL OF SOFTWARE ENGINEERING


6.1 Waterfall Model

The classical waterfall model is the basic software development life cycle model. It is
very simple but idealistic. Earlier this model was very popular but nowadays it is not
used. But it is very important because all the other software development life cycle
models are based on the classical waterfall model. The classical waterfall model
divides the life cycle into a set of phases. This model considers that one phase can
be started after the completion of the previous phase. That is the output of one
phase will be the input to the next phase. Thus, the development process can be

NIST Institute of Science & Technology (Autonomous) BPUT xiii


Software Engineering B.Tech 2022-2023

considered as a sequential flow in the waterfall. Here the phases do not overlap with
each other.

Feasibility Study: The main goal of this phase is to determine whether it would be
financially and technically feasible to develop the software. The feasibility study
involves understanding the problem and then determining the various possible
strategies to solve the problem. These different identified solutions are analysed
based on their benefits and drawbacks, The best solution is chosen and all the other
phases are carried out as per this solution strategy.
Requirements analysis and specification: The aim of the requirement analysis
and specification phase is to understand the exact requirements of the customer and
document them properly. This phase consists of two different activities.
Requirement gathering and analysis:Firstly, all the requirements regarding the
software are gathered from the customer and then the gathered requirements are
analysed. The goal of the analysis part is to remove incompleteness (an incomplete
requirement is one in which some parts of the actual requirements have been
omitted) and inconsistencies (an inconsistent requirement is one in which some part
of the requirement contradicts some other part).
Requirement specification: These analyzed requirements are documented in a
software requirement specification (SRS) document. SRS document serves as a
contract between the development team and customers. Any future dispute between
the customers and the developers can be settled by examining the SRS document.
Design: The goal of this phase is to convert the requirements acquired in the SRS
into a format that can be coded in a programming language. It includes high-level
and detailed design as well as the overall software architecture. A Software Design
Document is used to document all of this effort (SDD)
Coding and Unit testing: In the coding phase software design is translated into
source code using any suitable programming language. Thus each designed module
is coded. The aim of the unit testing phase is to check whether each module is
working properly or not.
Integration and System testing: Integration of different modules are undertaken
soon after they have been coded and unit tested. Integration of various modules is
carried out incrementally over a number of steps. During each integration step,
previously planned modules are added to the partially integrated system and the
resultant system is tested. Finally, after all the modules have been successfully
integrated and tested, the full working system is obtained and system testing is

NIST Institute of Science & Technology (Autonomous) BPUT xiv


Software Engineering B.Tech 2022-2023

carried out on this. System testing consists of three different kinds of testing activities
as described below:
 Alpha testing: Alpha testing is the system testing performed by the
development team.
 Beta testing: Beta testing is the system testing performed by a friendly set of
customers.
 Acceptance testing: After the software has been delivered, the customer
performed acceptance testing to determine whether to accept the delivered
software or reject it.
Maintenance: Maintenance is the most important phase of a software life cycle. The
effort spent on maintenance is 60% of the total effort spent to develop a full software.
There are basically three types of maintenance:
 Corrective Maintenance: This type of maintenance is carried out to correct
errors that were not discovered during the product development phase.
 Perfective Maintenance: This type of maintenance is carried out to enhance
the functionalities of the system based on the customer’s request.
 Adaptive Maintenance: Adaptive maintenance is usually required for porting
the software to work in a new environment such as working on a new
computer platform or with a new operating system.

6.2 Evolutionary Model


Evolutionary model is a combination of Iterative and Incremental model of 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. The Evolutionary development model divides the
development cycle into smaller, incremental waterfall models in which users are able
to get access to the product at the end of each cycle. 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. Therefore, the
software product evolves with time.All the models have the disadvantage that the
duration of time from start of the project to the delivery time of a solution is very high.
Evolutionary model solves this problem in a different approach.

NIST Institute of Science & Technology (Autonomous) BPUT xv


Software Engineering B.Tech 2022-2023

Evolutionary model suggests breaking down of work into smaller chunks, prioritizing
them and then delivering those chunks to the customer one by one. The number of
chunks is huge and is the number of deliveries made to the customer. 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.The model allows for changing requirements as well as all work in
broken down into maintainable work chunks. Application of Evolutionary Model:
 It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer
wants to start using the core features instead of waiting for the full software.
 Evolutionary model is also used in object-oriented software development
because the system can be easily portioned into units in terms of objects.

6.3 Spiral Model


Spiral model is one of the most important Software Development Life Cycle models,
which provides support for Risk Handling. In its diagrammatic representation, it 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. 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, so the project
manager has an important role to develop a product using the spiral model. The
Radius of the spiral at any point represents the expenses(cost) of the project so far,
and the angular dimension represents the progress made so far in the current phase.

Each phase of the Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below-
 Objectives determination and identify alternative solutions: Requirements are
gathered from the customers and the objectives are identified, elaborated,
and analysed 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

NIST Institute of Science & Technology (Autonomous) BPUT xvi


Software Engineering B.Tech 2022-2023

best possible strategy. At the end of this quadrant, the Prototype is built for
the best possible solution.
 Develop 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 started.

6.4 Prototype Model


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 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 giving the customers an opportunity 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.
There are four types of models available:
A) 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 ultimately accepted prototype. Customer feedback
helps in preventing unnecessary design faults and hence, the final prototype
developed is of better quality.

NIST Institute of Science & Technology (Autonomous) BPUT xvii


Software Engineering B.Tech 2022-2023

B) Evolutionary Prototyping –
In this method, the prototype developed initially is incrementally refined on the
basis of customer feedback till it finally gets accepted. In comparison to Rapid
Throwaway Prototyping, it offers a better approach which 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.
C) Incremental Prototyping –
In this type of incremental Prototyping, the final expected product is broken into
different small pieces of prototypes and being 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.
D) Extreme Prototyping – This method is mainly used for web development. It is
consists of three sequential independent phases:
D.1) In this phase a basic prototype with all the existing static pages are
presented in the HTML format.
D.2) In the 2nd phase, Functional screens are made with a simulated data
process using a prototype services layer.
D.3) This is the final step where all the services are implemented and associated
with the final prototype.

7. CONCLUSION
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 project management has wider scope than software engineering process
as it involves communication, pre- and post-delivery support etc.
Softwareengineering is a branch of computer Science, which uses well-defined
engineering concepts required to produced
 Efficient
 Durable
 Scalable
 in budget and on time software products.

NIST Institute of Science & Technology (Autonomous) BPUT xviii


Software Engineering B.Tech 2022-2023

NIST Institute of Science & Technology (Autonomous) BPUT xix


Software Engineering B.Tech 2022-2023

REFERENCES
[1] https://www.cisco.com/in-en/industries/natural-resources-index
[2] Materials provided by Accenture.
[3] https://www.geeksforgeeks.org/software-engineering/
[4] https://en.wikipedia.org/wiki/Software_engineering

NIST Institute of Science & Technology (Autonomous) BPUT xx

You might also like