MC0084 Assignment Spring 2013

9
Q1. What is project management? Explain various activities involved in project management. Answer: Project management is a systematic method of defining and achieving targets with optimized use of resources such as time, money, manpower, material, energy, and space. It is an application of knowledge, skills, resources, and techniques to meet project requirements. Project management involves various activities, which are as follows: 1. Work planning: A manager must decide what objectives are to be achieved, what resources are required to achieve the objectives, how and when the resources are to be acquired and how the objectives are achieved. 2. Resource estimation: Resource estimation is another crucial task of the project manager. A resource can be software, hardware, human personnel, capital etc. Resource estimation involves the planning of required resources for the given tasks in the given period of time. Optimum utilization of these resources is the ultimate goal of the manager. 3. Organizing the work: Organizing involves clear lines of authority and responsibility for groups of activities that achieve the goals of the enterprise. 4. Acquiring resources such as manpower, material, energy, and space: It deals with hiring personnel other resources which are needed to complete the task. 5. Risk assessment: Risk is associated with several issues. It can be technical, methodology or financial one. Manager needs to plan from the starting of the project, to handle unexpected or sudden occurrence of risks. 6. Task assigning: This involves identification of task and allocation of required resources to fulfill the given task. For example, identification of skilled personnel to solve the given task. 7. Controlling the project execution: Controlling consists of measuring and correcting activities to ensure that the goals are achieved. Controlling requires the measurement against plans and taking corrective action when development occurs. 8. Reporting the progress: After assigning the tasks to the team members, it is essential to track and monitor the work progress. The work progress is documented at regular intervals 9. Directing the activities: Directing involves leading subordinates. The goal of directing is to guide the subordinates and to understand and identify the organizational structure and goals of the enterprise.

description

MC0084-Assignment-Spring-2013

Transcript of MC0084 Assignment Spring 2013

Page 1: MC0084 Assignment Spring 2013

Q1. What is project management? Explain various activities involved in project management.Answer: Project management is a systematic method of defining and achieving targets with optimized use of resources such as time, money, manpower, material, energy, and space. It is an application of knowledge, skills, resources, and techniques to meet project requirements. Project management involves various activities, which are as follows:

1. Work planning: A manager must decide what objectives are to be achieved, what resources are required to achieve the objectives, how and when the resources are to be acquired and how the objectives are achieved.

2. Resource estimation: Resource estimation is another crucial task of the project manager. A resource can be software, hardware, human personnel, capital etc. Resource estimation involves the planning of required resources for the given tasks in the given period of time. Optimum utilization of these resources is the ultimate goal of the manager.

3. Organizing the work: Organizing involves clear lines of authority and responsibility for groups of activities that achieve the goals of the enterprise.

4. Acquiring resources such as manpower, material, energy, and space: It deals with hiring personnel other resources which are needed to complete the task.

5. Risk assessment: Risk is associated with several issues. It can be technical, methodology or financial one. Manager needs to plan from the starting of the project, to handle unexpected or sudden occurrence of risks.

6. Task assigning: This involves identification of task and allocation of required resources to fulfill the given task. For example, identification of skilled personnel to solve the given task.

7. Controlling the project execution: Controlling consists of measuring and correcting activities to ensure that the goals are achieved. Controlling requires the measurement against plans and taking corrective action when development occurs.

8. Reporting the progress: After assigning the tasks to the team members, it is essential to track and monitor the work progress. The work progress is documented at regular intervals

9. Directing the activities: Directing involves leading subordinates. The goal of directing is to guide the subordinates and to understand and identify the organizational structure and goals of the enterprise.

10. Project Closure meet: Project closure describes the overall project details. The details can be conveyed through closure reports. Ex. Performance reports, testing reports and project completion reports.

Q2. Describe the following with respect to Estimation and Budgeting of Projects:a. Software Cost Estimation and Methods b. COCOMO model and its variations

