Gregory M. KapfhammerAssociate Professor of Computer Sciencehttp://www.cs.allegheny.edu/~gkapfham/ |
Chapter One: Why We Model
- The authors of this article clearly define the term model. What is their definition of this term? What do you conceive of when you hear the term? What are the aims of modelling?
Modeling is a central part of the process of creating good software We use models to help us visualize the desired structure and the behavior and architecture of our system. The authors definition of the term model was simply A model is a specification of reality, which basically means that a model is the blueprint of a system. Models may encompass detailed plans as well as more general plans about the system. A model may be structural, which means it will focus on the organization of the system, or it may be behavioral, which means that it will focus on the dynamics of the system. Modeling has one fundamental reason: so that we can better understand the system we are developing and through modeling we are able to a)visualize the system as it should be or as we want it to be; b) allow to specify the structure or behavior of a system; c)allow us to create a template of how our system should be constructed; and d) document the decisions we have made. Personally, modeling or model has always meant create a mini visualization of something you are building so the definition of the authors is not that far from what I always defined as what a model is.
Noosh Moussavi
The authors definition of modeling is a bit vague. He simply defines modeling as "a simplification of reality." In my mind modeling means many things. It is the combination of these ideas that describes the real purpose of modeling. First of all modeling is a simplification, but I do not feel of reality. Reality infers that something already exists. I feel that it is a description of an idea or concept. Furthermore modeling represents an abstract idea, such as a concept for a new program, in reality. The main aim of modeling is to help demonstrate a concept that exists in the mind of a creator to others, and in doing so help gain support or input on a project.
Brandon Taylor
The goal of modeling is to understand a complex process. Models use simplification and parameterization to study this complexity in simplified terms with the hope that new insight will be given to the topic at hand. Model to specify reality. To understanding any problem there must be an indication of behavior against a background, universe or reality. Modeling allows a user to study a problem with complete control over the inherent parameters of the universe.
The Ute
The authors state that a model is a "simplification of reality". They further expand upon this definition by explaining that a model excludes low level details focusing only on a high level of abstraction that summarizes the structural organization or behavior dynamics of the system. When I hear the term model, I envision a proven successful methodology, an overview , or an ideal circumstance or a high standard towards which one strives. In the sense of a proven methodology, I am referring to an efficient, successful, tried-and-true ways for accomplishing a task. In the sense of computer science, this may be a design pattern or an algorithm. If overtime experts agree that a B+ tree is the best data structure to store records when designing a database system, then the use of a B+ tree becomes "the model way" to handle such a task. Sure there are other ways of implementing such a system, but the model way is the way that currently stands out as the current proven favorite technique amongst experts. In terms of ideal conditions or high standards, I think of someone making the statement "Johnny is the model student". This usually leads one to envision a studious, intelligent individual. A model student is one that sets a high standard of what a student should be and practices habits that other students will wish to emulate to be successful themselves. When I say overview, I am referring to the way the authors mean model. It is to give a simplified easily understandable representation of a system. In a sense it is to take a step back and annualize "the big picture" of a design from high level view. In combining these three definitions, we can say he aim of modeling is to provide a simplified conceptual solution that displays several hallmarks of good design and may be adapted and standardized for various concrete purposes.
Matt Rummel
- Briefly summarize the four principles of modeling. Which principle do you think is the most important in the field of software? Why?
The four basic principles of modeling are as follows.
1) The choice of what models to create has a profound influence on how a problem is attacked and how a solution is shaped; this basically means choose your models well. With a good model you will be able to get insight on your system that you could not get any other way.
2) Every model may be expressed at different levels of precision. Depending on your system or your needs, you may need a quick and simple executable model and other times you will need a specific model.
3) The best models are connected to reality. All models simplify reality but the trick is to be sure that you dont forget any important details in your model.
4) No single model is sufficient. Every nontrivial system is best approached through a small set of nearly independent models. To understand the architecture of a system, you can interlock several smaller views such as a use case view (which covers the requirements), a design view (which covers the vocabulary and the solution), a process view (which models the distribution of the systems process and threads), an implementation view (which addresses the physical realization of the system), and a deployment view (which focuses on the system engineering issues). Each of these separately are enough to model different structural and behavorial aspects but together they create the blueprint of the software.
Noosh Moussavi
1. The choice of what models to create has a profound influence on how a problem is attacked and how a solution is shaped. Here the author is saying that if you take time in picking a model that the development will go much easier. The problems associated at development time should be clearly represented in a model, thus when you are ready to develop these problems are already elaborated, and solved easier.
2. Every model may be expressed at different levels of precision. This simply states that a model should be associated with the project. If a simple model is needed, then a simple model should be used, however if a complex model is needed us a complex model. Pick the model accordingly.
3. The best models are connected to reality. All this is saying is that a model should not exclude any aspect that is going to need to be overcome when it comes time for development.
4. No single model is sufficient. In order to represent a concept effectively many types of models may need to be used. It is important to combine these models in order to convey your idea in the most effective manner possible.
I feel that the most important aspect that the author develops is that not to leave anything out that exists in reality. If this aspect is ignored it can lead to problems selling the concept or extremely high costs of development.
Brandon Taylor
Principles, in other words.
1. Beware creating models that are innacurate. Do not let the choice of model limit or over-represent what is being studied.
2. Choose parameters carefully. Too many parameters can render a model useless.
3. Connect parameters to the real problem.
4. A bunch of small models is more useful than one large model.
Modeling is a "hard" process. All aspects of the model must be carefully understood or the model will not represent the actual process.
The Ute
1) The choice of what models we design has a significant impact on how we attempt to solve a problem. The best models will properly clarify the most difficult development tasks. If you choose the wrong model, the complexity of the task becomes overwhelming and the end product is likely to be implemented incorrectly and focused around the wrong issues.
2) Every model may be expressed at different degrees of detail. One should be able to develop a version of their model that is as precise or general as necessary depending upon the anticipated audiance and purpose of the model's creation. A developer may need to understand very low level details whereas a client may simply require an overview of the system as a whole.
3) The best models are representations or reality. Often when creating models one in not able to envision all the possible problems that could affect the given system in the real world. There are some aspects of reality that a model may only be able to represent weakly. Thus, one must be sure that simplifications made in the modeling stage do not discard any important details.
4) Every nontrivial system is best approached through a small set of nearly independent models. One needs to have models that can we constructed and viewed separately. This allows us to focus on a single aspect of the system rather than be flooded with too much information at once. It is important that we ensure that these decompositions are clearly consistent with the system as a whole.
I believe that principle number three is the most important to keep in mind when developing software. I think that it takes experience with modeling for one to realize what aspects of the software he or she can simplify and what properties must remain prominent in the model. If this is not done with care, then during the development phase, the model will have to be changed to make up for these deficiencies, thus rendering the model useless. The software developer must recognize where their model has a weakness in correlation to the real world and allow enough flexibility in the design so that these issues may be resolved
Matt Rummel
- How is object-oriented modeling different than the modeling of other types of software systems?
Object oriented modeling has become part of mainstream modeling because it has proven to be of value in building systems in various areas and domains. Object oriented modeling allows the builder to cover all degrees of size and complexity and since most languages, tools, and operating systems are currently object oriented it allows the builder or programmer to use objects. Object oriented development provides the conceptual foundation for assembling systems out of components.
The more traditional view of software development is using an algorithmic perspective. In this view, the main building block of all software is the procedure or function, as opposed to objects as in object oriented modeling. These systems as a result, end up being brittle and very hard to maintain. With object oriented modeling, the object/main building block has an identity, state, and behavior.
Noosh Moussavi
What do you mean when you state that most tools and operating systems are object-oriented? Do you mean that they were actually built in object-oriented languages? Or, do you mean that there is a way to interact with the entities inside of an operating system in an object-oriented manner? Can you give examples of a specific software tool or operating system that is object-oriented? Greg
Do object-oriented models have algorithms in them somewhere? Are we not allowed to think in an algorithmic fashion if we are performing object-oriented analysis and design? Are you attempting to distinguish between an OO approach and a procedural approach? Greg
Object oriented modeling is based on the idea of an object being a building block. So you build a system based on many smaller objects. These objects are the essential parts of the program. This is contrary to the more normal approach of algorithmic design. Here the main unit is the function. The main difference between the two models is the under object oriented testing it is easier to maintain, and produce good code.
Brandon Taylor
Could't we make a simple tool like JUnit that sent input to a function and then made assertions on the output of that function? Is object-oriented code inherently more testable? Why do you think that object-oriented systems are easier to maintain? Greg
Object oriented modeling has the same difficulties as OO programming. Mostly, the dependence on a large body of CORRECT objects being available for use. In turn, this problem comes back to essential vs. accidental tasks. The number of "Objects" depends on the number of essential tasks that have been abstracted into accidental, well-understood units. Then these units must be inspected, detected, unit-tested, and maybe rejected...and this is also a hard problem.
Other types of modeling, in my view, are useful to solving the essential tasks for creating object oriented software modeling.
The Ute
Do you think that it is useful to create object-oriented models in an attempt to promote object reuse? Will UML diagrams for object-oriented systems help us to better design systems that promote reuse? Greg
If one builds a model focused on object-oriented design they are creating an architecture using Objects as building blocks that they combine in order to create an effective solution through their interactions. Thus object oriented modeling effectively breaks the program into "pieces" and then build the object components to satisfy the requirements of each piece. This makes it easier to model the various parts of the entire model, which is beneficial for development.
Other types of software design such as algorithmic perspective are more difficult to decompose into smaller pieces. This makes it harder to model portions of the algorithmic program and one must often deal with one large model. Furthermore, the algorithmic approach is more rigid and thus harder to extend for other uses in the future.
Matt Rummel
Link to this Page
- Software Design last edited on 14 October 2004 at 2:29 pm by aldenv28.allegheny.edu