Question

In: Computer Science

What are the most effective problem-solving techniques available to software engineers today, and how do they...

What are the most effective problem-solving techniques available to software engineers today, and how do they facilitate the software engineering process? Please provide examples and explain who the main stakeholders are and what their responsibilities in the software engineering process are.

Solutions

Expert Solution

The most effective problem-solving techniques available to software engineers today.

1.Mindspin
Brainstorming is part of the bread and butter of the problem solving process and all problem solving strategies benefit from getting ideas out and challenging a team to generate solutions quickly.

With Mindspin, participants are encouraged not only to generate ideas but to do so under time constraints and by slamming down cards and passing them on. By doing multiple rounds, your team can begin with a free generation of possible solutions before moving on to developing those solutions and encouraging further ideation.

This is one of our favorite problem solving activities and can be great for keeping the energy up throughout the workshop. Remember the importance of helping people become engaged in the process – energizing problem solving games like Mindspin can help ensure your team stays engaged and happy, even when the problems they’re coming together to solve are complex.

2. Improved Solutions
The goal of all problem solving strategies is to come up with solutions to the problem at hand. After a team has successfully identified a problem and come up with a few solutions, it can be tempting to call the work of the problem solving process complete. That said, the first solution is not necessarily the best, and by including a further review and reflection activity into your problem solving model, you can ensure your group reaches the best possible result.

One of a number of problem solving games from Thiagi Group, Improved Solutions helps you go the extra mile and develop suggested solutions with close consideration and peer review. By supporting the discussion of several problems at once and by shifting team roles throughout, this problem solving technique is a dynamic way of finding the best solution.

3.Four Step Sketch
Creative thinking and visual ideation does not need to be confined to the opening stages of your problem solving strategies. Problem solving games that include sketching and prototyping on paper can be effective at the solution finding and development stage of the process, and can be great for keeping a team engaged.

By going from simple notes to a crazy 8s round that involves rapidly sketching 8 variations on their ideas before then producing a final solution sketch, the group is able to iterate quickly and visually. Problem solving techniques like Four Step Sketch are great if you have a group of different thinkers and want to change things up from more textual or discussion-based problem solving activities.

4.15% Solutions
Some problems are simpler than others and with the right problem solving activities, you can empower people to take immediate actions that can help create organizational change.

Part of the liberating structures toolkit, 15% solutions is a problem solving technique that focuses on finding and implementing solutions quickly. A process of iterating and making small changes quickly can help generate momentum and appetite for solving large problems.

Problem solving strategies can live and die on whether people are onboard. Getting some quick-wins is a great way of getting people behind the process.   

It can be extremely empowering for a team to realize that problem solving techniques can be deployed quickly and easily and delineate between things they can positively impact and those things they cannot change.

5.How-Now-Wow Matrix
The problem solving process is often creative, as complex problems usually require a change of thinking and creative response in order to find the best solutions. While it’s common for the first stages of a problem solving model to encourage creative thinking, groups can often gravitate to familiar solutions when it comes to the end of the process.

When selecting solutions, you don’t want to lose the creative energy of the problem identification, problem analysis or brainstorming stages of the process. The How-Now-Wow Matrix from Gamestorming is a great problem solving activity that enables a group to stay creative and think out of the box when it comes to selecting the right solution for a given problem.

Problem solving techniques that encourage creative thinking and the ideation and selection of new solutions can be the most effective in organizational change. Give the How-Now-Wow Matrix a go, and not just for how pleasant it is to say out loud.

6.Impact and Effort Matrix
All problem solving techniques hope to not only find solutions to a given problem or challenge but to find the best solution. When it comes to finding a solution as part of a problem solving process, groups are invited to put on their decision making hats and really think about how a proposed idea would work in practice.

The Impact and Effort Matrix is one of the problem solving techniques that fall into this camp, empowering participants to first generate ideas and then categorize them into a 2×2 matrix based on impact and effort. Activities that invite critical thinking while remaining simple are invaluable in a successful problem solving model – use the Impact and Effort Matrix to move from ideation and towards evaluating potential solutions before then committing to them.

7.Dotmocracy
If you’ve followed each of the problem solving steps with your group successfully, you should move towards the end of your problem solving process with heaps of possible solutions developed with a specific problem in mind. But how do you help a group go from ideation to putting a solution into action?

Dotmocracy – or Dot Voting -is a tried and tested method of helping a team in the problem solving process make decisions and put actions in place with a degree of oversight and consensus.

One of the problem solving techniques that should be in every facilitator’s toolbox, Dot Voting is fast and effective and can help identify the most popular and best solutions and help bring a group to a decision effectively.

