Podcast
Questions and Answers
What is the primary goal of combining and sequencing activities and tasks in software development?
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?
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?
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?
Why is it important to make a list of skills used when devising a plan to solve a problem?
In the context of Polya's problem-solving approach, what should one do if the initial plan does not lead to a correct solution?
In the context of Polya's problem-solving approach, what should one do if the initial plan does not lead to a correct solution?
What does the problem-solving technique of abstraction involve?
What does the problem-solving technique of abstraction involve?
How can analogy be used as a problem-solving technique?
How can analogy be used as a problem-solving technique?
In brainstorming technique, what is the goal of generating ideas for solving the problem?
In brainstorming technique, what is the goal of generating ideas for solving the problem?
How does the 'divide and conquer' problem-solving technique operate?
How does the 'divide and conquer' problem-solving technique operate?
Which of the following exemplifies the 'drilling down' problem-solving technique?
Which of the following exemplifies the 'drilling down' problem-solving technique?
In the GROW model, which aspect focuses on evaluating the current circumstances relevant to achieving a goal?
In the GROW model, which aspect focuses on evaluating the current circumstances relevant to achieving a goal?
In hypothesis testing, what is the next step after assuming a solution?
In hypothesis testing, what is the next step after assuming a solution?
Which of the following best describes the 'Means-Ends Analysis' problem-solving technique?
Which of the following best describes the 'Means-Ends Analysis' problem-solving technique?
What is the primary aim of 'Research' as a problem-solving technique in software engineering?
What is the primary aim of 'Research' as a problem-solving technique in software engineering?
What is reverse brainstorming?
What is reverse brainstorming?
How does 'Root Cause Analysis' help in problem-solving?
How does 'Root Cause Analysis' help in problem-solving?
What is the defining characteristic of the 'Trial-and-Error' problem-solving technique?
What is the defining characteristic of the 'Trial-and-Error' problem-solving technique?
According to the content provided, what does SDLC consist of?
According to the content provided, what does SDLC consist of?
What is the significance of 'S' in SDLC when referring to a software project?
What is the significance of 'S' in SDLC when referring to a software project?
How do 'Design Tasks' contribute to the SDLC?
How do 'Design Tasks' contribute to the SDLC?
Which SDLC activity is most closely associated with fixing errors reported by end-users?
Which SDLC activity is most closely associated with fixing errors reported by end-users?
What purpose does the 'Scope Definition' task serve within the 'Analysis' phase of SDLC?
What purpose does the 'Scope Definition' task serve within the 'Analysis' phase of SDLC?
What is the focus of 'Process Design' in the Design phase of SDLC?
What is the focus of 'Process Design' in the Design phase of SDLC?
Which task falls under the 'Implementation' phase of SDLC?
Which task falls under the 'Implementation' phase of SDLC?
What is the purpose of 'Data Migration' during the Implementation phase of SDLC?
What is the purpose of 'Data Migration' during the Implementation phase of SDLC?
What is the primary focus of 'Adaptive Maintenance'?
What is the primary focus of 'Adaptive Maintenance'?
Who can be considered a 'client' in the context of software development tasks?
Who can be considered a 'client' in the context of software development tasks?
Which of the following is a problem-solving technique that involves locating and analyzing information helpful in solving the problem?
Which of the following is a problem-solving technique that involves locating and analyzing information helpful in solving the problem?
When using Polya's approach to problem solving, what is the purpose of 'devising a plan'?
When using Polya's approach to problem solving, what is the purpose of 'devising a plan'?
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)
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)
When doing reverse brainstorming, what is the step after asking the reverse question?
When doing reverse brainstorming, what is the step after asking the reverse question?
Which tasks are done as part of the system's 'analysis'?
Which tasks are done as part of the system's 'analysis'?
What is the task that follows 'Testing' during the 'Implementation' phase?
What is the task that follows 'Testing' during the 'Implementation' phase?
Flashcards
SDLC activities
SDLC activities
The four software activities in SDLC are analysis, design, implementation, and maintenance.
Software process
Software process
Combining and sequencing activities/tasks defines a project's software process.
What is problem-solving?
What is problem-solving?
Moving from an undesirable state to a desirable state.
Problem-solving process
Problem-solving process
Signup and view all the flashcards
Pólya's four steps
Pólya's four steps
Signup and view all the flashcards
Clarify the problem
Clarify the problem
Signup and view all the flashcards
Devising a Plan
Devising a Plan
Signup and view all the flashcards
Plan's purpose
Plan's purpose
Signup and view all the flashcards
Looking Back importance
Looking Back importance
Signup and view all the flashcards
Abstraction technique
Abstraction technique
Signup and view all the flashcards
Analogy technique
Analogy technique
Signup and view all the flashcards
Brainstorming Purpose
Brainstorming Purpose
Signup and view all the flashcards
Divide and conquer
Divide and conquer
Signup and view all the flashcards
Drilling Down Technique
Drilling Down Technique
Signup and view all the flashcards
GROW Model
GROW Model
Signup and view all the flashcards
Hypothesis testing
Hypothesis testing
Signup and view all the flashcards
Means-Ends Analysis
Means-Ends Analysis
Signup and view all the flashcards
Research
Research
Signup and view all the flashcards
Reverse Brainstorming
Reverse Brainstorming
Signup and view all the flashcards
Root Cause Analysis
Root Cause Analysis
Signup and view all the flashcards
Trial-and-Error
Trial-and-Error
Signup and view all the flashcards
SDLC activities
SDLC activities
Signup and view all the flashcards
Analysis task in SDLC
Analysis task in SDLC
Signup and view all the flashcards
Design task in SDLC
Design task in SDLC
Signup and view all the flashcards
Implementation task
Implementation task
Signup and view all the flashcards
Maintenance task
Maintenance task
Signup and view all the flashcards
Tasks & Deliverables
Tasks & Deliverables
Signup and view all the flashcards
Analysis Task
Analysis Task
Signup and view all the flashcards
Design Task
Design Task
Signup and view all the flashcards
Implementation Task
Implementation Task
Signup and view all the flashcards
Maintenance Tasks
Maintenance Tasks
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:
- Write a general problem statement.
- Ask a big-picture question.
- Ask the reverse question.
- List reverse solutions.
- List potential solutions.
- Combine potential solutions.
Example of Reverse Brainstorming
- Problem statement is the current change control process is error-prone/expensive.
- Question is how to make the change control process less error-prone/expensive?
- Reverse question is how to make change control process more error-prone/expensive?
- 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.
- 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:
- Constructing a first prototype, representing feature and interaction conception.
- Client/user evaluates the prototype, gives feedback, and suggests changes.
- Review the prototype and evaluate again.
- 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.