Top Banner
PRACTICAL-1 Aim: Introduction to Software Engineering. Software Engineering: Software Engineering is an engineering discipline that consists of three key elements methods, tools and procedure that enables the manager to control the process of software development and provide the developer with a foundation for building high quality software in a productive manner .Software Engineering is an application of engineering to software system implementation, operation and maintenance, which uses systematic approach, methods, tools and procedure. Application of engineering to software system implementation, operation and maintenance .It uses systematic approach, methods, tools and procedure. Software Engineering is the study and application of engineering to the design, development and maintenance of software. The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. An engineering discipline that is concerned with all aspects of software production .The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machine Term Software Engineering was first introduces in the first NATO conference 1968. The term was defined as follows: The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines History: The first commercial software was built as early as 1951, in England. The company behind the software was J. Lyons Company. In the early days software building was straightforward
40
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

PRACTICAL-1Aim: Introduction to Software Engineering.Software Engineering: Software Engineering is an engineering discipline that consists of three key elements methods, tools and procedure that enables the manager to control the process of software development and provide the developer with a foundation for building high quality software in a productive manner .Software Engineering is an application of engineering to software system implementation, operation and maintenance, which uses systematic approach, methods, tools and procedure.Application of engineering to software system implementation, operation and maintenance .It uses systematic approach, methods, tools and procedure. Software Engineering is the study and application of engineering to the design, development and maintenance of software.The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. An engineering discipline that is concerned with all aspects of software production .The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machine Term Software Engineering was first introduces in the first NATO conference 1968. The term was defined as follows: The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machinesHistory: The first commercial software was built as early as 1951, in England. The company behind the software was J. Lyons Company. In the early days software building was straightforward and uncontrolled. Still, even at 50s software could be relatively versatile.When the first digital computers appeared in the early 1940s, the instructions to make them operate were wired into the machine. Practitioners quickly realized that this design was not flexible and came up with the "stored program architecture" or von Neumann architecture. Thus the division between "hardware" and "software" began with abstraction being used to deal with the complexity of computing.When the first digital computers appeared in the early 1940s, the instructions to make them operate were wired into the machine. Practitioners quickly realized that this design was not flexible and came up with the "stored program architecture" or von Neumann architecture. Thus the division between "hardware" and "software" began with abstraction being used to deal with the complexity of computing.In 1984, the Software Engineering Institute (SEI) was established as a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. Watts Humphrey founded the SEI Software Process Program, aimed at understanding and managing the software engineering process. His 1989 book, Managing the Software Process, asserts that the Software Development Process can and should be controlled, measured, and improved. The Process Maturity Levels introduced would become the Capability Maturity Model Integration for Development (CMMi-DEV), which has defined how the US Government evaluates the abilities of a software development team.Features of software engineering: The definition was very modern since it is still valid. Software engineering is disciplined engineering work, offers means to build high-quality efficient software at affordable prices, and offers task allocation and tools for all.The emergence of software engineering: The task description and the requirements frequently change even during the program design phase, and continue to change even after the software system has long since been in use. The major problems encountered in development of large software systems were: correctness efficiency mastery of complexity interface specification reliability documentation maintainability project organizationPhases of software engineering:Theanalysis phasedefines therequirementsof the system, independent of how these requirements will be accomplished. This phase defines the problem that the customer is trying to solve. The deliverable result at the end of this phase is a requirement document. Ideally, this document states in a clear and precise fashion what is to be built. This analysis represents the ``what'' phase. The requirement document tries to capture the requirements from the customer's perspective by defining goals and interactions at a level removed from the implementation details. The analysis team develops the requirement document, which talks about things and actions on things. This document should also include states, events, typical scenarios of usage, and typical scenarios of usageThe Design Phase: In the design phase the architecture is established.This phase starts with the requirement document delivered by the requirement phase and maps the requirements into architecture. The architecture defines the components, their interfaces and behaviors. The deliverable design document is the architecture. The design document describes a plan to implement the requirements. This phase represents the ``how'' phase. Details on computer programming languages and environments, machines, packages, application architecture, distributed architecture layering, memory size, platform, algorithms, data structures, global type definitions, interfaces, and many other engineering details are established. The design may include the usage of existing components.The Implementation Phase: In the implementation phase, the team builds the components either from scratch or by composition.Given the architecture document from the design phase and the requirement document from the analysis phase, the team should build exactly what has been requested, though there is still room for innovation and flexibility. For example, a component may be narrowly designed for this particular system, or the component may be made more general to satisfy a reusability guideline. The architecture document should give guidance. Sometimes, this guidance is found in the requirement document. The implementation phase deals with issues of quality, performance, baselines, libraries, and debugging. The end deliverable is the product itself.The Testing Phase: Simply stated, quality is very important. Many companies have not learned that quality is important and deliver more claimed functionality but at a lower quality level.It is much easier to explain to a customer why there is a missing feature than to explain to a customer why the product lacks quality. A customer satisfied with the quality of a product will remain loyal and wait for new functionality in the next version The testing technique is from the perspective of the system provider. Because it is nearly impossible to duplicate every possible customer's environment and because systems are released with yet-to-be-discovered errors, the customer plays an important, though reluctant, role in testing.Introduction to SDLC: SDLC stands for Software development life cycle. It is a process that describes how to develop, design and maintain the software project ensuring that all the functional & user requirement, goals and objective are met. This methodology improves the quality of the software project and over all process of software development.

