SCM Test Plans – Construct

In our last post, we introduced the concept of the Integrated Functional Test (IFT) as a milestone for completing the Design phase of an SCM implementation. These tests ensure that all functional requirements can be met with the software solution and that all data requirements are fully understood prior to the Construct project phase. They also ensure that the software optimally supports the business requirements, and further facilitate solution acceptance and adoption, change management, and they enable root cause analysis of more complex scenarios.

The next type of test positioned in complex SCM planning scenarios is the SPT – the Solution Performance Test – and enables the Construct project phase, prior to Validate. The SPT:

  • Ensures a specific feature, or set of features is working as specified in a full-scope production data set, as it will exist in the live, end-to-end solution.
  • Involves scenario testing multiple variations of production-quality data sets with varying properties representing all relevant business scenarios.
  • Test data sets may be taken directly from production, or massaged to reflect various business scenarios.
  • Primarily focuses on ensuring that the overall solution and system is performing to specification given the data supplied to it; some basic plan quality testing is appropriate at this level.
  • Includes both Data Quality (DQT) and End-To-End (E2E) tests
  • Is conducted throughout the Construct project phase as appropriate.
  • Test suite comprises a milestone gateway for entering the Validate project phase.

Unlike UFTs and IFTs, SPTs are not stand-alone, they leverage full-scope, implementation-dependent, production-like data models covering all key workflows, user scenarios and business cases. The SPT test suite includes tests which focus on key subsets and combinations of functional requirements, as well as numerous workflow tests covering all expected data requirements, use cases and business scenarios, all using production data. These tests and data sets are developed and executed during the Construct phase, and ensure that the solution is working according to spec in all functional areas using real production data. Some tests focus on plan quality, but the primary focus is on basic solution behavior, data quality, end-to end workflow mechanics and data flow validation. Successful execution of the SPT test suite defines a milestone for entering the Validate project phase, where UAT is conducted, and is a primary focus of change management initiatives during the Construct phase.

Various types of SPTs will likely be needed in the test suite to isolate different solution features in the context of multiple business requirements and scenarios. All business and functional requirements, including technical behavior and performance, must be represented within one or more SPTs to ensure a successful SPT test phase.

Similarly, well-designed SPTs further ensure that the fundamental business and functional requirements are properly understood, correctly designed and modeled in the solution, that planning data is adequately cleansed, complete and accurate, and that the required solution features are working together in context as expected at some basic structural level with production data. Successful completion of an SPT phase during Construct can be viewed as a milestone prior to staring the Validate phase and engaging in UAT. Doing so greatly decreases the probability of encountering significant issues and project delays during the Validate phase itself.

SPTs are significantly different than UFTs and IFTs since SPT data sets tend to be larger, the correct test plan results are not known in advance, and entire workflows and dataflows are being tested which may contain many different potential failure points. Test plan scope and Pass/Fail criteria must therefore be carefully thought through and clearly documented in each test plan and data set instance, in terms of how to interpret plan results and what constitutes success / failure in each test plan and data set context.

SPTs also introduce a unique kind of complexity related to test plan interdependency: certain types of solution features may require testing in a certain sequence or pattern, where failure at any given point in the test sequence implies that further testing of downstream steps is uninteresting, whether in the same test plan or in dependent test plans which presume a successful upstream test result. In these cases, the test plans must be executed in their dependency order, and this dependency must be clearly documented and followed in the testing and issue resolution process. Failure at any given point in such test precedence implies a need to resolve the issue before continuing with related dependent test plan steps.

Data Quality Tests (DQT) are a subset of SPT, but belong in a class of their own, requiring a detailed knowledge of solution data requirements and the actual business production data. Data quality is a significant factor in most complex supply chain planning improvement projects, and effective DQTs can be key in early detection and correction of data quality issues, thereby mitigating deployment delays and risk. Further, since most production data evolves over time, DQTs may be used to continuously monitor data quality after Deployment, and support a crucial Data Quality KPI in maintaining system performance and plan quality during the life span of the solution. Typically, DQTs can be automated since data integrity issues are often identified by the solution itself and merely need to be reported to IT and business owners, or DQTs can easily be codified and included in routine batch processing of data interfaces.

Clearly documenting the business and functional requirements represented in each SPT helps identify test plan priorities, understand test dependencies, rank SPTs in importance, and ensures that solution design and workflows address all business and functional requirements.

