Review Question Set I

  1. What are the 2 major sources of application software?

    There are 2 sources of application software:
    1. Commercial software vendors
    2. Customized software developed in-house or by an independent programming contractor


  2. 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.

  3. List and briefly discus the advantageous and disadvantages of commercial software packages.

    The advantages of commercial software packages are:

    1. 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.
    2. 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.
    3. Time and costs estimates
      The cost of a commercial package is known and its implementation date is easily estimated.
    4. 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:

    1. 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.
    2. 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.
    3. 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.


  4. 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.

  5. List and define the general performance factors used to evaluate commercial software.

    The general performance factors used to evaluate commercial software are:

    1. 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).
    2. 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.
    3. Ease of learning
      The rating for this performance factor depends on the user interface and the intuitive design of the package.
    4. 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.
    5. 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.
    6. 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.


  6. 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.

    1. 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.
    2. Code
      The coding phase maps the design into program procedures.
    3. 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%).

  7. 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.

  8. 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.

  9. 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.

  10. 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:

    1. Program development team
    2. Chief programmer team
    3. Egoless programming team


    The program development team is adapted to the 40-20-40 rule.

  11. 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.

  12. 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)

  13. 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.

  14. 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)

  15. 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:

    1. Lines of executable code (LOEC)
    2. Function points

  16. Give the advantages and the disadvantages of the LOEC metric.

    The advantages of the LOEC metric are :

    1. It is easy to define and discuss with clarity.
    2. It is widely quoted.
    3. It is easy to measure.
    4. It is easy to use for estimates.


    The disadvantages of the LOEC metric are :

    1. 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.
    2. A programmer can easily inflate productivity by breaking instructions into more lines of codes than is necessary.


  17. 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 :

    1. An assembly programmer codes 1500 lines in 1 month.
      LOEC = 1500/1 = 1500.
    2. A COBOL programmer codes 500 lines in 0.5 month.
      LOEC = 500/0.5 = 1000.
    3. 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.

  18. 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.