The figure shows various stages of typical SDLC

Different Stages Of SDLC: Requirement Gathering & Analysis phase: - 1st and important phase of SDLC for the success of software. This phase includes communication between project stakeholders, end users and project team, as requirements (both Functional & non functional) are being gathered from clients. This phase of SDLC includes:-Functionally and financially feasibility analysis. Identify and capture requirements from stakeholder through client interviews, surveys etcClearly defining and documenting requirements in SRS (software requirement specification document) which consist of all the product requirements to be developed.Creating prototypes of project, to show end user that how will project look like. Performed with the help of tools like Azure etc.Design Phase:- In design phase of SDLC, based on requirement captured in SRS, architecture design is proposed for project and captured in design document. This phase of SDLC includes:-Partition of requirements into hardware & software system.Designing system architectureCreating UML diagrams (Use cases, class diagram, sequence diagrams and Activity diagram)Developments Phase: - This is the longest phase of SDLC as in this phase of SDLC actual project is developed and build. This phase of SDLC includes:-Actual code gets written.Demonstration of work accomplished to Business analyst for future modification as per requirement.Unit testing is performed i.e. verification of code as per requirements.Testing phase: The testing strategy is involved in almost all stages of SDLC. However this phase of SDLC refers to the only testing of system where bugs/defect of the system are reported, tracked and fixed. The system/project is migrated to a test environment and different type of testing is performed like functional, integration, system and acceptance. This is performed until the project reaches the quality standards as specified in SRS. This phase of SDLC includes:-System is tested as a wholeDifferent type of testing to report & fix bugs.Deploy & Maintenance phase: - In this phase of SDLC, once the system is tested, it is ready to go live. The system may be first released for limited user, and tested in real business environment for UAT (user acceptance testing).This phase of SDLC includes:-System is ready to be delivered.System is installed and put into use..Correction of errors that were not caught before.

PRACTICAL-2

Aim: Introduction to Project and the feasibility study.Introduction: In todays life software is become an integral part in almost all the applications involving computer-based systems. This is the software project .In this project, we have to create a website. Name of this website is Railway Reservation system .This website is basically designed for providing online information regarding the Trains. In this project some basic functions have to fulfill recommended by Administrator. Such functions include information regarding the Trains, online registration or reservation of seat, time schedules, and all relevant information available there, feedback information etc. provided on website.

Project planning objectiveThe objective of software project planning is to provide a framework that enables the manager to make reasonable estimates of resources, cost and schedule .These estimates are made within a limited time frame at the beginning of a software project and should be updated regularly as the project progressesScope: The first activity on software project planning is the determine of software scope. Function and performance allocated to software during system engineering should be assessed to establish a project scope that is unambiguous and understandable at the management and technical levels.Following information is collected during estimating scope of this project: This software project that is website of tutorial RRS is requested by Admin of this website. The developed project is used by many visitors who want to get information regarding trains. This project should be web-based project. According to requirement, required changes should be possible to made.

Feasibility study: Once scope has been identified, it is reasonable to identify feasibility of the project .Feasibility study acquires the information of economic, technical or operation requirements of project. Putnam and Myers address this issue when they write:Not everything imaginable is feasible ,not even in software, evanescent as it may appear to outsiders.On the contrary software feasibility has four dimensions:Technology-is a project technically feasible? -is it within the state of the art?Finance-is it financially feasible? -can development be completed at a cost the software organization ,its client, or the market?Resources-Does the organization has the resources needed to succeed?