Answer: a. Software Cost Estimation and MethodsA number of methods have been used to estimate software cost.Algorithmic Models: These methods provide one or more algorithms which produce a software cost estimate as a function of a number of variables which relate to some software metric (usually its size) and cost drivers.Expert Judgment: This method involves consulting one or more experts, perhaps with the aid of an expert-consensus mechanism such as the Delphi techniqueAnalogy Estimation: This method involves reasoning by analogy with one or more completed projects to relate their actual costs to an estimate of the cost of a similar new project.Top-Down Estimation: This method involves an overall cost estimate for the project is derived from global properties of the software product. The total cost is then split up among the various components.

Page 2: MC0084 Assignment Spring 2013

Bottom-Up Estimation: Each component of the software job is separately estimated, and the results aggregated to produce an estimate for the overall job.Parkinson's Principle: A Parkinson principle ('Work expands to fill the available volume") is invoked to equate the cost estimate to the available resources.Price to Win: The cost estimation developed by this method is equated to the price believed necessary to win the job. The estimated effort depends on the customer's budget and not on the software functionalityBottom-Up Estimation: Each component of the software job is separately estimated, and the results aggregated to produce an estimate for the overall job.

Cost Estimation Guidelines Assign the initial estimating task to the final developers. Delay finalizing the initial estimate until the end of a thorough study. Anticipate and control user changes. Monitor the progress of the proposed project. Evaluate proposed project progress by using independent auditors. Use the estimate to evaluate project personnel. Computing management should carefully approve the cost estimate. Rely on documented facts, standards, and simple arithmetic formulas rather than guessing,

intuition, personal memory, and complex formulas. Don't rely on cost estimating software for an accurate estimate.

b. COCOMO model and its variationsConstructive Cost Model (COCOMO) is a method of estimating the number of man-months it will take to develop a software product. There are three levels in the COCOMO:

1) Basic COCOMO - is a static, single-valued model that computes software development effort (and cost) as a function of program size expressed in estimated lines of code.

2) Intermediate COCOMO - computes software development effort as function of program size and a set of "cost drivers" that include subjective assessment of product, hardware, personnel and project attributes.

3) Detailed COCOMO - incorporates all characteristics of the intermediate version with an assessment of the cost driver's impact on each step (analysis, design, etc.) of the software engineering process.

Q3. What is project scheduling? Explain different techniques for project scheduling.Answer: Project SchedulingProject scheduling is concerned with the techniques that can be employed to manage the activities that need to be undertaken during the development of a project.Scheduling is carried out in advance of the project commencing and involves:

Identifying the tasks that need to be carried out; Estimating how long they will take; Allocating resources (mainly personnel); Scheduling when the tasks will occur.

Once the project is underway control needs to be exerted to ensure that the plan continues to represent the best prediction of what will occur in the future:

Based on what occurs during the development; Often necessitates revision of the plan.

Page 3: MC0084 Assignment Spring 2013

Effective project planning will help to ensure that the systems are delivered: Within cost; Within the time constraint; To a specific standard of quality.

Two project scheduling techniques will be presented, the Milestone Chart (or Gantt Chart) and the Activity Network.Milestone ChartsMilestones mark significant events in the life of a project, usually critical activities which must be achieved on time to avoid delay in the project.Milestones should be truly significant and be reasonable in terms of deadlines (avoid using intermediate stages).

Examples include: Installation of equipment; Completion of phases; File conversion; Cutover to the new system

Gantt Charts A Gantt chart is a horizontal bar or line chart which will commonly include the following

features: Activities identified on the left hand side; Time scale is drawn on the top (or bottom) of the chart; A horizontal open oblong or a line is drawn against each activity indicating estimated duration; Dependencies between activities are shown; At a review point the oblongs are shaded to represent the actual time spent (an alternative is to

represent actual and estimated by 2 separate lines); A vertical cursor (such as a transparent ruler) placed at the review point makes it possible to

establish activities which are behind or ahead of schedule.

Activity NetworksThe foundation of the approach came from the Special Projects Office of the US Navy in 1958. It developed a technique for evaluating the performance of large development projects, which became known as PERT - Project Evaluation and Review Technique. Other variations of the same approach are known as the critical path method (CPM) or critical path analysis (CPA).The heart of any PERT chart is a network of tasks needed to complete a project, showing the order in which the tasks need to be completed and the dependencies between them.

