Chapter 23 – Project planning
Chapter 24 - Quality Management

# Quiz

  1. A project plan, is created at the beginning of a project and is never touched again

  2. The three main parameters when computing the costs of a software development project are

    1. Effort Costs
    2. Hardware and Software Costs
    3. Traveling and Training Costs
  3. The price of a software system developed for a customer only takes into account the cost of the development itself

  4. Match the following Project Plan Supplements to their descriptions

    1. Configuration management plan

      Describes the configuration management procedures and structures to be used.

    2. Deployment plan

      Describes how the software and associated hardware (if required) will be deployed in the customer’s environment. This should include a plan for migrating data from existing systems.

    3. Maintenance plan

      Predicts the maintenance requirements, costs, and effort.

    4. Quality plan

      Describes the quality procedures and standards that will be used in a project.

    5. Validation plan

      Describes the approach, resources, and schedule used for system validation.

  5. Agile development methods such as Scrum and Extreme Programming have a two-stage approach to planning, what are they?

    • Release Planning & Iteration Planning
    • Development Planning & Maintenance Planning
    • Post-Release Planning & Disaster Planning
    • Debugging Planning & Pair Programming
  6. Software standards are important for quality assurance as they represent an identification of best practice

  7. The use of open-source software available on platforms such as Sourceforge and GitHub has made software analysis more difficult, and less possible overall.

  8. Match the following Product Metrics to their respective definitions

    1. Length of code

      This is a measure of the size of a program.

    2. Cyclomatic complexity

      This is a measure of the control complexity of a program.

    3. Depth of conditional nesting

      This is a measure of the depth of nesting of if-statements in a program.

    4. Fog index

      This is a measure of the average length of words and sentences in documents.

# Exercise

  1. Describe the factors that affect software pricing. Define the “pricing to win” approach in software pricing.

    Factors affecting software pricing:

    1. Contractual terms: A customer may be willing to allow the developer to retain ownership of the source code and reuse it in other projects. The price charged may then be less than if the software source code is handed over to the customer.
    2. Cost estimate uncertainty: If an organization is unsure of its cost estimate, it may increase its price by a contingency over and above its normal profit.
    3. Financial health: Developers in financial difficulty may lower their price to gain a contract. It is better to make a smaller than normal profit or break even than to go out of business. Cash flow is more important than profit in difficult economic times.
    4. Market opportunity: A development organization may quote a low price because it wishes to move into a new segment of the software market. Accepting a low profit on one project may give the organization the opportunity to make a greater profit later. The experience gained may also help it develop new products.
    5. Requirements volatility: If the requirements are likely to change, an organization may lower its price to win a contract. After the contract is awarded, high prices can be charged for changes to the requirements.

    Pricing to win in software pricing.
    The software is priced according to what the software developer believes the buyer is willing to pay. If this is less that the development costs, the software functionality may be reduced accordingly with a view to extra functionality being added in a later release. Additional costs may be added as the requirements change and these may be priced at a higher level to make up the shortfall in the original price.

  2. Define project scheduling. What are the things to be considered while estimating schedules?

    Project scheduling is the process of deciding how the work in a project will be organized as separate tasks, and when and how these tasks will be executed. You estimate the calendar time needed to complete each task, the effort required and who will work on the tasks that have been identified. You also have to estimate the resources needed to complete each task, such as the disk space required on a server, the time required on specialized hardware, such as a simulator, and what the travel budget will be.

  3. The planning game is based on the notion of planning to implement the stories that represent the system requirements. Explain the potential problems with this approach when software has high performance or dependability requirements.

    Agile planning works well with small, stable development teams that can get together and discuss the stories to be implemented. However, where teams are large and/or geographically distributed, or when team membership changes frequently, it is practically impossible for everyone to be involved in the collaborative planning that is essential for agile project management.
    Agile planning is reliant on customer involvement and availability.
    This can be difficult to arrange, as customer representatives sometimes have to prioritize other work and are not available for the planning game. Furthermore, some customers may be more familiar with traditional project plans and may find it difficult to engage in an agile planning process.

  4. Is it ethical for a company to quote a low price for a software contract knowing that the requirements are ambiguous and that they can charge a high price for subsequent changes requested by the customer?

    A low offer depends on various factors such as the size and growth of the company, the size and membership of the team, etc. If the price isn't unreasonably low, it might be ethical in some cases, for example if the requirements are unclear at first, and then change it to something the developer can't make. In this case, the performers get their money and the customers are not dissatisfied. A low price can be quoted if the company is financially healthy and can afford the excess amount required for the project. However, it is unethical to offer contracts at low prices if the company cannot financially support the situation. If the cost of the software exceeds the quoted amount, the company's financial health may decline. may affect the development of the company.

  5. Define the terms quality assurance and quality control. List out the key points included in Humphrey’s outline structure for software management.

    Quality assurance can be defined as "part of quality management focused on providing confidence that quality requirements will be fulfilled." The confidence provided by quality assurance is twofold—internally to management and externally to customers, government agencies, regulators, certifiers, and third parties. An alternate definition is "all the planned and systematic activities implemented within the quality system that can be demonstrated to provide confidence that a product or service will fulfill requirements for quality."
    Quality control can be defined as "part of quality management focused on fulfilling quality requirements." While quality assurance relates to how a process is performed or how a product is made, quality control is more the inspection aspect of quality management. An alternate definition is "the operational techniques and activities used to fulfill requirements for quality."
    Quality assurance and quality control are two aspects of quality management. While some quality assurance and quality control activities are interrelated, the two are defined differently. Typically, QA activities and responsibilities cover virtually all of the quality system in one fashion or another, while QC is a subset of the QA activities. Also, elements in the quality system might not be specifically covered by QA/QC activities and responsibilities but may involve QA and QC.

    Quality plan outline made by Humphrey:
    Product introduction: A description of the product, its intended market, and the quality expectations for the product
    Product plans: The critical release dates and responsibilities for the product, along with plans for distribution and product servicing.
    Process descriptions: The development and service processes and standards that should be used for product development and management.
    Quality Goals: The quality goals and plans for a product, including an identification and justification of a critical product quality attributes.
    Risks and Risk Management: The key risks that might affect product quality and the actions to be taken to address these risks.

  6. Briefly explain what happens during the software quality review process and the software quality inspection process.

    Quality reviews
    A group of people carefully examine part or all of a software system and its associated documentation.
    Code, designs, specifications, test plans, standards, etc. can all be reviewed. Software or documents may be 'signed off' at a review which signifies that progress to the next development stage has been approved by management.
    Phases in the review process

    1. Pre-review activities
      Pre-review activities are concerned with review planning and review preparation
    2. The review meeting
      During the review meeting, an author of the document or program being reviewed should ‘walk through’ the document with the review team.
    3. Post-review activities
      These address the problems and issues that have been raised during the review meeting.

    Program inspections
    These are peer reviews where engineers examine the source of a system with the aim of discovering anomalies and defects. Inspections do not require execution of a system so may be used before implementation. They may be applied to any representation of the system (requirements, design,configuration data, test data, etc.). They have been shown to be an effective technique for discovering program errors.
    Inspection checklists
    Checklist of common errors should be used to drive the inspection.
    Error checklists are programming language dependent and reflect the characteristic errors that are likely to arise in the language.
    In general, the 'weaker' the type checking, the larger the checklist.
    Examples: Initialisation, Constant naming, loop termination, array bounds, etc.

  7. What is a software metric? Define different types of software metrics with examples.

    Software metric is any type of measurement which relates to a software system, process or related documentation, i.e. Lines of code in a program, the Fog index, number of person-days required to develop a component. Allow the software and the software process to be quantified. May be used to predict product attributes or to control the software process. Product metrics can be used for general predictions or to identify anomalous components.

    Types of process metric

    1. The time taken for a particular process to be completed
      This can be the total time devoted to the process, calendar time, the time spent on the process by particular engineers, and so on.
    2. The resources required for a particular process
      Resources might include total effort in person-days, travel costs or computer resources.
    3. The number of occurrences of a particular event
      Examples of events that might be monitored include the number of defects discovered during code inspection, the number of requirements changes requested, the number of bug reports in a delivered system and the average number of lines of code modified in response to a requirements change.
  8. A colleague who is a very good programmer produces software with a low number of defects but consistently ignores organizational quality standards. How should her managers react to this behavior?

    Faced with the presented scenarios, managers must conduct a cost-benefit analysis.

    1. How much harm does a programmer do to an organization by ignoring its quality standards?
    2. How skilled is this programmer? If we let him go, do we have the ability to find other people who respect the organization's quality standards to match positions at the same skill level? What is the cost of this decision?
    3. Can we achieve organizational quality standards through automation? Would it be more expensive to do so?
    4. Can the internal organizational process improvement committee train this programmer to follow organizational quality standards? how much is the cost?

    A critical look at the issues raised above can give managers an idea of what the right approach should be.
    In the case of a programmer who is very skilled and has a lot of experience in a niche technology, finding an instant replacement for him can be very expensive. In this case, the manager can take steps to manage his non-compliance with the organization's quality standards. This might mean assigning other team members to be responsible for the quality standards aspects of the work. Some automated tools might also help in this case if it's not too expensive to implement.
    On the other hand, if the cost of keeping him outweighs the cost of finding a replacement for him, it might make sense to let the non-compliant programmer go; if hiring another with similar skills, experience, and compliance with organizational qualities Programmers with standard know-how are cheaper. For organizations where character trumps skill, a programmer who consistently ignores organizational quality standards will always get fired.

  9. Describe the concept of “Big Data Analytics”. How is this being used today? What are some of the problems being introduced with it.

    Big data analytics is the use of advanced analytic techniques against very large, diverse big data sets that include structured, semi-structured and unstructured data, from different sources, and in different sizes from terabytes to zettabytes. Hence, big data analytics is really about two things—big data and analytics—plus how the two have teamed up to create one of the most profound trends in business intelligence (BI) today.
    Big data analytics enables analysts, researchers and business users to make faster and better decisions by leveraging previously inaccessible and unavailable big data. Businesses use this analytics tool to extract meaningful insights from a pile of raw and unstructured data, such as hidden patterns, unknown correlations, market trends and customer preferences. Different types of data require different approaches. This different approach to analysis yields four different types of big data analytics. Big data analytics fall into four subcategories: descriptive analytics, diagnostic analytics, predictive analytics, and prescriptive analytics.
    Big data is often associated with machine learning, data science, artificial intelligence, deep learning, and other buzzwords. The future of big data also has its dark side, and many tech companies are known to be facing heated discussions from governments and the public due to privacy and data concerns. Laws governing people's rights over their data will make data collection stricter, albeit honest. Likewise, the proliferation of online data also exposes us to cyber-attacks, and data security will be very important.