Successfully reported this slideshow.

National%20 online%20examination%20system%20an%20architectural%20perspective


Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

National%20 online%20examination%20system%20an%20architectural%20perspective

  1. 1. National Online Examination System: An Architectural Perspective National Online Examination System: An Architectural Perspective Pradeep Kumar, Pankaj Nirwan , P Govind Raj Abstract- CDAC Noida has developed an online examination system as per requirement of NASSCOM and DIT. The system can cater to a large number of students for administering Multiple choice questions and True False Questions of various subjects. The system is developed using Flex, Spring, and Hibernate framework and is highly secure and fail safe. The system uses open source stack in its design and is extensible, reliable and scalable to handle future requirements. The paper presents the functional description of system and architectural design of the system. Keywords: Online examination software, Flex, Spring, BlazeDS, Terracotta, Hibernate1. IntroductionDevelopment of a National Online Examination System (NOES) within India was aNASCOMM recommendation which, Department of IT, Ministry of Communication andInformation Technology is realizing through C-DAC. The purpose of such endeavor was todesign and develop a robust, fault tolerant, secure, scalable and an adaptive system throughwhich examinations can be delivered on an “on demand” basis in selected examinationcenters spread across the country. The project is being carried out in two phases namely,Phase-1 wherein the software for conducting the exam would be designed and developedand Phase -II wherein various colleges and partnering institutions would be roped in tocollaborate in providing question to the question. Phase 1 of the project is nearing itscomplementation whereas Phase II has been initiated and is on-going.Though various learning management systems (LMS) have got features to deliver onlinetest , they are not tuned to handling large system loads . Further most of the LMS do notsupport features to include Computer Adaptive Tests wherein the system estimates theability of a candidate in a particular subject matter and fine tunes the delivery of questionsto the candidate based on his/her ability. These limitations in the current LMS were amongthe motivations to design and develop this system.The system utilizes various open source software framework. The integration of theseframeworks to work as a cohesive unit has been one of the major engineering outcome ofPhase 1 of the project. This paper presents an architectural perspective of the NOES. Thepaper also presents various issues faced during design implementation perspective.The paper is divided into the 6 sections. Section 2 presents the functional and nonfunctional requirements imposed on the system. Section 3 presents the SystemArchitecture. It also provides the mapping of the non functional requirements to thearchitecture. Section 4 presents some key design patterns that have been included in thesystem. Section 5 presents key problems faced during implementation and their solutions.It also presents Java Virtual Machine (JVM) level tuning that was done to handle largenumber of threads. Section 6 presents a conclusion and future work planned.Proceedings of ASCNT – 2010, CDAC, Noida, India, pp. 101 – 114 101
  2. 2. Pradeep Kumar, Pankaj Nirwan , P Govind Raj2. Requirements of examination systemThe basic functions of online examination system include registration, user management,report generation, question paper matrix entry, question pool management, data entry,examination conduction etc. The figure 1 shows the process flow of the system. Fig. 1: Process flow diagram of online exam systemSome key non functional requirements that had a strong impact on the architecture and thecomponents used in the architecture included:  Open Source Stack  Scale out vs Scale Up  Ease of Extensibility  Performance/High System Throughput  Reliability  Security/Privacy/Escrow AccountsAll these functional and non-functional requirements have been considered while decidingon technology components in the solution, described in further sections.3. System ArchitectureThe NOES utilizes the following open source framework across its various tiers ,namely,Adobe Flex[1] at the Presentation Tier , Blaze DS[2] at the remoting tier, Spring[3] at the 102
  3. 3. National Online Examination System: An Architectural Perspectivebusiness tier, Jasypt[4] at the business tier , Hibernate[5] at the Object Relational MappingTier and Terracotta[6] for providing JVM Level Clustering for High Availability and betterthroughput. Fig 2 shows various system components of online examination software. Fig.2: System Components in Online examination Software3.1 Presentation TierThe software interface is designed and implemented as a Rich Internet Application (RIA).RIA is a web based application that has most of the characteristics of desktop applications.They are typically delivered by standard web browser plug-ins or independently viasandboxes or virtual machines. RIA has interactivity features which are often difficult toimplement using normal HTML based applications. Adobe Flex, a framework fordesigning and developing Rich Internet Application (RIA), was used to implement aRIA at the Presentation tier. By using Flex, a state full application running on the browserwas developed for activities like student registration, payment of fees through onlinepayment gateway, etc.The design of a web based state full application running on a browser could be consideredas major paradigm shift as opposed to conventional web application, which is usuallystateless. As the sessions are created on the server for each user, the more the number ofsession variables per user, the larger is the overhead at the server to maintain the sessionvariables. In our design, application state is completely managed at the Presentation Tierusing Flex thereby relieving the server the overhead of managing sessions.Use of Flex as a Framework also helps in creating HTTP based applications that run on theuser desktop as opposed to the conventional browser using Adobe AIR framework. Thiswas required in situations wherein a complete “control” of Desktop was required e.g. whena user is giving an examination using the software, he should not be allowed to interactwith browsers and other applications. Such requirements were realized using Adobe AIRframework.3.2 Business TierOne of the major considerations while designing the system was that to ensure that designshould be agnostic to underlying Application Server. Enterprise Application Technologieslike Enterprise Java Beans(EJB) , though based on Java are required to be coded in certainway so that they are portable across various applications servers of different vendors. 103
  4. 4. Pradeep Kumar, Pankaj Nirwan , P Govind RajMoreover, EJBs are considered to be heavy weight as compared to a Plain Old Java Object(POJO).Our business tier design uses Spring Framework to utilize the simplicity of POJOprogramming and at the same time relieves the application developer from concerns aboutissues like Transaction, Persistence etc. These “concerns” are managed by SpringFramework itself. Apart from being a replacement to EJB, spring also providesfeatures and programming paradigms used by the design such as:3.2.1 Aspect OrientationAny software would have non-functional requirements like logging, security, transactionetc. that can cut across different modules and are called cross cutting concerns as opposedto core concerns (functional requirements). Earlier, with only classes and interfaces asprogramming elements, the traditional object-oriented approach cannot modularizecrosscutting concerns well as programmers need to mix them with core concerns in thesame modules. As a result, these crosscutting concerns are spread out in different modulesof an application and are thus not modularized. This results in lesser maintainability andreadability of the code resulting in code tangling. Another problem caused by non-modularized crosscutting concerns is code scattering wherein the same piece of code isscattered across the application. The problem with code scattering is that, if the modulewhose code has been scattered changes, then all instances of the code which is there inmultiple modules would also require a change. Functio Functio Functio nal nal nal Req 1 Req 2 Req n Logging Transaction Mgt. Security Fig.3: Aspect Orientation and separation of Cross Cutting ConcernOur design uses Aspect Orientation to solve this problem in a better way [Fig 3]. By usingAspect Orientation, programmers can express cross-cutting concerns in stand-alonemodules called aspects. Aspects can contains advice (i.e. code joined to specified points inthe program) and inter-type declarations (structural members added to other classes). Forexample, a security module included as an aspect can include advice to perform a securitycheck before accessing a particular record. Since the security module is separated as anaspect , joined using an advice and joined to specific points in code as required theproblems of code tangling and code scattering is solved.We have used aspect orientation to implement Role Based Access Control[7] andTransaction management[8]. 104
  5. 5. National Online Examination System: An Architectural Perspective3.2.2 Declarative Transaction ManagementEnterprise applications based on Java usually write their own code to managementtransactions using JDBC. Writing the boiler plate transaction code is both time consumingand error prone. Further, when managing transactions programmatically, programmersneed to include additional transaction management code in each transactional operation,adding to code scattering and tangling.For managing transaction in NOES, we have utilized Spring Declarative Transactions.Spring separates transaction management code from the business methods via declarationsand uses Transactions as Aspect. Further, a programmer just needs to provide suitableannotations to methods to make it transactional. Various transactional attributes likepropagation behavior, isolation level, rollback rules, transaction timeout etc can bespecified using annotations. This relieves the programmer from worrying about issue oftransaction management and helps in concentrating more on developing functionalrequirements. However, the team faced issues while implementing transaction managementas discussed later.3.2.3 Security Sub System architectureSecurity was one of the key non functional requirements of the NOES. When architectingthe security sub system, a major consideration was a complete transparency of theapplication from the underlying security infrastructure. This means that application logicshould not be tied down to a particular set of infrastructure implementing security e.gApplication should be able to work with an LDAP or a Database or a Biometricidentification sub system transparently [Fig 4]. Moreover, security is a crosscutting concernand has to be treated as an aspect. Application Logic Security Subsystem Database LDAP Biometric storing Authentication Credential Fig.4:.Separation of Security Implementation and Application LogicThe security subsystem of the NOES provides Authorization, Role Based Access Control(RBAC) and cryptographic functions for storing user credentials for authentication. SpringSecurity was used to implement these functions. For providing cryptographic functions likeencryption Java Simplified Encryption (Jasypt) was used. Jasypt had to be integrated withSpring Security and Hibernate, so that Spring Security used password encoders etc fromJasypt. Fig 5 shows hashing using Jasypt . 105
  6. 6. Pradeep Kumar, Pankaj Nirwan , P Govind Raj Fig.5: Hashing with Salt using JasyptUsing the Security Subsystem, access control can be provided at the URL level, MethodInvocation Level, domain object level and view rendering level. The authorization isimplemented with the help of Spring Security as a set of Intercepting Filters as shown infig6. Fig.6: Intercepting Filters for AuthenticationFor making Access Control Decisions the Spring Security Access Decision manager wereused. All these access decision managers require a group of voters to be configured forvoting on access control decision.NOES utilize Role Voters and Authenticated Voters. Role Voters votes for an accesscontrol decision based on a user’s role. It votes to grant access if the user has the same roleas required to access the resource. It votes to deny access if the user lacks any role requiredto access the resource. Authenticated Voter votes for an access control decision based on auser’s authentication level. It votes to grant access if the user’s authentication level ishigher than the required attribute. From highest to lowest, authentication levels are “fullyauthenticated,” “authentication remembered,” and anonymously authenticated.”3.3 Object Relational Mapping TierNOES was designed to be agnostic to Database Implementation at the back end and reducethe object relational impedance mismatch between Object Oriented Design and Relational 106
  7. 7. National Online Examination System: An Architectural PerspectiveDesign. The term object-relational impedance mismatch is derived from the electricalengineering term impedance matching. There are various concepts in OOPs which do nothave direct relation to Relational Model. E.g. includes Inheritance, Polymorphism, andEncapsulation etc. To map these concepts from an object oriented domain to the relationaldomain, Object Relational Mapping paradigm has been used in NOES. Hibernate has beenchosen as the implementation framework for implementing OR Mapping. Apart fromproviding OR Mapping, Hibernate also relieves the programmer from writing SQLsthereby improving his productivity.3.4 Remoting TierSince the Presentation Tier is RIA based on Flex Framework (implemented using ActionScript 3) and the business tier is based on JAVA, a remoting tier was required to convertValue object from Action Script 3 to Java. Blaze DS is an Open Source remoting server,used for communication between the presentation tier and the business tier which isimplemented in spring using JAVA. The communication between these two tiers is using aopen source messaging Framework called AMF (Adobe Messaging Framework). AMF waspreferred over XML based communication mechanism because AMF offers speed benefitsbetter than XML based communication mechanism.3.5 JVM Level ClusteringOne of the key features envisaged during the design phase was to scale out the applicationwithout requiring changes in application level code. Terracotta is used to provideScalability and High Availability (HA) features in the design. In a conventionalenterprise application scalability is usually handled at various layers e.g. At applicationlevel and Database Server End , making the design difficult to implement and manage.Our design incorporates HA right at the Java Virtual Machine Level. The advantage of thisapproach is that HA is available just like any other service provided by the JVM (e.g.Garbage Collection), therefore the developer just needs to concentrate on the developingbusiness logic and worry about implementing scalability and high availability. Fig.7: Terracotta running application instances 107
  8. 8. Pradeep Kumar, Pankaj Nirwan , P Govind RajThe figure 7 shows applications running on top of Terracotta. In this configuration anapplication does not stop running until the objects are flushed Terracotta’s memory anddisk. This is how Terracotta ensures high availability as a runtime serviceUsing Terracotta also allowed to us to scale out the application by just increasing thenumber of JVMs in the setup. Therefore, we could achieve, transparent scaling as sourcecode need not be changed for the purpose of scaling.Terracotta is also used to implement various design patterns like Write behind to System ofRecords (SOR), Asynchronous Commit etc with intent to minimize Database I/O during anexamination. The details of these design patterns are mentioned in Section IV. Terracottaalso provides a transparent Hibernate 2nd Level Caching which increases the throughput ofNOES and further reduces Disk I/O.This results in improving the performance bydecreasing the load on the system. The deployment architecture of the system is shown infig 8: Fig.8: Deployment ArchitectureTable 1 shows mapping of non-functional requirements of system with various technologycomponents used in the design. Requirements Flex Spring Jasypt Spring Security T.cotta Scalability   - -  OSS Stack      Expandability -  - - Transparent - - - -  Scale Out High - - - -  Availability High Volume - - - -  Transaction Security - -   - Table1: Mapping of non-functional requirements to various technical components . 108
  9. 9. National Online Examination System: An Architectural Perspective4. Key Design Principle and Patterns IncorporatedNOES utlizes lot of major design patterns and principle presented in [9] .This sectiondescribes some of the major design patterns used in NOES.Throughout the application , we have used the principle of programming to an interface,which allows design to be completely decoupled from implementation. For example, fortesting purposes , we can replace a heavy database implementation with a lighter-weightmock implementation. Use of an interface also leads to dynamic binding andpolymorphism, which is consequentially important to object-oriented programming.4.1 Model View Controller using Cairngorm MicroarchitectureMVC is an architectural pattern used in software engineering. The pattern isolates "domainlogic" (the application logic for the user) from input and presentation (GUI), permittingindependent development, testing and maintenance of each. NOES has it’s presentationlayer implemented in Flex. The presentation tier utilizes Cairngorm micro architecture toimplement MVC.Cairngorm [10] is specifically designed to facilitate complex state and data synchronizationbetween the client and the server, while keeping the programming of the View layerdetached from the data implementation.The role of the View layer in a Cairngorm application is to throw events and bind to datastored in the Model. Components on the View can bind to Value Objects or otherproperties in the Model (data) layer.In a Cairngorm Model, related data are stored in Value Objects (VOs), while simplevariables can be stored as direct properties of the ModelLocator class. A static reference tothe ModelLocator singleton instance is used by the View layers to locate the required data.The Controller is the most sophisticated part of the Cairngorm architecture. The Controllerlayer is implemented as a singleton FrontController. The FrontController instance, whichreceives every View-generated event, dispatches the events to the assigned Command classbased on the events declared type.The Command class then processes the event by running the Command class execute()method, which is an ICommand interface method. The event object may include additionaldata if required by the developer. The execute() method can update the central Model, aswell as invoke a Service class which typically involves communication with a remoteserver. The IResponder interface, which is also implemented by the Command class,includes Result and Fault methods to handle responses returned from the invoked remoteservice4.2 Proxy PatternProxy Pattern can be used to separate crosscutting concerns (like transaction, security etc)from core concerns (functional requirements). The principle of the proxy design pattern isto wrap an object with a proxy and use thisproxy to substitute for the original object. Any calls that were made to the original objectwill go through the proxy first The proxy object is responsible for deciding when andwhether to forward method calls to the original object. The proxy can also performadditional tasks around each method call. So, the proxy is a good place to implement thecrosscutting concerns and can be used to implement various types of advice likebeforeAdvice , afterAdvice and aroundAdvice to implement crosscutting concerns. 109
  10. 10. Pradeep Kumar, Pankaj Nirwan , P Govind Raj4.3 Write behind to System of Records (SOR)Usually enterprise applications persist state data in a database These data may not berequired for meeting business requirements , but are persisted so that in case of anapplication restart , the state could be reconstructed. For example, during an examination acandidate may change his answer many times, however only the final answer may berequired for evaluation purposes. These intermediate answers may be saved in the databaseto recover from a eventual system crash. This results in low performance as each and everychange in the answer produces a disk I/O. SOR is a design pattern which suggests that ,data needs to be committed to the database only at the final stage.With Terracotta, it is now possible to store data in the memory without the fear of databeing lost due to system crash. Since data is stored in the memory and not on the disk, datacan be updated quickly. This is helpful in situations wherein data might be changed lot oftimes, before finally being committed. For example in a typical examination , when anexamine changes his answers , instead of generating a disk I/O , NOES updates collectionsin the memory and only commits the answers at the end of the examination. SinceTerracottas memory is highly available, therefore data in the memory will not be lost evenin cases of full Terracotta cluster restarts.4.4 Asynchronous CommitCommitting to a database is usually a synchronous operation. In other words , the clientthat requests to persist a data waits till the data has been fully committed. In a typicalexamination situation , maximum users would be committing their result in a single pointin time i.e. at the time when the exam time is over. Also in a typical Objective type paper ,the number of questions are large in the order of 102 . This produces a performancebottleneck as all clients would be required to wait until data is persistedNOES utilizes Asynchronous Commits to remove the above mentioned bottleneck. It usesTerracotta to implement Asynchronous Commits. Each Node in the NOES applicationcluster maintains a processing bucket which holds data to be committed. All theintermediate changes to the data in the processing bucket are done in memory withoutproducing Disk I/O. When a request to commit data is received by the Business Tier ofNOES, it sends a reply at the same instance to the client about the commit “being” doneand lazily commits the data to the database. This approach, reduces disk I/O and increasesthroughput. If a requirement of scaling comes, NOES can be configured to increase thenumber of processing buckets thereby further throttling the Throughput.5. Issues faced during implementation5.1 Integrating Flex and SpringAt the first instance, it appears that since Flex can access java object and Spring beans arenothing but java objects therefore there are no issues in integration Flex and Spring.However, taking a closer look , one can infer that whole idea behind Spring is to let thecontainer instantiate components (and inject their dependencies). By default, however,components accessed remotely by a Flex client are instantiated by BlazeDS on the server.The key to the Flex/Spring integration, therefore, is to configure BlazeDS to let the Springcontainer take care of instantiating Spring beans by the use of suitable factory classesprovided by BlazeDS. In the first version of NOES , we designed and developed aSpringFactory and configured BlazeDS to use this factory class to let Spring to instantiate 110
  11. 11. National Online Examination System: An Architectural Perspectivethe classes and perform dependency injection when needed. Later the Spring Communitycame up with Spring BlazeDS Integration Components[11]. The current version of NOESuses this new scheme to integrate Flex and Spring.5.2 Integrating BlazeDS Channel Security and Spring SecurityBlazeDS has got methods to authenticate Channel sets between Flex Client and the ServerSide Code. NOES however use Spring Security to implementing security. The issue hereagain was that, BlazeDS should allow Spring Security to manage security. For this purpose,we extended the functionalities of BlazeDS and designed and developed a Login CommandClass which allowed, BlazeDS to use Spring Security functionalities. Later when SpringIntegration Components [12] were released, we shifted our code base to use this.5.3 Issue faced during Implementing Transaction Management using SpringNOES use MySQL as a database server (though the design is agnostic to the database at thebackend). The default database engine of MySQL in Linux is MyISAM [13]. Transactionmanagement provided by Spring does not work with MyISAM. The solution to thisproblem was to change the database engine from MyISAM to InnoDB[15].Spring uses the Proxy Pattern to implement Aspect based Transaction management.Therefore, methods called using Proxy were only advised for transaction management. Inour service class there were situations when a proxy method (f1) called another method(f2). Java calls method f2 using “this” pointer. In such cases the method f2 is not advisedfor transaction management. Therefore if , some exception happened while execution wasin f2 , it had to manually handled. To get around this, we have taken a reference of theinterface type implemented by the service and we have created a bean post processor whichassigns the proxy to the reference. This is called self reference. Now whenever, a functionis called inside a method which has advised for transaction, we use self reference instead ofthis pointer to work around this issue.NOES sends automated E-mails to candidates triggering a successful completion of anevent such as registration successfully done, admit cards generated etc. Most of thesesituations involve a database operation to either Insert, Update or Delete records. Suchmethods are required to advise as Transactional. In such scenarios, the sending of email istypically the last scenario after the successful database operation. However, Spring buffersthe database operation and performs it at the end of the Transactional Method i.e. aftersending the mail. This can lead to a situation wherein the database operation was notsuccessful, however, the e-mail was sent. To get around this issue, we flush hibernatesession right after issuing a command to save, update or delete an object. Doing this throwsan exception immediately on failure of a Database operation and thus prevent sending ofmails in case of exceptions.Whenever a Transactional method is called from the Flex end and it fails, nothing wasreturned from the Business tier to the presentation tier and the transaction was not rolledback. The reason for this was that, Transactional method did not throw out an exception tothe calling method and the Spring Transaction manager only rolls back an exception if thetransactional method throws out an exception. To solve this issue, a service method wasintroduced such that it was not treated as transactional and this method was exposed to thepresentation tier. The service method internally called this Transactional method. Thistransactional method did not handle exceptions and threw out exception to the servicemethod. In this case, Spring Transaction Manager rolls back the Transaction and the 111
  12. 12. Pradeep Kumar, Pankaj Nirwan , P Govind Rajservice method can be used to handle the exception and send relevant message to thepresentation tier.5.4 Integrating Flex and TerracottaTerracotta has defined several classes which it treats as non-portable. These non-portableclasses cannot be used in clustered mode across different JVM’s. Flex uses some suchclasses pertaining to HTTPServlets in its messaging session thereby making clustering FlexSessions using Terracotta incompatible. Since the application at the front end was astateful one, reliance on sessions was not necessary and therefore we could configureTerracotta to ignore these non portable classes which were put by Flex in its messagingsession. Further we had used a load balancer based on Apache to use sticky sessions. Thisallowed HTTP request to be routed to the same application server where it was firstoriginated, this helped in non sharing of sessions across the cluster. In case of a nodefailure, the user just needs to re-login and he can continue from where had left as since hisprogress is stored across cluster using Terracotta.5.5 Concurrency Issues with Terracotta Asynchronous CommitterTerracotta AsynCommitter allows to commit records in a asynchronous manner. To do this,we need to configure processing buckets which are at each application server. Now in caseswhen two or more processing buckets tries to commit a data element at the same time andthe primary key of such a data element is a numeric increment , then there will be will beData Integrity Violations as two data elements may have the same number. Further, theapplication can enter an infinite loop since, in case of an error in committing whilecommitting in the database, terracotta tries to recommit the values. While recommittingagain the same situation of Data Integrity may arise. This situation can go on till a serialschedule is found. To overcome this issue , we have used UUID as the primary key of dataitems which are stored asynchronously. This prevents Data Integrity Violations inasynchronous commit mode.6. ConclusionsUsing the NOES, C-DAC has conducted three PG Entrance Examination and one nationallevel entrance examination successfully. The National Level Entrance Examination wasconducted across 10 centers of C-DAC for a period of 10 days each day having 3 slots.Therefore the total number of live runs of the system are more than 300. Further TheNational Level Entrance examination for PG/JRF was done using a Computer AdaptiveTest. The details of design and the mathematical model has been mentioned in[14].DOEACC has also expressed it’s interest in conducting it’s CCC examination.The initial stress testing result shows that we can conduct an exam for 5,000 users usingjust 2 Tomcat server instances. We plan to scale the application to support around 10,000users in a single session.NOES uses Hibernate in its ORM Session. One of the criticism of ORM technologies, isthat generates non-optimized SQL Queries for databases. We plan to tweak the ORM layerand use frameworks like AutoFetch to generate Optimized SQL. 112
  13. 13. National Online Examination System: An Architectural PerspectiveAcknowledgmentAuthors would like to thank Sh. GV Ragunathan Sr. Director DIT , Sh. Anil Pipal AddlDirector, DIT for their constant motivation and support throughout the project life cycle.Authors also express their sincere thanks to Sri D K Jain , Sh R K Singh , Sh V K Sharma,Dr P R Gupta and Dr George Varkey for their constant support in executing the project .Authors express their acknowledgement to their team members Kartikeya , Vikram , KantiSingh , Neha Sharma, Soumya Sengupta , Parag for their efforts to make this software areality.References|1| Adobe Flex|2| BlazeDS|3| Spring Framework []|4| Jasypt []|5| Hibernate []|6| Terracotta []|7||8||9| Design Patterns: Elements of Reusable Object-Oriented Software (ISBN0-201- 63361-2)|10| Cairngorm []|11||12||13||14| Soumya Sengupta, Vikram Vijh, Kartikeya Vats “Design and Implementation of Adaptive Assessment System using Item Response Theory Model” Proceeding, ASCNT-10, CDAC, NoidaAbout Authors Mr. Pradeep Kumar did his M. Sc. In Informatics from Delhi University. He has work experience of 3.5 years. Currently he is working as Project engineer on National Online Examination Project at CDAC, Noida. Mr. Pankaj Nirwan is a Computer Science graduate (B.E) from NIT Durgapur, having an experience of 3 years and 9 months. He has worked on various mobile platforms such as J2ME, BREW for around 2.5 years. At present he is working as a Project engineer on National Online Examination Project at CDAC, Noida. 113
  14. 14. Pradeep Kumar, Pankaj Nirwan , P Govind Raj Mr. P. Govind Raj is working as Senior Project Engineer at CDAC, Noida. He is coordinating the development activities of Online examination system at CDAC, Noida. His research interest includes Ubiquitous computing, e-Security and Open Source Systems. He is also involved in coordination of BOSS PRC at CDAC , Noida 114