-
Essay / Everything You Need to Know About Software Engineering
Table of ContentsSummarySoftware EvolutionSoftware ParadigmsSOFTWARE ENGINEERINGSay no to plagiarism. Get a tailor-made essay on “Why Violent Video Games Should Not Be Banned”? Get the original essay RAMAJAYAM.G (Professor Sri Krishna Adithya College of Arts and Sciences) Summary In this article, we will look at software engineering and how it works in today's world. It deals with new software technologies and the process by which software manipulates the environment. Software engineering combines the development of software products, principles and methods. Developing a software product involves many procedures and methods that must be followed before executing a software product. The methods needed to design software engineering are the software paradigm which is based on two basic principles or concepts. SDLC – Software Development Life Cycle is a well-defined process and describes the stages of software engineering and software product development. Each life cycle process has its own role and the process of performing its own task in various areas. It is not a one-way process, each task must be done in sequential order to develop a software product. Today, computer software is the most important technology on the world stage. We will look at the evolution of software, software paradigms, characteristics of software, SDLC – software development life cycle process and the overall benefits of software engineering. Introduction: The term software engineering is a combination of two words, software and engineering. The term software is simply defined as the program code. A program is said to be executable code, for computing purposes. Software is a collection of executable programming code, libraries, and associated documentation. It is designed to meet a specific requirement called a software product. On the other hand, engineering involves developing products, using well-defined scientific principles and methods. The efficient and reliable software product is the result of software engineering.[1] Software engineering is a branch of engineering associated with the development of software products using well-defined scientific principles, methods and procedures. Software project management has a broader scope than software engineering process as it involves communication, support before and after delivery. Software engineering was mainly introduced to solve the problems of poor quality software projects. The problem arises when software typically exceeds deadlines, budgets and reduced quality levels.[2] Software engineering is a multi-layered technology and the base is the process layer. The basis of the software process which forms the management control of software projects and introduces the concept in which technical methods are applied, work products (models, documents, reports, data, forms, etc.) are produced. Software engineering tools provide two types of support: automated or semi-automated for the process and methods. When tools are integrated, information created by one tool can be used by another, a software development support system, called computer-aided software engineering.[1] The IEEE defines software engineering as the application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. [2] Software Evolution Software evolution refers to the process ofdeveloping a software product using software engineering principles and methods. This includes the initial development of software products and their maintenance, updates, the software product is developed and meets the required requirements. Evolution begins with the requirements gathering process. Once this process is completed, developers create a prototype of the intended software and show it to users to get their feedback at the early stages of the product's software development. Users can also suggest changes over several consecutive updates and maintenance continues to evolve. This process passes to the original software, until the appropriate software is made. Even when the user has appropriate software, the trends in technological development and upcoming requirements force the software product to evolve accordingly. Recreating software with requirements is not feasible. The only feasible and cost-effective solution is to update the existing software to match the latest software requirements.[2] Software Paradigms The methods and steps required to design software are called software paradigms. There are many methods proposed in software paradigms that are used today, but the most important thing is that we need to see where the software engineering paradigms stand. These can be brought together in various combinations, although each of them is contained within the other. The programming paradigm is a subset of the software design paradigm which is further a subset of the software development paradigm. Software development paradigm. This paradigm is known as software engineering paradigms where all engineering concepts are applied to software development. It also includes various research and requirement gathering that helps the software product get built. Software development paradigm consists of: • Requirements gathering • Software design • Programming Programming paradigm. This programming is similar to the programming aspect of software development. This includes • Coding • Testing • Integration Software design paradigm. This paradigm is part of software development and consists of: • Design • Maintenance • Programming.[2] Characteristics of Good Software The software product can be evaluated by how the software can be designed and how it can be used. This software must meet the following conditions: • Operational • Transitional • Maintenance Well-designed and well-designed software has the following characteristics: 1. Operational. This method indicates the operating system of the software. It can be measured on: • Budget • Usability • Efficiency • Accuracy • Functionality • Reliability • Security • Safety 2. Transitional. This method is important when the software moves from one platform to another • Portability • Interoperability • Reusability • Adaptability 3. Maintenance This method indicates how the software has the capabilities to maintain itself in a changing environment • Modularity • Maintainability • Flexibility • Scalability[ 2] Software Development Life Cycle – SDLC Process SDLC is a well-defined process and structured sequence of steps in software engineering to develop the software product. SDLC provides a series of steps to follow to design and develop a software product. This framework includes the following stages: • Communication Communication is the first stage in which the user formulates the request for a desired software product. He contacts the service provider, tries to negotiate the terms and submits his request to the service. • Collection of needs. The teamsoftware development is working to continue the project at this stage. The team discusses and tries to bring out various possible information. The requirements are then considered and separated into user requirements, system requirements and functional requirements. Requirements are collected by a number of practices like -> Studying existing software, -> Conducting interviews with users and developers, -> Referring to the database or -> Collecting questionnaire responses. • Flexibility Study Once the requirements gathering process is completed, the team comes up with a rough plan of the software process. At this stage, the team first analyzes whether software can be designed to meet all user requirements. There are many algorithms that help developers conclude the feasibility of a software project. • System analysis. During this stage, developers decide on a roadmap of their plan and try to come up with the appropriate model for the project. System analysis includes the following features such as understanding the limitations of software products, learning about system issues, or making changes to existing systems. The project team analyzes the scope of the project and plans resources and schedule accordingly. • Software Design The next process is to bring out all the knowledge from the requirements and analysis and design the software product. User inputs and information collected during the requirements gathering phase are the inputs to this stage. The result of these steps comes in two design forms: logical design and physical design. • Coding This step is also called programming phase. Software design implementation begins with writing the program code in the appropriate programming language and developing error-free programs. • Testing Software testing is done during coding by the developers and testing is done by the testing experts at different levels of the code such as module testing, program testing, product testing. One estimate says that 50% of the entire software development process should be tested. • Integration software must be integrated with libraries, databases and other programs. The SDLC lifecycle is involved in the integration of software with entities in the outside world. • Implementation The implementation process includes the process of installing the software on users' machines. The software requires post-installation configurations on the user's side. The software is tested for adaptability and portability and integration-related issues are resolved during the implementation process. • Operation and maintenance This phase confirms the operation of the software in terms of greater efficiency and fewer errors. The software is maintained by updating the code according to technological developments. • Layout Over time, the software may decline in performance. It may become completely outdated or require an intense upgrade. It is therefore urgent to eliminate a large part of the system. This phase includes archiving the required data and software components, shutting down the system, scheduling disposition activity, and terminating the system at the appropriate end-of-system time[2]. Advantage of Software Engineering The need for software engineering arises due to the higher rate of change in user requirements and the environment on which the software operates. • Large software It is very easy to build a wall rather than a house or a building, also the size of the software becomes a