Research paper or Term paper writing on Software Engineering. - Mix-Max

Friday, 8 March 2019

Research paper or Term paper writing on Software Engineering.


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 
















Table of Contents







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]
There are following six phases in every Software engineering life cycle model:

 [6]

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