Software
Engineering Research paper
National
College Of Computer Studies
(College of IT and Management)
Paknajol,
Kathmandu
Bachelors
of Science in Computer Science and Information Technology (B.Sc.CSIT)
Bhawishya khanal, [NCCS304]
Introduction to information technology [CSC109]
February,2019
Abstract
This technical report
provides elaborate pointers for the contents of a marginal set of
software or computer code development documents, tailored to be used by students in software engineering project,
and supported IEEE standards, moreover
here described the technical part involved in the software engineering process
or process of software developing cycle.the basic
information of software engineering and the brief background is explained. why
we need software engineering and its basic objectives are also included. Software
engineering layer and its types are introduced. The main problem or
difficulties during the software engineering or any stage while developing the software,
simply called challenges of software engineering is describe in this report. systematic technique of a software engineering, what we need to develop the
software which meet the requirement of a software buyer or a costumer and how-to
analysis well and design the high-quality as well as standard software etc.
queries are answered in this report. This paragraph section wants to assist
in crucial the precise contents of every section described in this report.in
this report we are discussing about the introduction and the background
Introduction
Software engineering is the application field of engineering to developing
the software package in a systematic technique. It is Simply analyzing a user’s
requirement, designing, constructing, and testing end user applications that may satisfy those requirements
or needs through the utilization of appropriate software programming languages.
It is the application of engineering principles to the software development. In
contrast to a simple coding or programming, software engineering is used for
larger and more complex software systems, which are used as critical systems
for businesses and organizations.
In another word Software engineering
is a detailed study of engineering to the design, development and maintenance
of software. Software engineering was introduced to deal with the issues of high-quality
software projects. Problems arise when a software usually exceeds timelines,
budgets, and reduced the quality of software programs. It ensures that the
application is constructed correctly, consistently on time and on budget and
within requirements. The demand of the software engineering is also emerged to
cater the immense rate of change in user requirements and environment on which
application is supposed to be working. [1]
A software engineers take the software
needs of end users into account and consequently designs or develops new
applications. Furthermore, software engineering may involve the process of
analyzing existing software and modifying it to fulfill current application
needs.
Background
The term 'software
engineering' was suggested at conferences organized by international
organization in 1968 and 1969 to debate the 'software crisis'. The software
package crisis was the name given to the difficulties encountered in developing
massive, advance and complex systems in the 1960s. It was proposed that the
adoption of an engineering approach to software development would reduce the
costs of software development and lead to more reliable software. [2]
writing software package has evolved from its beginnings within
the 1960s, into a profession involved with how best to maximize the quality,
stander of software and of how to produce it. Quality indicate to how sustainable
software is, to its stability, usability, speed, readability, testability, cost,
size, number of flaws or "bugs" and security, as well as to less
measurable qualities like stylishness, conciseness, and customer satisfaction,
among many other attributes. How to create a best as well as high quality
software could be a controversial and separate problem covering software engineering
principles, so-called "best practices" for scripting a code, as well
as broader management issues such as optimal team process, size how to deliver best
software on particular time and as quickly as possible, work-place "culture",
hiring practices, and so forth. All this fall under the broad rubric of the
software
engineering.
Basic Objective of
software engineering
Software engineering is that the systematic approach to the
development, operation, retirement and maintenance of software. Software
Engineering is that the application field of science and arithmetic by which
the competences of pc equipment are created useful to man via pc programs,
procedures, and associated documentations.
The basic
objective of software engineering (computer code) is to develop methods and
procedures for software development which will scale up for large systems which
may be used consistently to produce high-quality software at low price and with
a little cycle of time.
Need for Software
Engineering
1. As
Software development is very costly so proper measures are required, so that
the resources are utilized efficiently and effectively.
2. Cost and
time considerations are another issue, that arises the requirement for Software
Engineering.
3. Reliability
factors.
Software Engineering
Layers
Software engineering can also be viewed as a layered
technology. Various layers are listed below.
1.Process layer
The process layer permits the
development of software on time. It defines an outline for a group of key
process areas that has to be acclaimed for effective delivery of a software
engineering technology.
2.Method layer
The method layer provides
technical information for developing software. This layer covers a broad array
of tasks that include requirements analysis, design, coding, testing, and
maintenance phase of the software development.
3.Tools layer
The tools layer provides computerized(processed)
or semi-computerized support for the process and the method layer. Sometimes
the tools are integrated in such a way that other tools can use information
created by the one tool. Multi-usage is usually referred to as Computer-Aided
Software Engineering (CASE). CASE combines hardware, software and
software engineering database to create a software engineering
analogous to Computer-Aided Design (CAD) for hardware.
CASE helps in the development of application including analysis, design, code
generation, and debugging and testing. This is possible by using the CASE
tools, which provide us automated methods for designing and documenting
traditional-structure programming techniques. [3] as an example, two
different prominent technologies are using the CASE tools which are computer-based
workstations and application generators which provide graphics-based interfaces
for the automation of development method or process.
Software Engineering Challenges
Software engineering hires a well-defined
and systematic approach to develops the software. This approach is considered as
the most effective way of producing the high-quality software. However, this
systematic approach in computer code or software development, there are still
some serious challenges which are faced by software engineering. Some of these
challenges are listed below. [3]
1.
The process or methods used to
develop small as well as medium-scale projects are not suitable, when it comes
to the development of large-scale or complex systems.
2.
Changes in software
development are unavoidable. In today's world, changes occur quickly and
accommodating these changes to develop complete software package is one of the
major challenges often faced by the software engineers.
3.
The advancement in a computer and
software technology has necessitated for the changes in nature of the software
systems. The software systems that can’t accommodate changes don’t seems to be
much use. Thus, one of the challenges of software engineering is to produce the
high-quality software adapting to the changing desire within acceptable
schedules. To meet this challenge, the object-oriented approach is most popular,
however accommodating changes to software package and its maintenance within
acceptable price is still a challenge.
4.
Informal communications take
up a considerable portion of the time spent on software projects. Such wastage
of time delays the completion of projects within the specified time.
5.
The user generally has only a
vague idea about the scope and requirements of the software system. This
usually results in the developments of software, which does not meet the user's
requirements.
6.
Changes are usually
incorporated in the documents without following any standard procedure. Thus,
verification of all such changes usually becomes tough.
7.
Development of the high-quality
and reliable software requires the software to be thoroughly tested. Though
thorough testing of software consumes the majority of resources,
underestimating it because of any reasons deteriorates the software quality.
In addition
to the above-mentioned major challenges, the responsibilities of the system
analyst, designers, and programmers are usually not well defined. Also, if the
user necessities are not precisely defined, software developers will
misinterpret the meaning. All these challenges need to be addressed in order to
ensure that the software is developed within the specified time and estimated
costs and also meets the requirements specified by the user.
Software
engineering Process
As the world became more and more dependent on technology
with every passing day, software automatically became a vital organ for
development. Since software is required almost all over these days, its
development could be highly intelligent and precise process, involving various
steps. Called software development life cycle, this process includes planning,
analysis, design, development & implementation, testing and maintenance.
These steps continue to design the perfect software for clients.
It’s
pretty evident that technology is accelerating at high pace and humans are getting
further more dependent on it for each and every purpose. And with every new
day, software development is turning into more and more crucial since the
demand for software is rising rapidly from every corner imaginable. In fact, nearly
every machine that we use are often by-product of some software empowering it.
And going by the recent trends in the market, software development in nepal is
quite a bustling scene, what with nepal providing a huge amount of software
developing that’s required to make this process successful. The process of
software development services in Asian country goes through a series of
stages in step wise fashion that nearly every developing company follows. Known
as the ‘software engineering life cycle,’ these six steps include planning: requirement gathering and analysis, design, implementation/coding, testing deployment and
maintenance. [4]
Software engineering typically begins with the
primary step as a user-request initiation for a particular task or associate
output. One submits his requirement to a service provider organization. The
software developer segregates user requirement, functional requirements and system
requirement. The requirement is collected by conducting interviews of a user,
studying the existing system, referring to a database etc. After requirement
gathering, the team analyses analyse if the software can be made to fulfil all
the requirements of the user or not. The developer then decides a roadmap according
his plan. System analysis additionally includes an understanding of software
product limitations. As per the need or requirement and analysis, a software
design is created. The implementation of software design starts in terms of
writing program code in a very suitable programming language. Software testing
is finished while coding by the developers and thorough testing is conducted by
testing specialists at various levels of code like product testing, program
testing, module testing, testing the product and in-house testing and at user’s
engagement and feedback.
Software
Development/Engineering Life Cycle (SDLC)
Software life
cycle models describe phases of the software system cycle and the order in
which those phases or section are executed. Each section produces deliverables
required by the next section in the life cycle of software engineering.
Requirements are translated into design. Code is created according to the
design that is called development phase. After the completion of coding and development,
the testing verifies the deliverable of the implementation phase against
requirements. The testing team follows Software Testing Life Cycle (STLC) which
is similar to the development cycle followed by the development team. [3]
1.Requirement gathering and
analysis
Business requirements are gathered in this phase. This phase is that the
main focus of the project managers and stake holders. Meetings with managers
and stake holders and users are held in order to determine the requirements
like; Who is going to use the system? How will they use the system? What
data should be input into the system? What data should be output by the
system? These are general queries that get answered during a requirement
gathering section. After requirement gathering these requirements are then
analyzed for his or her validity and therefore the possibility of incorporating
the requirements within the system to be development is also studied.
Finally, a Requirement Specification document is created that serves the aim
of guideline for the next section or phase of the model. The testing team
follows the Software Testing Life Cycle and starts the Test Planning section
after the requirements or necessities analysis is completed. This step
is regarding analyzing the performance of the software
package at numerous stages and creating notes
on further necessities. Analysis is very vital to
proceed further to the next step.
2.Design
In this section the system and software designed are prepared from
the requirement specifications that were studied within the first phase. System
Design helps in specifying hardware and system requirements and additionally
helps in defining overall system architecture. The system design specifications
serve as input for the next section of the model. In this phase the testers come
up with the Test strategy, where they mention what to test, how to test. Systems design is the process of
crucial components of a system like architecture, modules, components and their
interfaces and data for a system based on the specified requirements. The
method of defining, developing and designing systems which satisfies the
specific needs and requirements of a business or organization is actual design.
3.Implementation / Coding
After receiving the required system design documents, the engineering
team divided the work in modules/units and actual coding is started. Since, during
this section the code is created as per the costumer or Clint requirement thus
it is the main focus part for the developer. This is the longest section of the
software development life cycle.in this stage the particular development
starts and therefore the product is made. The programming code
is generated as per DDS throughout this stage. If the
design is performed in a very careful and
arranged manner, code generation may be accomplished without
having much problem. Developers should follow the coding tips outlined by
their organization and programming tools like compilers, interpreters,
debuggers, etc. are used to generate the code.
Different high-level programming languages like C, C++, Pascal, Java
and PHP area unit used for writing. The programing
language is chosen with respect to the
kind of software package being developed.
4.Testing
After the code is developing is finished it is then tested against the
requirements to make sure that the product is actually solving the needs pointed
or addressed and gathered during the requirements phase. During this section
all kind of functional testing like unit testing, integration testing, system testing,
acceptance testing is done as well as non-functional testing are also done. This
stage is typically a subset of all the stages
as within the modern SDLC models, the testing
activities are mostly concerned in all the stages of SDLC.
Mainly, this stage refers to the testing only but also the software product
defects are tracked, reported, fixed and retested, until the
product reaches the quality standards which is defined in the SRS (Software
Requirement Specification).
5.Deployment
After successful testing the product is delivered / deployed to the
customer or Clint for their use. As soon as the product is given to the customers,
then they will first start doing the beta testing. If any changes are required
or if any bugs are found in that software, then they will report it to the
engineering team. Once those required changes are made or the bugs are fixed
then the final deployment will happen There are different stages of
the distribution method the project
team should follow to make sure the code and technology
deploy appropriately. The stages include deployment preparation
and procedures, product deployment,
transferring ownership of the product, and closing the deployment phase.
6.Maintenance
Once when the customers start using the developed system then the particular
problems come up and needs to be resolved from time to time. This method where
the care is taken for the developed product is called maintenance. Simply Software maintenance is vast activity in which
includes error correction, optimization, deletion of discarded features and
enhancement of existing features. These changes are necessary, a mechanism must
be created for estimation, controlling and making some modifications. The
essential part of software maintenance requires preparation of an accurate plan
during the cycle. Typically, the maintenance of software takes up about 40-80%
of the project cost, usually closer to the higher pole. Hence, a focus on
maintenance the software definitely helps keep costs down. Then on the basic of feedbacks, the
project can be release as it is or with recommended enhancements within
the targeting market segment. After the
product is released in market, the process of maintenance is
completed for the prevailing client base.
Conclusion
In this paper, it exhibited that the step
by step procedure which is involve in software engineering process. Challenges
are arising during the analysing, designing, coding, testing, deployment and in
maintenance or a whole task during software engineering that we describe above.
Also, we discuss little bit about need of software engineering and its
objective. Software engineering is also called a layered technology which
provide the technique how to build and its interfaces. Software Engineers develop and maintain new or improved
software package products, procedures, and techniques. Responsibilities include
providing innovative and cost-effective engineering solutions to satisfy
technical objectives and timing.
References
[1]
|
D. l. H.rosenberg, Software re-engineering,
Software Assurance Technology Center, https://www.researchgate.net.
|
[2]
|
“wikipedia,” 7 febuarary 2019. [Online].
Available: https://en.wikipedia.org/wiki/History_of_software_engineering.
|
[3]
|
D. thakur, “ecomputernotes,” [Online]. Available:
http://ecomputernotes.com/software-engineering/definition-of-software-engineering-and-software-engineering-layers.
|
[4]
|
G. tyagi, “synapsindia,” [Online]. Available:
https://www.synapseindia.com/6-stages-of-software-development-process/141.
|
[5]
|
“linkedin,” 23 august 2017. [Online]. Available:
https://www.linkedin.com/pulse/what-software-development-life-cycle-sdlc-phases-private-limited.
|
[6]
|
tutorialspoint, [Online]. Available:
https://www.tutorialspoint.com/sdlc/sdlc_overview.htm.
|
No comments:
Post a Comment