Example of Activity NetworkThe diagram consists of a number of circles, representing events within the development lifecycle, such as the start or completion of a task, and lines, which represent the tasks themselves. Each task is additionally labeled by its time duration. Thus the task between events 4 & 5 is planned to take 3 time units. The primary benefit is the identification of the critical path.The critical path = total time for activities on this path is greater than any other path through the network (delay in any task on the critical path leads to a delay in the project).Tasks on the critical path therefore need to be monitored carefully.The technique can be broken down into 3 stages:1. Planning:

Page 4: MC0084 Assignment Spring 2013

Identify tasks and estimate duration of times; Arrange in feasible sequence; Draw diagram.

2. Scheduling: Establish timetable of start and finish times.

3. Analysis: Establish float; Evaluate and revise as necessary.

Q4. Explain the Mathematics in software development? Explain its preliminaries alsoAnswer: Mathematics in Software Development:Mathematics has many useful properties for the developers of large systems. One of its most useful properties is that it is capable of succinctly and exactly describing a physical situation, an object or the outcome of an action. Ideally, the software engineer should be in the same position as the applied mathematician. A mathematical specification of a system should be presented, and a solution developed in terms of a software architecture that implements the specification should be produced. Another advantage of using mathematics in the software process is that it provides a smooth transition between software engineering activities. Not only functional specifications but also system designs can be expressed in mathematics, and of course, the program code is a mathematical notation – albeit a rather long-winded one.The major property of mathematics is that it supports abstraction and is an excellent medium for modeling. As it is an exact medium there is little possibility of ambiguity: Specifications can be mathematically validated for contradictions and incompleteness, and vagueness disappears completely.In addition, mathematics can be used to represent levels of abstraction in a system specification in an organized way. Mathematics is an ideal tool for modeling. It enables the bare bones of a specification to be exhibited and helps the analyst and system specifies to validate a specification for functionality without intrusion of such issues as response time, design directives, implementation directives, and project constraints. It also helps the designer, because the system design specification exhibits the properties of a model, providing only sufficient details to enable the task in hand to be carried out. Finally, mathematics provides a high level of validation when it is used as a software development medium. It is possible to use a mathematical proof to demonstrate that a design matches a specification and that some program code is a correct reflection of a design. This is preferable to current practice, where often little effort is put into early validation and where much of the checking of a software system occurs during system and acceptance testing.

Mathematical PreliminariesTo apply formal methods effectively, a software engineer must have a working knowledge of the mathematical notation associated with sets and sequences and the logical notation used in predicate calculus. The intent of the section is to provide a brief introduction. For a more detailed discussion the reader is urged to examine books dedicated to these subjects

Sets and Constructive SpecificationA set is a collection of objects or elements and is used as a cornerstone of formal methods. The elements contained within a set are unique (i.e., no duplicates are allowed). Sets with a small number of elements are written within curly brackets (braces) with the elements separated by commas. For example, the set {C++, Pascal, Ada, COBOL, Java} contains the names of five programming languages. The order in which the elements appear within a set is immaterial. The number of items in a set is known as its cardinality. The # operator returns a set's cardinality. For example, the expression #{A, B, C,

Page 5: MC0084 Assignment Spring 2013

D} = 4 implies that the cardinality operator has been applied to the set shown with a result indicating the number of items in the set. There are two ways of defining a set. A set may be defined by enumerating its elements (this is the way in which the sets just noted have been defined). The second approach is to create a constructive set specification. The general form of the members of a set is specified using a Boolean expression. Constructive set specification is preferable to enumeration because it enables a succinct definition of large sets. It also explicitly defines the rule that was used in constructing the set. Consider the following constructive specification example: {n : _ | n < 3 . n} This specification has three components, a signature, n : _, a predicate n < 3, and a term, n. The signature specifies the range of values that will be considered when forming the set, the predicate (a Boolean expression) defines how the set is to be constricted, and, finally, the term gives the general form of the item of the set. In the example above, _ stands for the natural numbers; therefore, natural numbers are to be considered. The predicate indicates that only natural numbers less than 3 are to be included; and the term specifies that each element of the set will be of the form n.

Therefore, this specification defines the set {0, 1, 2} When the form of the elements of a set is obvious, the term can be omitted. For example, the preceding set could be specified as (n: _ | n < 3} All the sets that have been described here have elements that are single items. Sets can also be made from elements that are pairs, triples, and so on. For example, the set specification {x, y: _ | x + y = 10. (x, y2)} describes the set of pairs of natural numbers that have the form (x, y2) and where the sum of x and y is 10. This is the set {(1, 81), (2, 64), (3, 49), . . .} Obviously, a constructive set specification required to represent some component of computer software can be considerably more complex than those noted here. However the basic form and structure remains the same.

Q5. What is debugging? Explain the basic steps in debugging?Answer: Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge in another. Many books have been written about debugging, as it involves numerous aspects.

Step 1: Identify the error.This is an obvious step but a tricky one, sometimes a bad identification of an error can cause lots of wasted developing time, is usual that production errors reported by users are hard to be interpreted and sometimes the information we are getting from them is misleading.Step 2: Find the error.Once we have an error correctly identified, is time to go through the code to find the exact spot where the error is located, at this stage we are not interested in understanding the big picture for the error, we are just focused on finding it. A few techniques that may help to find an error are:Logging: It can be to the console, file… It should help you to trace the error in the code.Debugging: In technical sense it means, turning on whatever the debugger you are using and stepping through the code.Step 3: Analyze the error.This is a critical step, use a bottom-up approach from the place the error was found and analyze the code so you can see the big picture of the error, analyzing a bug has two main goals: to check that around that error there aren’t any other errors to be found (the iceberg metaphor), and to make sure what are the risks of entering any collateral damage in the fix.Step 4: Prove your analysis

Page 6: MC0084 Assignment Spring 2013

This is a straight forward step, after analyzing the original bug you may have come with a few more errors that may appear on the application, this step it’s all about writing automated tests for these areas (is better to use a test framework as any from the xUnit family).Once you have your tests, you can run them and you should see all them failing, that proves that your analysis is right.Step 5: Cover lateral damage.At this stage you are almost ready to start coding the fix, but you have to cover your ass before you change the code, so you create or gather (if already created) all the unit tests for the code which is around where you will do the changes so that you will be sure after completing the modification that you won’t have break anything else. If you run this unit tests, they all should pass.Step 6: Fix the error.That’s it; finally you can fix the error!Step 7: Validate the solution.Run all the test scripts and check that they all pass.

Q6. What is a fish bone diagram? How is it helpful to the project management?Answer: Fishbone diagram, a brainchild of Dr. Kaoru Ishikawa, is an analysis tool that provides a systematic way to look at the potential factors causing a particular effect. It’s quite difficult to resolve complicated problems without considering the cause-and-effect relationship between involved factors. It is referred to as ‘Fishbone diagram’ because the diagram resembles the skeleton of a fish.To facilitate easy identification of the key relationship among various variables, Ishikawa grouped all the causes into two major categories:

1. The 6Ms (for manufacturing industry) Manpower Machines Methods Measurements Materials Management/Money power

2. The 4Ps (for service industry) Policies Price People Quality

Role of Fishbone Diagram in Project ManagementFishbone diagrams primarily show the root causes of an event, e.g. quality failures. Therefore they are of vital importance in project management through project quality plan, fault detection, and task management.The proactive project managers apply fishbone diagrams for early planning, especially when gathering factors, and to identify hidden factors that can play significant role in the project. It is also used in mapping the operation, business process modeling and business process improvement.

Tips to Successfully Build a Fishbone Diagram Make sure that all the team members agree on the problem statement prior to beginning. Consider all the possible factors for casualty and label them properly. Split the overcrowded categories.

Page 7: MC0084 Assignment Spring 2013

Merge the empty branches with others. Study the root causes that are most likely to merit deeper investigation.