MI0033 - Students SMU Assignments & Projects

advertisement
DRIVE -Spring2014
PROGRAM MBADS (SEM 3/SEM 5) MBAFLEX/ MBAN2 (SEM 3) PGDISMN (SEM 1)
SUBJECT CODE & NAME-MI0033- SOFTWARE ENGINEERING
BK ID-B1483 CREDIT-4 MARKS-60
Q.1. Process patterns are the results of applying abstraction to recurring processes and
process components. Process patterns are collections of general techniques, actions,
and/or tasks (activities) for developing object-oriented software. Justify the above
statement. Explain with an example for each, the different types of process patterns in the
ascending order of abstraction level.
( a. Justifying the above statement, b. Explaining the three types of process patterns, c. Examples) 1,6,3
ANS:
a) Justifying of the given statement
A process is a systematic activity in any project, where a defined set of inputs are given to generate the
required outputs. And the process patterns that are involved in a software development project. The term
‘pattern’ relates to the process of solving a problem using a template. It helps an individual to know what
to do, but not how to do. It is a way of reaching a solution for a common problem. We can conclude that
the process pattern is a set of tasks and techniques used to develop object oriented software. Process
patterns help in the construction of software processes in an organisation.
b) Explaining the three types of process patterns
The three types of process patterns are given below:
1. Task process pattern: Task process pattern provides a step by step procedure to do a specific
task.
For example- technical review, reuse of first process patterns
2. Stage process pattern: It involves steps, which are performed very often/iteratively for a single
project stage. We can consider the stage process pattern as a high level process pattern, which are
included in many task process patterns. This kind of process pattern finds its presence in every
stage of a software process.
For example- the object-oriented software process in the program stage.
3. Phase process pattern: A phase process pattern gives us the details pertaining to the
interactions that occur between the stage process patterns for a single project phase.
c) For example
The initiate phase and the delivery phase. The construct pattern is a combination /collection of two or
more stage process patterns. Most of the project phases are done in a serial manner and are similar to the
structure development and object development, for example the spiral model. In today’s world, an objectoriented program is considered as iterative only in small pilot projects while in the large projects it is
considered as a serial process3.
Q.2. Software estimation is the first phase of project planning and it is the process of
judging a software product and solving the problem associated with the software project.
We follow some important steps to achieve reliable cost and effort estimates. Explain the
different estimation models and estimation techniques.
( a. Explaining different estimation models, b. Explaining estimation techniques) 6,4
ANS:
a) Estimation models
As, software has become very expensive, large cost estimation errors will make a huge difference between
profit and loss and hence software estimation plays an important role in a software project management
activity. The different estimation models involved in a software project are:

Empirical estimation model: The empirical estimation model uses empirically derived
formulas in order to predict the data required for software project planning. These empirical data
are derived from the sample projects. Hence, this model is not very appropriate for all software
development environments and must be used only after analysing and deciding wisely.

The Constructive Cost Model (COCOMO): We can consider the constructive cost model or
COCOMO as a software cost estimation model. This model uses historical data as well as the
current project characteristics. In order to estimate cost, effort and schedule in a project, we use
COCOMO model.

Delphi model: The Delphi model is based on the soft skills like collecting information during a
group discussion. This model follows a systematic and interactive forecasting method and
depends on a panel of experts. A structured group of experts provide a more accurate solution
when compared to an unstructured group. The interaction is similar to face-to face
interviews/meetings. Hence, it is widely used for business forecasting.
b) Estimation techniques
After discussing about the estimation models, let us now discuss some techniques used for estimating
time and cost of a project. We use estimation techniques to solve problems in a project. The common
problems that a software project can face are the problems related to cost and effort. Therefore, it
becomes very necessary to incorporate the cost and the effort estimation techniques. We can use the
decomposition technique for project estimation. In the decomposition technique, we divide a
complicated problem in a project into several smaller and manageable units. Appropriate estimation
techniques are used on the basis of the scope of the software to be built. In the previous unit, we have
already discussed about the size-oriented and function-oriented metrics. These metrics speak about
the line of code and the function-point in a software project. So, let us now have a better
understanding about the way in which the Line of code and the Function point estimations are done.
The LOC and the FP are the two decomposition techniques used for estimating the effort in a software
project, as given in the table.
Q.3. Empirical software solutions is a small manufacture based company who have a single
product in the public access and security domain. The information system which they
possess gives details pertaining to the presence of individuals at specific locations and also
checks and issues security badges.
The software of the system is connected to specially designed hardware peripherals along
with a well-defined LAN network connection. The system handles several aspects ranging
from computing from database manipulation, peripheral hardware ti image handling. This
company uses both software as well as hardware, and incorporates latest technologies,
like networking and device drivers.
Due to the pressure from customers and the competition, they were in need of a structured
software process. There was no standardized development process. Most of their work was
based on customer requests. Every time a new request from customer came in, more
additions were made to the product. A new version of the software was installed at the
customer’s site when requested by the customer. All the queries related to technical
support, modifications made to the system were handled by the development team. There
was no specific design methodology followed and each developer used his own method of
working. Apart from the user manual, there was no other documentation found held.
Challenges: Introduction of reuse framework and method into the company Gain support
from the top management for the reuse program, as introduction of reuse program can
affect all parts of the software production process. Suggestions were made to set up the
reuse program along with the associated cost and risk involved in setting up the reuse
program.
a. Explain the challenges faced by the empirical software solutions
b. Give some suggestions to overcome the challenges.
c. Explain the classifications and advantages of software reuse.
( a. Listing the challenges, b. Suggesting some 4 point about, planning, design, resource management,
documentation, c. Classifications with diagram d. Listing the advantages) 1,4,3,2
ANS:
a) Listing the challenges

