Liviu William Doroftei, Ph.D.
____________________________________________________________
Email: dr.livius@writeme.com
http://www.webspawner.com/users/drlivius/
Mailing Address: 128 East Broadway, NYC, NY 10002 - 0690
_____________________________________________________________
Questionnaire: Software Development Management
1) Give me an example of your largest project, using cost, budget size
scope of deliverables, staffing, or other. (It would be good to give two
examples for comparison).
How many projects would you say you have worked on total? How many of
these were "external" vs. "internal" projects?
A1: All projects can be described as "internal"
A1: I am / was in charge of several medium to large
programming/management projects:
I. Software Development and QA Management:
1. Productivity measurement is difficult to do manually. The software
managers can get the information about how many lines/words of their
systems using system commands, but for precisely measuring the
productivity and maintainability of their systems, they need more
information such as the percentage of blank lines and comment lines
in a system and an individual module.
2. Project development progress is much difficult to measure without an
automatic tool, because the managers need to know not only how many
modules completed on time since a given date and how many modules are
finished by a group or an individual, but also need the more detailed
information about those modules such as the code complexity and test
coverage.
3. The information reported to the managers about the productivity and
progress of a system development is often out of date. Software
managers need the first-hand information rather than second hand
information. But most schedule management tools available on the market
are too simple which can help the managers draw very nice schedule
charts but can not help them evaluate the system maintainability and
quality. Only considering the progress about the system development
schedule without knowing the maintainability and quality will mislead
the managers making decision and cause problems later. A system
combining the capability of system quality analysis and the capability
of system management is esential.
4. Most software quality measurement tools are much difficult to use
than schedule management tools. The lack of a software tool which
provides the capability of system quality analysis and the capability
of system development productivity and progress management together and
is easy to use as a schedule management tool makes software managers in
trouble.
My role and solutions:
1. Helped software managers measure the productivity of their
development team precisely by providing them the capability of
multi-level compactness analysis including system/file/class/function
compactness analysis, reports them not only how many source lines in a
system/file/class/function, but also the percentage of blank and
comment lines.
3. Provided managers the capability to measure their project
development progress with quality analysis, allows them to highlight
all modules completed after a given date or by a group/ individual
directly on the generated class inheritance charts, and function call
graphs with the related quality information shown in bar graphs
overlaid on each class/function box, such as the size, complexity,
performance data, and code test coverage.
4. Performed the capability of software system quality analysis and the
capability of system development management together, makes the
information provided to the managers about their productivity and
project development progress with the quality data always be current
and accurate because it is the first- hand information come directly
from the source code. Used internal incremental repositories to
automatically updates the related information when their systems are
modified.
5. Make use of various management tools that Motif/Openlook graphic
user interface and the full automation of software analysis and graphic
result representation from input to output. From input, the only thing
managers need to do is to give me the name of a project makefile to
built the information repository. In the output what managers need to
do is to tell me what kind of information and in what kind of format
they want to have.
II. Project: New team member training
Problems:
1. Training new members of a development team is expensive because it
takes a lot of time for the project managers and software engineers to
prepare the training material about the software system they are
working on, and to teach the new members. It is why sometimes the new
member training may delay the development schedule of a project being
developed by the team.
2. It often takes too long period of time for the new members to be
able to begin work with the system, because the new member must have
general understanding of the whole system, and deep understanding of
some source code and global data related to the tasks assigned to them.
Often the materials given to the new members do not correspond to the
code. So those materials are not useful for them to learn the system,
and sometimes may bring the new members confusion about how the system
works.
3. Letting the new members learn a software system by themselves
without a helpful tool often makes them shaking because a software
system may be very complex and the new members may even have no idea
where should they begin to learn.
4. Learning an Object-Oriented software system is quit different from a
traditional function-based system. Often the size of a program written
in the C++ programming language after preprocess can be twenty times
bigger than the size of the original source code because many head
files are involved and a lot of classes are used or indirectly reused
from the library. Without knowing the behavior of classes used in a
system though an automatic tool, the new members can not understand an
OO system in depth.
My role and solutions:
1. Reduced the cost in training new members of a software development
team greatly by freeing the designers and software engineers from
preparing the training materials because I provided the capability of
the most comprehensive static and dynamic analysis of the system to
extract various information and document the system automatically, and
makes the information extracted on-line accessible to the new members,
saves a lot of the designers and engineers' time from teaching the new
members step by step using a lot of document materials to teach them
using a software to get and use the information on-line (usually it
only takes one day of an engineer).
2. Shortened the training time to make the new members be able to begin
work on the tasks assigned to them by providing current and accurate
various system overview charts and diagrams (including the data
structures, class inheritance charts, function call graphs, and program
trees), the detailed reports of global/static data analysis, and the
detailed program logic diagrams and control flow diagrams of the source
code to help them have general understanding of the system and deep
understanding of the code related to their tasks quickly.
3. Made easy for the new members of a team to train themselves because
the ease of use of management software with its XMotif/Openlook GUI
interface, the capability of dynamically and graphically representing a
system from top-level down to detailed code, and the capability of
linking different level charts and diagrams together.
4. Provided both capabilities of function-based. analysis and
diagramming, and class-based analysis and diagramming to make an OO
system also easy to understand in depth.
III. Project: Customized system explanation and acceptance review
Problems:
1. It is difficult to describe a customized system to the customer and
make him satisfied with the system the customer requested. It takes a
lot of developers' time to prepare the documents, and needs many people
from the managers, designers, and programmers get involved. It needs to
provide a complete set of documents about the system structure design,
the static characters and dynamic characters including the complexity,
maintainability, performance, reliability, and much more. It is almost
impossible to complete all of the system documents manually without
automatic tools.
2. Ensuring consistency between the documents and the source code is
very difficult because the design documents are often done manually
using graphic editors by designers, but the code is written using C/C++
programming language by programmers who often find there is a need to
modify the system structure by adding new function calls or deleting
some function calls.
3. Most document tools generate function-based documents only without
the capability to generate class-based documents, so those tools are
hard to use to document an Object-Oriented system.
4. Often the acceptance process of a customized system takes long
period of time to complete because almost all document tools available
on the market generate static documents only which need a lot of disk
space to store, take a lot of time to locate the required information,
and only tell the customers what have done but not what the customers
can do with the documents (not only with the source code), and often
are not on-line accessible. So the customer needs to have a lot of
people to read and analyze those documents and the code before they can
make a decision to accept the system and they believe that they can
maintain the system.
My role and solutions:
1. Made it easy to describe a customized system to the customer by
generating multi-level documents automatically though the analysis of
system structure/class/function/data/complexity/performance/test
coverage.
2. Ensured consistency between the various system documents and the
source code because those documents are all come directly from the
source code, including the generated class inheritance charts, function
call graphs, program trees of an entire system or any sub-systems, the
multi-level cross references, the system static and dynamic analysis
and test reports, etc.
3. Offered the system developers the capability of Object-Oriented
system analysis, generates not only function-based charts and reports,
but also class/object-based various charts and reports which are more
useful for describing a customized system developed using C++.
4. Speeded up the system acceptance process by making the system much
easy to understand and maintain using the Dynamic Graphic
Representation Technique. INSTEAD OF PROVIDING HUGE STATIC DOCUMENTS TO
THE CUSTOMER, the developer can PROVIDE THE SYSTEM REPOSITORY WITH AN
EXTRA LICENSE to the customer, so the customer can review and verify
the system by themselves on-line and visually. The size of the
repository will be 1/10 to 1/100 smaller than the corresponding static
document materials depending on how detailed the information provided.
For example, to show what function may be affected by modifying each
function in a system with thousand functions, many static pictures are
needed using static graphic representation technique, but only one
active function call graph using the dynamic graphic representation
technique with the capability to highlight each function and all
related functions on-line.
IV. Two other Eng. / Management projects on Document and WorkFlow
Management systems
2) What role did you have in these projects? How technical was the
role'?
A2: Ranging from Lead Engineer to Systems Manager
3) Were you responsible for costing and Change Order Management (COM)
A3: Affirmative ( see above text )
4) What role did you play in the written proposals for this/these
projects?
A4: I made/make and approved proposals
5) Which Life Cycle Methodologies did you use?
A5: Several , ranging from classic life cycle; waterfall model to the
spiral model. Also, some experience or limitted knowledge of 4GT; 4GL
6) What involvement did you have in estimating, then in planning the
project?
A6: Lead role ( see above text )
7.) Which kinds of legacy systems are you familiar with?
How many years experience with these? How many projects have you
managed with these legacy systems?
A7: CASE, CAD
A7: less than a year. One (1)
8) What kinds of emerging technologies have you had experience with'?
A8: AI - Artificial Neural Networks and 4GL
A8: Familiar with the majority of Microsoft products in the Software
Development field
9) How many projects have you managed with client server architecture?
Were these two or three tiers?.
A9: Three were client server
A9: If this question refers at the underlaying network architecture.
All Document and Forms Management Systems run on multy-tired network
configurations.
10) Have you done projects that included communication systems? (which
kinds of systems?)
A10: Affirmative, Fax for DOS, Windows, and Unix
11) How were you involved in the testing on your projects?
a.) Developed the testing plan? b.) Managed the testing product? c.) Passed the testing
phase onto another group?
A11: a and b ( I am in charge of the QA Dept. for a windows product )
Did you oversee, or evaluate the testing after it was completed?
A11: Affirmative
12) Which kinds of RDBMS' are you familiar with, and would you describe
your experience as high level, moderate, or deep?
a.) Oracle
b.) DB/2, DB/2/6000; DB/2 moderate
c.) Sybase
d.) Informix: A: moderate
e.) Other
A12: SQLs, DB/IV, Paradox high level
13) Which software applications are you familiar with? Would you
describe your experience as high level, moderate, or extensive?
A13: I am familiar with the majority of major Application Software
ranging from compilers; for all platforms to document management software and word
processors.
William L. Doroftei, Ph.D. |
William L. Doroftei, Ph.D. |
The Consulting Group |
Send E-Mail to: dr.livius@writeme.com