Ensuring that all UFTs, IFTs, and SPTs pass before embarking on UAT is a practical way of breaking down the overall testing process into more manageable components. These first three test types and phases also help to refine and correct solution design, guide issue resolution, provide for early detection of product defects, and more efficiently focus energy and time during the critical UAT Validation phase, which we will explore in our next post.

SCM Test Plans – Design

In our last post, we introduced the concept of the Unit Functional Test (UFT) as a milestone for completing the Prepare phase of an SCM implementation. Though these tests seldom fail for product reasons, they serve to align the user community on software UI design, workflows, terminology, functional behavior, data requirements, test plan templates, and test plan execution and issue resolution protocol. Additional ancillary benefits of the UFT include facilitation of solution acceptance and adoption, change management, and enabling root cause analysis of more complex scenarios.

The next type of test positioned in complex SCM planning scenarios is the Integrated Functional Test (IFT) – and enables the Design project phase, prior to Construct and Validate. The IFT:

  • Tests a combination of functional requirements on a larger, static data set with a known result;
  • Generally uses production data with some dummy data filled in as needed;
  • Test suite covers all functional requirements;
  • Includes complete workflow tests representing typical planner use patterns, solution workflows and planning scenarios relevant to all relevant business processes;
  • Is useful for explaining and illustrating functional solution behavior in robust, holistic combinations, as well as solution design, data and configuration requirements.

Like UFTs, IFTs are also stand-alone, but unlike UFTs, IFTs are more implementation-dependent, configured to combine specific features required in the current SCM implementation. These are more comprehensive tests on larger data sets which focus on key business cases and scenarios, including full-scale production-quality data sets, and have a known result. IFTs combine multiple solution features in key combinations according to business requirements, including full-scope test plans and data sets which span all functional and business requirements and represent realistic planner workflows. IFTs are developed and executed as part of the Design project phase, depend on the successful passing of the UFT test suite, and are essential for validating overall solution design.

Since building and validating the prototype model is a key requirement of the Design phase, as required functionalities and solution configurations are determined they can be conveniently instantiated into a series of IFT data sets by solution architects with minimal effort, and executed by business users as a milestone for entering the Construct phase. So, building and executing IFTs should not require significant development time unrelated to key project milestones, and may decrease the deployment time by pinpointing design issues early in the project timeline.

Like the UFT, the IFT enables business users to become comfortable with both the software UI and solution behavior in the context of complete user workflows. They are leveraged by change management program initiatives and activities to generate awareness, understanding, confidence and enthusiasm in the solution deployment during the Design phase. This activity equips business users with an understanding of how the software meets their business requirements, helps identify and resolve gaps in the solution design, and positions the business for solution adoption and acceptance. User  engagement in developing and executing the IFT test suite enables them to understand how important the next test type, the System Performance Test, is for implementation success, and to drive and own this test phase.

SCM Test Plans – Prepare

In our last post introducing a world-class SCM testing strategy, we considered the importance of a collaborative approach when testing enabling technologies in complex SCM environments. A hands-off mindset in such contexts is naïve at best, generally leading to frustration and sub-optimal solution value, if not outright failure. Experienced SCM professionals recognize the nature of this problem and adopt a comprehensive, collaborative strategy for ensuring success.

Four distinct types of tests are relevant when addressing this challenge, corresponding to four, distinct SCM project phases; each kind of test plays a necessary role in ensuring project success.

The first type of test recommended in complex SCM planning scenarios is the UFT – the Unit Functional Test – and enables the Prepare project phase, prior to Design and Construct. The UFT:

  • Tests a specific solution feature on a small, static data set with a known result;
  • Might use dummy data rather than realistic production data;
  • Is useful for explaining and illustrating functional solution behavior, both in isolation and in limited combinations, as well as solution design, data and configuration requirements.

UFTs can be stand-alone, independent of any given software implementation, so they are easily developed and executed early in the Prepare project phase. These tests are typically short and simple, based on small data sets which are relatively easily understood, have a very focused scope, and a known result. They each comprise a simple, clearly-documented workflow and Pass/Fail criterion, such that they can be executed and understood by those who do not yet know the new software.

Due to their simplicity and limited scope, the UFT can serve to familiarize users with the application UI, navigation and workflows, train users in solution-specific terminology and behavior, and clarify data requirements for solution architects and data integrators. Since each UFT scenario tends to focus on a single aspect of the solution using a simple, static data model, developing Pass/Fail criteria also tends to be straightforward.

