Strategic Evaluation and Control

Strategic Evaluation & control is as important as strategy formulation. It sheds light on the efficiency and effectiveness of the comprehensive plans in achieving the desired results.

Role of organizational systems in strategic evaluation & control: Strategic evaluation operates in the context of various organizational systems. An organization develops various systems which help in integrating various parts of the organization. The major organizational systems are: informa­tion system, planning system, motivation system, appraisal system and development system. All these organizational systems play their role in strategic evaluation and control. Some of these systems are closely and directly related and some are indirectly related to evaluation and control. In connection with the role of organizational systems in strategic evaluation & control, the following systems may be important.

  1. Information System

Evaluation and control action is guided by adequate informa­tion from the beginning to the end. Management information and management control systems are closely interrelated which the information system is designed on the basis of control system. Every manager in the organization must have adequate information about his performance, standards and how he is contributing to the achievement of organizational objectives. There must be a system of information tailored to the specific management needs at every level, both in terms of adequacy and timeliness.

  1. Planning System

Planning is the basis for control in the sense that it provides the entire spectrum on which control function is based. In fact, these two terms are often used together in the designation of the department which carries production planning, scheduling and routing. It emphasizes that there is a plan which directs the behavior and activities in the organization. Control measures these behavior and activities and suggests measures to remove deviation. Thus, there is a reciprocal relationship between planning and control.

  1. Motivation System

Motivation system is not only related to evaluation and control system but to the entire organizational processes. Lack of motivation on the part of managers is a significant barrier in the process of evaluation and control. Since the basic objective of evaluation and control is to ensure that organizational objectives are achieved. Motivation plays a central role in this process. It energizes managers and other employees in the organization to perform better which is the key for organizational success.

  1. Appraisal System

Appraisal or performance appraisal system involves systematic evaluation of the individual with regard to his performance on the job and his potential for development. While evaluating an individual, not only his performance is taken into consideration but also his abilities and potential for better performance. Thus, appraisal system provides feedback for control system about how individuals are performing.

  1. Development System

Development system is concerned with developing personnel to perform better in their present positions and likely future positions that they are expected to occupy. Thus, development system aims at increasing organizational capability through people to achieve better results. These results become the basic for evaluation and control. Role of organizational systems in strategic evaluation should not be undermined.

Techniques of strategic evaluation & control

Strategy evaluation and control is the sixth step in the strategic management process. As we have read that well executed strategy definitely ensures successful achievement of organizational goals and objectives. But changes internal and external environment of an organization may not allow the firm to achieve desired goals and objective. The environment changes may takes place at any stage of strategy implementation. Strategy evaluation and control done after measuring results shall not help in taking corrective action. It should be done in the early stage of strategy execution, to see whether the strategy is successfully implemented or not and to carryout mid-course corrections whenever necessary. Therefore strategists should systematically review, evaluate, and control the process of strategy implementation.

Criteria of Strategic Evaluation and Control

Strategic Evaluation and Control refer to the systematic process of assessing the efficiency and effectiveness of a strategy after its implementation to determine if it meets the set objectives and contributes to the overall goals of an organization. This involves continuous monitoring and analyzing the actual performance against planned targets, identifying deviations, and implementing corrective actions as needed. The control aspect ensures that any strategic initiative remains aligned with the organization’s goals, adapts to changes in the external environment, and efficiently uses resources. This dual process helps organizations to continuously refine and adjust their strategies to optimize outcomes and ensure long-term success.

Strategic evaluation and control involve assessing the implementation of strategic plans and their outcomes, and ensuring that performance aligns with organizational goals.

Criteria for Strategic Evaluation

  1. Relevance:

The strategies should remain relevant to the internal and external environment. This includes checking if the strategic goals still align with the market dynamics and organizational mission.

  1. Effectiveness:

Measures the degree to which the strategic objectives have been achieved. This involves comparing actual results against intended outcomes.

  1. Efficiency:

Assesses how resources are utilized and whether the outcomes are worth the input. It looks at cost-effectiveness and resource allocation.

  1. Adaptability:

Evaluates how flexible and adaptable the strategies are in response to changing conditions in the environment.

  1. Sustainability:

