Looking for a Tutor Near You?

Post Learning Requirement »
x

Choose Country Code

x

Direction

x

Ask a Question

x

x
x
x
Hire a Tutor

Note On Elements Of Computer Science And Engineering Unit-II

Loading...

Published in: Computer Science
20 Views

Software Testing Methodology - Waterfall Model, Incremental Model

Kartheek G / Vijayawada

10 years of teaching experience

Qualification: M.Tech in Computer Science & Engineering

Teaches: Advanced Excel, Basic Computer, Computer for official job, MS Office, School Level Computer, Computer, IT, C / C++, Java And J2EE, Artificial Intelligence, Hardware Training, UGC Net, Blog Programming

Contact this Tutor
  1. UNIT-II PART- 1 Waterfall Model: The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear- sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. Waterfall model is also called as Classic Life cycle Model The Waterfall model is the earliest SDLC approach that was used for software development. The waterfall Model illustrates the software development process in a linear sequential flow. This means that any phase in the development process begins only if the previous phase is complete. In this waterfall model, the phases do not overlap. Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. Feasibility Study Requirement Analysis System Design Implementation Testing ployment Maintenance
  2. System Requirements Analysis Phase At this initial step, the application's possible specifications are evaluated and outlined methodically in a design paper on which all future development progress can be based. The outcome is usually a requirements document that specifies what the application should do, but not how it should do it. Furthermore, the model and business logic used in the application can be properly developed in this stage. Design Phase The design phase primarily concerns technological design requirements such as programming language, data layers, services, utilities, etc. Usually, a design specification is produced which specifies the technical execution of the business logic that is used in the review. Implementation (Development/C0ding) Phase All source code, models, business logic, and service integrations that were defined in earlier phmses are finally introduced in this fourth phase. Also, this phase plays a vital role in successfully developing an application. Testing Phase At this stage, QA, beta-testeß and other testers regularly find and disclose problems that must be addressed in the applications. For this step, it is not uncommon to start the "necessary repeat" of the previous coding phase to "skip" to correctly solve the discovered bugs. Deployment Phase After testing has been carried out in the application, the next stage is deployment. Here, in this stage, the application is deployed as per the deployment requirements of the application. Finally, the application is now ready for use in a live environment.
  3. Maintenance Phase The application should be well maintained in order to provide optimum customer satisfaction. Hence, in this pluse, subsequent assistance and servicing are provided to keep the application up to date and functional. The Incremental Model: The incremental model combines elements of the linear sequential model (applied repetitively) with the iterative philosophy of prototyping. Referring to Figure 2.7, the incremental model applies linear sequences in a staggered fashion as calendar time progresses. Each linear sequence produces a deliverable "increment" of the software. When an incremental model is used, the first increment is often a core product. That is, basic requirements are addressed, but many supplementary features (some known, others unknown) remain undelivered. The core product is used by the customer (or undergoes detailed review). As a result of use and/or evaluation, a plan is developed for the next increment. The plan addresses the modification of the core product to better meet the needs of the customer and the delivery of additional features and functionality. This process is repeated following the delivery of each increment, until the complete product is produced.
  4. Analysis C cue Test 2 The incremental process model, 2 increment Deliwry of 3rd increment Delivery of 4th increment time like prototyping and other evolutionary approaches, is iterative in nature. But unlike prototyping, the incremental model focuses on the delivery of an operational product with each increment. Early increments are stripped down versions of the final product, but they do provide capability that serves the user and also provide a platform for evaluation by the user. Incremental development is particularly useful when staffing is unavailable for a complete implementation by the business deadline that has been established for the project. Early increments can be implemented with fewer people. If the core product is well received, then additional staff (if required) can be added to implement the next increment. In addition, increments can be planned to manage technical risks. For example, a major system might require the availability of new hardware that is under development and whose delivery date is uncertain. It might be possible to plan early increments in a way that avoids the use of this hardware, thereby enabling partial functionality to be delivered to end-users without inordinate delay. The spiral Model The spiral model, originally proposed by Boehm [BOE88], is an evolutionary software process model that couples the iterative nature of prototyping with the controlled and systematic aspects of the linear
  5. sequential model. It provides the potential for rapid development of incremental versions of the software. Using the spiral model, software is developed in a series of incremental releases. During early iterations, the incremental release might be a paper model or prototype. During later iterations, increasingly more complete versions of the engineered system are produced. A spiral model is divided into a number of framework activities, also called task regions.6 Typically, there are between three and six task regions. Spiral model that contains six task regions: Planning Customer communication Project entry point axis Customer evaluation Product maintenance projects Product enhancement projects New product development proiects Risk analysis Engineering Construction & release Concept development projects Customer communication—tasks required to establish effective communication between developer and customer. Planning—tasks required to define resources, timelines, and other project related information. Risk analysis—tasks required to assess both technical and management risks.
  6. Engineering—tasks required to build one or more representations of the application. Construction and release—tasks required to construct, test, install, and provide user support. Customer evaluation—tasks required to obtain customer feedback based on evaluation of the software representations created during the engineering stage and implemented during the installation stage. Agile Model: Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Every iteration involves cross functional teams working simultaneously on various areas like Planning Requirements Analysis Design Coding Unit Testing and Acceptance Testing. At the end of the iteration, a working product is displayed to the customer and important stakeholders. Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time boxes (small time frames) to deliver specific features for a release. Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.
  7. Building Planning Iteration 1 Building Req Analysis Iteration 2 Testing Req Analysis Designing Req Analysis Iteration 3 Following are the Agile Manifesto principles — Individuals and interactions — In Agile development, self-organization and motivation are important, as are interactions like co-location and pair programming. Working software — Demo working software is considered the best means of communication with the customers to understand their requirements, instead of just depending on documentation. Customer collaboration — As the requirements cannot be gathered completely in the beginning of the project due to various factors, continuous customer interaction is very important to get proper product requirements. Responding to change— Agile Development is focused on quick responses to change and continuous development.
  8. Agile Model - Pros and Cons Agile methods are being widely accepted in the software world recently. However, this method may not always be suitable for all products. Here are some pros and cons of the Agile model. The advantages of the Agile Model are as follows — Is a very realistic approach to software development. Promotes teamwork and cross training. Functionality can be developed rapidly and demonstrated. Resource requirements are minimum. Suitable for fixed or changing requirements Delivers early partial working solutions. Good model for environments that change steadily. Minimal rules, documentation easily employed. Enables concurrent development and delivery within an overall planned context. Little or no planning required. Easy to manage. Gives flexibility to developers. The disadvantages of the Agile Model are as follows — Not suitable for handling complex dependencies. More risk of sustainability, maintainability and extensibility. An overall plan, an agile leader and agile PM practice is a must without which it will not work. Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines. Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction. There is a very high individual dependency, since there is minimum documentation generated. Transfer of technology to new team members may be quite challenging due to lack of documentation. + PROGRAMMING LANGUAGE:
  9. As we know, to communicate with a person, we need a specific language, similarly to communicate with computers, programmers also need a language is called Programming language. Before learning the programming language, let's understand what is language? What is Language? Language is a mode of communication that is used to share ideas, opinions with each other. For example, if we want to teach someone, we need a language that is understandable by both communicators. What is a Programming Language? A programming language is a computer language that is used by programmers (developers) to communicate with computers. It is a set of instructions written in any specific language ( C, C++, Java, Python) to perform a specific task. Types of programming language 1. Low-level programming language Low-level language is machine-dependent (Os and Is) programming language. The processor runs low- level programs directly without the need of a compiler or interpreter, so the programs written in low-level language can be run very fast. Low-level language is further divided into two parts - i. Machine Language Machine language is a type of low-level programming language. It is also called as machine code or Object code. Machine language is easier to read because it is normally displayed in binary or hexadecimal form (base 16) form. It does not require a translator to convert the programs because computers directly understand the machine language programs. The advantage of machine language is that it helps the programmer to execute the programs faster than the high-level programming language. ii. Assembly Language
  10. Assembly language (ASM) is also a type of low-level programming language that is designed for specific processors. It represents the set of instructions in a symbolic and human-understandable form. It uses an assembler to convert the assembly language to machine language. The advantage of assembly language is that it requires less memory and less execution time to execute a program. 2. High-level programming language High-level programming language (HLL) is designed for developing user-friendly software programs and websites. This programming language requires a compiler or interpreter to translate the program into machine language (execute the program). The main advantage of a high-level language is that it is easy to read, write, and maintain. High-level programming language includes Python, Java, JavaScript, PHP, C#, C++, Objective C, Cobol, Perl, Pascal, LISP, FORTRAN, and Swift programming language. A high-level language is further divided into three parts - i. Procedural Oriented programming language Procedural Oriented Programming (POP) language is derived from structured programming and based upon the procedure call concept. It divides a program into small procedures called routines or functions. Procedural Oriented programming language is used by a software programmer to create a program that can be accomplished by using a programming editor like IDE, Adobe Dreamweaver, or Microsoft Visual Studio. Example: C, FORTRAN, Basic, Pascal, etc. ii. Object-Oriented Programming language Object-Oriented Programming (OOP) language is based upon the objects. In this programming language, programs are divided into small parts called objects. It is used to implement real-world entities like inheritance, polymorphism, abstraction, etc in the program to makes the program resusable, efficient, and easy-to-use. The main advantage of object-oriented programming is that OOP is faster and easier to execute, maintain, modify, as well as debug. Example: Java, Python, C#, etc. iii. Natural language
  11. Natural language is a part of human languages such as English, Russian, German, and Japanese. It is used by machines to understand, manipulate, and interpret human's language. It is used by developers to perform tasks such as translation, automatic summarization, Named Entity Recognition (NER), relationship extraction, and topic segmentation. The main advantage of natural language is that it helps users to ask questions in any subject and directly respond within seconds. 3. Middle-level programming language Middle-level programming language lies between the low-level programming language and high- level programming language. It is also known as the intermediate programming language and pseudo- language. A middle-level programming language's advantages are that it supports the features of high-level programming, it is a user-friendly language, and closely related to machine language and human language. Example: C, C++, language + SCRIPTING LANGUAGE: All scripting languages are programming languages. The scripting language is basically a language where instructions are written for a run time environment. They do not require the compilation step and are rather interpreted. It brings new functions to applications and glue complex system together. A scripting language is a programming language designed for integrating and communicating with other programming languages. There are many scripting languages some of them are discussed below: • bash: It is a scripting language to work in the Linux interface. It is a lot easier to use bash to create scripts than other programming languages. It describes the tools to use and code in the command line and create useful reusable scripts and conserve documentation for other people to work with.
  12. Node js: It is a framework to write network applications using JavaScript. Corporate users of Node.js include IBM, Linkedln, Microsoft, Netflix, PayPal, Yahoo for real-time web applications. Ruby: There are a lot of reasons to learn Ruby programming language. Ruby's flexibility has allowed developers to create innovative software. It is a scripting language which is great for web development. Python: It is easy, free and open source. It supports procedure-oriented programming and object-oriented programming. Python is an interpreted language with dynamic semantics and huge lines of code are scripted and is currently the most hyped language among developers. Perl: A scripting language with innovative features to make it different and popular. Found on all windows and Linux servers. It helps in text manipulation tasks. High traffic websites that use Perl extensively include priceline.com, IMDB. Advantages Of scripting languages: Easy learning: The user can learn to code in scripting languages quickly, not much knowledge of web technology is required. Fast editing: It is highly efficient with the limited number of data structures and variables to use. Interactivity: It helps in adding visualization interfaces and combinations in web pages. Modern web pages demand the use of scripting languages. To create enhanced web pages, fascinated visual description which includes background and foreground colors and so on. Functionality: There are different libraries which are part of different scripting languages. They help in creating new applications in web browsers and are different from normal programming languages.
  13. MARKUP LANGUAGES Markup Language, standard text-encoding system consisting of a set of symbols inserted in a text document to control its structure, formatting, or the relationship between its parts. The most widely used markup languages are SGML (Standard Generalized Markup Language), HTML (Hypertext Markup Language), and XML (Extensible Markup Language). The markup symbols can be interpreted by a device (computer, printer, browser, etc.) to control how a document should look when printed or displayed on a monitor. A marked-up document thus contains two types of text: text to be displayed and markup language on how to display it. XML: XML, in full extensible markup language, a document formatting language used for some World Wide Web pages. XML began to be developed in the 1990s because HTML (hypertext markup language), the basic format for Web pages, does not allow the definition of new text elements; that is, it is not extensible. HTML HTML, in full hypertext markup language, a formatting system for displaying material retrieved over the Internet. Each retrieval unit is known as a Web page (from World Wide Web), and such pages frequently contain hypertext links that allow related pages to be retrieved. HTML is the markup language for encoding Web pages. It was designed by the British scientist Sir Tim Berners-Lee at the CERN nuclear physics laboratory in Switzerland during the 1980s. ALGORITHM In computer programming terms, an algorithm is a sequential steps of programming language to solve the problems. Algorithm act like a instruction to the programmer. It is also a set of well-defined instructions to solve a particular problem. It takes a set of input(s) and produces the desired output. For example, An algorithm to add two numbers: 2. 3. Take two number inputs Add numbers using the + operator Display the result
  14. + FLOWCHART A flowchart is a blueprint that pictorially represents the algorithm and its steps. The steps of a flowchart do not have a specific size and shape rather it is designed in different shapes and sizes the boxes in different shapes and interconnected with arrows, are logically making a flow chart. A flow-chart represents the general steps in a process. Benefits Of Flowchart Let us now discuss the benefits of a flowchart. Simplify the Logic As it provides the pictorial representation of the steps; therefore, it simplifies the logic and subsequent steps. Makes Communication Better Because of having easily understandable pictorial logic and steps, it is a better and simple way of representation. Effective Analysis Once the flow-chart is prepared, it becomes very simple to analyze the problem in an effective way. Useful in Coding The flow-chart also helps in coding process efficiently, as it gives directions on what to do, when to do, and where to do. It makes the work easier. Proper Testing Further, flowchart also helps in finding the error (if any) in program Applicable Documentation Last but not the least, a flowchart also helps in preparing the proper document (once the codes are written).
  15. N/A
  16. + DATA STRUCTURES What is a data structure? A data structure is a specialized format for organizing and storing data. General data structure types include the array, the file, the record, the table, the tree, and so on. Any data structure is designed to organize data to suit a specific purpose so that it can be accessed and worked with in appropriate ways. In computer programming, a data structure may be selected or designed to store data for the purpose of working on it with various algorithms. Data structures are software artifacts that allow data to be stored, organized and accessed. • They are more high-level than computer memory (hardware) and lower-level than databases and spreadsheets (which associate meta-data and meaning to the stored data). Ultimately data structures have two core functions: put stuff in, and take stuff out. A data structure is a class of data that can characterized by its organization and the operations that are defined on it. Hence Data Structure= Organized Data + Allowed Operations •3 Types of Data Structures • Primitive data structures Non-primitive data structures Data Structures Primitive Data Structures Non-primitive Data Structures I nteger Pointers Ar rays Lists Queues Files Non-Linear L Graphs Trees
  17. Primitive Data Structures Primitive Data Structures are the basic data structures that directly operate upon the machine instructions. They have different representations on different computers. Integers, Floating point numbers, Character constants, String constants and Pointers come under this category. Non-primitive Data Structures Non-primitive data structures are more complicated data structures and are derived from primitive data structures. They emphasize on grouping same or different data items with relationship between each data item. Arrays, Lists and Files come under this category. Basic Operations The data in the data structures are processed by certain operations. The particular data structure chosen largely depends on the frequency of the operation that needs to be performed on the data structure. The basic operations that are performed on data structures are as follows: Insertion: Insertion means addition of a new data element in a data structure. Deletion: Deletion means removal of a data element from a data structure if it is found. Searching: Searching involves searching for the specified data element in a data structure. Traversal: Traversal of a data structure means processing all the data elements present in it. Sorting: Arranging data elements of a data structure in a specified order is called sorting. Merging: Combining elements of two similar data structures to form a new data structure of the same type, is called merging.