You are on page 1of 20
UNIT-I SOFTWARE ENGINEERING INTRODUCTION Software The term software The set of instructions that takes data from input devices, manipulate and process the data, and send it to an output device is called “software” is used for a sequence of instructions given to the computer to perform a specific task. Engineering Engineering is the processes of designing and building something that serves a particular purpose and find a cost effective solution to problems. Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks, processes, ete. What is Software Engineering? 1.The term software engineering is the product of two words, software, and engineering. 2.The software is a collection of integrated programs. 3.Software subsists of carefully-organized instructions and code written by developers on any of various particular computer languages. Computer programs and related documentation such as requirements, design models and user manuals. Software Engineering is an engineering branch related to the evolution of software product using well-defined scientific principles, techniques, and procedures. The result of software engineering is an effective and reliable software product. ‘ing Role of Software © seat one camer Deployment Updates System Design Software product — It consisting of a computer program that is offered for sale. software package. merchandise, product, ware - commodities offered for sale; "good business depends on having good merchandise"; "that store offers a variety of products" Software Product Code Design oyster Requirements Analysis Code design The coding is the process of transforming the design of a system into a computer language format. Software design Software design principles are concerned with providing means to handle the complexity of the design process effectively. Requirement A condition or capability needed by a user to solve a problem or achieve an objective. Testing Testing is finding out how well something works. In terms of human beings, testing tells what level of knowledge or skill has been acquired. In © seat one camer computer hardware and software development, testing is used at key checkpoints in the overall process to determine whether objectives are being met. System analysis System analysis is conducted for the purpose of studying a system or its arts in order to identify its objectives. em BOUNDARIES AND INTERFACES [nur fea PROCESSOR i FEEDBACK ENIVORNMENT Systems Design It is a process of planning a new business system or replacing an existing system by defining its components or modules to satisfy the specific requirements. Maintenance Software Maintenance is the process of modifying a software product after it has been delivered to the customer. The main purpose of software maintenance is to modify and update software application after delivery to correct faults and to improve performance. update An update is new, improved, or fixed software, which replaces older versions of the same software. For example, updating your operating system brings it up-to-date with the latest drivers © seamed with OnE Samer Software deployment Software deployment includes all of the steps, processes, and activities that are required to make a software system or update available to its intended users. Changing Nature of Software: Nowadays, seven broad categories of computer software present continuing challenges for software engineers .which is given belo’ 1. System Software: System software is a collection of programs which are written to service other programs. Sometimes when, the system software area is characterized by the heavy interaction with computer hardware that requires scheduling, resource sharing, and sophisticated process management. 2. Application Software: Application software is defined as programs that solve a specific business need. In addition to convention data processing application, application software is used to control business function in real time. 3. Engineering and Scientific Software: This software is used to facilitate the engineering function and task. however modern application within the engineering and scientific area are moving away from the conventional numerical algorithms. 4. Embedded Software: Embedded software resides within the system or product and is used to implement and control feature and function for the end-user and for the system itself. 5. Product-line Software: Designed to provide a specific capability for use by many different customers, product line software can focus on the limited and esoteric marketplace or address the mass consumer market. 6. Web Application: It is a client-server computer program which the client runs on the web © seat one camer browser. In their simplest form, Web apps can be little more than a set of linked hypertext files that present information using text and limited graphics. Artificial Intelligence Software: Artificial intelligence software makes use of a non numerical algorithm to solve a complex problem that is not amenable to computation or straightforward analysis. Explain Software Myths in Software Engineering Software Myths 1.Myths are the stories shared by group 2. A part of that group's cultural identity. Here, we have the list of some common myths of software in software engineering according to the category: TYPES OF SOFTWARE MYTHS 1, Management myths: 2, Customers Myth: 3. Developer Myths: 1. Management myths: The managers are often grasps at a belief in a software myth, same as a drowning person who grasps at a straw. a)Members acquires all the information: Generally, there is a myth that the members of the organization acquire all the information containing procedures, principles and standards. b)Adding more people can reduce the time gap: Another myth in the people is that more the number of programmers, lesser will be the time gap c)The management can relax themselves by outsourcing its project: If an organization outsource its software to a third party, it does not relieve the management of its duties © seat one camer 2. Customers Myths: The customers are encouraged by some marketing people in underestimating the difficulty of developing software. a)Software is malleable as a result of which changes are easy to accommodate: There is an enormous amount of labor required to have a change in the software after the release. It is not so easy to accommodate these changes. b)To start coding, a general statement of need is enough: The developers can’t read the customer’s mind and requires detailed descriptions of the requirements, in order to start coding. 3. Developer Myths: The software development art is becoming an engineering discipline, but there are lots of myths. a)Once the code is delivered, the software can be called complete: In reality, more than 60% of the efforts are expended after the delivery of the software to the user. b)The software’s success depends on the product’s produced quality: The project does not become successful on the quality of the programs because both the software configuration and documentation also play an important role in its success. (Or) Some of the myths are explained below, along with their related facts: MYTH: Quality Control = FACT: Testing is just bis component of. , a Quality Control includes other activities such Testing. y as Reviews. FACT: The objective of testing is to uncover as many as possible while ensuring that the software meets the requirements. Identifying and getting rid of all defects is impossible. MYTH: The objective of Testing is to ensure a 100% defect- free product. © seat one camer MYTH: Testing is easy. MYTH: Anyone can test. MYTH: There is no creativity in testing. MYTH: Automated testing eliminates the need for manual testing. MYTH: When a defect slips, it is the fault of the Testers. MYTH: Sofiware Testing does not offer opportunities ‘for career growth. FACT: Testing can be difficult and challenging (sometimes, even more so than coding). FACT: Testing is a rigorous discipline and requires many kinds of skills. FACT: Creativity can be applied when formulating test approaches, when designing tests, and even when executing tests. FACT: 100% test automation cannot be achieved. Manual Testing, to some level, is always necessary. FACT: Quality is the responsibility of all members/ stakeholders, including developers, of a project. FACT: Gone are the days when users had to accept whatever product was dished to them; no matter what the quality. With the abundance of competing software and increasingly demanding users, the need for software testers to ensure high quality will continue to grow. are hot now. Software engineering - Layered technology Software engineering is a fully layered technology. To develop a software, we need to go from one layer to another. All these layers are related to each other and each layer demands the fulfillment of the previous layer. © seat one camer Fig. - Software Engineering Layers The layered technology consists of: 1. Quality focus The characteristics of good quality software are: Correctness of the functions required to be performed by the software. Maintainability of the software Integrity i.e. providing security so that the unauthorized user cannot access information or data. Usability i.e. the efforts required to use or operate the software. 2. Process It is the base layer or foundation layer for the software engineering. The software process is the key to keep all levels together. It defines a framework that includes different activities and tasks. In short, it covers all activities, actions and tasks required to be carried out for software development. 3. Methods The method provides the answers of all ‘how-to' that are asked during the process. It provides the technical way to implement the software. It includes collection of tasks starting from communication, requirement analysis, analysis and design modelling, program construction, testing and support. © seamed with ON Scanner 4. Tools The software engineering tool is an automated support for the software development. The tools are integrated i.e the information created by one tool can be used by the other tool. For example: The Microsoft publisher can be used as a web designing tool. Process Models: Waterfall Model - Evolutionary Process Models. What is a Software Process Model? Software Processes is a coherent set of activities for specifying, designing, implementing and testing software systems. There are many different software processes but all involve: «Specification — defining what the system should do: -Design and implementation — defining the organization of the system and implementing the system; Validation — checking that it does what the customer wants; Evolution — changing the system in response to changing customer needs. 1.Waterfall model Winston Royce introduced the Waterfall Model in 1970. This model has five phases: 1 Requirements analysis and specification, 2.design, implementation, and unit testing, 4.integration and system testing, 5.operation and maintenance. The steps always follow in this order and do not overlap. The developer must complete every phase before the next phase begins. This model is named "Waterfall Model", because its diagrammatic representation resembles a cascade of waterfalls. © seat one camer Pree eed Peis ettente toa) Design Phase Waterfall Model Tee ae} erate) Tiree eer) ERC] Core EEL] maintenance phase 1, Requirements analysis and specification phase: The aim of this phase is to understand the exact requirements of the customer and to document them properly. Both the customer and the software developer work together so as to document all the functions, performance, and interfacing requirement of the software. 2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a suitable form which permits further coding in a programming language. It defines the overall software architecture together with high level and detailed design. All this work is documented as a Software Design Document (SDD). 3. Implementation and unit testing: During this phase, design is implemented. If the SDD is complete, the implementation or coding phase proceeds smoothly, because all the information needed by software developers is contained in the SDD. 4, Integration and System Testing: Unit testing determines the efficiency of individual modules. However, in this phase, the modules are tested for their interactions with each other and with the system. © seamed with ON Scanner 5. Operation and maintenance phase: Maintenance is the task performed by every user once the software has been delivered to the customer, installed, and operational. Advantages of Waterfall model This model is simple to implement also the number of resources that are required for it is minimal. oThe requirements are simple and explicitly declared; they remain unchanged during the entire project development. oThe start and end points for each phase is fixed, which makes it easy to cover progress. oThe release date for the complete product, as well as its final cost, can be determined before development. olt gives easy to control and clarity for the customer due to a strict reporting system. Disadvantages of Waterfall model oln this model, the risk factor is higher, so this model is not suitable for more significant and complex projects. cThis model cannot accept the changes in requirements during development. olt becomes tough to go back to the phase. For example, if the application has now shifted to the coding phase, and there is a change in requirement, It becomes tough to go back and change it. Since the testing done at a later stage, it does not allow identifying the challenges and risks in the earlier phase, so the risk reduction strategy is difficult to prepare. Evolutionary Process Models. Evolutionary model is a combination of Iterative and Incremental model of software development life cycle. ... Evolutionary Process Models Evolutionary models are iterative type models. They allow to develop more complete versions of the software. Following are the evolutionary process models. 1. The prototyping model © seat one camer 2. The spiral model 3. Concurrent development model 1. The Prototyping model Prototype is defined as first or preliminary form using which other forms are copied or derived. Prototype model is a set of general objectives for software. It does not identify the requirements like detailed input, output. It is software working model of limited functionality. In this model, working programs are quickly produced. Fig. - The Prototyping Model The different phases of Prototyping model are: 1. Communication In this phase, developer and customer meet and discuss the overall objectives of the software. 2. Quick design Quick design is implemented when requirements are known. It includes only the important aspects like input and output format of the software. It focuses on those aspects which are visible to the user rather than the detailed plan. It helps to construct a prototype. © seat one camer 3. Modeling quick design This phase gives the clear idea about the development of software because the software is now built. It allows the developer to better understand the exact requirements. 4. Construction of prototype The prototype is evaluated by the customer itself. 5. Deployment, delivery, feedback If the user is not satisfied with current prototype then it refines according to the requirements of the user. The process of refining the prototype is repeated until all the requirements of users are met. When the users are satisfied with the developed prototype then the system is developed on the basis of final prototype. Advantages of Prototyping Model Prototype model need not know the detailed input, output, processes, adaptability of operating system and full machine interaction. In the development process of this model users are actively involved. The development process is the best platform to understand the system by the user. Errors are detected much earlier. Gives quick user feedback for better solutions. It identifies the missing functionality easily. It also identifies the confusing or difficult functions. Disadvantages of Prototyping Model: The client involvement is more and it is not always considered by the developer. It is a slow process because it takes more time for development. Many changes can disturb the rhythm of the development team. It is a thrown away prototype when the users are confused with it. 2. The Spiral model Spiral model is a risk driven process model. It is used for generating the software projects. © seat one camer In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then alternate solutions are suggested and implemented. It is a combination of prototype and sequential model or waterfall model. In one iteration all activities are done, for large project's the output is small. The framework activities of the spiral model are as shown in the following figure. Planning Estimation icatic Communication Modeling Analysis Design Construction Deployment Gas guivecaets Delivery Testing Feedback Fig. - The Spiral Model NOTE: The description of the phases of the spiral model is same as that of the process model. Advantages of Spiral Model It reduces high amount of risk. It is good for large and critical projects. It gives strong approval and documentation control. In spiral model, the software is produced early in the life cycle process. Disadvantages of Spiral Model It can be costly to develop a software model. It is not used for small projects. 3. The concurrent development model The concurrent development model is called as concurrent model. © seat one camer The communication activity has completed in the first iteration and exits in the awaiting changes state. The modeling activity completed its initial communication and then go to the underdevelopment state. If the customer specifies the change in the requirement, then the modeling activity moves from the under development state into the awaiting change state. The concurrent process model activities moving from one state to another state. Modeling activity In above figure each block represents the state of software engineering activity Fig. - One element of the concurrent process model Advantages of the concurrent development model This model is applicable to all types of software development processes. It is easy for understanding and use. It gives immediate feedback from testing. It provides an accurate picture of the current state of a project. Disadvantages of the concurrent development model It needs better communication between the team members. This may not be achieved all the time. It requires to remember the status of the different activities. © seat one camer Option Question Software Process and Software Development Lifecycle Model There are many development life cycle models that have been developed in order to achieve different required objectives. The models specify the various stages of the process and the order in which they are carried out. The most used, popular and important SDLC models are given below: «Waterfall model -V model Incremental model «RAD model -Agile model «Iterative model «Spiral model «Prototype model Waterfall Model This model has five phases: Requirements analysis and specification, design, implementation, and unit testing, integration and system testing, and operation and maintenance. The steps always follow in this order and do not overlap. The developer must complete every phase before the next phase begins. This model is named "Waterfall Model", because its diagrammatic representation resembles a cascade of waterfalls. a Waterfall tfa (Beton “Ne Model | Bewlonment “ =. =a. [assess V Model © seat one camer ‘V-Model also referred to as the Verification and Validation Model. In this, each phase of SDLC must complete before the next phase starts. It follows a sequential design process same as the waterfall model. Testing of the device is planned in parallel with a Corresponding stage of development. V-Model Developer's Life Cycle Tester’s Life Cycle Ey = one, 5 \ jf # 4 i 4 rea Verification: It involves a static analysis method (review) done without executing code. It is the process of evaluation of the product development process to find whether specified requirements meet. Validation: It involves dynamic analysis method (functional, non- functional), testing is done by executing code. Validation is the process to classify the software after the completion of the development process to determine whether the software meets the customer expectations and requirements. So V-Model contains Verification phases on one side of the Validation phases on the other side. Verification and Validation process is joined by coding phase in V-shape. Thus it is known as V-Model. © seamed with OnE Samer Incremental model Incremental Model is a process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved. Incremental Model Iterative Model In this Model, you can start with some of the software specifications and develop the first version of the software. After the first version if there is a need to change the software, then a new version of the software is created with a new iteration. Every release of the Iterative Model finishes in an exact and fixed period that is called iteration. The final output of the project renewed at the end of the Software Development Life Cycle (SDLC) process. © seamed with OnE Samer Requirement: Analysis & Design Implementation Ls Nerative a Model J ( Deployment setae Testing RAD model RAD isa linear sequential software development process model that emphasizes a concise development cycle using an element based construction approach. If the requirements are well understood and described, and the project scope is a constraint, the RAD process enables a development team to create a fully functional system within a concise time period. RAD (Rapid Application Development) is a concept that products can be developed faster and of higher quality through: oGathering requirements using workshops or focus groups oPrototyping and early, reiterative user testing of designs oThe re-use of software components oA rigidly paced schedule that refers design improvements to the next product version oLess formality in reviews and other team communication a =p -~ > =>=> Rapid Application Development (RAD) Spiral model The spiral model, initially proposed by Boehm, is an evolutionary software process model that couples the iterative feature of prototyping with the controlled and systematic aspects of the linear sequential model. It © seamed with OnE Samer implements the potential for rapid development of new versions of the software. Using the spiral model, the software is developed in a series of incremental releases. During the early iterations, the additional release may be a paper model or prototype. During later iterations, more and more complete versions of the engineered system are produced Spiral Model 2. Kdety and resolve Risks 3. Develop next version of the © seamed with ON Scanner

You might also like