Review Question Set I
- What are the 2 major sources of application software?
There are 2 sources of application software:
- Commercial software vendors
- Customized software developed in-house or by an independent programming
contractor
- Under what circumstances will a commercial application software package
be appropriate? Under what circumstances will customized software be
appropriate?
Some commercial application software are generic and multifunctional
allowing users to program the software to their particular needs while others
are application specific. These commercial application software packages
will be appropriate to automate basic business functions that do not vary
from one organization to another.
Customized software will be appropriate when the business functions
cannot be supported by off-the-shelf software, so one will have to be
customized or build to fit the systems design. Original or customized
software are developed by people who either work for the enterprise or for
contractors.
- List and briefly discus the advantageous and disadvantages of
commercial software packages.
The advantages of commercial software packages are:
- Rapid Implementation
The software is ready, tested and documented and an organization can
implement a purchased package far more quickly than if it developed the same
program in-house or had it developed by an independent contractor.
- Cost saving
Total costs of a commercial package should be lower than those of a similar
customized program because one package is sold to many organizations. Thus,
spreading the costs over many users.
- Time and costs estimates
The cost of a commercial package is known and its implementation date is
easily estimated.
- Reliability
The commercial software package is tested rigorously before released to the
general market. Through extensive usage by a number of organizations, any
errors discovered would have been detected and corrected.
The disadvantages of commercial software packages are:
- Poor systems design match
Commercial software packages are written for many organizations, not for
specific organization, the package will either have sound functions not
required or will not have functions that are required. If businesses are not
able to customize the software packages, the systems design will have to be
changed to fit the package.
- Vendor dependent
The organization is dependent on the vendor for support. The organization
is at risk if the vendor goes out of business and changes are needed in the
package.
- Indirect costs from crashing Software Development Life Cycle (SDLC).
In some instances management may by-pass SDLC phases and go immediately to a
commercial package. The leading priority of the quick-fix strategy is to get
the technical system up and running and to deal with specific user
requirements, training and to deal with systems and organization problems
later. Often what is gained by not performing a complete SDLC is given back
and more, in increase costs of implementation, operations and maintenance.
- Why should a performance-oriented RFP(Request For Proposal) be prepared
for commercial software vendors? What should this RFP contain?
A performance-oriented RFP is prepared for commercial software vendors
so that a good evaluation is done and the best choice is made in the
requisition of commercial software packages from vendors.
The RFP should contain the main evaluation factors -- meeting detailed
design specifications for output, input, processes and controls specified
during detailed design. It should meet time and cost constraints. Also the
use of a benchmark that simulates the new systems requirements should be
applied on each vendor's packages.
- List and define the general performance factors used to evaluate
commercial software.
The general performance factors used to evaluate commercial software
are:
- Operating performance
This performance rating is done from benchmarks run on the packages
measuring such things as transactions per second (TPS) and response time (RT).
- Documentation
This rating reflects the quality and quantity of both written and on-line
procedures, including a quick start guide, on-line tutorials and help
features. Poor organization, missing information, incomplete indices,
and ambiguities lower the rating.
- Ease of learning
The rating for this performance factor depends on the user interface and the
intuitive design of the package.
- Ease of use
This performance factor is function of the package design. It determines how
easy the average user finds the package once the basics have been mastered.
- Controls and error handling
This rating check that controls, especially the input controls that should be
embedded in the program logic. These controls check input for range,
reasonableness and other values; access and compare values in identification
(or validity) tables; and recompute check digits. All errors should generate
clear error messages.
- Support
This performance factor is divided into policies and technical categories.
Support policies include too-free lines, warranties, money-back guarantees,
and training. Technical support comes from available and knowledgeable
technicians.
- Define the Software development life cycle (SWDLC). Briefly describe each
phase. What is the 40-20-40 rule?
SWDLC is a component of the SDLC. In systems that require the development
of software based on the systems design created by the SDLC, the SWDLC is
initiated. The SWDLC provides a reference set of expected phases necessary to
develop the software. They contain or describe the tasks and procedures that
must be performed in each phase; deliverables produced by each phase; and
metrics for setting schedules, estimating costs, and measuring productivity.
The SWDLC also provides a standard operating procedure and framework that
supports a structured, engineered approach to software development.
Building programs follows a 3 phase SWDLC of design, coding and testing.
- Design
This phase is where the parts of the detailed systems design that will be
converted to an application program are designed at a level that can be used
by a programmer to write the code, for example, code the program in C or
COBOL.
- Code
The coding phase maps the design into program procedures.
- Test
All modules of code are subject to a variety of tests to detect and remove
errors. After thorough testing, the program is converted to operations.
The 40-20-40 rule emphasizes strong front-end design (40%)
and back-end testing (40%), whereas the mechanical programming (coding)
task is de-emphasized (20%).
- Explain how large software development projects can cause problems of
design coordination and communications.
If large software development projects do not have good coordination,
integration and communication, the continuity will be lost; the final system
designed might be far different from what was originally intended. Problems of
design coordination and communications will also result from developing
systems in a haphazard manner without clear documented deliverables, project
control and integration of skills.
- Explain how excessive communication paths and interfaces among team
members can cause a decrease in productivity. Give an example.
Communication takes time and eats into productivity. Also most coding and
design errors occur at the interfaces. The nature of any kind of development
work is such that restart time is 30 or more minutes after each interruption.
Therefore, the more communication paths and interfaces, there will be more
interruptions; and less productivity.
An example is as follows:
The program development team is composed of 2 designers, 1 programmer and
2 testers. The major communication paths are between the designers and the
programmers, and between the programmers and the testers. The team manager is
involved only in the summary and performance information communication path
and interfaces. So there are five communication paths and interfaces for
actual work and 1 management interface. Compared to the 5 member egoless
programming team, which has (5x4)/2 = 10 communication paths and interfaces.
The egoless programming team will have much less productivity than the
program development team.
- Explain why systems analysts and designers should be involved in software
development.
Systems analysts and designers are architects of the software system.
They should be involved in the development of the software and other
implementation tasks just as architects are involved in the construction and
successful completion of their design. They need to focus on the end result.
They may not actually code the software program (just as an architect does not
lay bricks, etc.), but they need to know how they should be coded and what the
end result should be.
- Name 3 kinds of teams used to develop software. Which one is adapted to
the 40-20-40 rule?
The 3 kinds of teams used to develop software are:
- Program development team
- Chief programmer team
- Egoless programming team
The program development team is adapted to the 40-20-40 rule.
- Explain why the people with the greatest skills should be assigned to
design and testing.
When a company follows the 40-20-40 rule, the greatest emphasis and
therefore, the people with the greatest skills should work on the design and
testing phases, and lesser on the coding phase. This is because if the design
is complete, clear and accurate, the coding function will be a simple
mechanical process that can be performed by anyone familiar with the
programming language syntax.
- An egoless programming team is composed of 20 members. How many
communication paths and interfaces are there between members?
The no. of communication = n(n-1)/2 = 20(19)/2 = 190
(where n = no. members paths & interfaces)
- Explain why a chief programmer team may meet coding deadlines better than
egoless programming teams.
A 5 member egoless programming team, has (5x4)/2 = 10 communication paths
and interfaces. The egoless programming team will have much less productivity
than a similar sized chief programmer team. A chief programmer team that has 5
support programmers will have 5 main communication paths and interfaces
coordinated and channeled by the lead assistant. Compared to the egoless
programming team, this arrangement reduces the chances of error and increases
productivity. This will help the chief programmer team to meet coding
deadlines better than egoless programming teams.
- Define productivity for any endeavor. What is the formula for
productivity?
Productivity is the ratio of the outputs produced to the resources
consumed.
Productivity = (Outputs Produced)/(Inputs consumed)
- What are the 2 popular metrics that are used to measure software
development productivity?
The 2 popular metrics that are used to measure software development
productivity are:
- Lines of executable code (LOEC)
- Function points
- Give the advantages and the disadvantages of the LOEC metric.
The advantages of the LOEC metric are :
- It is easy to define and discuss with clarity.
- It is widely quoted.
- It is easy to measure.
- It is easy to use for estimates.
The disadvantages of the LOEC metric are :
- It measures the coding phase alone, which is drawback because in a
properly developed program, coding should require only 20% of the total
software development effort.
- A programmer can easily inflate productivity by breaking instructions
into more lines of codes than is necessary.
- Explain why Frederick P. Brooks, Jr says that the person-month used as an
estimating and productivity calculating parameter is a deceptive myth.
The use of the person-month as an estimating and productivity calculating
parameter is a deceptive myth can be best illustrated with an example.
Using the LOEC, which inherently uses the person-month as a benchmark or
estimating parameter, will give rise to the following :
- An assembly programmer codes 1500 lines in 1 month.
LOEC = 1500/1 = 1500.
- A COBOL programmer codes 500 lines in 0.5 month.
LOEC = 500/0.5 = 1000.
- A C programmer codes 300 lines in 0.25 month.
LOEC = 300/0.25 = 1200.
Each programmer is coding for the same assigned task. According to LOEC,
the assembly programmer has the best productivity, but in reality it is the C
programmer that has the best productivity because he could finish the assigned
task with less code and within a shorter time.
- Give an example where 5 people working on a project may actually be more
productive than 5 people working alone. Define synergism and explain why, in
some instances, the whole is greater than the sum of its parts.
Let us take an example of a software development project that requires
1272 function points and the development personnel have a delivery rate of 62
function points per person-month. The number of person-month to deliver 1272
function points is reduced to 1272/62 = 20.5 person-months. And this estimated
time can be interpreted into elapsed months, adjusted according to the number
of people assigned; that is, if 5 persons are assigned to this project, total
elapsed time = 20.5/5 ~ 4 months. But, if there is only 1 person the elapsed
time will be 20.5/1 = 20.5 months!
Synergism occurs when the joint action of a group, when taken together
increases each other's effectiveness. The whole is greater than the sum of its
parts, especially in large software projects which can be modularized and each
can be developed in parallel. With a group working on the project and each
person working on a module, the project can be completed earlier. This is
because as each person is working on his module, he can interact and discuss
with the other members how his and the other modules can be fitted together.
An individual will have to complete all the modules before checking for
interfacing and will always take longer.