Further, the inherent simplicity of the UFT implies that there is no reason to reinvent the wheel in creating them; the software solution provider should be able to deliver a relevant suite of UFTs out of the box, ready to go and used as-is, or adapted to current business needs with very minimal effort, requiring an insignificant time commitment in the project timeline for positioning them.

Executing and passing a comprehensive set of UFTs relevant to the current software deployment, demonstrating key solution features and behavior in a small, informal test environment, can be conveniently leveraged to enable super-user training, again with no excessive strain on project timelines or resources, and positioned to define a key milestone for the completion of the Prepare phase.

Since UFTs should seldom fail, executing a UFT test suite tends to build momentum and confidence in the new cutting-edge technology through hands-on experience, and provide valuable, practical business-critical insights into the capability and value inherent in an SCM enhancement project early in the implementation, avoiding misinformation and confusion, alleviating fears, and thereby facilitating change management and encouraging solution acceptance and adoption.

If a UFT does happen to fail, which might be due to a solution defect, but more often than not is rooted in incorrect or inaccurate data or solution configuration, the earlier this problem is detected and resolved the better, which is all the more reason to execute this type of test early in the project timeline.

Knowing that all required solution features are represented in the UFT test suite, and that all of them have passed as a milestone to complete the Prepare project phase, simplifies resolution of the problems inevitably encountered in more complex scenarios involving combinations of features and complex interactions with less clearly understood data, and may, in fact, avoid them altogether through aligned user expectations, correct solution design, and thorough data configuration, cleansing and validation.

Finally, and significantly, well-designed UFTs also enable business users to understand the importance and protocol of the overall testing and issue resolution process, and familiarize them with the required test plan templates and issue reporting and resolution workflows and protocols.

The value of Unit Functional Testing during the Prepare phase is significant, but not readily apparent to those unfamiliar with the difficulty and complexity often inherent in SCM implementations. Engaging users in this activity early in the project with simple tests equips them to engage more fully and efficiently in creating and executing the remaining types of tests leveraged in SCM testing methodology in subsequent project phases, as they take on the next test type, the IFT – the Integrated Functional Test – during the Design Phase, which we describe in detail in our next post.

SCM Test Plans – Intro

When deploying enabling technologies in complex supply chain management (SCM) environments, there is significant business benefit in a rigorous testing methodology for validating solution design and performance in each unique deployment. Since plan quality is mission critical in SCM, it is imperative that an appropriate, collaborative testing strategy be developed and executed, especially for highly configurable, data-sensitive applications, to ensure deployment success.

Robust SCM planning applications tend to be highly configurable and extremely data-intensive, such that few deployments are exactly alike. In such contexts it is unrealistic to expect the software solution provider to rigorously test every conceivable solution configuration and data combination within any given software release cycle, implying that each separate instance of software deployment may contain some untested configurations. The testing requirement in these business scenarios inevitably begins to resemble that of purely custom development, where the need for thorough testing is much more intuitive. Given the fact that such systems are mission critical, where deployment failure is unacceptable, it is essential that a collaborative approach to testing be adopted by both the business and the software solution provider.

Designing an effective test strategy in a complex SCM environment requires an intimate knowledge of both the business and functional requirements, as well as the software solution design, features and capabilities. Since it is uncommon for the solution provider to have an intimate knowledge of the business context, and unlikely for business users to be adequately familiar with design and capability of the software application, it is difficult for either party to effectively construct and execute test plans in isolation, so a collaborative effort between the business and the software solution provider in test plan creation and execution is a must.

Unless SCM program managers have relevant prior experience implementing these types of complex systems, they may not realize the importance of their team’s participation in the testing and validation effort, expecting this to be the sole responsibility of the software solution provider. Such a hands-off approach is often a recipe for failure. It is critical that business managers understand this requirement, and adopt a collaborative role in the testing process, even taking ownership and driving it, working closely with the software solution provider in joint-partnership to ensure deployment success.

In the coming posts, we’ll consider four distinct types of tests, and how each plays a key role in an integrated, comprehensive, effective SCM testing strategy.

Value-Driven Business Reporting

Business Intelligence (BI), has been corporate center stage for a while now, but experience tells us that creating a new report for a business and getting it right can be immensely challenging, time consuming, and frustrating.

More often than not, those asking for a new report don’t fully understand what they want, or why they want it, or exactly what to ask for, and those providing the report don’t understand much more. The result can be a number of painful iterations, and significant wasted time and effort. In most IT departments, this type of waste is expensive, in both opportunity cost and monetary cost. What are some keys that can help us collaborate efficiently to get the outcome we need without all the hassle?

The first question to ask when designing a new report, or sprucing up an existing one, is: What action should this report trigger? When a user views the report, what decision(s) are they looking to make? This is another way of stating the business requirement enabled by the report. What does a user want to do as a result of looking at it? This is, by definition, the purpose of the report. Until this is clear, the need is suspect; answer this question before proceeding with any design.

And if we understand what a business requirement is, then we also realize that every well-defined business requirement drives a valuable business behavior, measured by a business metric. This gives the What of our report the needed Why, providing a sense of the business value potential inherent in the report.

Once the purpose and value of the report are clearly understood, the next question to ask is: What data is both necessary and sufficient to inform the user to take this action? The user needs information to act on, not too much and not too little, so determine what this specific information is, what the user needs to know to accomplish their purpose, and how the user is going to interpret this data.

Next, we must source the data, and synchronize it with the user’s purpose. Locate or envision the data store, determine who should be responsible to maintain this data and technical infrastructure, and specify when the data is needed and how often it must be refreshed, so that we understand supporting system requirements to keep the input data up-to-date and accurate. We may determine from this research that the data is not available in any of our systems, that it will be difficult to acquire and maintain, and/or that the user will need to interact with the report to supply additional tribal or business knowledge to get the desired outcome. We may also find that the data is sensitive or crucial to our business, such that special permissions are needed to see or edit it, which implies more difficulty and cost to develop and manage the report.

The next step is to determine how best to present the required information so that the report enables the user to understand what needs to be done with the least possible effort in the shortest amount of time. This typically involves minimizing the number of screens the user needs to view, the amount of scrolling needed, and the number of mouse clicks required to obtain and correctly interpret the relevant information. This usually means maximizing the use of screen real estate by compacting column headers, smart filtering, and eliminating unnecessary detail. Using colors, graphs and pictures to draw the eye of the user to essential details is often a must, and it’s smart to assume the user understands the report and how to use it, rather than designing for a first-time experience, since this will most often be the case and allows for much more efficiency and elegance in the report layout.

With a concept for the report layout and content in mind, it’s time to create a quick and dirty mock up for the users so they can make tweaks and corrections before investing in the final product. There’s nothing like seeing to put things in perspective, especially for those of us with a more visually-oriented learning style.

Finally, now that we understand the data sourcing and reporting requirements, we begin to understand the cost of the creating and maintaining the report, which ought to be justified by the report’s value. So here is where we get ask and answer the key fiscal question: Is the value we expect from using this report worth the cost we expect in developing and maintaining it?

If the expected cost of the report is warranted by the expected value, if the payoff appears to be worth the investment in time and company resources, then it’s time to get to work and build it, working closely with the user community to ensure that the report provides optimal value for our business.

And, last but not least, be sure to document how to use the report and the justification for its design, why the report is built the way it is. This helps train new users, keeps the report’s purpose and value in view, and prevents recycling through bad designs as new people inherit and begin using the report. Provide this documentation on line through a Help button built into the report, so that this information is always readily accessible to everyone with access to the report.

Good reporting design and infrastructure makes life easier for everyone, and can bring immense, ongoing value to our business. So let’s be smart about it, and do it right.

Planning, Schedule, Execution: Implications

In our last post we considered Execution in the context of Planning and Scheduling; now, let’s summarize our findings and consider why and how we uniquely consider these domains.

To accomplish an objective we plan: we break our objective down into a series of steps we can follow to achieve it efficiently. We include sufficient detail to reasonably ensuring feasibility, more detail in earlier steps. We measure how well our plan meets our objective, how well we’re following our plan, and re-plan remaining steps as circumstances change. The better we plan, the more likely we’ll succeed.

We schedule when efficient task sequences aren’t obvious. Finding an optimal schedule is likely impractical, so we often use specialized logic and tools to help us out, looking for good answers fast. “A bad schedule from a good plan is better than a great schedule from a bad plan.” (S. Sidhu, i2)