Checks if the strategy can sustain organizational growth and performance over the long term, considering environmental, social, and economic factors.

  1. Consistency:

Ensures that strategies are consistent with each other and with the overall business objectives, avoiding any conflict between various strategic initiatives.

Criteria for Strategic Control

  1. Alignment:

Ensures that the strategic actions are aligned with the set strategic goals. This involves continuous monitoring and alignment of operations with strategic objectives.

  1. Timeliness:

Focuses on the timely execution of strategic initiatives and the speed of response to any deviations from the plan.

  1. Accuracy:

Involves collecting and utilizing accurate data for making informed decisions. This ensures that the controls in place are based on reliable and valid information.

  1. Comprehensiveness:

Encompasses all aspects of the organization and its environment. It checks that all relevant factors are considered in the control process.

  1. Flexibility:

Looks at how easily the organization can adjust its strategies and operations in response to feedback and environmental changes.

  1. Cost-effectiveness:

Evaluates whether the benefits of a control mechanism justify the costs involved. This is crucial for maintaining financial health and optimizing resource usage.

Techniques of Strategic Evaluation and Control

Strategic Evaluation and Control refer to the systematic process of assessing the efficiency and effectiveness of a strategy after its implementation to determine if it meets the set objectives and contributes to the overall goals of an organization. This involves continuous monitoring and analyzing the actual performance against planned targets, identifying deviations, and implementing corrective actions as needed.

Strategic evaluation and control are essential for ensuring that an organization’s strategies are effectively guiding it towards its goals. Various techniques are used in this process, each serving different purposes but collectively helping an organization stay on track.

  • Benchmarking:

Comparing the organization’s processes and performance metrics to industry bests or best practices from other industries.

  • Balanced Scorecard:

Incorporates financial and non-financial measures across four dimensions: Financial Performance, Customer Knowledge, Internal Business Processes, and Learning and Growth.

  • Key Performance Indicators (KPIs):

Specific metrics defined to measure the effectiveness of current strategies in achieving organizational objectives.

  • SWOT Analysis:

Evaluates strengths, weaknesses, opportunities, and threats to understand both internal and external environments affecting the organization.

  • Management by Objectives (MBO):

Involves setting specific measurable objectives aligned with organizational goals, which are agreed upon by management and employees.

  • Financial Ratio Analysis:

Uses ratios like return on investment (ROI), return on assets (ROA), and profit margins to analyze organizational financial health and performance.

  • Value Chain Analysis:

Examines activities within the organization and identifies where value can be added to products and services, including identifying cost advantages or disadvantages.

  • Scenario Planning:

Involves developing detailed, hypothetical scenarios to anticipate possible future conditions and how the organization might respond to them.

  • Strategy Maps:

Visual representations of an organization’s overall objectives related to each other and the strategy itself, facilitating alignment and understanding across the organization.

  • Performance Dashboards:

Provide real-time data on key performance indicators and critical success factors, allowing for quick adjustments to strategies and operations.

  • Strategy Reviews:

Regular meetings to review the progress and efficacy of the strategic plan and make necessary adjustments.

  • Environmental Scanning:

Constantly collecting information on external events and trends to identify potential threats or opportunities.

  • Risk Management:

Identifying, analyzing, and responding to risks that could potentially impact the organization’s ability to achieve its objectives.

Computer Programming: Algorithm Development

Computer programming is the process of designing and building an executable computer program to accomplish a specific computing result. Programming involves tasks such as: analysis, generating algorithms, profiling algorithms’ accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding). The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task (which can be as complex as an operating system) on a computer, often for solving a given problem. The process of programming thus often requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

Tasks accompanying and related to programming include: testing, debugging, source code maintenance, implementation of build systems, and management of derived artifacts, such as the machine code of computer programs. These might be considered part of the programming process, but often the term software development is used for this larger process with the term programming, implementation, or coding reserved for the actual writing of code. Software engineering combines engineering techniques with software development practices. Reverse engineering is the opposite process. A hacker is any skilled computer expert that uses their technical knowledge to overcome a problem, but it can also mean a security hacker in common language.

How to Select Programming Language?