Software Engineering Processes

A software engineering process is the model chosen for managing the creation of software from initial customer inception to the release of the finished product. The chosen process usually involves techniques such as • Analysis, • Design, • Coding, • Testing and • Maintenance Several different process models exist and vary mainly in the frequency, application and implementation of the above techniques, for example, different process models use different analysis techniques, other models attempt to implement the solution to a problem in one big-bang approach, while others adopt an iterative approach whereby successively larger and more complete versions of the software are built with each iteration of the process model.

The Software Engineering Process - The Software Life Cycle
The illustration below highlights the various phases of what is probably the oldest software development process in existence, namely the classic life-cycle paradigm,sometimes called the "waterfall model,". This paradigm implies a systematic,sequential approach (rarely achieved in practice) to software development that begins at the system level and progresses through analysis, design, coding, testing and maintenance.

Modelled after the conventional engineering cycle, the life-cycle paradigm
encompasses the above activities. Let’s take a look at each of these phases in turn
and explain what is involved.

System Engineering and Analysis.
Because software almost always forms part of a much larger system, work begins by
establishing requirements for all components of the system, identifying not only the
role played by the software but, more importantly, its interface and interaction with
the outside world.
This ‘system view’ is essential when software must interface with other elements
such as hardware, people, databases and computers outside of, and beyond the
control of the system designer. In essence Systems engineering involves exploring
some of the following issues:
1. Where does the software solution fit into the overall picture? The software
being proposed may be one small cog in a very large wheel. Maybe the
software is a calculating employee pay or tax, or perhaps has to co-ordinate
the activities of several distributed systems controlling a
production/manufacturing plant or warehouse distribution system. Until the
overall picture is clear, no analysis of the software can begin.
2. What does the system do? Is it required to control or monitor some process or
activity or is it simply performing analysis of data?
3. What environment will the system be placed in?
• Hostile, such as an elevator subject to vibration and dust, or friendly,
such as a cosy air-conditioned office?
• Will the system be ‘real time’, ‘on-line’, ‘batch’, ‘safety critical’, ‘fault tolerant?’
• Is it required to be mobile or does it require an electricity main outlet?
• Is it embedded?
• Does it require a man-machine interface?
• Who or what does it interact with
All of these factors could severely influence, restrict and or dictate the form
of the solution.
4. What inputs and outputs are required/produced and what is the form of that
data: Paper, Database, Disk file, Graphics, Network, Analogue to digital
converter outputs?
In answering the above question, a list of external devices is uncovered and can be
explored further, e.g. what size of paper, what resolution graphics, what format is the
data accepted/displayed, what capacity of disk, what resolution of Analogue to
digital converter etc.

Design and Coding
Once the analysis of the system has been completed, design or development can
begin. This is an attempt to translate a set of requirements and program/data models
that were laid down in the “requirements document” into a well designed and
engineering software solution. Design is best summarised by the following sequence
of steps
• The data flow/UML diagrams that represent the system model are converted
into a suitable hierarchical, modular program and data structure/architecture.
• Each program module is converted into an appropriate cohesive function
subroutine or class, that is designed to perform a single well-defined task.
• Design then focuses on the implementation of each module/class. The
sometimes loose and vague, perhaps English like, description of the
modules role/function within the program is expanded and translated into
an algorithm, which describes in detail exactly what, when and how the
module/class carries out its task. The interfaces and its interaction
with other modules/objects are also considered and assessed for good design
(see coupling and cohesion in future lectures).
• The modules algorithm can then be translated into a flowchart, which is a
step-by-step graphical representation of the actions carried out by the
module expressed in terms of sequence, selection and repetition.
• The flowchart can then be translated into Pseudocode, which conveys the
same information as a flowchart, but presents it a way that is more
amenable to translation into program code.
• Finally, the Pseudocode for each module is translated into a chosen
programming language and the various modules entered, compiled,
integrated into a system ready for testing.
At each stage, the process is documented so that if changes are required in the future,
the design pertinent to each stage is available for consultation and discussion. The
end result of design and coding is most definitely not just the program listing. It
includes the architecture data structures, algorithms, flowcharts, Pseudocode and all
program source code listings, as shown below.

A structured illustration of the design process is shown above. The results of
analysis, that is, the specification and model, feed into the design stage
where an attempt is made to turn the ‘model’ the system into a data structure and program,
architecture which can be translated eventually into code.

