Software Problem Solving with Pólya Approach

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

What is the primary goal of combining and sequencing activities and tasks in software development?

  • To define the project's software process. (correct)
  • To reduce the overall project timeline.
  • To ensure each task is completed by a different team member.
  • To increase the number of tasks within each activity.

How does the 'Looking Back' stage in Polya's problem-solving approach contribute to future problem-solving endeavors?

  • By helping us learn more about solving similar problems. (correct)
  • By providing a detailed plan for solving all future problems.
  • By ensuring the initial problem-solving approach is never questioned.
  • By eliminating the need to revisit previous solutions.

What is the significance of clarifying a problem before attempting to solve it?

  • It eliminates the need for adjustments during the problem-solving process.
  • It makes the problem appear less complex, regardless of its true nature.
  • It guarantees a solution will be found quickly.
  • It can lead to an excellent investment in the long run and a successful first attempt. (correct)

Why is it important to make a list of skills used when devising a plan to solve a problem?

<p>Choosing the best approach among many. (A)</p>
Signup and view all the answers

In the context of Polya's problem-solving approach, what should one do if the initial plan does not lead to a correct solution?

<p>Adjust the plan or choose another one. (D)</p>
Signup and view all the answers

What does the problem-solving technique of abstraction involve?

<p>Solving a model problem first, then applying the solution to the actual problem. (B)</p>
Signup and view all the answers

How can analogy be used as a problem-solving technique?

<p>By adapting a solution from a similar problem encountered in the past. (C)</p>
Signup and view all the answers

In brainstorming technique, what is the goal of generating ideas for solving the problem?

<p>To encourage people to feel free to offer their ideas. (C)</p>
Signup and view all the answers

How does the 'divide and conquer' problem-solving technique operate?

<p>By breaking down a complex problem into smaller problems, solving those, and integrating the solutions. (D)</p>
Signup and view all the answers

Which of the following exemplifies the 'drilling down' problem-solving technique?

<p>Observing a problem in the user interface and then finding the logic defect. (A)</p>
Signup and view all the answers

In the GROW model, which aspect focuses on evaluating the current circumstances relevant to achieving a goal?

<p>Reality (C)</p>
Signup and view all the answers

In hypothesis testing, what is the next step after assuming a solution?

<p>Trying to prove or disprove the solution. (D)</p>
Signup and view all the answers

Which of the following best describes the 'Means-Ends Analysis' problem-solving technique?

<p>Choosing an action at each step to move the process closer to the solution. (A)</p>
Signup and view all the answers

What is the primary aim of 'Research' as a problem-solving technique in software engineering?

<p>To find and analyze information that helps solve the problem. (B)</p>
Signup and view all the answers

What is reverse brainstorming?

<p>Shifting focus to how to cause or worsen the problem before addressing it. (C)</p>
Signup and view all the answers

How does 'Root Cause Analysis' help in problem-solving?

<p>By helping address the real causes of a problem, rather than just the symptoms. (A)</p>
Signup and view all the answers

What is the defining characteristic of the 'Trial-and-Error' problem-solving technique?

<p>Testing possible solutions until the right one is found. (D)</p>
Signup and view all the answers

According to the content provided, what does SDLC consist of?

<p>Activities and tasks for a project to complete. (C)</p>
Signup and view all the answers

What is the significance of 'S' in SDLC when referring to a software project?

<p>'S' is for 'software' only if activities &amp; tasks are involved in creating software artifacts. (A)</p>
Signup and view all the answers

How do 'Design Tasks' contribute to the SDLC?

<p>They model a database that stores data of the system, describe features, capture and validate input. (C)</p>
Signup and view all the answers

Which SDLC activity is most closely associated with fixing errors reported by end-users?

<p>Maintenance (A)</p>
Signup and view all the answers

What purpose does the 'Scope Definition' task serve within the 'Analysis' phase of SDLC?

<p>To agree on the nature and execution of the project between developers and the client/user. (A)</p>
Signup and view all the answers

What is the focus of 'Process Design' in the Design phase of SDLC?