Planning and reviews

Design

Resource Management

Documentation
b) Some suggestions to overcome the challenges
Planning and reviews – Meetings were held on a regular basis, in order to plan before the
commencement of the project. As the project advanced, meetings were more focused on technical issues
to review what is being done so far, and also plan ahead for the next steps involved in the software
project.
Design – An object-oriented method of design was used to support software reuse, as it has the
provision for reusable design techniques and components in software development and maintenance
phase.
Resource Management – The developers stored the reusable code in the central reusable repository,
which could be accessed by all the employees in the company.
Documentation – Documentation process was efficiently done and well maintained to avoid
discrepancies. An incremental approach was carried out to introduce software reuse, so that working
practices could be slowly changed and at the same time fulfil the requirements of their customers.
c) Classifications with diagram
Classification of software reuse, we can classify software reuse into two categories, as shown in the figure.
Advantages of software reuse: We can consider software reuse as the most interesting concept in the
field of software development, as there are several advantages which an organisation can benefit on the
long run. We will now study about some of these advantages of software reuse.

We can systematically develop the reusable components.

We can use the systematic reuse of these components as the building block for creating new
systems.

We can cut software development time and costs.

We can increase software productivity.

We can shorten software development time.

We can improve software system interoperability.

We can develop software with fewer people.

We can move personnel more easily from project to project.

We can reduce software development and maintenance costs.

We can produce more standardised software.
Q.4. Suppose you are assigned the task to analyse the various factors involved in your
project, explain how will you gather information and analyse the task.
(Explaining system analysis) 10
ANS:
System Analysis
‘System analysis’ is supposed to be an activity which covers up most of the activities of computer system
engineering. System analysis mainly focuses on the elements of the system, rather than the software. We
conduct a system analysis on the basis of the following objectives:

Determine the needs of the customer.

Assess the system concept for workability.

Carry out economic and technical analysis.

Distribute functions to hardware, software, people, database and other elements of the system.

Set up cost and schedule constraints.

Create a system definition that makes the basis for all consecutive engineering work.
In order to meet these objectives, system engineer must be an expert in the field of hardware, software
and also database and human engineering. It has been listed by the industry professionals that, time and
effort are the most important factors in the system analysis stage, as they are considered to bring out
more profits to the organisations in the long run. The three important questions that arise while
performing system analysis are:

How much effort should be expended on analysis and definition for systems and software?

Who does it?

Why is it so difficult?
Let us now make note of some of the important steps used in system analysis. They are:

Identification of need: Identifying the need is the first step in the system analysis process. The
analyst or the system engineer gathers the requirements of the project. The ‘customer needs’ and
the ‘customer wants’ are differentiated appropriately. The features which are critical to the
system’s success are the customer needs, while the features which are just added and not really
essential for the functioning of a system are called the customers wants. The detail of the
information, which is gathered during this step, is specified in the “system concept document”.

Feasibility study: Feasibility study deals with the evaluation of the resources and time. Risk
analysis is conducted to know how the risk could affect the software process, so that appropriate
steps could be taken to enhance software quality.