Software Testing and Debugging
Once the constituent software components/modules have been written, testing and
debugging can begin. Testing involves the following techniques (amongst others)
• Verification and Validation. That is, checking that the software meets the
agreed specification and checking that the software is correct in its operation.
• Black and white box testing techniques. That is, testing the insides of the
modules for correct operation and testing the interfaces to the module.
• Integration Testing: Testing that the modules all work together.
• Acceptance Testing: Letting the customer test the product.
• Debugging: The ‘art’ of identifying the cause of failure in a piece of software
and correcting it.
Software Maintenance
Software maintenance reapplies each of the preceding life cycle steps to an existing
program rather than a new one in order to correct or add new functionality.

Examples:

Spiral   development
•   Create   a   base   system   that   has   the   overall   structure   of   the   final   product  
with   dummy   stubs   for   missing   components.
•   Create   a   comprehensive   set   of   test   cases   for   all   completed  
components.
•   Use   a   succession   of   sprints   to   develop   new   or   improved   components,  
each   with   a   set   of   test   cases.       Add   these   components   to   the   source  
code   library.  
•   On   a   daily   cycle,   build   the   enBre   system   from   the   source   code   library  
and   run   the   complete   set   of   test   cases.  
With   spiral   development   there   is   always   a   fully   tested   system,   but   the  
funcBonality   is   incomplete.

Example  
Developing   a   new   version   of   an   operaBng   system.

Type of Stakeholders:

1. Internal Stakeholder:
An internal stakeholder is a person, group or a company that is directly involved in the project.
For example,

Project Manager:
Responsible for managing the whole project. Project Manager is generally never involved in producing the end product but he/she controls, monitors and manages the activities involved in the production.
Project Team:
Performs the actual work of the project under the Project Manager inluding development, testing, etc.
Company:
Organisation who has taken up the project and whose employees are directly involved in the development of the project.
Funders:
Provides funds and resources for the successful completion of the project.
2. External Stakeholder:
An external stakeholder is the one who is linked indirectly to the project but has significant contribution in the successful completion of the project.
For example,

Customer:
Specifies the requirements of the project and helps in the elicitation process of the requirement gathering phase. Customer is the one for whom the project is being developed.
Supplier:
Supplies essential services and equipment for the project.
Government:
Makes policies which helps in better working of the organisation.


Related Solutions

What is Group Problem Solving? Explain the different types of problem-solving techniques. Please explain what technique...
What is Group Problem Solving? Explain the different types of problem-solving techniques. Please explain what technique you think is most effective and why?
What do you think are the three most signifi cant issues facing engineers today?
What do you think are the three most signifi cant issues facing engineers today? Prepare a technical report of at least 250 words that explains your rationale.    
What techniques have you found to be the most effective? How will you experiment with these...
What techniques have you found to be the most effective? How will you experiment with these techniques when designing your demonstration speech this week? Give us some examples.
Provide your personal definition of effective decision making and problem solving. Describe the most important steps...
Provide your personal definition of effective decision making and problem solving. Describe the most important steps involved with the decision making process and the process of problem solving. Include the following elements in your description: What is the focus of these processes as defined by your readings? When should you use problem solving and/or decision making? What strengths and benefits do each of these processes offer business leaders?
What are some examples of mental roadblocks that might interfere with effective problem solving and decision...
What are some examples of mental roadblocks that might interfere with effective problem solving and decision making? What are some key steps toward becoming a  creative problem solver? Consider examples from your personal life or work
Please predict in what situations each of the following techniques is most effective in treating depression....
Please predict in what situations each of the following techniques is most effective in treating depression. Explore the advantages and disadvantages of each. ECT VNS TMS
The purpose of this assignment is to create a design challenge that highlights various problem-solving techniques....
The purpose of this assignment is to create a design challenge that highlights various problem-solving techniques. Write a paper of approximately 250-500 words utilizing a business writing format to present and frame the design challenge. Reference the example provided in The Field Guide to Human-Centered Design for additional information. Address the following: What problem are you trying to solve? Who will be affected by the problem? To what degree will the group identified be affected? Consider that new technologies are...
1. Describe what is involved in identity theft 2. Today, what are the most effective ways...
1. Describe what is involved in identity theft 2. Today, what are the most effective ways for banks to market their services? 3. You can choose to do business with any number of banks. How does technology affect your decision of which bank to use?
Problem Solving Techniques 1. UNDERSTANDING THE PROBLEM 2. DEVISING A PLAN 3. CARRYING OUT THE PLAN...
Problem Solving Techniques 1. UNDERSTANDING THE PROBLEM 2. DEVISING A PLAN 3. CARRYING OUT THE PLAN 4. LOOKING BACK Looking at the four steps to a general problem solving approach. Write a summary of what each step entails.
What tool is the most appropriate among the different monetary policy tools available today?
What tool is the most appropriate among the different monetary policy tools available today?
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT