Monday, January 27, 2020
Model Driven Development Vs Test Driven Development Computer Science Essay
Model Driven Development Vs Test Driven Development Computer Science Essay Model driven development is a top-down, traditional approach that has been around for a long time. Test Driven Development (TDD) is a bottom-up, new approach in the sense that it has picked up its value in the recent years. The focus of MDD as the name implies is on the models rather than on code that guides the development of software whereas focus of TDD is on the tests. There have been several changes to MDD since the beginning to deal with the changing environment and complexities raised by projects. TDD started as a part of extreme programming (XP) methodology and has gained popularity among many developers as a separate practice itself. Traditional, hard cored MDD developers are accustomed to developing software that seems more natural to them considering it to be an Engineering approach. TDD developers approach the problem in a totally different perspective concentrating on customer views of the system. There are advantages and disadvantages to both approaches. For a high qual ity software product that meets the goals of the organization, it is important to understand and apply the most suitable methodology while making certain trade-offs if necessary. The best approach to follow depends on several factors including the type of organization, type of project, and experience the developers have. This paper is aimed at explaining Model driven and Test Driven development along with case study and observations. 1. Model Driven Development or MDD. Model can be precisely defined as ââ¬Å"a description of a system from a particular perspective, omitting irrelevant detail so that the characteristics of interest are seen more clearlyâ⬠. (Source: Patterns: Model-Driven Development Using IBM Rational Software Architect) Consider an example in which there is a pressing business need such as automation of certain processes and understanding the data collected in the business. In this situation a Business exists and there are people who are performing certain business activities in certain way. These are the people who are thinking of having a tool or a software product to help them increase their productivity and their functionality. These people who are called Domain Experts or Subject Matter experts or Business Experts know what they want. However, they currently do not have any software product that will help them to meet their needs. In this situation Domain Experts are the driving force. They do things in a certain way and expect the software product developed for them meet their needs should also do things in that manner. However, they do not know how a new software product will look like and how it will help them to meet their needs. People who develop this software product understand the needs , but they may miss the intricacies of the desired end product. Building a MODEL will help alleviate this situation. A MODEL can be a diagram, an animation or a presentation. If the Software that has to be developed is very small or involves 1 or 2 people, then the process need not be so much structured, even though it helps. However, while developing a large product which will involve tens or hundreds of people having different expertise, model will help them to accomplish this easily. A new product development building a Model is absolutely necessary. This is analogous to a civil Engineer creating a model of Building before it is actually built. Model Driven Development (MDD) is a methodology that focuses on designing models at an abstract level without considering the implementation details that guide the development process, focusing on one part of the system to manage complexity. Models help to analyze the problem and visualize the process. Most commonly used language for this purpose is Unified Modeling Language (UML). It establishes certain vocabulary and structure so as to understand and communicate between various developers. Artifacts are produced from the models, so the models are machine-readable, which is an important aspect of MDD. MDD is also called as ââ¬Å"Model Driven Engineeringâ⬠. An implementation of MDD is given by Object Management Group (OMG)s Model Driven Architecture (MDA). Focus of MDA is on forward engineering, i.e. creating code from modeling diagrams. Apart from MDA, there are also other views of MDD such as Domain Oriented Programming, Agile Model Driven Development, etc. MDA uses platform-independent model (PIM) to describe the system functionality as the first step. Platform Independent Model (PIM) is a generic way of representing the end view of the product without considering any technology or platforms going to be used. This model just transforms the Business requirements into a Model. This format does not contain any particular software code but shows the end state of the product in one of the Model development modes such as Diagrams, Flow Charts, and Animations etc. Based on the PIM and considering some economic conditions or availability, a proper platform is selected to develop the software. A model is then converted from PIM to platform specific model or PSM. . This contains software code at a higher level. Platform is a loose word in this context. This can be referred to type of hardware, software, operating system, programming language or combination of any of these put together. That is why choosing a platform is related to economic viability also. PSM can be thought of Developers model where as PIM can be thought of Domain Experts or End users model. UML representation using IBMs Rational Rose can be considered as PIM. Whereas, tools like IBM WebSphere Studio and Borland Together/J are used for developing PSM. In these, we have CODE VIEW and MODEL VIEW. These two views are synchronized together. When code is changed in Code View, it is reflected in the Model View and vice versa. The models may contain fixed and variable data, business requirements, presentation elements (forms, reports). If one of these elements changes, they can be incorporated into the model to see the changes that occur due to interdependencies. Based on the affects, all the other depending code can be changed accordingly to accommodate these changes. Models also describe what is called the Gap Analysis. Models are first built with an Ideal situation, but in reality the business processes and other aspects may be different. Therefore, the models will show the difference between the Real Life situation and the End State Ideal situations. This will help the Business units to define the changes in Business Practices or the Developers to meet the Business needs and bridge the gap. A well defined Structured System Analysis and Design (SSAD) is required to develop software based on Models. In this process, the design (Model) is taken as the basis to start with the development and as the development process is advanced, it is analyzed with the design and tested against the Model and re-visited to meet the requirements. Hence, software development using MDD approach requires Domain (Business) experts, software developers, Team leaders and Integration experts. Someone should also be able to play a Liaison role to understand both sides of the table Business side and Software side. This person will help each of the expert groups to understand the needs of other groups and will bridge the gap. Number of iterations in the project development process will be reduced drastically if this Liaison person has good knowledge and is an expert on both sides. MDD is used with many development processes such as waterfall model, iterative model, spiral model, etc. In MDD approach, a model plays an important role and forms the basis or driving mechanism to develop a software product. Test Driven Development: Test Driven Development (TDD) started its roots in Extreme Programming (XP) approach. Later on, it became a popular method by itself. TDD was originally called ââ¬Å"Test First Programmingâ⬠. TDD can best be described in three words as ââ¬Å"Red-Green-Refactorâ⬠(source: Kent Beck). Simple essence of TDD is to write tests before the code is written. First, unit tests are written from the requirements. These tests will definitely fail because the code for it has not been written. In order to write the tests, it is necessary for the developer to understand the requirements well. Then, code that implements the test cases is written. The code that is written should be just enough so that the tests pass, no more, no less. This means that no prediction about the future story must be made. Test driven approach is ââ¬Å"then thereâ⬠approach. This means that code is written at that time from the user story requirements without making any assumptions or predictions about fu ture. After writing the code, the tests are run and seen if they succeed. If they do, then programmer can be assured that the requirements were met. After this, a process called refactoring is done. This refers to improving the quality of code and removing any duplication in the code. If the design is changed for the better, the developer can be sure he is not breaking any functionality by running the tests again. This process is repeated for the test cases that follow. This process is shown as a flowchart below: Source: http://en.wikipedia.org/wiki/Test-driven_development There are different issues to consider in this process. Test cases are written taking small steps at a time, such as implementation of one method. It is important to know the size of the test case and when the test case exceeds its limit of functionality to test. A test case contains the following: condition that specifies the systems state, an event that is to be tested, and finally systems state after the event has occurred. Almost every language has associated tools for writing these tests. In general, they are XUnit tests available for each language. For example, java has JUnit, C++ has cppUnit, .Net has NUnit, etc. The amount of designing that has to be done in TDD depends on developer. In Extreme Programming, no designing is done, directly jumping to test cases. However, some developers prefer to spend some time on design. Too much time should not be spent on the designs and deciding on that right amount of time to spend on it comes with experience. As suggested by Dave Chaplin, it takes almost a year for a good developer to learn most of the techniques in TDD. He divides the learning process in three stages. First stage would take three months to master writing the tests correctly. TDD is a totally different approach to take in developing software and most developers believe that hardest part about it is getting used to it and thinking in that direction. It takes another six months to learn about Mock objects. Last would be to be able to draw UML diagrams in a TDD perspective. This takes about three months. Those that become familiar with TDD find many advantages in it. These advantages are explained later in the paper. Pair programming is considered one of the best ways to develop a program using TDD. This is because another person can make sure you are going in right path. It is hard to make developers believe that this approach works. Also, management believes that it is a waste of money to make two people work on one feature while they can work on different features. Through test driven development, the focus is on customers requirements. TDD is now part of many other methodologies, such as Scrum, Agile Unified Process (AUP), and Rational Unified Process (AUP). TDD gives confidence to the developer and produces enthusiasm as they can see parts of the program coming together when they run the tests and see them pass. Case Study: Results of TDD and MDD are seen more effective by example. Therefore, I consider a case in which a Software Engineering class was given a choice of either doing MDD or TDD project. The projects were done for the same problem using different approaches. It was a calendar program that consisted of certain functionalities to fulfill. For TDD people, six user stories were given one after another without knowing what the next user story is. MDD people were given a problem definition and they were to submit GUI, design, code, tests at regular intervals. The functionalities that had to be implemented included finding the following: next date, previous date, zodiac sign, day of the week, next Friday the 13th, number of shopping days left until Christmas. These were each given as a user stories to TDD people. From the results of these, the following statistics were made: Model Driven Development approach results Criteria MDD User 1 User 2 User 3 User 4 User 5 User 6 Time To Code (hrs) 8 52 89 8.67 11 17 Time to Test (hrs) 2 15 13 3 3.3 2 NCSS (non comment source statements) 275 600 692 499 280 Number of Test Cases 109 142 51 Technology Used VBA Java Java (using Eclipse) C#.NET VS2008 C# VS Express C# Decision Complexity 79 59 Referential Complexity 26 52 Cyclomatic Complexity 105 111 83 GUI yes yes yes yes yes yes Test Driven Development approach results Criteria TDD User 7 User 8 User 9 User 10 User 11 User 12 User 13 User 14 User 15 User 16 User 17 User 18 Time to code 16.5 22 17 33 28 13.5 33 19.5 33 15 28 12.75 NCSS(non comment source Statements) 349 397 276 654 240 233 1095 279 196 298 328 277 Test cases 150 84 124 70 107 247 112 88 262 56 889 128 Technology C#.NET VS2008 Java Java Java VB.Net Express C VB .Net VBA Java Java VB.NET Java Decisional Complexity 106 66 76 76 97 115 62 57 77 145 81 Referential Complexity 12 43 40 24 24 34 19 102 9 160 29 Cyclomatic Complexity 118 109 117 100 65 121 149 81 159 86 115 110 GUI no no no no yes no no no no no No no Number of Times Refactored none 1 2 none 5 none 5 4 6 1 1 3 Observations: Even though there were almost twice as many people who did TDD as MDD, certain trends can be seen from the statistics. Since majority of the projects were developed using object oriented technology such as Java and C#, most of the observations are made based on these languages only. First and major difference that can be seen is creation of GUI. Only 1 out of 12 TDD people developed GUI while all of the six people who did through MDD developed it. One of the reasons for this is that in MDD, designing of GUI was first part of the task. In TDD, although there are tools that test a user interface, it is hard to obtain them and so user has to manually test them. Since it wasnt part of the requirement also, many had chosen to omit it. I noticed that neatest and well designed code came from most of MDD people. Even though there is refactoring in TDD, many had chosen not to do it. This can be seen by the statistics that 6 out of 12 people have either not done refactoring at all or did it only once. As research suggests, TDD is supposed to lead to high quality code. However, most of TDD projects code was of less quality. This comes to the point that in order to successfully carry out TDD, experience is needed. The lack of experience that most people had in doing a TDD might have been a factor for such quality. Many of TDD people had no experience in TDD methodology including me. As suggested by Dave Chaplin, in order to carry out TDD effectively, minimum one year of learning the techniques involved in the approach is needed for a good developer. Even though the quality and design is neater in MDD, number of lines of code was much less in TDD than MDD projects. In object oriented languages such as Java and C#, MDD projects had lines of code as 518 on an average while TDD projects had 350. This is partly due to refactoring eliminating unnecessary conditions and mostly due to the reason that since code was developed based on test cases, just about enough code that was necessary was written. Since the whole point of TDD is to start out with test cases, TDD projects have more test cases compared to MDD projects. For object oriented languages, TDD tests were 124 on average while MDD was 100. Although theory says that TDD results in highly cohesive and loosely coupled, but in practice, it is seldom like that. This point can be seen in this study. Most of the MDD projects were more cohesive and loosely coupled resulting in more reusable code compared to TDD. In TDD projects, it was seen that most of them had 2 or 3 classes at a maximum reducing cohesive nature and reusability. I observed that this is due to unpredictability of future user stories. MDD people can carefully plan the code such that it results in certain functions that can be used by other functions. In object oriented languages, correct amount of responsibilities and collaboration among objects in my opinion can be done more effectively if more designing is done. This is because it is much easier to see visually through the models. The reusability of the code in TDD also depends on the order of the user stories given. Most people reused day of the week code in shopping days till Christmas user story or Friday the 13th user story. Suppose that the user stories are given in a different order, then different approaches might be taken that might not result in the efficient piece of code. Refactoring tells you to remove duplications and keep the code clean, but the logic of the code will not change. In our case, if suppose number of shopping days left before Christmas was given before day of the week user story, then different approach might have been taken and the reusability of the day of the week code wouldnt have existed. It is easier to see collaborations and responsibilities of objects when the whole picture of the problem is present. Even the small amount of reusability that existed in TDD was due to the logical order in which the user stories were given. The time spent on the whole project for TDD is much less than MDD. Considering object oriented languages, TDD average time spent was 21 hours while MDD was 42 hours (almost double!!). TDD is proven to be faster and easier technique than MDD. In TDD, concentration is on current user story and it is faster to write test cases and code directly from user requirements. The time spent on test cases is paid off since no debugging has to be done at the end. Time and effort can be distributed and planned in advance in MDD. However, in TDD, since the amount of time and effort for the next user stories is hard to predict, it is difficult to plan. Some user stories take less amount of time while others consume lot of time. This can be seen in the case study. Most people said that finding zodiac sign took very less time and effort compared to finding the number of shopping days till Christmas . Pros and Cons of Using MDD approach From research and experience, these are some of the observations that were made on the MDD approach in general. A model in projects has following advantages It helps to break down the project into smaller code development pieces or modules which can be assigned to different teams. It helps each team to understand their role and how their part of the development is integrated into the whole product development The project managers and team leaders will understand on how to integrate all the modules and do testing. The end user will be able to visualize the integrated end product. If enough of time is spent in building a model properly, even though it takes time and effort, it will greatly reduce the time to build the product. A properly built model will also help in reducing the iterations of testing process, thus creating the integrations much quicker. There is also an economic advantage of building the models. A model will help to present a product to the investors easily and attract investments to fund the projects. Some disadvantages of using MDD approach The disadvantages of using MDD approach are not related to the approach itself, but rather it is related to the application of this approach. If MDD is not used properly, there will be extended delays in the product developments. Some of these possible setbacks are Building a Model will take lot of time and resources. MDD is not always ââ¬Å"fit for all approachâ⬠. The project and product has to be analyzed before this approach is taken. Some people visualize a Model as an abstraction layer hiding all the complications of the product development process. Too much of abstraction may be good to certain audience in the project, but it over all defeats the purpose of building a model in the first place. So, care should be taken as not to ABSTRACT too much. If proper resources, such as, proper Domain experts are not involved while building a model, then the model as well as end product will be disastrous failure. MDD should not always be thought of the end point. Always underlying approach for each module should be associated with proper testing. Failure to consider the real life situations also causes the MDD unusable. The key to the whole process of Product development using MDD approach is having a proper liaison between Business group and IT group. Pros and Cons of Using TDD approach Some of the advantages of using TDD are: Since test cases are developed first, developer understands the requirements thoroughly in order to write them. The focus is on the functionality perspective of the client. TDD involves taking small steps at a time and focusing on one task at a time. Even though it consumes lot of time to write many unit test cases covering all possibilities, this makes it an advantage as it avoids debugging at later stages in the project. Finding bugs as early as possible is always beneficiary in terms of time and cost. Fixing bugs at a later stage is difficult because it is hard to determine what caused the bug. Since just enough code to pass the test is written, TDD will result in thorough testing covering all possible paths. If tests are written well, then it will produce stable code. Code is developed faster and there is working piece of code at every level, which inspires confidence and encourages the developer. Developer is aware of the progress made and can set goals to achieve a particular goal. TDD results in good design because of many factors. With experience, TDD can be a very effective method as it lets the developer think in small units of code leading to modularity and good design. This is also the result of looking at the problem from customers perspective to understand how it will be implemented. Refactoring also leads to producing good designs. Mocking and faking is beneficial in the sense that it will define the boundaries of the classes. This is because through mocking, you will find out what your classes should and should not know about the other class. This is the basic essence of encapsulation in any object oriented language. The test cases provide support for faster regression testing. On next iteration or anytime in future, when you add more tests, you can run all the tests to make sure that it works and if it doesnt, it is easy to see what part of the code broke. Some disadvantages with TDD approach are: TDD requires commitment and supporting management. Developers should be committed and write proper tests. If the tests are deleted or changed accidentally or purposefully, it will give false impression that the code is bugs-free. Support from management is important and they have to believe that this methodology works. If either of them does not exist, then TDD approach fails. Functional tests need to be done for programs that use a database or for creating user interfaces. For such things, using TDD approach is difficult. Tests and code are written by the same person most of the time and if the developer overlooks certain things, then it will affect the code as well and may not result in what is supposed to happen. If he interprets the requirements wrong, then the tests he writes and the code that implements them will turn out to be wrong and will lead to code that will not be as efficient as it should be. Another example would be if the developer doesnt check for certain specific inputs, then the code that needs to implement that will never be implemented. Having large number of working unit tests may build up over confidence that will lead to less concentrations on additional activities such as quality assurance evaluations. Unit tests only tell if the piece of code you wrote works. Other tests such as domain testing, integration testing, etc have to be done. Amount of coverage and details of testing that is done in TDD development cannot be reproduced at a later stage. So, these tests become an important aspect and it is necessary that they are well-written. There is no way to predict the type of user stories and it is not possible to gain a complete understanding of the system from the user stories. This leads to extensive code rewriting and refactoring. WHEN to use WHAT? This leads to the question of when is it appropriate to use TDD and when is it appropriate to use MDD. Software development is a process of developing a product to meet a certain business need. In a well defined environment and in large houses Software Development is done using the techniques described in Software Engineering and experience gained over the years. Many factors have to be taken into consideration when deciding on the methodology to use. These include things such as type of organization, management, type of project, experience of the developers, and availability of effective tools. Type of Project: Software development is done under two major circumstances 1. To develop altogether a new product a. A product that never existed before, but there is a need in the minds of people. A great example of this in recent years is ââ¬ËYoutube. There was no such product before, however, people had thought about having some kind of sharing videos. So, there is direc
Sunday, January 19, 2020
Critique: the Scottsboro Boys – an American Tragedy
The Scottsboro Boys: An American Tragedy The author or producer of this documentary film was smart in setting the scene for the viewer. He showed scenes of the area and described the sounds of the train, gravel, and attempted to give the viewer a snapshot of the attitude of the inhabitants of Northern Alabama. This takes you from the comfy surroundings of your home, the accessibility to transportation to the hardships of the 1930ââ¬â¢s and the dismal state of life for blacks, especially poor blacks. The theme of Scottsboro: An American Tragedy was that blacks were so hated that one well-placed lie destroyed the lives of nine young men.Only one of these boys lived long enough to have a family and to fight for a pardon. The judicial system of that time was so terribly flawed (not that it isnââ¬â¢t now) with racism and bigotry that when facts were presented they were not heard because they wanted the boys to be guilty. Clearing the Scottsboro Boys were not in the plan! The key pla yers were the Scottsboro Boys but historians, relatives of Judge Horton, citizens of the area, photos, video clips, and newspaper articles all came together to tell the historical story which spanned from the 1931 to 1976.This may have been the best way to tell the story since none of the Scottsboro Boys were still alive when this was filmed. Several men of Scottsboro were interviewed and it was interesting that they wished the incident had happened 30 miles away (Huntsville) so the stigma that is associated with their little town would belong to another town. Jokingly, they said then they would have been called the Huntsville Boys and that would have been fine with us.So from those statements, I believe that many of the townââ¬â¢s citizens are embarrassed of the notoriety this incident has placed upon their little town. One aspect, I found missing and would have liked to known more of the effect that the trials and imprisonment had on their families, especially their siblings an d mothers. I, however, was most intrigued with Judge Horton and the stand he finally took regarding the boys and the political fallout for him. The Scottsboro Boys case, how it began, handled, and ended is really scary to me.Now that I know more of the details, it reminds me of the recent execution of Troy Davis of Georgia. In several ways, the two cases are similar. The tragedy in the Davis case is that he did serve around 17 years and he did die for a crime that he may not have committed while the Scottsboro boys served time and were eventually freed and/or broke parole. Due to support given them by northerners, they were allowed to remain free as long as they stayed in the North. Ruby Bates recanted her accusations of rape and later helped the mothers fight for the sonsââ¬â¢ release.Seven of the nine that testified against Troy Davis recanted but he exhausted all his appeals and was executed anyways against the number of organizations that protested against it. We can also go back a few months, to where a black woman was charged more time for jaywalking than the man that was driving drunk that hit her, her daughter, and killed her son. He was black but it since it was black on black crime, the young mother was treated as an example. In general, the judicial system is not a friend to the black American. This is 2011, isnââ¬â¢t it?Has anything really changed? Are we going backwards? This is supposed to be a different day. We have a black president which, in my opinion, has only given certain groups in our country to more openly exhibit their racism and bigotry. Since they cannot get to him, any black that runs afoul of the law become enemy number one just as the Scottsboro Boys were the enemy of the time back in 1931. This film was not entertaining to me at all but it was educational and eye-opening in that no matter how much we like to think that times have changed so much is still the same.I can see in many ways how far we have come but once you liste n to the news and see just what is going on around you, you can almost see the 1930ââ¬â¢s again. That is why I used the word ââ¬Å"scaryâ⬠earlier in my critique to describe the Scottsboro Boys story. Concern about the future for the black community, myself, and more importantly, our children, has increased and we must become better informed about the world in which we live, the judicial system we must work within, and the consequences of it all.
Saturday, January 11, 2020
Thomas Jeffersonââ¬â¢s Vision of a Free Holding Yeoman Society
Thomas Jefferson is considered as one of the most influential personalities in the history of the US. Jefferson who was the third President of the United States is regarded as one of the most prominent figures in the US, is characteristically known for his ideological promotions of republicanism in his stint as the president. Some of the famous events that are associated with his presidency include the 1803 Louisiana Purchase and the Lewis and Clark Expedition during the period between 1804 and 1806. Thomas Jefferson is also accredited for authoring the Declaration of Independence and since he was a philosophical thinker and politician, he idealized the concept of a free holding yeoman society which was a series of complex ideologies which emphasized various virtues. It was during the 18th century that a number of influential ââ¬Å"poets, politicians and economists created in America a complex of ideas which has been called the Jeffersonian mythâ⬠(Hess, 1992). This concept generally emphasized various virtues with simplicity and purity leading and the principal dictated a variety of social choices. The Yeoman term generally refers to farmers who usually cultivate their own land. The yeoman thus can be considered as a small farmer who holds a piece of land. Since Jefferson hailed from this type of yeoman society, he had first class experience of the issues and challenges they faced and therefore in his presidency he decided to make amends so as to ensure that this class in the society was prosperous. This philosophy was coined in a time that could be considered appropriate for a country that was settled by ââ¬Å"land hungry menâ⬠(Hess, 1992). Most English men were used to a social system in which the ownership of land was a symbol of a manââ¬â¢s stand in the society and the political power that he yielded. Thomas Jefferson and J. Hector St. John de Crevecoeur came up with a philosophy that dictated the natural rights of any man to own land and that the ownership of land by any man obviously gives him a social status and dignity. The philosophy goes further to describe how mans interaction with nature ââ¬Å"makes him virtuous and happyâ⬠. This philosophical thinking as Jefferson and his colleague tend to challenge the government is that it ââ¬Å"should be dedicated to the interests of the freehold farmerâ⬠(Hess, 1992). This policies and principles held a lot of significance for Jefferson who is considered as the brains behind the western land policy. In Jeffersonââ¬â¢s own words he described the small and self sufficient as ââ¬Å"the chosen people of Godâ⬠and thus asserted their importance if the new republic would have any chance to survive. Jefferson described the ââ¬Å"virtuous yeomanâ⬠as the moral backbone that would lead the nation to greater heights and thus prosperity would be easily achievable (Hess, 1992). The issue of land was embedded deep in Jeffersonââ¬â¢s heart and he believed that it was the core of an envisioned republic. Thomas Jefferson had a landscape vision that mainly depended on the unlimited expansion of most of the wilderness in the country and thus make it the peoples will to settle and subdue it for settlement and cultivation purposes. This vision was just a vision and its applicability mainly depended on the prudence of the government of that period in applying the ââ¬Å"public land policies fairly and justlyâ⬠. Jefferson held the belief in his heart that ââ¬Å"land was the clay from which a free society would be molded and preservedâ⬠(Hess, 1992). However, one of the issues that he had to deal with was those of religion. Although religion was a predominant force during his government, it had failed to provide what Jeffersonââ¬â¢s landscape vision promised to produce. Land in this era was considered to offer the much needed cohesion and was therefore viewed as an ââ¬Å"icon of secular religionâ⬠(Hess, 1992). The success of Jeffersonââ¬Ës policies and philosophical thinking are still evident today and the western range is the product of his landscape vision. The landscape vision which was envisioned in the ââ¬Å"Jeffersonian agrarianismâ⬠was built on a firm foundation (Hess, 1992). This had the obvious effects of spilling its advantages in the years that were to follow and most of its effects are still visible today. The western range which was a harsh testament of nature in the state of a wilderness became a land that would become exceedingly abundant. However, the alteration of nature and its overuse can be considered as one of the negative aspects of his landscape vision. Various factors one of them being drought led to the overstocking of the ranges in a way that nature was almost strained beyond its holding capacity and thus became unforgiving with adverse effects. Collisions among farmers with diverse wants is also a major shortcomings but the experience that was gained from the harsh reactions of nature served to teach the inhabitants valuable lessons and thus take some measures into considerations during when setting future plans.
Friday, January 3, 2020
Federalism and How it Works
Federalism is the process by which two or more governments share powers over the same geographic area. It is the method used by most democracies in the world. While some countries give more power to the overall central government, others grant more power to the individual states or provinces. In the United States, the Constitution grants certain powers to both the U.S. government and the state governments. The Founding Fathers wanted more power for the individual states and less for the federal government, a practice that endured until World War II. That layer cake method of duel federalism was replaced when state and national governments entered a more cooperative marble cake approach called cooperative federalism. Since then, a new federalism initiated by presidents Richard Nixon and Ronald Reagan has returned some powers back to states through federal grants. 10th Amendment The powers granted to the state and federal governments are in the Constitutions 10 Amendment, which states, ââ¬Å"The powers not delegated to the United States by the Constitution, nor prohibited by it to the States, are reserved to the States respectively, or to the people.â⬠Those simple 28 words establish three categories of powers which represent the essence of American federalism: Expressed or ââ¬Å"Enumeratedâ⬠Powers: Powers granted to the U.S. Congress mainly under Article I, Section 8 of the U.S. Constitution.Reserved Powers: Powers not granted to the federal government in the Constitution and thus reserved to the states.Concurrent Powers: Powers shared by the federal government and the states. For example, Article I, Section 8 of the Constitutionà grants the U.S. Congress certain exclusive powers such as coining money, regulating interstate trade and commerce, declaring war, raising an army and navy and to establish laws of immigration. Under the 10th Amendment, powers not specifically listed in the Constitution, such as requiring drivers licenses and collecting property taxes, are among the many powers reserved to the states. The line between the powers of the U.S. government and those of the states is usually clear. Sometimes, it is not. Whenever a state governments exercise of power might be in conflict with the Constitution, there is a battle of ââ¬Å"states rightsâ⬠which must often be settled by the U.S. Supreme Court. Whenà there is a conflict between a state and a similar federal law, the federal law and powers supersede state laws and powers. Probably the greatest battle over states rightsââ¬âsegregationââ¬âtook place during the 1960s civil rights struggle. Segregation: The Supreme Battle for States Rights In 1954, the Supreme Court in its landmark Brown v. Board of Education decision ruled that separate school facilities based on race are inherently unequal and thus in violation of the 14th Amendment which states, in part: No state shall make or enforce any law which shall abridge the privileges or immunities of citizens of the United States; nor shall any state deprive any person of life, liberty, or property, without due process of law; nor deny to any person within its jurisdiction the equal protection of the laws. However, several states, predominantly in the South, chose to ignore the Supreme Courtââ¬â¢s decision and continued the practice of racial segregation in schools and other public facilities. The states based their stance on the 1896 Supreme Court ruling in Plessy v. Ferguson. In this historic case, the Supreme Court, with only one dissenting vote, ruled that racial segregation was not in violation of the 14th Amendment if the separate facilities were substantially equal. In June of 1963, Alabama Gov. George Wallace stood in front of the doors of the University of Alabama preventing black students from entering and challenging the federal government to intervene. Later the same day, Wallace gave in to demands by Assistant Attorney Gen. Nicholas Katzenbach and the Alabama National Guard allowing black students Vivian Malone and Jimmy Hood to register. During the rest of 1963, federal courts ordered the integration of black students into public schools throughout the South. In spite of the court orders, and with only 2% of Southern black children attending formerly all-white schools, the Civil Rights Act of 1964 authorizing the U.S. Justice Department to initiate school desegregation suits was signed into law by President Lyndon Johnson. Reno v. Condon A less momentous, but perhaps more illustrative case of a constitutional battle of states rights went before the Supreme Court in November 1999, when Attorney General of the United States Janet Reno took on Attorney General of South Carolina Charlie Condon: The Founding Fathers can certainly be forgiven for forgetting to mention motor vehicles in the Constitution, but by doing so, they granted the power to require and issue drivers licenses to the states under the 10th Amendment. State departments of motor vehicles (DMV) typically require applicants for drivers licenses to provide personal information including name, address, telephone number, vehicle description, Social Security number, medical information, and a photograph. After learning that many state DMVs were selling this information to individuals and businesses, the U.S. Congress enacted the Drivers Privacy Protection Act of 1994 (DPPA), establishing a regulatory system restricting the states ability to disclose a drivers personal information without the drivers consent. In conflict with the DPPA, South Carolina laws allowed the States DMV to sell this personal information. Condon filed a suit on behalf of his state claiming that the DPPA violated the 10th and 11th Amendments to the U.S. Constitution. The district court ruled in favor of South Carolina, declaring the DPPA incompatible with the principles of federalism inherent in the Constitutions division of power between the states and the federal government. The district courts action essentially blocked the U.S. governmentââ¬â¢s power to enforce the DPPA in South Carolina. This ruling was further upheld by the Fourth District Court of Appeals. Reno appealed the decisions to the U.S. Supreme Court. On Jan. 12, 2000, the U.S. Supreme Court, in the case of Reno v. Condon, ruled that the DPPA did not violate the Constitution due to the U.S. Congress power to regulate interstate commerce granted to it by Article I, Section 8, clause 3 of the Constitution. According to the Supreme Court, The motor vehicle information which the States have historically sold is used by insurers, manufacturers, direct marketers, and others engaged in interstate commerce to contact drivers with customized solicitations. The information is also used in the stream of interstate commerce by various public and private entities for matters related to interstate motoring. Because drivers personal, identifying information is, in this context, an article of commerce, its sale or release into the interstate stream of business is sufficient to support congressional regulation. So, the Supreme Court upheld the Drivers Privacy Protection Act of 1994, and the States cannot sell personal drivers license information without permission. Thats likely appreciated by the individual taxpayer. On the other hand, the revenue from those lost sales must be made up in taxes, which the taxpayer isnt likely to appreciate. But thats all part of how federalism works.
Subscribe to:
Posts (Atom)