<p>To plan the data flow through the system. (A)</p>
Signup and view all the answers

Which task falls under the 'Implementation' phase of SDLC?

<p>Construction (coding). (D)</p>
Signup and view all the answers

What is the purpose of 'Data Migration' during the Implementation phase of SDLC?

<p>Transfer data to a new system. (B)</p>
Signup and view all the answers

What is the primary focus of 'Adaptive Maintenance'?

<p>Bring system into compliance with external changes. (D)</p>
Signup and view all the answers

Who can be considered a 'client' in the context of software development tasks?

<p>Another software engineer, project manager or external stakeholders. (C)</p>
Signup and view all the answers

Which of the following is a problem-solving technique that involves locating and analyzing information helpful in solving the problem?

<p>Research (B)</p>
Signup and view all the answers

When using Polya's approach to problem solving, what is the purpose of 'devising a plan'?

<p>To identify potential methods or strategies to solve the problem. (C)</p>
Signup and view all the answers

If a deadline problem causes stress while trying to complete a project, what are some options based on the GROW model? (Select all that apply)

<p>Propose a new deadline with a detailed estimate of effort. (A), Release the system in increments. (B), Require overtime from team members. (C)</p>
Signup and view all the answers

When doing reverse brainstorming, what is the step after asking the reverse question?

<p>List reverse solutions. (C)</p>
Signup and view all the answers

Which tasks are done as part of the system's 'analysis'?

<p>Problem Analysis. (B)</p>
Signup and view all the answers

What is the task that follows 'Testing' during the 'Implementation' phase?

<p>Data Migration. (A)</p>
Signup and view all the answers

Flashcards

SDLC activities

The four software activities in SDLC are analysis, design, implementation, and maintenance.

Software process

Combining and sequencing activities/tasks defines a project's software process.

What is problem-solving?

Moving from an undesirable state to a desirable state.

Problem-solving process

A process for solving problems methodically.

Signup and view all the flashcards

Pólya's four steps

Understanding the problem, devising a plan, implementing the plan, and looking back.

Signup and view all the flashcards

Clarify the problem

Clarifying the problem leads to better solutions and success.

Signup and view all the flashcards

Devising a Plan

Listing options and identifying likely courses of action.

Signup and view all the flashcards

Plan's purpose

A plan is what we expect to do to solve the problem, not a guaranteed outcome.

Signup and view all the flashcards

Looking Back importance

Reviewing what worked and didn't allows for adjustments and learning.

Signup and view all the flashcards

Abstraction technique

Solve a model problem first, then apply the solution to the real problem.

Signup and view all the flashcards

Analogy technique

Adapting a solution from a past similar problem.

Signup and view all the flashcards

Brainstorming Purpose

Generating and evaluating diverse ideas spontaneously.

Signup and view all the flashcards

Divide and conquer

Breaking a complex problem into smaller, solvable parts.

Signup and view all the flashcards

Drilling Down Technique

Progressively detailing parts to find the problem's source.

Signup and view all the flashcards

GROW Model

Goal, Reality, Obstacles, Way forward: a structured approach.

Signup and view all the flashcards

Hypothesis testing

Assume a solution and try to prove or disprove it.

Signup and view all the flashcards

Means-Ends Analysis

Choosing actions to move closer to a solution.

Signup and view all the flashcards

Research

Finding and analyzing information to help tackle a problem.

Signup and view all the flashcards

Reverse Brainstorming

Reverse the problem to find potential failure points and solutions.

Signup and view all the flashcards

Root Cause Analysis

Identify problem's root causes to address the real issues.

Signup and view all the flashcards

Trial-and-Error

Testing solutions until the right one is found.

Signup and view all the flashcards

SDLC activities

Four software development activities: analysis, design, implementation, maintenance.

Signup and view all the flashcards

Analysis task in SDLC

Understanding a problem by breaking it down.

Signup and view all the flashcards

Design task in SDLC

Design focuses on the look/feel/features of a solution.

Signup and view all the flashcards

Implementation task

Building and testing the solution to client's problem.

Signup and view all the flashcards

Maintenance task