Choosing the right programming language is an essential decision for any software development project. Here are some steps to help you choose a programming language:

  1. Understand Your Project Requirements: Start by understanding the specific requirements of your project. Consider the nature of the application you want to build, the target platform (web, mobile, desktop), expected software system response time, number of simultaneous users, security needs, maintenance requirements, and compatibility with various devices.
  2. Consider Your Familiarity and Team Skills: Assess your own skills and the expertise of your development team. If you have experience with a particular language or your team is proficient in a specific language, it might be more efficient to choose that language for the project.
  3. Evaluate Language Features: Each programming language has its unique syntax and features. Research and compare different languages to find one that best aligns with your project requirements. Consider factors like ease of learning, code readability, performance, libraries, and community support.
  4. Check for Library and Framework Support: Consider the availability of libraries and frameworks in the language. These can significantly speed up development and simplify complex tasks, saving time and effort.
  5. Analyze Long-Term Support: Look for a language with good long-term support and a strong community. Regular updates and active community forums ensure that your chosen language remains relevant and well-maintained.
  6. Scalability and Performance: For large-scale applications or performance-critical projects, consider languages known for their scalability and high-performance capabilities.
  7. Check Industry Standards: Consider industry standards and best practices when choosing a language. Using widely accepted languages can make it easier to find developers, resources, and tools.
  8. Budget and Time Constraints: Assess the budget and time constraints of your project. Some languages may require more development time, while others may have licensing costs associated with them.
  9. Future Proofing: Try to choose a language that is versatile and can adapt to future requirements and advancements in technology.
  10. Test and Prototype: If possible, create small prototypes or test projects in different languages to get a hands-on experience of each language’s strengths and weaknesses.

An algorithm is a well-defined procedure that allows a computer to solve a problem. Another way to describe an algorithm is a sequence of unambiguous instructions. The use of the term ‘unambiguous’ indicates that there is no room for subjective interpretation. Every time you ask your computer to carry out the same algorithm, it will do it in exactly the same manner with the exact same result.

Consider the earlier examples again. Spell checking uses algorithms. Financial calculations use algorithms. A search engine uses algorithms. In fact, it is difficult to think of a task performed by your computer that does not use algorithms.

How Do Algorithms Work?

A very simple example of an algorithm would be to find the largest number in an unsorted list of numbers. If you were given a list of five different numbers, you would have this figured out in no time, no computer needed. Now, how about five million different numbers? Clearly, you are going to need a computer to do this, and a computer needs an algorithm.

Below is what the algorithm could look like. Let’s say the input consists of a list of numbers, and this list is called L. The number L1 would be the first number in the list, L2 the second number, etc. And we know the list is not sorted – otherwise, the answer would be really easy. So, the input to the algorithm is a list of numbers, and the output should be the largest number in the list.

The algorithm would look something like this:

Step 1: Let Largest = L1

This means you start by assuming that the first number is the largest number.

Step 2: For each item in the list

This means you will go through the list of numbers one by one.

Step 3: If the item > Largest

If you find a new largest number, move to step four. If not, go back to step two, which means you move on to the next number in the list.

Step 4: Then Largest = the item

This replaces the old largest number with the new largest number you just found. Once this is completed, return to step two until there are no more numbers left in the list.

Step 5: Return Largest

This produces the desired result.

Notice that the algorithm is described as a series of logical steps in a language that is easily understood. For a computer to actually use these instructions, they need to be written in a language that a computer can understand, known as a programming language.

Steps in Programme Development

A programmer has to go through the following stages to develop a computer program:

  1. Defining and Analyzing the Problem

In this step, a programmer studies the problem. He decides the best way to solve these problems. Studying a problem is also necessary because it helps a programmer to decide about the following things:

  • The facts and figures which are necessary for developing the program.
  • The way in which the program will be designed
  • Also, the language in which the program will be most suitable.
  • What is the desired output and in which form it is needed, etc
  1. Designing the Algorithm

An algorithm is a sequence of steps that must be carried out before a programmer starts preparing his program. The programmer designs an algorithm to help visual possible alternatives in a program also.

  1. Coding or Writing the Program

The next step after designing the algorithm is to write the program in a high-level language. This process is known as coding.

  1. Test Execution

The process of executing the program to find out errors or bugs is called test execution. It helps a programmer to check the logic of the program. It also ensures that the program is error-free and workable.

  1. Debugging

Debugging is a process of detecting, locating and correcting the bugs in a program. It is performed by running the program again and again.

  1. Final Documentation

When the program is finalized, its documentation is prepared. Final documentation is provided to the user. It guides the user how to use the program in the most efficient way.

Furthermore, another purpose of documentation is to allow other programmers to modify the code if necessary. Documentation should also be done in each step during the development of the program.

Garbage in, garbage out (GIGO) Outputs

Garbage in, garbage out–or GIGO–has been with us since the early days of computing in the 1960s. In the field of computer science or information and communications technology, says Wikipedia, GIGO “refers to the fact that computers, since they operate by logical processes, will unquestioningly process unintended, even nonsensical, input data (“garbage in”) and produce undesired, often nonsensical, output (“garbage out”).”

theintactone goes on to explore an expansion of the term to Garbage In, Gospel Out, “a sardonic comment on the tendency to put excessive trust in ‘computerized’ data, and on the propensity for individuals to blindly accept what the computer says. Since the data entered into the computer is then processed by the computer, people who do not understand the processes in question tend to believe the data they see.”

Needless to say, this is most unfortunate. The computer is often blamed for the failings of what is really a people-and-process problem. This is particularly true when decision-support systems are concerned and the input to computer programs derives from individuals or teams rather than from streams of accounting or other data.

GIGO is also used as a pejorative by persons who seek to undermine or deride use of advanced analytical and decision-support systems. I challenge this stand; GIGO can occur regardless of the system used–Excel documents are particularly prone to GIGO, either by accident or malicious forethought. The same can be said for any input. It is not a device problem. It is a people problem; frequently a company cultural problem.

People make decisions. Analytics help people make decisions; hopefully good ones. The difference is often the decision process; specifically how to bring people together to improve the quality of their decision making.

The six principles of Decision Quality (DQ) offer a great starting point for minimizing garbage in. By training everyone who has input to the decision process in the six principles and by developing transparency around the decision process, politics can be minimized, objectivity maintained and garbage circumvented.

Garbage in, garbage out–or GIGO–has been with us since the early days of computing in the 1960s. In the field of computer science or information and communications technology, says Wikipedia, GIGO “refers to the fact that computers, since they operate by logical processes, will unquestioningly process unintended, even nonsensical, input data (“garbage in”) and produce undesired, often nonsensical, output (“garbage out”).”

Wikipedia goes on to explore an expansion of the term to Garbage In, Gospel Out, “a sardonic comment on the tendency to put excessive trust in ‘computerized’ data, and on the propensity for individuals to blindly accept what the computer says. Since the data entered into the computer is then processed by the computer, people who do not understand the processes in question tend to believe the data they see.”

Needless to say, this is most unfortunate. The computer is often blamed for the failings of what is really a people-and-process problem. This is particularly true when decision-support systems are concerned and the input to computer programs derives from individuals or teams rather than from streams of accounting or other data.

GIGO is also used as a pejorative by persons who seek to undermine or deride use of advanced analytical and decision-support systems. I challenge this stand; GIGO can occur regardless of the system used–Excel documents are particularly prone to GIGO, either by accident or malicious forethought. The same can be said for any input. It is not a device problem. It is a people problem; frequently a company cultural problem.

People make decisions. Analytics help people make decisions; hopefully good ones. The difference is often the decision process; specifically how to bring people together to improve the quality of their decision making.

The six principles of Decision Quality (DQ) offer a great starting point for minimizing garbage in. By training everyone who has input to the decision process in the six principles and by developing transparency around the decision process, politics can be minimized, objectivity maintained and garbage circumvented.

Pseudocode

Pseudocode is an informal high-level description of the operating principle of a computer program or other algorithm. It uses the structural conventions of a normal programming language, but is intended for human reading rather than machine reading. Pseudocode typically omits details that are essential for machine understanding of the algorithm, such as variable declarations, system-specific code and some subroutines. The programming language is augmented with natural language description details, where convenient, or with compact mathematical notation. The purpose of using pseudocode is that it is easier for people to understand than conventional programming language code, and that it is an efficient and environment-independent description of the key principles of an algorithm. It is commonly used in textbooks and scientific publications that are documenting various algorithms, and also in planning of computer program development, for sketching out the structure of the program before the actual coding takes place.