Economic analysis: Economic analysis deals with the cost-benefit analysis, so that correct
assessment is made for the software project. The cost-benefit analysis brings out the cost involved
for the software project and also the benefits of the software system. The analysis is based on the
size of the project, which is to be developed along with the desired investment and strategic plan
of the organisation.
Q.5. Write short note on 3,3,2,2
a. Unit testing
b. System testing
c. Debugging
d. Verification and validation
ANS:
a) Unit Testing
To understand unit testing, let us first understand ‘what is a unit?’ The smallest building blocks of
software are called as units. Units are made up of individual functions in a language like C. We can
define ‘unit testing’ as the method of validating small basic blocks of a complicated system, prior to
testing of an integrated big module or the whole system. We will now have a quick overview of the
benefits of unit testing. Unit testing is able to:

Test parts of a project without waiting for the other parts to be present.

Accomplish parallelism in testing, by being able to test and fix problems all together by many
engineers.

Trace and remove defects at a much low cost as compared to other later stages of testing. The cost
comprises the effort taken for organising the test cases, executing the test cases, analysing the
results, and fixing the defects.

Take advantage of a number of formal testing techniques present for unit testing.

Simplify debugging by restraining to a small unit, the probable code areas in which to detect for
bugs.

Test internal conditions that cannot be reached easily by external inputs in large integrated
system.

Accomplish high level of structural coverage of the code.

Prevent lengthy compile-build-debug cycles, while debugging complex problems.
b) System Testing
The system testing is conducted based on unit and integration testing. It is a very important step in
quality management process. For system testing the following are the prerequisites:

Unit test should be conducted on all the components.

Integration testing is conducted after integration of all components.

Complete the testing.

Create an environment resembling the production environment.
Let us discuss the steps carried out to do system testing. The following are the steps:
1. The first step is to create a test plan.
2. The second step is to create test cases.
3. The third step is to build data which is used as input for testing.
4. The fourth step is to create scripts if required to build environment and to automate execution of test
cases.
5. The fifth step is to execute test cases.
6. In sixth step bugs are fixed if present and code is re-tested.
7. In seventh step repeat the test cycle.
c) Debugging
To debug a program or hardware device, we should start with a known problem, segregate the source of
the problem, and later fix it. An important process in software or hardware development process is
debugging. Debugging is carried out regularly throughout the process for complicated products. After
debugging is finished, the software program is released for a general use. Though the product is released
after thorough debugging, debugging continues as a maintenance practice for the product’s life.
Verification and Validation: We cannot test quality directly, so we test related factors to make quality
visible. Quality consists of certain factors. Good testing evaluates all relevant factors. For the testing to be
effective, it should evaluate each relevant factor and thus compelling quality to become substantial and
visible. Tests which aim at validating the product are called clean tests or positive tests. There is
something called negative tests which aims at breaking the software or showing that the program does
not work. The software should have good number of handling capabilities to survive a significant level of
negative tests.
Q.6. Briefly describe the concept of polymorphism by using the automobile class as an
example.
(a. Explaining the example of automobile class, b. Describing the concept of polymorphism, c. Explaining
polymorphism using the above example) 3, 2, 5
ANS:
a) The example of automobile class
The ability to associate many meanings with one method name is polymorphism.It Accomplished
through a mechanism known as late binding or dynamic binding. n example would be:
A "vehicle" class can be a part of a inheritance heirachy where derived classes are "sedan" and "SUV".
Derived from "sedan" could be "Corolla", and derived from "SUV" could be "Pathfinder".
CAR
/
SUV SEDAN
/
PATHFINDER COROLLA
Now, using such an example, it is true that any object below in a hierarchy is also something that is
directly up in the hierarchy. Hence, Pathfinder "is a" SUV, and SUV "is a" CAR. Also, Pathfinder "is a"
CAR.
Hence, using pointers of Base classes (higher in an inheritance hierarchy) can be assigned to objects
of derived classes and can be used in a unified manner with the use of virtual functions. Hence,
Polymorphism.
d) Describing the concept of polymorphism
In programming that is object-oriented, polymorphism is a generic term that means ‘many or we can say
more than one shapes’. This is derived from the Greek word that means “having multiple forms’. The
characteristic of being able to allocate a different meaning or usage to something in different contexts
specifically, to allow an entity such as a variable, a function or an object to have more than one form, is
defined as polymorphism.
c) Explaining polymorphism using example
"Poly" means "many" and "morph" means "form". Polymorphism is the ability of an object (or reference)
to assume (be replaced by) or become many different forms of object.
Example: function overloading, function overriding, virtual functions. Another example can be a plus ‘+’
sign, used for adding two integers or for using it to concatenate two strings.
Download