Ensuring the solution works for the client by fixing broken items.

Signup and view all the flashcards

Tasks & Deliverables

Each task creates a tangible item for a client.

Signup and view all the flashcards

Analysis Task

Identify & Learn about nature of a problem including functions + parts.

Signup and view all the flashcards

Design Task

The design is a plan of the form and Function before use.

Signup and view all the flashcards

Implementation Task

Coding by writing, testing, modifying code

Signup and view all the flashcards

Maintenance Tasks

Corrective maintenance to improve system use.

Signup and view all the flashcards

Study Notes

Software Activities and Tasks

  • There are four software activities per System Development Life Cycle (SDLC).
  • Each activity contains a set of tasks.
  • Activities also include deliverables.
  • Combination and sequence of activities and tasks defines the project's software process.
  • Problem-solving techniques are needed to solve tasks.

Why Problem-Solving?

  • Software engineers are professional problem solvers.
  • A problem, if left unresolved, hinders reaching a goal.
  • A problem exists with an undesirable state and a desirable state.
  • Problem-solving moves undesirable states to desirable states.
  • There are many problem-solving processes and techniques.

Problem-Solving Processes

  • All problems are solved by implementing a process.

Pólya Approach to Problem Solving

  • One such process is Pólya Approach.
  • The Pólya Approach is "The System's Approach to Problem Solving."
  • Proposed by Mathematician George Pólya.
  • There are 4 steps in the Polya approach:
  • Understanding the problem.
  • Devising a plan to solve it.
  • Carrying out that plan.
  • Looking back at the solution to evaluate efficacy.

Polya Approach Step 1: Understanding the Problem

  • "A problem well stated is a problem half solved."
  • This step is often neglected.
  • Many have experienced solving a problem and later realizing they misunderstood it.
  • Not understanding the problem results in an inadequate or incorrect solution.
  • Clarifying the problem early provides excellent investment in the long run, and results a successful first attempt.

Polya Approach Step 2: Devising a Plan

  • Some problems have multiple ways to solve.
  • Skills are needed to choose the best approach.
  • Skills include making lists, identifying probable courses of action, eliminating unlikely courses of action, and creating pictures or models.
  • Problem-solving techniques will be addressed after Step 4

Polya Approach Step 3: Carrying Out the Plan

  • Execution is not the same as following the plan from start to end.
  • A plan implies intention, not a surefire outcome.
  • A plan is what to expect in solving a problem.
  • Not all plans work as expected.
  • Adjust the plan and try again as needed.
  • If the plan does not lead to the correct solution, be willing to abandon it and choose another.

Polya Approach Step 4: Looking Back

  • Determine which parts of the solution worked and which did not.
  • Allows adjustment of the current solution.
  • Helps in learning more about solving similar problems in the future.

Problem-Solving Techniques

  • There are many general techniques.
  • In SWE, many are used within the software development process.
  • They help move from undesired states to desirable ones.
  • Many SWE problems are simply part of the process.
  • Scheduling a project, gathering the correct requirements, or choosing the best coding methods.
  • Similarly, many problems are just a natural part of life:
  • Preparing a meal, getting to work, etc.
  • Problems are not inherently negative.
  • Common techniques in SWE:

Problem-Solving Technique: Abstraction

  • Abstraction involves two steps:
  • Solve a model problem first.
  • Apply the solution to the actual problem.
  • Example:
  • Build non-working prototypes and draw networks, data, and process models.
  • Implement the actual items.
  • The prototypes and models represent solutions to real-world problems in abstract.

Problem-Solving Technique: Analogy

  • Analogy means adapting a solution to a similar problem from the past.
  • Google, Stack Overflow (overtaken by ChatGPT), can be used for solutions. Although, they may not provide exact solutions/code.
  • Example:
  • Finding how to print textwidth in LaTeX in inches.

Problem-Solving Technique: Brainstorming

  • Brainstorming is spontaneous:
  • Generate ideas for solving the problem.
  • Evaluate the generated ideas.
  • Apply the best ideas for solving the problem.
  • In step one, merit is not evaluated and all ideas can be offered freely.
  • Joint Application Development (JAD) is an example.
  • Key people generate potential software requirements for the system.
  • After combined, developed & refined, official requirements are formed.

