Simple Science

Cutting edge science explained simply

# Computer Science # Software Engineering

Guided Object-Oriented Development: A Clear Approach to Coding

Learn how GOOD simplifies programming and enhances software quality.

Harrie Passier, Lex Bijlsma, Ruurd Kuiper, Kees Huizing

― 7 min read


Streamlined Software Streamlined Software Development Process code quality with GOOD. Improve your programming skills and
Table of Contents

Programming can often feel like trying to find your way through a maze. You know there's a way out, but every turn seems to lead to a wall. Thankfully, there's a method that aims to simplify this process: Guided Object-Oriented Development (GOOD). This approach provides a clear path through the wild world of programming.

Why Quality Matters

Just like cooking a new recipe, software development can lead to some unexpected surprises, often in the form of bugs. These bugs can pop up in both professional software and even the programs you might write for an assignment. This tells us that when learning to code, it's crucial to pay attention to writing code that works correctly and Testing it thoroughly. After all, nobody wants to serve a "raw" program!

The Importance of Guidance

Imagine you're trying to bake a cake without a recipe. You might end up with something that resembles a cake-maybe. It’s the same with programming. Knowing just the basics of a programming language isn't enough. You also need to know how to combine those basics effectively. That’s where guidance comes in.

This guidance isn’t just about knowing how to use a programming language; it’s also about applying that knowledge correctly to make sure your software behaves as it should. So, let’s break down how GOOD offers this guidance.

Structuring the Development Process

The first step in our journey is to break down the programming process into manageable parts. In GOOD, we categorize activities into two different levels:

  1. High-Level Guidance: This involves understanding the stages of development and how they connect, just like knowing the sections of a recipe.

  2. Detailed Guidance: This is where we provide specific tips on what to do at each step, like telling you when to preheat the oven or grease the pan.

Focus on a Single Class

For simplicity, GOOD often focuses on developing a single "class" in programming. Think of a class as a blueprint for a specific object or concept in your code. By concentrating on just one class, we can better understand how to design it, define its behavior, and write proper Specifications-kind of like perfecting one recipe before trying to create a whole cookbook.

The Dual Viewpoint

In programming, there are two main perspectives to consider: the outside view (what the users see) and the inside view (how the code works). GOOD makes a clear distinction between these two views.

  1. External View: This is what users experience. It's like the frosting on the cake-always appealing and the first thing people notice.

  2. Internal View: This is where the real work happens, much like the ingredients in the cake that determine its taste. This includes all the behind-the-scenes work that ensures everything runs smoothly.

Use of Specifications

Specifications in GOOD are like the instructions in a recipe. They set clear expectations about what the class should do. They help avoid misunderstandings that might lead to disasters (like a cake that collapses). Good specifications ensure that every piece of code meets its requirements.

Handling Different Scenarios

Imagine a cake recipe that only tells you how to bake when everything goes perfectly. You might wonder, "But what if I don’t have eggs?" GOOD recognizes that there are usually two scenarios: the happy path (everything works as expected) and the non-happy path (when things go wrong). By addressing both paths, you prepare your program for any situation, much like knowing what to do if an ingredient is missing.

Testing in Programming

Good software isn't just about writing code; it's also about testing it thoroughly. GOOD encourages integrating tests early on instead of waiting until the end of the development process. This way, you can catch any mistakes early-just like tasting your cake batter before baking to ensure it’s sweet.

Flexibility in Development

When following GOOD, you’re not stuck in a rigid order of operations. You can adjust the order of your steps based on your situation. Maybe you want to whip up some icing before the cake is fully baked; as long as everything eventually comes together, that’s what counts!

Different Types of Guidance

Now, let’s get into the nitty-gritty about the guidance provided in GOOD. The approach breaks down the stages into detailed steps. Each step comes with its own set of rules or suggestions, helping you decide what to do next.

Design and Specification

Design is about figuring out how the class will be structured and what each part will do. Specifications describe the behavior of the class and are coupled with pre- and post-conditions.

Internal vs External Design

GOOD emphasizes that internal design should align with external specifications but can also go deeper into how things are implemented. This dual focus helps keep track of what needs to be done, easing the coding process.

Example: The Bag Class

Let’s look at a practical example of the GOOD approach by examining a simple class called "Bag." A Bag is a collection where you can add items, just like a grocery bag.

External Analysis

To understand what a Bag should do, we first figure out its purpose. A Bag can have duplicates, unlike a set, and it doesn’t care about order like a list.

External Design

In designing the Bag class, we need to define its methods clearly. For instance, we’ll have methods to add items, remove items, and check how many of a specific item are in the Bag.

Internal Analysis

Next, we think about how this Bag will be represented internally. We might decide to use a list to keep track of the items, allowing duplicates.

Internal Design

Now we refine our design by adding specifics, like the type of list we’ll use, ensuring it meets our needs effectively.

Internal Specification

After finalizing the design, we create specifications that describe how the Bag class must behave. For example, what happens when you try to remove an item that isn’t in the Bag?

Testing the Bag Class

Finally, we write tests based on our specifications to ensure everything functions correctly. We test both happy and non-happy paths to cover all bases, like ensuring our Bag can handle being empty without causing a fuss.

Using Tools to Support the Process

To streamline the process, tools can help manage all these parts. Think of them as your sous-chef, helping you keep everything organized and in sync. These tools can assist in generating the necessary documentation and ensure that everything works harmoniously.

Learning from Past Approaches

Many methods have been proposed over the years to improve software quality. While some were effective, they often required too much effort for students and beginners. GOOD aims to find a balance by providing structured guidance without overwhelming complexity.

Conclusion

In essence, GOOD is all about making the process of developing software more manageable and less daunting. By providing clear guidance, emphasizing good design practices, and ensuring proper testing, developers can improve the quality of their code and avoid common pitfalls. Just as no one wants to eat a poorly baked cake, no one wants to work with faulty software. With GOOD, you can feel more confident in your programming skills and enjoy the results of a job well done.

More from authors

Similar Articles