Information gathered during feasibility study: Project is economically feasible as all cost estimation techniques are applied to guessing the cost on project and customer is satisfied by it. This software project needs software that is available in market easily. Systems required, hardware required etc., everything is possible as required by customer. This project is operationally possible to develop.Resources: The development environment-hardware and software tolls-sits at the foundation of the resources pyramid and provides the infrastructure to support the development effort.At a higher level we encounter reusable software components-software building blocks that can dramatically reduce development costs and accelerate delivery.1. Human Resources: The planner begins by evaluating scope and selecting the skills required to complete development. Both organization position(eg. manager, senior software engineer)and specialty(eg. Telecommunications, database, client/server) are specified .For relatively small projects a single individual may perform all software engineering tasks. As this is very small project so in this project two persons are efficient for developing project and one for collecting information.Reusable Resources: Component based software engineering emphasizes reusability that is the creation and reuse of software building blocks. In this projects all modules are created by the developer, some interacting media or images are downloaded from internet.

Figure 1: Resources PyramidTOOLS/TECHNOLOGIES: The project "Railway Reservation System" has been prepared by using the following versions of software and hardware. Hence to use and modify the package at any other installation the hardware and software requirements would be follows: Minimum Software Requirement: The software requirements of project to develop are Any Windows OS such as xp,7etc.. Application software to code website such as Notpad application ,PHP environment Any Browser such as Internet Explorer, Firefox etc. Database system such as MS Access, MYSQL.Minimum Hardware Requirement: Hardware requirements used to develop this project are given below .Here those requirements are mentioned that are under use by developer. These are basic requirements. But as website is web based so this website can be visit from any environment where internet possible. The hardware requirement of project to be develop are: Processor i3 Minimum 2 Gb RAM Hard Disk Space ( 200Gb ) Keyboard

PRACTICAL-3Aim: To study the system requirement analysis and specification phase of project development and develop SRS.Requirement analysis:A requirement analysis is the principle affected process in a feedbacks system that produces description of the behavior and non-behavior feature of the system. It is the term used to describe all tasks that go into the instigation, scooping and definition of a new or altered computer system.Elements of Requirement: Physical Environment: Means the target environment in which a system should have to operate. User: User means who will use the system. Functionality: Functionality means what the proposed system will do and several modes of operation. Documentation: Documentation means how much documentation is required for the proposed system. Security: Security includes the different security issues of the proposed system.

In this phase following information is gathered: As this project is web based software project. It runs on internet at any machine as computer, mobile devices etc. Users of this project will be those who want to travel in train and may be any web site visitor. Functionality of project will be described in SRS development. Documentation is done with each phase completion. Security is maintained by using different security mechanisms.Software Requirement SpecificationA SRS is a complete description of the behavior of the system to be developed. It includes a set of use cases that describe all the interaction the users will have the software.Important parts of SRS: Functional Requirements: This part discusses the functionalities required from the system. This software project is considered to perform a set of high level functionalities.

i1o1Fi

i2o2i3o3

inon

Figure 1: View of system performing a set of functions

Basic Functionalities of project:1. You have to register yourself and then Enter the PNR for your booking to get the current status. You will find it on the top left corner of the ticket. This information will be stored on database of system. 2. Second function is to provide information regarding the timing schedules of train between important stations. This information will be updated timely when changes have to be done. 3. Seat availability information is also available through this website.4. Fare enquiry can be done.

Non-Functional Requirements:- Non-functional requirements deal with the characteristics of the system which cannot be expressed as functions such as the maintainability of the system, portability of the system, usability of the system, etc.Basic functionalities of project:1. Accuracy of results: This project will be able to provide full accuracy. Each link of web pages will be efficiently coded. There may be some issues of overload on server if it leads to slow speed of page loading. 2. Human-computer interface: This website will provide simple interaction between the website and visitor.3. Constraints on the system: Each user visit will be catched by inbuilt implementation as anyone visit website any time. It will be the wish of maintainer to upload comments or feedback given by visitor.Goals of implementation: In this, future requirements of project such as updation needed and other facts completely possible to implement.

PRACTICAL-4Aim:-Introduction to System Design.Software design is both a process and a model. The design process is a sequence of steps that enable the designer to describe all aspects of the software to be built. It is important to note however, that the design process is not simply a cookbook. Creative skill, past experience, a sense of what makes good software and an overall commitment to quality are critical success factors for a competent design. The design model is the equivalent of an architects plans for a house. It begins by representing the totality of the thing to be built (e.g., a three-dimensional rendering of the house) and slowly renes the thing to provide guidance for constructing each detail (e.g., the plumbing layout). Similarly, the design model that is created for soft- ware provides a variety of different views of the computer software. Basic design principles enable the software engineer to navigate the design process. During the design phase the design document is produced, based on the customer requirements as documented in SRS document. Design ConceptsThe design concepts provide the software designer with a foundation from which more sophisticated methods can be applied. A set of fundamental design concepts has evolved. They are:Abstraction:- Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose.Refinement:- It is the process of elaboration. A hierarchy is developed by decomposing macroscopic statement of function in a step-wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts.Modularity:- Software architecture is divided into components called modules.Software Architecture:- It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e.g. in terms of performance, quality, schedule and cost.Control Hierarchy:- A program structure that represents the organization of a program component and implies a hierarchy of control.Structural Partitioning:- The program structure can be divided both horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure.Data Structure:- It is a representation of the logical relationship among individual elements of data.Software Procedure:- It focuses on the processing of each module individually.Structure Analysis:During Structure analysis, the major processing tasks of system are analyzed, and the data flow among these processing tasks is represented graphically. During Structure analysis, the SRS document is transformed into a DFD model.The structure analysis technique is based on the following underlying principles: Top-down decomposition approach. Application of divide and conquer principle. Graphical representation of analysis result using Data Flow Diagram.Data Flow Diagram:Data Flow Diagram (DFD) is graphical representation of flow of data/info. It is used to show how data is moved between different processes. Data flow diagrams (also called data flow graphs) are commonly used during problem analysis. Data flow diagrams (DFDs) are quite general and are not limited to problem analysis for software requirements specification. They were in use long before the software engineering discipline began. DFDs are very useful in understanding a system and can be effectively used during analysis.Primitive symbols used for constructing DFDs: Function symbol: A function is represented using a circle. This symbol is called process or a bubble.

Process External entity symbol: It is represented by a rectangle.

External entity Data flow symbol: A directed arc is used as data flow symbol. Data store symbol: It is represented using parallel lines. Output symbol: It is used when hard copy is produced.Developing a DFD model of a system:To develop the data flow model of a system, first the most abstract representation of the problem is to be worked out. Subsequently, the lower level DFDs are developed.Context Diagram: The Context level DFD is most abstract data flow of a system. It represents the entire system as a single bubble. It is often referred to as Level 0 DFD, it is a data flow diagram (DFD) of the scope of an organizational system that shows the system boundaries, external entities that interact with the system and the major information flows between the entities and the system; strictly there is however some distinction.Context Diagram in software engineering and systems engineering is a diagram that represents the actors outside a system that could interact with that system. This diagram is the highest level view of a system. It is similar to a Block diagram.The context diagram of our project Railway reservation system shows that how the data flow is managed by the clerk of the railway and how passengers get all information about trains and their fare.

Level 1 DFD: The level 1 DFD usually contains between 3 to 7 bubbles. That is, the system is represented as performing 3 to 7 functions. To develop the level 1 DFD, examine the high-level functional requirements in the SRS document. If there are between 3 to 7 high-level functions then each of these can be directly represented as a bubble in the level 1 DFD. If there are more than 7 bubbles, then some of them have to be combined. If there are less than 3 bubbles, then some of these have to be split.In our website Railway reservation system, there are 3 high-level functions which define the DFD level 1 represented as bubble. The 3 functions are process of verification seats, preparing reports, cost and issuing tickets. The data is flowed among these three functions as they perform different functions.

The function process of verification seat checks the passenger status and verifies their seats and then stores the processed data into reservation file. The preparing report function prepares the reservation chart and it is processed by the conductor of the railway. The function cost and issue ticket, issues the ticket to passengers and maintain the cost. PRACTICAL-5Aim: Introduction to UML and its Diagrams. UML:TheUnified Modeling Language(UML) is a general-purposemodeling languagein the field ofsoftware engineering. The basic level provides a set of graphic notation techniques to createvisual modelsofobject-oriented software-intensive systems. Higher levels cover process-oriented views of a system. UML was accepted by the Industrial Organization for Standardization (ISO) as a standard for modeling software-intensive systems. It can be used with all processes, throughout thesoftware development life cycle, and across different implementation technologies.[2]The Unified Modeling Language (UML) offers a standard way to visualize a system's architectural blueprints, including elements such as: activities actors business processes databaseschemas (logical)components programming languagestatements reusablesoftware components.Uml Diagrams:Class Diagram: The class diagram is the main building block ofobject orientedmodeling. It is used both for generalconceptual modelingof the systematic of the application, and for detailed modeling translating the models intoprogramming code. Class diagrams can also be used fordata modeling.The classes in a class diagram represent both the main objects, interactions in the application and the classes to be programmed.In the diagram, classes are represented with boxes which contain three parts: The top part contains the name of the class. It is printed in Bold, centered and the first letter capitalized. The middle part contains the attributes of the class. They are left aligned and the first letter is lower case. The bottom part gives the methods or operations the class can take or undertake. They are also left aligned and the first letter is lower case.In the design of a system, a number of classes are identified and grouped together in a class diagram which helps to determine the static relations between those objects. With detailed modeling, the classes of the conceptual design are often split into a number of subclasses.

Class Diagram

Use case: A Use Case is typically defined with text which describes the scenario. You can enter the text in theDescriptionfield within the Use Case definition. You can also choose to describe the scenario in terms of its steps, using theUse Case Stepsfield within the Use Case definition. Other properties are provided as a default for defining a Use Case, such as pre- and post-conditions.

Use caseActivity Diagram: Activity diagramsare graphical representations ofworkflowsof stepwise activities and actionwith support for choice, iteration and concurrency. In theUnified Modeling Language, activity diagrams are intended to model both computational and organizational processes (i.e. workflows).Activity diagrams show the overall flow of control.Activity diagrams are constructed from a limited number of shapes, connected with arrows.The most important shape types: rounded rectanglesrepresentations; diamondsrepresentdecisions; barsrepresent the start (split) or end (join) of concurrent activities; ablack circlerepresents the start (initial state) of the workflow; anencircled black circle represents the end (final state).

Activity DiagramSequence Diagram: Asequence diagramis an interaction diagramthat shows how processes operate with one another and in what order. It is a construct of aMessage Sequence Chart. A sequence diagram shows object interactions arranged in time sequence. It depicts the objects and classes involved in the scenario and the sequence of messages exchanged between the objects needed to carry out the functionality of the scenario. Sequence diagrams are typically associated with use case realizations in the Logical View of the system under development. Sequence diagrams are sometimes calledevent diagrams,event scenarios. A sequence diagram shows, as parallel vertical lines (lifelines), different processes or objects that live simultaneously, and, as horizontal arrows, the messages exchanged between them, in the order in which they occur. This allows the specification of simple runtime scenarios in a graphical manner

Sequence DiagramCollaboration Diagram: The UML Collaboration diagram is used to model how objects involved in a scenario interact, with each object instantiating a particular class in the system. Objects are connected by links, each link representing an instance of an association between the respective classes involved. The link shows messages sent between the objects, and the type of message passed (synchronous, asynchronous, simple, balking, and timeout). Collaboration diagrams offer a better view of a scenario than a Sequence diagram when the modeler is trying to understand all of the effects on a given object and are therefore good for procedural design.Objects: Objects are depicted on a Collaboration diagram as rectangles. The object name is provided first, with the class name to the right; the two names are separated by a colon. You may specify the multiple occurrence of an object by opening its definition dialog, selecting itsSymboltab, and toggling on themultiplechoices. You may also select theMultiple Objecttool from the toolbar.Links: Messages passed between objects are specified within theLinkdrawn between objects.

Collaboration Diagram

PRACTICAL-6Aim: Introduction to Coding and Unit testing.Coding: Coding is undertaken once design phase is complete and the design documents have been successfully reviewed. The input to the coding phase is the design document produced at the end of design phase. The objective of the coding phase is to transform the design of a system into code in a high-level language, and then to unit test this code.Coding conventions are only applicable to the human maintainers andpeer reviewersof a software project. Conventions may be formalized in a documented set of rules that an entire team or company follows, or may be as informal as the habitual coding practices of an individual. Coding conventions are not enforced bycompilers. As a result, not following some or all of the rules has no impact on the executable programs created from the source code.Characteristics of coding: Simplicity Readability Good documentation Transportability

NAMING CONVENTIONS Names of variables in mixed case, beginning with lowercase. Function names and type names (classes, structs, enum, and typedef) in mixed case, beginning with Uppercase. Names of #defines, constants, and enum values in all uppercase, separated with underscores. Global variables start with g. Class member variables start with m.Avoid having too many parameters in functions: Functions that take too many parameters often indicate poor code design and poor usage of data structures. If classes are used properly, then there is no need to pass many parameters to member functions. Think of a class as a storage place that stores data between function calls. In this way, its member functions should be able to find inside the class most of the data they need. Too many parameters may also indicate limited/poor usage of data structures.Never use goto: This rule has been established long ago, when the structured programming paradigm replaced the Spaghetti code style that was prominent in old programs. However, even today there are programmers that still use it. It is extremely rare that using goto improves code readability; therefore, its use should be completely avoided. Code reviewis systematic examination (often known aspeer review) of computersource code. It is intended to find and fixmistakesoverlooked in theinitial development phase, improving both the overallquality of software and the developers' skills. Reviews are done in various forms such aspair programming, informal walkthroughs, and formalinspections.Unit testing:Incomputer programming,unit testingis a method by which individual units ofsource code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures are tested to determine if they are fit for use.Intuitively, one can view a unit as the smallest testable part of an application. Inprocedural programming, a unit could be an entire module, but it is more commonly an individual function or procedure. Inobject-oriented programming, a unit is often an entire interface, such as a class, but could be an individual method. Unit tests are short code fragmentscreated by programmers or occasionally bywhite box testersduring the development process.Ideally, eachtest caseis independent from the others. Substitutes such asmethod stubs,mock objects,fakes, andtest harnessescan be used to assist testing a module in isolation. Unit tests are typically written and run bysoftware developersto ensure that code meets its design and behaves as intended.

OBJECTIVES OF SOFTWARE TESTINGThe software testing is usually performed for the following objectives:-SOFTWARE QUALITY IMPROVEMENT:- The computer and the software are mainly used for complex and critical applications and a bug or fault in software causes severe losses. So a great consideration is required for checking for quality of software.VERIFICATION AND VALIDATION:-Verification means to test that we are building the product in right way .i.e. are we using the correct procedure for the development of software so that it can meet the user requirements.Validation means to check whether we are building the right product or not.SOFTWARE RELIABILTY ESTIMATION:- The objective is to discover the residual designing errors before delivery to the customer. The failure data during process

PRACTICAL-7Aim: introduction to integration and system testing.Integration Testing:Integration testing(sometimes calledintegration and testing, abbreviatedI&T) is the phase insoftware testingin which individual software modules are combined and tested as a group. It occurs afterunit testingand beforevalidation testing. Integration testing takes as its inputmodulesthat have beenunit tested, groups them in larger aggregates, applies tests defined in an integrationtest planto those aggregates, and delivers as its output the integrated system ready forsystem testing.The purpose of integration testing is to verify functional, performance and reliabilityrequirementsplaced on major design items. These "design items", i.e. assemblages (or groups of units), are exercised through their interfaces usingblack box testing, success and error cases being simulated via appropriate parameter and data inputs. Simulated usage of shared data areas andinter-process communicationis tested and individualsubsystemsare exercised through their input interface.Test casesare constructed to test whether all the components within assemblages interact correctly, for example across procedure calls or process activations, and this is done after testing individual modules, i.e. unit testing. The overall idea is a "building block" approach, in which verified assemblages are added to a verified base which is then used to support the integration testing of further assemblages.Some different types of integration testing are: Big bang Top-down, and Bottom-upBig bang: In this approach, all or most of the developed modules are coupled together to forms a complete software system or major part of the system and then used for integration testing. The Big Bang method is very effective for saving time in the integration testing process. However, if the test cases and their results are not recorded properly, the entire integration process will be more complicated and may prevent the testing team from achieving the goal of integration testing.A type of Big Bang Integration testing is calledUsage Model testing. Usage Model Testing can be used in both software and hardware integration testing. The basis behind this type of integration testing is to run user-like workloads in integrated user-like environments. In doing the testing in this manner, the environment is proofed, while the individual components are proofed indirectly through their use. Usage Model testing takes an optimistic approach to testing, because it expects to have few problems with the individual components. The strategy relies heavily on the component developers to do the isolated unit testing for their product. The goal of the strategy is to avoid redoing the testing done by the developers, and instead flesh-out problems caused by the interaction of the components in the environment. For integration testing, Usage Model testing can be more efficient and provides better test coverage than traditional focused functional integration testing.Top-down and Bottom-upBottom Up Testingis an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested.All the bottom or low-level modules, procedures or functions are integrated and then tested. After the integration testing of lower level integrated modules, the next level of modules will be formed and can be used for integration testing. This approach is helpful only when all or most of the modules of the same development level are ready. This method also helps to determine the levels of software developed and makes it easier to report testing progress in the form of a percentage.Top Down Testingis an approach to integrated testing where the top integrated modules are tested and the branch of the module is tested step by step until the end of the related module.System testing:System testingof software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specifiedrequirements. System testing falls within the scope ofblack box testing, and as such, should require no knowledge of the inner design of the code or logic. As a rule, system testing takes, as its input, all of the "integrated" software components that have passed integrationand also the software system itself integrated with any applicable hardware system(s). The purpose of integration testing is to detect any inconsistencies between the software units that are integrated together (calledassemblages) or between any of theassemblagesand the hardware. System testing is a more limited type of testing; it seeks to detect defects both within the "inter-assemblages" and also within the system as a whole.Testing as a wholeSystem testing is performed on the entire system as a context of a functional Requirement Specification and/or a System Requirement Specification (SRS). System testing tests not only the design, but also the behavior and even the believed expectations of the customer.

Types of System Testing Alpha testing Beta testing Acceptance testingAlpha testing: It is the system testing performed by the development team.Beta testing: It is the testing performed by the friendly set of customers.Acceptance testing: this is the testing performed by the customer himself after the product delivery to determine whether to accept the delivery product or to reject it.

PARCTICAL-8Aim: Introduction to Software Maintenance.Software maintenance:Insoftware engineeringis the modification of a software product after delivery to correct faults, to improve performance or other attributes. A common perception of maintenance is that it merely involves fixing defects. However, one study indicated that the majority, over 80%, of the maintenance effort is used for non-corrective actions.This perception is perpetuated by users submitting problem reports that in reality are functionality enhancements to the system. More recent studies put the bug-fixing proportion closer to 21%.The key software maintenance issues are both managerial and technical. Key management issues are: alignment with customer priorities, staffing, which organization does maintenance, estimating costs. Key technical issues are: limited understanding,impact analysis, testing, maintainability measurement.Software maintenance is a very broad activity that includes error correction, enhancements of capabilities, deletion of obsolete capabilities, and optimization. Because change is inevitable, mechanisms must be developed for evaluation, controlling and making modifications.So any work done to change the software after it is in operation is considered to be maintenance work. The purpose is to preserve the value of software over the time. The value can be enhanced by expanding the customer base, meeting additional requirements, becoming easier to use, more efficient and employing newer technology. Maintenance may span for 20 years, whereas development may be 1-2 years.Types of Software maintenance:Corrective: Corrective software maintenance involves developing and deploying solutions to problems ("bugs") that arise during use of a software program. Computer users will notice performance problems with software, such as error messages coming on the screen or the program freezing or crashing, meaning corrective software maintenance is needed. Often these fixes permanently solve the problem, but not always. Some fixes act as a temporary solution while computer programmers work on a more permanent solution.

Perfective: No software program contains zero flaws or areas for improvement. Perfective software maintenance involves computer programmers working to improve the way a software program functions or how quickly it processes requests. Programmers may also engage in perfective software maintenance to improve the software's menu layouts and command interfaces. Sometimes programmers need to conduct perfective maintenance on software because of outside influences, such as new government regulations that affect how a business operates.

Adaptive: The field of technology constantly changes through both hardware and software developments. Adaptive software maintenance addresses these changes. A change in a processor's speed, for example, will affect how the software performs on a single computer. Software interacts with other software programs on a computer or network, meaning changes in one program can require changes in other programs. A user will eventually introduce new software to the computer or network, which can also affect how other software already present operates.Preventative: When computer programmers engage in preventative software maintenance they try to prevent problems with software programs before they occur. Programmers seek to prevent corrective maintenance as much as possible, while also anticipating adaptive maintenance needs before users experience problems. Computer programmers test software, as automotive companies test the vehicles they make, to make sure the software can handle high data loads and other stressful operations without problems. Computer programmers also test the software with other programs users likely will use on their computers, making sure compatibility issues do not arise.Purpose: A process is a meaningful and partially-ordered set of activities that is carried out to produce a valuable result.