Problem-Solving Technique: Divide-And-Conquer

  • Divide and conquer involves dividing a problem into manageable parts:
  • Break a large/complex problem into smaller/easier problems.
  • Solve those problems.
  • Integrate the solutions to form an overall solution.
  • Example:
  • Proposed Software System broken down into Functional components, then Classes/ methods/ functions.

Problem-Solving Technique: Drilling Down

  • Drilling down is to increasingly detail parts of the problem until the source of problem is found & solved.
  • Example:
  • Fix an end-user-reported error by observing the problem in the user interface.
  • Most general sign of the problem.
  • Drill down through a hierarchy of classes and methods and find the logic defect and fix it.

Problem-Solving Technique: GROW Model

  • GROW model involves four steps:
  • State a goal
  • Evaluate the current reality regarding the stated goal.
  • Identify the obstacles that hinder the progress toward the goal and the options available for working around those.
  • Determine on a Way Forward to accomplish the goal, based on the reality of the obstacles/options analysis

GROW Model example

  • Deadline problem, 3 months to go, 6 months to complete project.
  • Goal: Complete the project on time.
  • Reality: Not meeting the original deadline
  • Obstacles: Impending deadline, the current software process, length of work week, and number of people on the project.
  • Options:
  • Change to a new deadline with detailed estimate of effort to complete project.
  • Propose to release the software system in increments.
  • Require overtime from team members.
  • Add more people to the project
  • Way forward is to decide on one of the available options.

Problem-Solving Technique: Hypothesis Testing

  • Hypothesis testing refers to assuming a solution and then trying to prove or disprove that solution.
  • For example, writing a segment of code and hypothesize on its correctness based on prior logical evidence.
  • Test the hypothesis by compiling and testing the code.

Problem-Solving Technique: Means-Ends Analysis

  • Means-Ends Analysis chooses an action at each step to move the process closer to solution.
  • Means-Ends Analysis can be used for large and complex projects.
  • Technique - "Macros and micro scheduling".
  • Micro scheduling create a detailed schedule of part of the project in the near future.
  • Macro scheduling only creates a general schedule for parts to complete in the more distant future.

Problem-Solving Technique: Research

  • Research is to find and analyze information that helps solve a problem.
  • Early in the software development process, decide the best way to implement the solution to an existing problem.
  • Options
  • Purchasing/leasing a commercial-off-the-shelf system (COTS).
  • Contracting the services of an application service provider (ASP).
  • Subscribing to a software-as-a-service (SaaS) application.
  • Hiring a consultant to develop a custom system.
  • Developing a custom system in-house.
  • Modifying the current system if one exists.

Problem-Solving Technique: Research (Decision Analysis)

  • To choose the best option, conduct a decision analysis
  • Identify candidate solutions to the problem.
  • Analyze them.
  • Compare them side by side.

Problem-Solving Technique: Reverse Brainstorming

  • Reverse brainstorming shifts focus to how to cause the problem or how to make the problem worse.
  • Then create solutions to avoid the "reverse problems.".
  • Involves six steps:
  1. Write a general problem statement.
  2. Ask a big-picture question.
  3. Ask the reverse question.
  4. List reverse solutions.
  5. List potential solutions.
  6. Combine potential solutions.

Example of Reverse Brainstorming

  1. Problem statement is the current change control process is error-prone/expensive.
  2. Question is how to make the change control process less error-prone/expensive?
  3. Reverse question is how to make change control process more error-prone/expensive?
  4. Reverse solutions include making sure software engineers overwrite each other's work, making sure changes are not tracked, and making sure no mechanism for change request approvals exists.
  5. Potential solutions include ensuring engineers don't overwrite each other's work, changes are tracked and a change request approval mechanism based on importance/cost exists.