No standard for pseudocode syntax exists, as a program in pseudocode is not an executable program. Pseudocode resembles skeleton programs which can be compiled without errors. Flowcharts, drakon-charts and Unified Modeling Language (UML) charts can be thought of as a graphical alternative to pseudocode, but are more spacious on paper. Languages such as HAGGIS bridge the gap between pseudocode and code written in programming languages.

Pseudocode is not an actual programming language. So it cannot be compiled into an executable program. It uses short terms or simple English language syntaxes to write code for programs before it is actually converted into a specific programming language. This is done to identify top level flow errors, and understand the programming data flows that the final program is going to use. This definitely helps save time during actual programming as conceptual errors have been already corrected.

Firstly, program description and functionality is gathered and then pseudocode is used to create statements to achieve the required results for a program. Detailed pseudocode is inspected and verified by the designer’s team or programmers to match design specifications. Catching errors or wrong program flow at the pseudocode stage is beneficial for development as it is less costly than catching them later. Once the pseudocode is accepted by the team, it is rewritten using the vocabulary and syntax of a programming language. The purpose of using pseudocode is an efficient key principle of an algorithm. It is used in planning an algorithm with sketching out the structure of the program before the actual coding takes place.

Advantages of pseudocode:

  • Pseudocode is understood by the programmers of all types.
  • It enables the programmer to concentrate only on the algorithm part of the code development.
  • It cannot be compiled into an executable program. Example, Java code : if (i < 10) { i++; } pseudocode :if i is less than 10, increment i by 1.

Flow Chart

Flowchart is a graphical representation of an algorithm. Programmers often use it as a program-planning tool to solve a problem. It makes use of symbols which are connected among them to indicate the flow of information and processing.

The process of drawing a flowchart for an algorithm is known as “flowcharting”.

Basic Symbols used in Flowchart Designs

  1. Terminal

The oval symbol indicates Start, Stop and Halt in a program’s logic flow. A pause/halt is generally used in a program logic under some error conditions. Terminal is the first and last symbols in the flowchart.

  1. Input/Output

A parallelogram denotes any function of input/output type. Program instructions that take input from input devices and display output on output devices are indicated with parallelogram in a flowchart.

  1. Processing

A box represents arithmetic instructions. All arithmetic processes such as adding, subtracting, multiplication and division are indicated by action or process symbol.

  1. Decision

Diamond symbol represents a decision point. Decision based operations such as yes/no question or true/false are indicated by diamond in flowchart.

  1. Connectors

Whenever flowchart becomes complex or it spreads over more than one page, it is useful to use connectors to avoid any confusions. It is represented by a circle.

  1. Flow lines

Flow lines indicate the exact sequence in which instructions are executed. Arrows represent the direction of flow of control and relationship among different symbols of flowchart.

Example: Draw a flowchart to input two numbers from user and display the largest of two numbers

Programme Coding

So how does coding work, really? The short answer is that writing code tells the computer what to do, but it’s not quite that simple.

A computer can only understand two distinct types of data: on and off. In fact, a computer is really just a collection of on/off switches (transistors). Anything that a computer can do is nothing more than a unique combination of some transistors turned on and some transistors turned off.

Binary code is the representation of these combinations as 1s and 0s, where each digit represents one transistor. Binary code is grouped into bytes, groups of 8 digits representing 8 transistors. For example, 11101001. Modern computers contain millions or even billions of transistors, which means an unimaginably large number of combinations.

But one problem arises here. To be able to write a computer program by typing out billions of 1s and 0s would require superhuman brainpower, and even then it would probably take you a lifetime or two to write.

This is where programming languages come in…

Programming Languages

Here’s a simple example of some code:

Print ‘Hello, world!’

That line of code is written in the Python programming language. Put simply, a programming (or coding) language is a set of syntax rules that define how code should be written and formatted.

Thousands of different programming languages make it possible for us to create computer software, apps and websites. Instead of writing binary code, they let us write code that is (relatively) easy for us to write, read and understand. Each language comes with a special program that takes care of translating what we write into binary code.

Why Do We Have So Many Languages?

Because different languages are designed to be used for different purposes – some are useful for web development, others useful for writing desktop software, others useful for solving scientific and numeric problems, and so on.

Low-Level and High-Level Languages

Programming languages can also be low-level or high-level.

Low-level languages are closer to the binary code a computer understands, while high-level languages bear a lot less resemblance to binary code. High-level languages are easier to program in, because they’re less detailed and designed to be easy for us to write.

Nearly all of the main programming languages in use today are high-level languages.

Programs

A program is simply a text file, written in a certain coding language. The code inside a program file is called the source code. Every coding language has its own file extension for identifying code files written in that language. For example, Python’s is ‘.py’.

To make a program, you write the code in a plain text editor like Notepad and save the file to your computer. That’s it. For example, the below line of code could be the contents of a very short Python program called hello.py:

Print ‘Hello, world!’

How do you run a program and actually get it to perform its commands? That varies between coding languages. Some languages save a separate binary file that the computer can directly run, while other languages have their programs run indirectly by certain software.

For example, a JavaScript program file would get run by a web browser like Chrome. A PHP program file would get run by a web server like LAMP.

In the case of our hello.py file, the Python language comes with a command line which will display the output of the program – the text ‘Hello, world!’. If you were to enter the code into the command line and press enter, the program gets run and the command will get executed.

What Happens When You Run a Program?

A computer doesn’t actually understand the phrase ‘Hello, world!’, and it doesn’t know how to display it on screen. It only understands on and off. So to actually run a command like print ‘Hello, world!’, it has to translate all the code in a program into a series of ons and offs that it can understand.

To do that, a number of things happen:

  • The source code is translated into assembly language.
  • The assembly code is translated into machine language.
  • The machine language is directly executed as binary code.

Confused? Let’s go into a bit more detail. The coding language first has to translate its source code into assembly language, a super low-level language that uses words and numbers to represent binary patterns. Depending on the language, this may be done with an interpreter (where the program is translated line-by-line), or with a compiler (where the program is translated as a whole).

The coding language then sends off the assembly code to the computer’s assembler, which converts it into the machine language that the computer can understand and execute directly as binary code.

Conclusion

Isn’t it amazing to think that something as deceptively simple and primitive as binary code can create things as complex as what goes on inside a computer?

Your screen, operating system, photos, videos, the Internet, Facebook, your online bank account, and this website – all these things can be constructed from nothing but 1s and 0s. It’s a real symbol of human achievement.

Testing and Debugging

Testing

Testing is the process of verifying and validating that a software or application is bug free, meets the technical requirements as guided by its design and development and meets the user requirements effectively and efficiently with handling all the exceptional and boundary cases.

Debugging

Debugging is the process of fixing a bug in the software. It can defined as the identifying, analyzing and removing errors. This activity begins after the software fails to execute properly and concludes by solving the problem and successfully testing the software. It is considered to be an extremely complex and tedious task because errors need to be resolved at all stages of debugging.

Below is the difference between testing and debugging:

Testing

Debugging

Testing is the process to find bugs and errors. Debugging is the process to correct the bugs found during testing.
It is the process to identify the failure of implemented code.           It is the process to give the absolution to code failure.
Testing is the display of errors.  Debugging is a deductive process.
Testing is done by the tester. Debugging is done by either programmer or developer.
There is no need of design knowledge in the testing process.      Debugging can’t be done without proper design knowledge.
Testing can be done by insider as well as outsider. Debugging is done only by insider. Outsider can’t do debugging.
Testing can be manual or automated. Debugging is always manual. Debugging can’t be automated.
It is based on different testing levels i.e. unit testing, integration testing, system testing etc.     Debugging is based on different types of bugs.
Testing is a stage of software development life cycle (SDLC).     Debugging is not an aspect of software development life cycle, it occurs as a consequence of testing.
Testing is composed of validation and verification of software.   While debugging process seeks to match symptom with cause, by that it leads to the error correction.
Testing is initiated after the code is written.            Debugging commences with the execution of a test case.

 

Testing and Debugging Cycle

error: Content is protected !!