We plan/schedule to help us execute: to do the right things at the right times in the right ways to efficiently achieve our objective. We freeze the portion of our plan/schedule required to preserve prep time and leave it out of our re-planning/scheduling workflow, managing reality real-time during execution.

For several key reasons, we consider these three domains separately and uniquely.

  1. The objective in each domain is unique, so the tools and logic employed in each should suit the relevant objective.
  2. The horizon in each domain is unique: Planning considers the entire unfrozen horizon; Scheduling considers an initial, smaller unfrozen horizon within the plan; Execution considers the frozen period.
  3. The measure of success in each domain is unique: Planning considers the final objective(s); Scheduling considers localized efficiencies within the plan context, and Execution considers work quality and conformance to the plan/schedule.
  4. The detail required in each domain is unique: Planning has just enough detail to reasonably ensure high level, overall plan feasibility; Scheduling requires significantly more detail to ensure efficiency and executability; Execution must manage to all of reality in real time.

Planning, Scheduling and Execution: considering planning theory and recognizing similarities, differences, and interdependencies helps us position the proper skill sets, logic, tools, workflows and data within each domain, and to integrate them effectively to ensure success.

Planning to Execute

In our last post we considered Scheduling in the context of Planning; now, let’s explore how both Planning and Scheduling enable Execution, noting their respective roles and analyzing their interdependencies.

We plan/schedule to help us execute: to do the right things at the right times in the right ways to efficiently achieve an objective. But in a dynamic world we’re constantly adjusting plans/schedules to reflect reality, which begs a key question: What parts of a plan/schedule can we change without sacrificing productivity?

We want our plan/schedule to reflect reality as much as possible, but we also need sufficient plan stability to avoid generating waste, getting ready to perform one task and then doing something else. So, inside this lead time we don’t re-plan (except for major disruptions, when such waste is warranted), and work with older data. This first part of the plan belongs to Execution, defining a frozen period, a boundary enabling us to consistently re-align our plans with reality without sacrificing efficiency.

Planning/Scheduling workflows need an accurate picture of the conditions expected at the Execution boundary, at the end of the frozen period. Given this starting condition, re-planning/scheduling can align plans with Execution, closely reflecting reality without destabilizing our work environment. When Execution experiences a major disruption, requiring a relaxation of all or part of the frozen period to enable more complete re-planning, execution and planning/scheduling workflows and interfaces should be designed to provide this capability.

Though planners may request visibility to frozen plan details within planning/scheduling workflows, such detail is irrelevant for planning/scheduling purposes. Providing it can actually be problematic since planning/scheduling tools generally approximate reality, not fully considering execution-level detail. Execution may work the plan/schedule in ways that violate simplistic constraints and interdependencies inherent in the system-generated plan/schedule, making accurate representation in planning/scheduling systems very difficult or impossible, encumbering and possibly destabilizing planning/scheduling workflows.

Now that we’ve explored planning theory and analyzed the relationships and interdependencies between Planning, Scheduling and Execution, in our final post we’ll take a step back and look at the big picture to summarize what we’ve found and why it’s important.

Planning to Schedule

In our last post we considered planning theory as a unique problem solving domain, so now let’s compare and contrast Planning and Scheduling, understanding how they work together.

In most every plan we’re following a series of steps, tasks following one after another, where task order is driven by their interdependencies. But when we have some flexibility and certain task sequences are much better than others, then we have a separate scheduling problem within our planning activity that deserves special attention.

Scheduling looks at small subsets of tasks within our overall plan, within a much shorter horizon, considering much more detail and using different measures, to generate efficient task sequences. It requires a completely different skill set and supporting capability than Planning.

For example, say we have some jobs lined up and hourly employees staffed to do them; each job has multiple steps that can be done in any order by anyone, but our staff has varying pay grades and skill sets, each being much more efficient at certain kinds of work. We want jobs done on time with the least cost.

We start by planning, sorting jobs by need time and estimating how many staff we need each week based job types and historical patterns. Then we task our trusty scheduler with finding least-cost weekly assignments, utilizing each worker between 20 and 60 hours per week, completing all jobs on time. In week one we plan four people to do a set of five jobs, each having three steps; if our scheduler evaluates ten thousand schedules per second, we’ll have the least-cost schedule for that first week in … (4*15!/[1E5*3600*24*365] = ) … 16 years!

Every type of scheduling problem is different, but we know in general that they’re notoriously difficult to solve optimally, being in an altogether different space than planning. Their difficulty is often completely independent of planning complexity, and varies enormously by problem type and size. We need good answers fast, not perfect answers, using common-sense rules of thumb to simplify problems and very specialized optimization tools to do the heavy lifting.

And we can’t forget that every scheduling problem is embedded within some kind of planning problem, and that the inputs to our scheduling problems come from our plans: “A bad schedule from a good plan is better than a great schedule from a bad plan.” (Sanjiv Sidhu, i2 Technologies co-founder)

Next we’ll explore how Execution fits in with both Planning and Scheduling.

A Planning Paradigm

In our first post we looked at the general theory of Planning, Scheduling and Execution in the context of daily life, in a way we can all relate to. Now let’s look at Planning theory in more detail.

We plan so we can see how to accomplish a given objective, so we know what needs to be done and when, so we don’t overlook anything important along the way. The more complex our objective is, the more critical our plan will be; the better we plan the more likely we are to succeed.

The foundation of Planning, especially in complex scenarios, lies in our ability to break down an objective into a series of steps we can follow to achieve it. Insufficient detail may confuse us, where we don’t know what’s next or we forget something; too much detail wastes time on things that should be obvious and that may change by the time we get there. Knowing how much detail to include is as much an art as it is a science, it’s dependent on context, and often involves a bit of trial and error.

To create a good plan we need to identify the key steps needed to reach our goal, and we need to understand and respect the interdependencies between these steps. We need to estimate, aggregate and summarize key details supporting these steps so we can reasonably and quickly ensure plan feasibility. When there are multiple ways to do certain things we need the ability to quickly evaluate our options and pick the best ones, and in dynamic or uncertain environments we need to plan for contingencies. We also need a way to measure how well our plan is achieving our objective, a way to monitor how well we’re doing as we execute, and an efficient way to re-plan when we’re getting off track.

Obviously, given the complexities we often face, the above is much easier said than done. Keeping our approach as simple as possible while achieving our objective is important, but certain kinds of complexities can indeed be quite helpful when we’re repeatedly challenged with the same kinds of planning problems: automating data collection, reporting and optimization can free us up to do the things we do best — analyzing situations, making strategic decisions and managing our business.

Next we’ll see how Scheduling fits with Planning and Execution.

Plan, Schedule, Execute: Life In Action

To get anything done, call this execution, we need a plan. In simple cases we might not even notice we’re planning, but we always do. All of life’s this way, all day, every day, if we stop and think about it.

And as we execute to a plan, life happens and we re-evaluate and adjust: we re-plan as needed and continue executing until we either meet our objective or give up. Whether we’re running errands, building a house, fighting a war, or managing a supply chain, the same basic principles apply.

As our objectives become more complex so do our plans. We break our objective down into key steps, considering critical baseline conditions, and include enough detail to ensure feasibility as well as we can. We know things will change, so we include more detail in earlier stages where less change is expected, planning far enough out to see how we’ll ultimately achieve our objectives.

Most every plan requires set of tasks to be done in a sequence. When the sequence is intuitive we may not even think about it, but if there’s some flexibility, and it appears that certain sequences will be much more efficient than others, we’ll likely do some scheduling. We initially plan these tasks at a high level, lumping them into periods where we need them, then as we get closer we include more detail and apply additional skill and logic to determine a good sequence within the context of our plan. This is definitely a kind of planning, but a completely different, more intense kind.

Finally, some tasks require a bit of lead time to prep for, so we “freeze” this initial part of our plans, stabilizing them long enough to protect this setup effort once we get it started. We generally handle minor adjustments during this frozen period as needed, on the fly as we’re working out our plan.

The above concepts are intuitive, and perhaps deceptively simple; it’s what we do naturally every day. But the ideas are extremely powerful when applied in larger contexts. It should come as no surprise then that they comprise the foundation of general planning theory. To be successful in more complex scenarios, where managing all the moving parts at once and seeing how they’re all working together is next to impossible, it’s important to intelligently and consistently apply these same basic principles.

In our next post, we’ll take a closer look at Planning as a unique problem solving domain, consider its purpose and scope and distinguish it from both Scheduling and Execution. Then we’ll follow with similar analyses to complete the total picture, and then summarize what we find. When we’re done, we should have a much better sense of how to tackle our most complex planning challenges.