Problem-Solving Technique: Root Cause Analysis

  • Root cause analysis has three steps:
  • Clearly define the problem.
  • Identify its root causes & resulting effects.
  • Correct the root causes of the problem.
  • It helps address the real causes of a problem, so don't just treat the symptoms.
  • Cause-effect analysis is one type.

Root Cause Analysis example

  • Start with cause-effect analysis where problems communicated by users is translated into more clearly articulated problems and their associated causes and effects.
  • A user says, “The system is frustrating to use”.
  • A software engineer analyzes the frustration which they determine is caused by slow response time attributable to a network bottleneck, not a problem with the software itself.

Problem-Solving Technique: Trial-And-Error

  • Trial-and-error means testing possible solutions until the right one is found.
  • Design Prototyping:
  1. Constructing a first prototype, representing feature and interaction conception.
  2. Client/user evaluates the prototype, gives feedback, and suggests changes.
  3. Review the prototype and evaluate again.
  4. The process ends after the prototype is correct (i.e., the design problem is solved).

System Development Life Cycle (SDLC)

  • Process to use when attempting to solve a problem

SDLC definition

  • SDLC, from the beginning of lecture, consists of activities/tasks for a project to complete.
  • Combination and ordering is not specified.
  • S can be for software or system.
  • S is for software only if software activities and tasks are involved in creating software artifacts (e.g., database design, construction, and testing).
  • S is for system because software projects go beyond hardware acquisition, training, and end-user support.

SDLC Activities

  • The four activities match Pólya's approach to problem solving:
  • Analysis (understanding of the problem.)
  • Design (devising a plan.)
  • Implementation (carrying out the plan.)
  • Maintenance (looking back.)

Analysis Tasks

  • Examine & learn about entity's nature/functions and its parts.
  • Break down an entity into fundamental elements, examine those elements carefully, and study how they interact.
  • Understand nature of client's/user's problems.
  • Typical tasks:
  • Problem identification identifies major problems with the system.
  • Problem analysis thoroughly understands problems.
  • Scope definition agrees on nature/execution of project (dev. & client/user).
  • Requirement identification elicits requirements of the proposed system.
  • Project estimation predicts required effort and cost to complete software project.
  • Decision analysis decides the best way to implement a solution to the client's problem.

Design Tasks

  • Design is planning the form/function of something before building and using it.
  • Understand the entity by drawing diagrams/charts, creating models and prototypes, describing processes, and identifying patterns.
  • Design in SDLC includes the look, feel, and features of solution to client's problem.
  • Typical Tasks are:
  • Model a database for storing data.
  • Plan the data flow through the system, describing features.
  • Capture and validate data to prohibit bad data.
  • Plan user interface layout for ease of use and look.
  • Plan the layout of reports and other outputs.
  • Plan functionality / structure of system's components.

Implementation Tasks

  • Creating something concrete and put it into use.
  • Build/test an entity, prepare its use, and place it into operation for a useful purpose.
  • Implementation in SDLC builds and tests the solution to the client's problem.
  • Typical tasks include:
  • Writing / modifying source code of the system.
  • Running the system to validate and confirm requirements, uncover defects, and confirm correctness.
  • Transferring data to a new system.
  • Installing the system in the client's hardware or software environment, and deploying.
  • Transferring the process of the current system to the new system.

Maintenance Tasks

  • Maintenance keeps something in good, working condition.
  • Fix it when broken, update it, improve it, and modify it to keep it available/useful.
  • Maintenance in SDLC ensures the solution to the client's problem works.
  • Typical tasks include:
  • Corrective maintenance, which isolates and correct errors discovered by users.
  • Perfective maintenance, which improves the system's usefulness.
  • Adaptive maintenance, which brings the system into compliance with external changes.
  • Preventive maintenance, which detects and correct latent errors before users do.
  • Refactorative maintenance, which improves code efficiency and ease of maintenance.

Tasks / Deliverables

  • Each task produces a tangible deliverable to a client.
  • A client can be:
  • Internal (e.g., another software engineer or a project manager).
  • External (e.g., a client, a process auditing firm, or users).
  • Deliverables include:
  • Plans, models, diagrams, code, user documentation.
  • Others include user training and technical support.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser