You are on page 1of 11

Chapter 4 Online C/C++ COMPILER Using Cloud Computing

CHAPTER 4: PROJECT PLAN

4.1. PLAN OF EXECUTION

a. Identification – Searching for different project ideas. Identifying and finalizing one of
them for further implementation.
b. Conceptualization and design – The concepts required for building the project are
studied in detail. Also the high level designing is done at this stage. Preliminary
presentation is given for more clarification of project.
c. Detailed design – At this stage, low-level designing is done. User Interface is
designed to give better visualization of the project idea.
d. Coding – Actual implementation of the project starts at this stage. Coding for each of
the modules will be done. Coding and testing will take approximately 10 to 12 weeks.
e. Unit Testing – Initially the application will be tested over a number of gestures and
their possible use cases. Then GUI for each scenario involving all possible cases is
tested separately.
f. Integration Testing –All modules will be integrated and then testing of whole
integrated component will be performed. It also includes evaluation of project.
g. System Testing – The product was tested in the context of the entire system. Different
Windows OS and hardware platforms will be used for system testing and the
performance will be monitored.
h. Documentation – A detailed document about the project shall be prepared at this
stage.

Requirement Gathering and Plan for the initial part of the project was as follows:
a. Understanding the problem definition
b. Understanding the current scenario in the Enterprise
c. Gathering information about required Software Resources
d. Gathering information about required Hardware Resources
e. Preparing preliminary design of overall workflow of project
f. Deciding the modules required for overall execution
g. The Plan of execution for actual implementation will be as follows:

PICT, Department of Information Technology 13


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

4.2. PROJECT ESTIMATES

Different types of estimation techniques like three point based estimation, use case
based estimation, process based estimation, etc. are applied as follows:

4.2.1. Three Point Based Estimation

In this estimation technique the size of each element of the software is considered for
the estimation. The project planner begins with the bounded statement of the project scope
and from this statement attempts to decompose software into problem functions that can be
estimated individually. LOC is then estimated for each function. Baseline productivity
metrics are then applied to the appropriate estimation variable and cost or effort for the
functions is derived. Function estimates are then combined in order to calculate an overall
estimate of the project. When a new project is estimated, it should first be allocated to a
domain and then appropriate domain average for productivity should be used in generating
the estimate.

Estimate for Three Point based estimation:

A functional decomposition of the software was performed and major software functions
were identified. Those functions are:

1. Student logs in and get prepared for the exam.


2. The exam timer will start as soon as start exam button is pressed and student can write
the code till the time expires.
3. Student will compile and wait for the output.
4. Student can leave by logging out after he gets the correct output or the time expires.

4.2.2. Use Case Based Estimation

Use cases provide a software team with insight into software scope and requirements.
Before use cases can be used for estimation, the level within the structural hierarchy is
established, the average length in pages of each use case is determined the type of software is
defined and rough architecture for the system is considered. Once these characteristics are

PICT, Department of Information Technology 14


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

established empirical data is used to establish LOC. Historical data is used to compute effort
required to develop system.

Estimate for use case based estimation:

A functional decomposition of the software was performed and major software functions
were identified. Those functions are:
1. Handling the simultaneous events coming from the hardware.
2. Identifying the logic and choosing Visual Studio as a web framework.
3. Identifying the use of server and choosing IIS as a web server.
4. The cloud work is handled by the loopback adapter.

Total LOC (estimate): 1800

4.2.3. Process Based Estimation

The most common technique for estimating a project is to base the estimate on the
process that will be used. That is the process is decomposed into a relatively small set of tasks
and effort required to accomplish each task is estimated. Like problem-based techniques,
process based estimation begins with a delineation of software functions obtained from the
project scope. A series of software framework activities must be performed for each function.
Once problem functions and process activities are melded, the planner estimates the
effort (e.g. person-months) that will be required to accomplish each software process activity
for each software function. These data constitute the central matrix of the process estimation
table. Average labor rates are then applied to the effort estimated for each process activity. It
is very likely that labor rate will vary for each task. Costs and effort for each function are
computed at the last step.

Estimate for Process based estimation:


A functional decomposition of the software was performed and major software functions
were identified. Those functions are:

PICT, Department of Information Technology 15


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

1. Handling the simultaneous events coming from the hardware.


2. Identifying the logic and choosing Visual Studio as a web framework.
3. Identifying the use of server and choosing IIS as a web server.
4. The cloud work is handled by the loopback adapter.

4.2.4. Reconciled Estimate


The final estimate of the time required for the project after reconciliation is: 3 1/2
months.

4.3. SOFTWARE RISK MANAGEMENT

4.3.1. Introduction
Risk is a possibility of loss or injury. The definition of risk in the software
engineering environment that we will use is exposure to harm or loss, as this includes not
only the possibility of risks, but their impact as well. Using risk management techniques, we
alleviate the harm or loss in a software project .All risk cannot be avoided, but by performing
risk management, we can attempt to ensure that the right risks are taken at the right time.
Risk taking is essential to progress and failure is often a key part of learning. Risk
management involves Risk Identification, Risk Analysis and Risk Prioritization.

4.3.1.1. Risk Identification


Our development team identified some potential risks to the project. These risks were
analyzed and were classified into various categories depending upon the threat they posed to
the project. Some of these risks were ‘generic risks’ while others were ‘product specific
risks’. A considerable amount of time was spent in analyzing the product specific risks.

Table 4.1: Risk Table


Risks Probability Impact
Machine Failure 30% Critical
Wrong estimate of size and effort 40% Critical
Overly optimistic schedule 30% Critical
Error prone modules require more testing and 30% Critical
implementation work
Integrating new code with existing code may be 35% Critical
difficult

PICT, Department of Information Technology 16


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

Requirements have been finalized but continue to 45 % Critical


change
Staff size is small and staff is inexperienced 10% Marginal
Technology to be built is unexplored 20% Marginal
Project scope is vast with limited time 20% Marginal

4.3.1.2. Risk Analysis


We analyzed all the risks individually and we came up with the classification of risks
on the basis of their impact on project schedule.
These risks were rated as follows:
a. Catastrophic
b. Critical
c. Marginal
d. Negligible
These were then reviewed and consensus on the impact was reached.

4.3.1.3. Risk prioritization


After analyzing the risks, the risks were prioritized based on the review and consensus
among the developers. The table below enumerates the various risks, probability and impact.

4.3.2. Overview of Risk Mitigation, Monitoring, Management


Risk analysis and management are a series of steps that help a software team to
understand and manage uncertainty. Many problems can plague a software project. A risk is a
potential problem – it might happen, it might not. But regardless of outcome, it’s a really
good idea to identify it, access its probability of occurrence and estimate its impact.
For any project being developed, it is empirical for the team to monitor and manage
risks. Risks are the unexpected delays and hindrances that are faced by software team and
need to be actively managed for rapid development. In the words of Tom Glib, “If you don’t
actively attack risks, they will actively attack you.”

The key functions of software risk management are to identify, address and eliminate
sources of risk before they become threats to successful completion of a software project.

PICT, Department of Information Technology 17


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

An effective strategy must address three issues:


a. Risk avoidance
b. Risk monitoring
c. Risk management and contingency planning

If a software team adopts a proactive approach to a risk, avoidance is the best


strategy. This is achieved by developing a plan for risk mitigation. In words of Napoleon, “If
I take so many precautions, it is because I leave nothing to chance.”

4.4. PROJECT SCHEDULE


4.4.1. Functional decomposition
The different task sets that are critical for the project are determined. There are 6 tasks
in all leading towards the development of our project. The breakdown of the major functional
task set is as follows:

T1: Learning & Installation


a. Learning the core concepts of ASP.NET
b. Learning visual stdio.
c. Download and install related packages and dependencies.
d. Execute the script for the total configuration.

T2: Designing and building the front end


a. Design the all templates requires using principle of HCI.
b. Code the HTML pages.
c. Test the templates for every browser.

T3: Making a log in screen


a. Study differnt alogos about signup screen.
b. Code for passwords are to be encrypted.
c. Test by entering a wrong password.
d. List all available master-slave devices using ‘list’ Command.

PICT, Department of Information Technology 18


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

T4: Importing the compiler


a. Making a compiler module in the code.
b. Writing code to import compiler function to code.
c. Save the output of compiler to client folder and allowing the user to donload it

T5: Building the cloud


a. Learning the concepts and security issues of cloud computing.
b. Configuring the datbase server on cloud
c. Write modules for security of cloud
d. Write modules to create specific events and pass them across main loop.

T6: Link the servers


a. Write module for conneting the cloud to main IIS.
b. Import Cloud function to data server class.
c. Resolve the security issue.

T7: Testing
a. Testing the project by entering the normal values and checking for expected results.
b. Test the project for abnormal input.
c. Enter the virus code to editor window and check the behaviour of server to that code
d. Testing the project from point of view of the intruder.
e. Testing the project performance.
f. Try to break the security measure of cloud.
g. Testing the GUI for consistency.
h. Testing the overall system operation
i. Testing the system in a live deployment scenario

The following figure (as shown in figure 4.1) shows the task organization of our
project.

PICT, Department of Information Technology 19


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

Figure 4.1: Task Network

4.4.2. PROJECT SCHEDULE

The following table shows project schedule.

Table 4.2: Project Schedule


Period for Period for
Sr. Software or
Work Task Coding Testing
No. Technology used
(weeks) (weeks)
1. Learning and installation Books, tutorials 0 5
MS Visual Studio,
2. Designing the front end IBM Rational 2 1
Rose
MS Visual Studio,
3. Making a login screen 1 1
MS SQL Server
CL compiler, MS
4. Importing a compiler 1 1
Visual Studio
5. Building the cloud MS Visual Sudio, 10 1

PICT, Department of Information Technology 20


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

Windows Virtual
Machine
MS Visual Sudio,
6. Link the servers MS Loopback 1 1
Adapter
Project Report Generation and
7. MS Word 2010 N/A N/A
Finalization

4.4.3 TIMING DIAGRAM

The following diagram (as shown in figure 4.2) is the timing diagram of tasks
involved in project.

Figure 4.2: Timing Diagram

4.5. STAFF ORGANISATION

4.5.1. Team structure

PICT, Department of Information Technology 21


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

The team structure for the project is identified. Roles are defined. Our team consists
of 3 individuals namely Vibhor Singhal,Tanuj Vir,Prateek Aggarwal. We have decided to
keep the team structure highly flexible throughout the project. Each individual shall
contribute equally through all the phases of the project namely Problem Definition,
Requirements Gathering and Analysis, Design, Coding, Testing and Documentation.
The overall design issues will be primarily tackled by all team members. For every
stage in design each member shall be responsible for bringing relevant knowledge to the
discussion table following which there will be an identification and allotment of roles to each
individual towards development of a module, all in consultation with our internal and
external project guides.

The division of work shall change for every module of the software to be written as
per the requirements imposed by that module. However, keeping in mind that one of the key
goals of this project is trying to gain certain amount of expertise in the various areas of the
project, it shall be ensured that each individual is exposed to different tasks with a view to
enhance his knowledge.

In order to ensure that the project work goes in parallel, the team would be split and
work distributed among themselves. The distribution of work of individuals would also be
dynamic so that the aforementioned goal of knowledge enhancement is satisfied. In spite of
this work division cross team knowledge sharing would be encouraged so that each pair gets
to know what the other pair does.

4.5.2. Management reporting and communication


Mechanisms for progress reporting and inter/intra team communication are identified.
The teams shall be created dynamically as per requirements at different stages of the project.
The teams shall communicate every 2 days by actual meeting or through remote means of
communication like telephone, instant messaging or mail.
The project group will communicate with the internal guide every week or sooner as
per project requirements with a view to collectively plan out further development and
communicate the current status of the project.

4.6. TRACKING AND CONTROL MECHANISMS

4.6.1. Quality assurance and control

PICT, Department of Information Technology 22


Chapter 4 Online C/C++ COMPILER Using Cloud Computing

Quality control involves series of inspections, reviews, and tests used throughout the
software development process. Our gesture library is scalable. We will start with small and
direct use-cases for gestures and follow an incremental approach. Quality assurance consists
of set of auditing and reporting functions that assess the effectiveness and completeness of
quality control.

4.6.2. Change management and control


Change is inevitable when computer software is built. We use the SDLC paradigm.

PICT, Department of Information Technology 23

You might also like