As others have said, it truly depends on your capability and your needs. R: R and RStudio are great resources because it is free and there are a variety of libraries to accomplish what you need without inputting your own formulas. Minitab output is full of graphs (we get six graphs for capability studies). Comprehension of analyses is easy for company leadership. DOE is not a part of excel package. Chi sq test option is not there in Analysis ToolPak. However excel can compute Chi sq value by specifying expression =Chitest (observedrange,expctedrange).
-->An assertion statement specifies a condition that you expect to be true at a point in your program. If that condition is not true, the assertion fails, execution of your program is interrupted, and the Assertion Failed dialog box appears.
Visual Studio supports C++ assertion statements that are based on the following constructs:
MFC assertions for MFC programs.
ATLASSERT for programs that use ATL.
CRT assertions for programs that use the C run-time library.
The ANSI assert function for other C/C++ programs.
You can use assertions to catch logic errors, check results of an operation, and Test error conditions that should have been handled.
In this topic
How assertions work
When the debugger halts because of an MFC or C run-time library assertion, then if the source is available, the debugger navigates to the point in the source file where the assertion occurred. The assertion message appears in both the Output window and the Assertion Failed dialog box. You can copy the assertion message from the Output window to a text window if you want to save it for future reference. The Output window may contain other error messages as well. Examine these messages carefully, because they provide clues to the cause of the assertion failure.
Use assertions to detect errors during development. As a rule, use one assertion for each assumption. For example, if you assume that an argument is not NULL, use an assertion to test that assumption.
Assertions in Debug and Release builds
Assertion statements compile only if _DEBUG
is defined. Otherwise, the compiler treats assertions as null statements. Therefore, assertion statements impose no overhead or performance cost in your final Release program, and allow you to avoid using #ifdef
directives.
Side effects of using assertions
When you add assertions to your code, make sure the assertions do not have side effects. For example, consider the following assertion that modifies the nM
value:
Because the ASSERT
expression is not evaluated in the Release version of your program, nM
will have different values in the Debug and Release versions. To avoid this problem in MFC, you can use the VERIFY macro instead of ASSERT
. VERIFY
evaluates the expression in all versions but does not check the result in the Release version.
Be especially careful about using function calls in assertion statements, because evaluating a function can have unexpected side effects.
VERIFY
calls myFnctn
in both the Debug and Release versions, so it is acceptable to use. However, using VERIFY
imposes the overhead of an unnecessary function call in the Release version.
CRT assertions
The CRTDBG.H header file defines the _ASSERT and _ASSERTE macros for assertion checking.
Macro | Result |
---|---|
_ASSERT | If the specified expression evaluates to FALSE, the file name and line number of the _ASSERT . |
_ASSERTE | Same as _ASSERT , plus a string representation of the expression that was asserted. |
_ASSERTE
is more powerful because it reports the asserted expression that turned out to be FALSE. This may be enough to identify the problem without referring to the source code. However, the Debug version of your application will contain a string constant for each expression asserted using _ASSERTE
. If you use many _ASSERTE
macros, these string expressions take up a significant amount of memory. If that proves to be a problem, use _ASSERT
to save memory.
When _DEBUG
is defined, the _ASSERTE
macro is defined as follows:
If the asserted expression evaluates to FALSE, _CrtDbgReport is called to report the assertion failure (using a message dialog box by default). If you choose Retry in the message dialog box, _CrtDbgReport
returns 1 and _CrtDbgBreak
calls the debugger through DebugBreak
.
If you need to temporarily disable all assertions, use _CtrSetReportMode.
Checking for Heap Corruption
The following example uses _CrtCheckMemory to check for corruption of the heap:
Checking Pointer Validity
The following example uses _CrtIsValidPointer to verify that a given memory range is valid for reading or writing.
The following example uses _CrtIsValidHeapPointer to verify a pointer points to memory in the local heap (the heap created and managed by this instance of the C run-time library — a DLL can have its own instance of the library, and therefore its own heap, outside of the application heap). This assertion catches not only null or out-of-bounds addresses, but also pointers to static variables, stack variables, and any other nonlocal memory.
Checking a Memory Block
The following example uses _CrtIsMemoryBlock to verify that a memory block is in the local heap and has a valid block type.
MFC assertions
MFC defines the ASSERT macro for assertion checking. It also defines the MFC ASSERT_VALID
and CObject::AssertValid
methods for checking the internal state of a CObject
-derived object.
If the argument of the MFC ASSERT
macro evaluates to zero or false, the macro halts program execution and alerts the user; otherwise, execution continues.
When an assertion fails, a message dialog box shows the name of the source file and the line number of the assertion. If you choose Retry in the dialog box, a call to AfxDebugBreak causes execution to break to the debugger. At that point, you can examine the call stack and use other debugger facilities to determine why the assertion failed. If you have enabled Just-in-time debugging, and the debugger was not already running, the dialog box can launch the debugger.
The following example shows how to use ASSERT
to check the return value of a function:
You can use ASSERT with the IsKindOf function to provide type checking of function arguments:
The ASSERT
macro produces no code in the Release version. If you need to evaluate the expression in the Release version, use the VERIFY macro instead of ASSERT.
MFC ASSERT_VALID and CObject::AssertValid
The CObject::AssertValid method provides run-time checks of the internal state of an object. Although you are not required to override AssertValid
when you derive your class from CObject
, you can make your class more reliable by doing this. AssertValid
should perform assertions on all of the object's member variables to verify that they contain valid values. For example, it should check that pointer member variables are not NULL.
The following example shows how to declare an AssertValid
function:
When you override AssertValid
, call the base class version of AssertValid
before you perform your own checks. Then use the ASSERT macro to check the members unique to your derived class, as shown here:
If any of your member variables store objects, you can use the ASSERT_VALID
macro to test their internal validity (if their classes override AssertValid
).
For example, consider a class CMyData
, which stores a CObList in one of its member variables. The CObList
variable, m_DataList
, stores a collection of CPerson
objects. An abbreviated declaration of CMyData
looks like this:
The AssertValid
override in CMyData
looks like this:
CMyData
uses the AssertValid
mechanism to test the validity of the objects stored in its data member. The overriding AssertValid
of CMyData
invokes the ASSERT_VALID
macro for its own m_pDataList member variable.
Validity testing does not stop at this level because the class CObList
also overrides AssertValid
. This override performs additional validity testing on the internal state of the list. Thus, a validity test on a CMyData
object leads to additional validity tests for the internal states of the stored CObList
list object.
With some more work, you could add validity tests for the CPerson
objects stored in the list also. You could derive a class CPersonList
from CObList
and override AssertValid
. In the override, you would call CObject::AssertValid
and then iterate through the list, calling AssertValid
on each CPerson
object stored in the list. The CPerson
class shown at the beginning of this topic already overrides AssertValid
.
This is a powerful mechanism when you build for debugging. When you subsequently build for release, the mechanism is turned off automatically.
Limitations of AssertValid
A triggered assertion indicates that the object is definitely bad and execution will stop. However, a lack of assertion indicates only that no problem was found, but the object is not guaranteed to be good.
Using assertions
Catching logic errors
You can set an assertion on a condition that must be true according to the logic of your program. The assertion has no effect unless a logic error occurs.
For example, suppose you are simulating gas molecules in a container, and the variable numMols
represents the total number of molecules. This number cannot be less than zero, so you might include an MFC assertion statement like this:
Or you might include a CRT assertion like this:
These statements do nothing if your program is operating correctly. If a logic error causes numMols
to be less than zero, however, the assertion halts the execution of your program and displays the Assertion Failed Dialog Box.
Checking results
Assertions are valuable for testing operations whose results are not obvious from a quick visual inspection.
For example, consider the following code, which updates the variable iMols
based on the contents of the linked list pointed to by mols
:
The number of molecules counted by iMols
must always be less than or equal to the total number of molecules, numMols
. Visual inspection of the loop does not show that this will necessarily be the case, so an assertion statement is used after the loop to test for that condition.
Finding unhandled errors
You can use assertions to test for error conditions at a point in your code where any errors should have been handled. In the following example, a graphic routine returns an error code or zero for success.
If the error-handling code works properly, the error should be handled and myErr
reset to zero before the assertion is reached. If myErr
has another value, the assertion fails, the program halts, and the Assertion Failed Dialog Box appears.
Assertion statements are not a substitute for error-handling code, however. The following example shows an assertion statement that can lead to problems in the final release code:
This code relies on the assertion statement to handle the error condition. As a result, any error code returned by myGraphRoutine
will be unhandled in the final release code.
See also
Description
The online, on-demand OpEx Six Sigma Black Belt course uses Minitab software examples. Once you are certified, you will be able to join successful project managers, improvement consultants, supervisors, managers, leaders and individual contributors who are saving billions by improving productivity, reducing waste, variation and defects. This course includes all the Green Belt course material. The Six Sigma Black Belt certification is one of the most sought-after credentials in business today. As a Six Sigma Black Belt, your mastery of Six Sigma techniques and strategies will help you lead top-quality projects and mentor Green Belts in your organization, where together you will identify and implement breakthrough improvements for enhanced bottom-line results.
Black Belt is officially the 4th level of Six Sigma training:
- White Belt
- Yellow Belt (includes White Belt)
- Green Belt (Minitab) or Green Belt (SigmaXL) – includes Yellow Belt
- Black Belt (Minitab) or Black Belt (SigmaXL) – includes Green Belt
- Master Black Belt
About this course
The OpEx Six Sigma Six Black Belt – Minitab course is over 70 hours of online content (7 CEUs or 70 PDU as OpEx Learning is an IACET accredited provider), which includes about 30 hours of Green Belt. We have removed all unnecessary content and information in the training material, to maximize what you need to know in the least amount of time. Our training is fast-paced and engaging, and no single module exceeds 30 minutes, so you can complete on your own schedule in small doses. Typical online courses cover the same content in 80 or more hours.
What’s Included in the OpEx Six Sigma Online Black Belt course?
- Each module requires completion of a 10 question quiz (70% pass rate or higher, retakes allowed).
- Digital version of the complete Black Belt program (PDF manual for duration of course)
- On demand, 24/7 access with ONE year of access to professionally narrated OpEx Learning training courses
- Numerous Project Templates and Job Aids for Six Sigma Projects
- Online Quizzes and Exam, including section comprehensive examinations.
- Upon completion of the training and passing the examinations, you will receive access to:
- Six Sigma Black Belt Training Certificate
- 7 CEUs;70 PDUs
Six Sigma Black Belt Certification Online Course Syllabus
- White Belt Training (skips if you’ve already completed)
- Yellow Belt Training (skips if you’ve already completed)
- Green Belt Training (skips if you’ve already completed)
- Green Belt Review – DMAIC methodology and roadmap along with key tools, Project Charter, Project Tracking, Hypothesis and Decision Risk, and Multi-Vari Study
- Central Limit Theorem – Explanation with averaging of subgroups converge to a normal distribution, along with simulation with data, Poisson distribution, Normal Probability Plot, Sampling plans, Confidence Intervals, t-distribution, examples with software
- Advanced Measurement Systems Analysis (MSA) – Review of MSA concepts, Interpreting charts, Variance Component Model, Central Limit Theorem with MSA, Attribute MSA, Kappa statistic, examples with software
- Advanced Capability and Data Transformation – Capability analysis with nonnormal data sets, one-sided limits and bounds, examples with software
- Multiple Regression – Using regression with multiple inputs, along with ways to create matrix plot, scatterplot, coefficients of determination, R-squared Adjusted, Test for Overall Significance, t Test, Collinearity, Variance Inflation Factor (VIF), Residual Plot, Transforming Data, Best Subsets Regression, Coding Categorial Predictors, Stepwise Regression, examples with software
- DOE Planning – Questions and best practices for setting up a designed experiment (DOE)
- Full Factorials – Experiments running all combination of factors, including concepts of Pareto chart analysis, Factorial plots, 2^3 factorial designs, 3-factor interactions, Curvature, Center points, Randomization, examples with software
- Fractional Factorials Designs – More efficient experiments by strategically removing some combination of factors, including topics such as screening variable, Full vs Fractional Factorial experiments, Confounding, Design Resolution, examples with software
- General Factorial Designs – Experiments with different number of levels for each factor (some have 2, some have 3+), and topics such as Design Matrix, Predict Functions, Balanced ANOVA, General Linear Model, examples with software
- Sample Size Calculations – Techniques for sampling (simple random, stratified, cluster, systematic, subgroup), recommended sample sizes, Decision errors (alpha, beta, delta), Sample Size calculator (examples for ANOVA, Hypothesis Tests, proportion tests)
- Optimization Designs – Conducting experiments with more than 2 levels, Response Surface Methodology (RSM), Contour Plot, Path of Steepest Ascent (PoA), Modeling curvature, Central Composite Design (CCD), Central Composite Face Design (CCF), Augmenting a Design, Model Restriction, Contour Plot, Surface Plot, Box-Behnken Design
- Multiple Response Optimization – Finding the best combination of results with 2 output variables, starting with response surface optimization, modeling and reducing each output, examples with software
- Evolutionary Operations (EVOP) – Incremental experimentation for continuous processes, including cycles and phases
- Advanced Statistical Process Control (SPC) – Review of control charts, and details about control charts for variable and attribute charts (Individuals, Moving Range, X-bar, Range, p, np, c and u charts), examples with software
- Control Plan – Tool for tracking the activity for monitoring your processes, including control plans connecting to FMEA, specifications, control methods, capability, MSA, sample size and frequency, and reaction plan
- Change Management – How to prepare your organization for change, including what makes a good leader, managing change effectively, why people resist change, dealing with resistance
- Black Belt Review and Wrap Up – covers Green Belt and Black Belt topics
Minitab Test Menu On Vs Microsoft Office
Here are some screenshots from each of the modules:
Central Limit Theorem
Multiple Regression
Fractional Factorials Designs
Optimization Designs
Advanced Statistical Process Control (SPC)
Online Program Requirements
Minitab Test Menu On Vs Microsoft Office
- A computer with online access to the internet with an updated browser with javascript and cookies enabled
- Sound Card and Speakers
- Recommended display settings with at least 1024 X 768 Screen Size
- Secure PDF Viewer from LockLizard (free)
- Access to Microsoft Office 2000 or newer or equivalent
- A free 30 demo of Minitab software
- You are not to provide your login information to other users. Your online account is for your personal use.
- Refund: 7 days following purchase