Sunday, April 03, 2005

TestFirstDeliverable

Test-First Programming
Test-First is a method of programming where the test for the program is actually created before the code itself. “Extreme Programming champions the use of tests as a development tool. Given an object, devise tests for all interesting methods even before you program them. This means that:
you are forced to define precisely what a method does
you know where to begin writing a method
you know when you are done writing a method
you know the minimal scaffolding needed to run a method
like scientists, you target reproducible results
This means that you will recognize dependencies among the objects early, and work to minimize them. You will have broken up your work, so you know at the beginning of the day what you have to do, and you know when you are done.
This style of programming gives you a continuity of development that is inaccessible otherwise. You find mistakes early enough that the dreaded day of debugging becomes a distant memory. The effects of bugs in unrelated modules get detected when designing test setup.
You get to use debuggers as sharp, pointed, precise tools rather than as shovels for digging for mistakes among mounds of code. When a test fails, you set a breakpoint and trace. Don't try to second guess the computer. If the tests are fine enough, and the scaffolding small enough, debug runs end very quickly. You can think of this as Computer Aided Code Inspection.


It also means that you can refactor confidently, knowing that your tests will protect you from mistakes. In turn, refactoring constantly keeps design warts from becoming cancers.
When adding new functions, devise a new test. If the new feature suggests a change in the design, do it. Your earlier tests let you do it without an Oh God feeling lurking in the background. Then get the new test going.” (Cunningham, 2005)
Test-first is important because it takes the guess work and assumptions out of writing code. “Creating a unit test helps a developer to really consider what needs to be done. Requirements are nailed down firmly by tests. There can be no misunderstanding a specification written in the form of executable code.You also have immediate feedback while you work. It is often not clear when a developer has finished all the necessary functionality. Scope creep can occur as extensions and error conditions are considered. If we create our unit tests first then we know when we are done; the unit tests all run.There is also a benefit to system design. It is often very difficult to unit test some software systems. These systems are typically built code first and testing second, often by a different team entirely. By creating tests first your design will be influenced by a desire to test everything of value to your customer. Your design will reflect this by being easier to test. There is a rhythm to developing software unit test first. You create one test to define some small aspect of the problem at hand. Then you create the simplest code that will make that test pass. Then you create a second test. Now you add to the code you just created to make this new test pass, but no more! Not until you have yet a third test. You continue until there is nothing left to test. The coffee maker problem shows an example written in Java.The code you will create is simple and concise, implementing only the features you wanted. Other developers can see how to use this new code by browsing the tests. Input whose results are undefined will be conspicuously absent from the test suite.” (Wells, 2000)
Sean Shubin offers a word of caution while using code first. “As project complexity grows, you may notice that writing automated tests gets harder to do. This is your early warning system of overcomplicated design. Simplify the design until tests become easy to write again, and maintain this simplicity over the course of the project.” (Shubin, 2004)

Here is a benchmark for the steps to complete proper test-first code.
It's important to be methodical and consistent when developing unit tests for a piece of software. The development of a unit test should be treated with the same care that's taken when developing other code. A number of best practices should be employed to keep the unit tests manageable and useful.
1. All unit test classes should have a main(). Although the unit tests will normally be run as a group, there are times when it's necessary to run just one of the unit test classes to isolate a bug. Having a main method that just calls the junit.textui.TestRunner.run method makes that easy.
2. Make sure your test cases are independent. As the test cases in a unit test are developed, it's important to make sure that each test case can be run independently. This is especially true when testing database applications where the state of the database at the start of a test case must be consistent in order for the test to be effective. It's possible that a test case will incorrectly handle an exception that occurs during a test run and corrupt the database. This can cause all subsequent test cases to fail. Nothing is more annoying than spending hours debugging an application that appeared to be failing because the test cases were not set up properly.
Don't count on the test cases being run in a certain sequence because the JUnit framework doesn't guarantee the order of test method invocations. The setup and teardown methods are called before and after each test case is run. They can be used to set up a database to a known state before a test is run and restore it to a known state after the test is complete. It's also very important to make sure that test methods make every effort to clean up after themselves in every conceivable exit condition.
3. Minimize the amount of code in setup/teardown methods. Since the setup and teardown methods are called before and after each test case, it's important to make sure they're efficient. Some test suites can contain 50, maybe even 100, test cases. This includes making sure that these methods don't output unnecessary log messages and make it hard to follow the execution path. Making these methods efficient will also speed up the time it takes to run the test, which allows the tests to be run more often.
4. Use fail() instead of assert() to catch test case error. If the test case fails because of an error or exception as opposed to an assert that fails, it's better to use the Assert.fail(String msg) than assert(true,false). This will make it easier to wade through the debug statements and can decrease the amount of time required to understand and fix a problem. Using Assert.fail(String msg) with a description of the failure instead of calling assert(boolean boolValue) can more directly describe the type of failure occurring. The message passed to fail(String msg) will be printed out by the TestRunner in the stack track of failures. This allows the developer to quickly see what's really failing in a test case.
5. Properly document test code. As with any code being developed, it's important that the test code be properly documented with Javadocs. Just as it's easier to maintain well-documented code, well-documented test cases are easier to update.
(Hammell, 2005)
Works Cited

Wells, Don, Code the Unit Test First, online at
http://www.extremeprogramming.org/rules/testfirst.html , 2000


Shubin, Sean, Test First Guidelines, online at
http://www.xprogramming.com/xpmag/testFirstGuidelines.htm , 2004

Cunningham, Ward, Test Driven Programming, online at
http://c2.com/cgi/wiki?TestDrivenProgramming 2005


Hammell, Thomas, Test First, Code Later, online at
http://www.sys-con.com/story/?storyid=36842&DE=1,2005

PairProgrammingDeliverable

Pair Programming
The concept of pair programming is exactly what the name implies. “Two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. On demand, the two programmers can brainstorm any challenging problem. Because the two programmers periodically switch roles, they work together as equals to develop software.” (Williams, 2004) Pair Programming became popular with the rise of the Extreme or Agile genre of programming. Extreme Programming has 12 core values and number 7 is pair programming. The core values are:
The Planning Game: Business and development cooperate to produce the maximum business value as rapidly as possible. The planning game happens at various scales, but the basic rules are always the same:
Business comes up with a list of desired features for the system. Each feature is written out as a User Story, which gives the feature a name, and describes in broad strokes what is required. User stories are typically written on 4x6 cards.
Development estimates how much effort each story will take, and how much effort the team can produce in a given time interval (the iteration).
Business then decides which stories to implement in what order, as well as when and how often to produce a production releases of the system.
Small Releases: Start with the smallest useful feature set. Release early and often, adding a few features each time.
System Metaphor: Each project has an organizing metaphor, which provides an easy to remember naming convention.
Simple Design: Always use the simplest possible design that gets the job done. The requirements will change tomorrow, so only do what's needed to meet today's requirements.
Continuous Testing: Before programmers add a feature, they write a test for it. When the suite runs, the job is done. Tests in XP come in two basic flavors.
Unit Tests are automated tests written by the developers to test functionality as they write it. Each unit test typically tests only a single class, or a small cluster of classes. Unit tests are typically written using a unit testing framework, such as JUnit.
Acceptance Tests (also known as Functional Tests) are specified by the customer to test that the overall system is functioning as specified. Acceptance tests typically test the entire system, or some large chunk of it. When all the acceptance tests pass for a given user story, that story is considered complete. At the very least, an acceptance test could consist of a script of user interface actions and expected results that a human can run. Ideally acceptance tests should be automated, either using the unit testing framework, or a separate acceptance testing framework.
Refactoring: Refactor out any duplicate code generated in a coding session. You can do this with confidence that you didn't break anything because you have the tests.
Pair Programming: All production code is written by two programmers sitting at one machine. Essentially, all code is reviewed as it is written.
Collective Code Ownership: No single person "owns" a module. Any developer is expect to be able to work on any part of the codebase at any time.
Continuous Integration: All changes are integrated into the codebase at least daily. The tests have to run 100% both before and after integration.
40-Hour Work Week: Programmers go home on time. In crunch mode, up to one week of overtime is allowed. But multiple consecutive weeks of overtime are treated as a sign that something is very wrong with the process.
On-site Customer: Development team has continuous access to a real live customer, that is, someone who will actually be using the system. For commercial software with lots of customers, a customer proxy (usually the product manager) is used instead.
Coding Standards: Everyone codes to the same standards. Ideally, you shouldn't be able to tell by looking at it who on the team has touched a specific piece of code.
(Brewer, 2001)
Pair programming is important because “all significant development is done in pairs. We have found that progress is faster, we can work longer without losing headway, and quality is higher. Typically the person types who has the best feel for where the code is going. The observer catches detail errors (spelling, formatting, method names) and at the same time tends to have a wider overall view of how the development is going.It is as if the typist is crafting the individual methods, while the observer is monitoring strategy and tiny detail at the same time. We have found that with very little practice, most people adapt quickly to pair development. They get to like it, because progress is discernibly faster. From a project viewpoint, the practice ensures that at least two people are very familiar with all the code. This pays off very quickly as teams go on to other tasks.” (Jeffries, 2004)
A bench mark of pair programming is the example on xprogramming.com. The benchmark is an example of how pair programming takes place. “Jack has found some ugly code in the system. He has played with an improvement, but isn't satisfied with the result. Deciding he needs another pair of eyes, he has asked Jill to join him for a moment.
JACK
How's this for nasty code. I found it in production code. And people wonder why their UI isn't responsive.
He grins as Jill looks at the code.
widgetIDs
compNames
compNames := Set new.
self builder namedComponents keysAndValuesDo:
[:compName :comp wid
wid := comp widget.
(wid isKindOf: VisualRegion)
(wid isKindOf: SliderView)
(wid isKindOf: NoteBookComposite)
(wid isMemberOf: View)
(wid isKindOf: SubCanvas)
(comp spec isKindOf: DividerSpec)
(wid isKindOf: GroupBox)
ifFalse: [ compNames add: compName ]].
^compNames asArray
Jill sees right away that the code needed special formatting to be readable at all. This tells her that Jack is right, something needs to be done. The #isKindOf: is first on Jack's list.
JACK(continuing)
It would be better to extend several classes to add the method #isSpecial, or whatever a better name would be, to simply answer a Boolean. The new method using polymorphism might look like this:
He clicks on another window, to show Jill his new version.
widgetIDs
compNames
compNames := Set new.
self builder namedComponents keysAndValuesDo:
[:compName :comp
(comp widget isSpecial or: [ comp spec isSpecial ])
ifTrue: [ compNames add: compName ]].
^compNames
Jill sees the #isSpecial and the resulting procedural code. After a little thought she gets an idea. She takes the keyboard.
JILL (musingly, grabbing the keyboard)
Let me drive a second. I wonder if we could get rid of the #isSpecial by doing something like this --
Jill types a new version of the method.
widgetIDs
^self builder namedComponents
inject: Set new
into: [ :sum :each widget specialAdd: sum]
JILL(continuing, on a roll)
- with, of course, the implementations:
SpecialWidget>>specialAdd: aSet
^aSet add: self name

OtherWidget>>specialAdd: aSet
^aSet
Jill has glimpsed an improvement, and grabbed the keyboard to put it in. In her leap to the core of a good solution, she has missed some details. Fortunately, Jack is with her.
JACK
You need a #yourself on that specialAdd,
JILL
Right, good catch.
SpecialWidget>>specialAdd:aSet
^aSet
add: self name;
yourself
JACK
and a better selector choice would be #specialAddTo:.
JILL
Right again.
SpecialWidget>>specialAddTo: aSet
^aSet
add: self name;
yourself

OtherWidget>>specialAddTo: aSet
^aSet
She changes the code immediately. The whole thing takes place in a couple of minutes. Notice how the roles switch back and forth dynamically. Jack starts an approach, and Jill picks up on it. When Jill is sketching code, Jack backs her up with syntax support and style guidelines. The partners are working smoothly together, the one in backup mode supporting, the typist setting down specific code.
There's no conflict: they are two people cooperating on one mission, with the lead switching from moment to moment. Pair programming at its best.” Xprogramming.com,


Works Cited

Laurie Williams, MS What is pair programming?, online at
http://www.pairprogramming.com/ 2004


Brewer, John, Extreme Programming FAQ, online at
http://www.jera.com/techinfo/xpfaq.html 2001



Jeffries, Ronald E, Pair Programming, online at
http://www.xprogramming.com/Practices/PracPairs.html 1998


Jeffries, Ronald E, Pair Screenplay, online at
http://www.xprogramming.com/Practices/PairScreenplay.htm 2004

MSProjectDeliverable

Microsoft Project
Microsoft (MS) Project is a software application that comes as part of Microsoft’s highly successful Office suite. This software application aims to address the increasingly important task of project management. Project management has always been an important concept for organizations while undertaking new endeavors. There are methods, both effective and ineffective, that project managers (PMs) use to do so. Many PM’s choose to use an informal method where “they have a deadline to meet, and they monitor progress of the project intuitively.” (urban.uiuc.edu, 1996) This is where a PM can use the advantages that MS Project provides. The main focuses for project management that the Microsoft application covers are “setting up projects efficiently, keeping teams aligned by effectively communicating project data, and tracking along with analyzing projects.” (Microsoft.com, 2005) With the ability to apply the focuses to any project management task, MS Project has become an effective tool that many organizations use to see their project through to completion.
As mentioned above, the intuitive method of project management is often used by PMs. While this method can be effective in a smaller project with a narrow scope, it often leads to disorganization and confusion in a project belonging to a large number of people. An organized methodology for setting up and maintaining projects can be immeasurably valuable to the success of a project. This is where MS Project can make a difference. Many PMs do not take the time to properly set up their projects. Improper planning techniques are one of the main reasons that projects fail. Planning a project in its beginning stages can help to identify the feasibility, cost, and time needed to complete the project. A large amount of company time and resources can be wasted by improper planning and trying to execute a project that should not follow a particular work flow, or even worse, should not be executed at all. These kinds of projects are common, and often fail, in the IT world. MS Project can help alleviate some of these concerns. MS Project will allow a PM to set up dynamic time schedules to follow by making Gantt and PERT charts. It also helps a PM to define the actual process of completing the project and offers a roadmap from start to completion.
To help illustrate why MS Project is important, Anjana Srikanth made a list of eight key steps to “identify clearly when embarking on a project.” (Srikanth, 2002) She then identified which steps MS Project can accomplish. The steps are as follows:
conceptualize and identify the purpose of the project
define its objectives
finalize its scope
identify its activities
assign resources to activities
create an estimate of time and costs
make honest assumptions about various relevant factors that can affect the duration of a project and its costs
discuss alternative scenarios and build contingency plans
Srikanth identifies steps 3, 4, 5, and 6 as steps that MS Project directly addresses. (Srikanth, 2002) Steps 2,7, and 8 are indirectly addressed by MS Project because the ideas, information, and data presented can be the basis for formulating and revising these steps.
Tim Pyron has written an article, posted on informit.com, entitled “How to Set Up a Project Document in Microsoft Project 2002.” This article lists detailed, step-by-step instructions on how to set up an MS Project document. Pyron lists 4 major steps in setting up these documents. The first step is “supplying information for the new document.” (Pyron, 2002) This step comes with detailed explanation and descriptions of what is required. In this step you must gather and understand all the information needed to start a project. The second step is “selecting the environment options.” (Pyron, 2002) This step also comes with detailed explanation of the various options that Project has to offer and is broken into sub-steps. The third step is “defining a calendar of working time.” (Pyron, 2002) This step is also explained by Pyron and he gives instructions on how to set up the calendar. The fourth step is “troubleshooting” which looks over the work you have done and tries to identify problems that may or have occurred. (Pyron, 2002)
A benchmark example of the use of MS Project comes from the Dyauwos Team working with the Lodi School Store. The project has been carefully planned out and the team has used MS Project to implement the plans they made. The have created a working Gantt chart to map the work and completion times.

Works Cited

Webenable.com, MS Project 2000 Tutorial: Introduction, online at
http://www.webenable.com/industry/ms_project_tutorial/project_management.asp


Urban.uiuc.edu, Using Microsoft Project to manage projects, online at
http://www.urban.uiuc.edu/Courses/varkki/msProject/msproject.html


Microsoft.com, Effective Project Management with Project Standard 2003, online at
http://www.microsoft.com/office/project/prodinfo/standard/videos.mspx


Informit.com, How to Set Up a Project Document in Microsoft Project 2002, online at
http://www.informit.com/articles/article.asp?p=29595&redir=1

BlogDeliverable

Individual Deliverable 3 – Web logs

The use of weblogs, or blogs, is a trend that is sweeping across the internet. A blog is “a web page that serves as a publicly accessible personal journal for an individual. Typically updated daily, blogs often reflect the personality of the author.” (Webopedia, 2004) Blogs are all over the internet now. Many user oriented sites rely on them to draw in patrons. Blogs can be kept by any user that has something on their mind and wants the rest of the world to know about it. They allow the easy spread of ideas by individuals that may not otherwise have a voice. Dave Winer, author of one of the earliest and longest running blogs on the web, explained the blog by saying, “A web log is kind of a continual tour, with a human guide who you get to know. There are many guides to choose from, each develops an audience, and there's also camaraderie and politics between the people who run weblogs, they point to each other, in all kinds of structures, graphs, loops, etc.” (newhome.weblogs.com, 2002) New blogs are popping up each and everyday now that the average person with little computer skills can use them. The software is readily available and most often times free. There are websites available so that any person with that creates a simple account can start one. Given their ease of use, their ability go share ideas, and they’re interesting content, blogs look to become a new staple of American Society.
Blogs are important because they allow any one person to share an idea very easily. This idea can be spread to a very large audience in a very short amount of time. This is a very powerful concept because it gives an audience to a voice that might not otherwise be heard. If the right voice of influence can get out to the general public, the speaker may have the power to start a movement or revolution. Examples of this power really began to become apparent during the time after 9/11 and the War on Terror (if you want to call it that) with Iraq. During this time certain blogs have become so important that they may have influenced the war. Wikipedia.com writes “After 9/11, many blogs which supported the U.S War on Terrorism quickly gained readership among a public searching for information to understand that event; many new blogs in the same genre sprang up in this environment.” (wikipedia.com, 2005) In the same article it is also mentioned that “The use of blogs by established politicians and political candidates to express opinions on the war, particularly Howard Dean and Wesley Clark, cemented their role as a news source, while the increasing number of experts who blogged, including Daniel Drezner and J. Bradford DeLong.” (wikipedia.com, 2005) A massive amount of people used their newfound blogging abilities to comment on the war. Both right and left supporters used the internet as a forum to express their views on the war and debate it’s merits. Many of these debates would have been silenced if it was not for the ability to blog ideas. The questions that the American public had about the merits of the war would not have spread as fast and been as strong if it was not for the blog. This is why the idea of blogging is so important. The spread of ideas and information can be strong enough to start a revolution and the blog gives you this power.
With all the websites containing software catering to blogs; it is quite easy to implement one. Websites like Blogger.com and Blogexplosion.com allow users to create blogs for themselves. Blogger.com offers free blogging capability to anyone willing to set up an account. All that is needed to set up an account is a username, password, and an e-mail address. Blogs can be established on their website or can be uploaded to any other website of your choosing by simply providing the URL. Cori Crooks provides a good bench mark for the way a blog should be set up through blogger.com. Crooks set up an account with blogger.com to get started and now has her blogs posted on a different site. Her blog tells of her life in a mixture of fantasy and reality. It has grown immensely popular for readers to view. (Beckner, 2004) Bloggers like Crooks are just an example of the ever expanding world of blogging. She chooses to use her blogs for entertainment however blogs can be used for anything you desire.
Works Cited

Wikipedia.org, The Weblog Definition, online at
http://en.wikipedia.org/wiki/Blog#Precursors


Webopedia.com, Blog, online at
http://www.webopedia.com/TERM/b/blog.html


Newhome.weblogs.com, History of Weblogs, Online at
http://newhome.weblogs.com/historyOfWeblogs


Beckner, Christine. "Sacto Blogo." Sacramento News & Review. Volume 16. Issue 37 (2004): Page 22.

OSDBDeliverable

Exploring Open Source Databases

The open source philosophy can be described as a movement with followers dedicated to advancement of software and technology. Most open source disciples are against owning the intellectual rights, against software monopolies, and fundamentally do not support Microsoft business practices or its software. Open source means more than just allowing one who acquires the software to view and modify the source code. OpenSource.org lists a set of criteria for what makes software open source. These criteria include: free redistribution of software; the source code be included with the software or easily accessible; redistribution of source code modifications under the same terms of the original license; restrict authors from redistributing source code in modified only form; not allow any discrimination against persons, groups, fields, or endeavors; the license must not be product specific; the license must not restrict development of software on the same medium; and the license must be technology neutral. (OpenSource.org, 2005)
A database is defined as “A collection of information organized in such a way that a computer program can quickly select desired pieces of data.” (Webopedia.com, 2005) Therefore an open source database will provide the services stated in the database definition along with the attributes listed by OpenSource.org.
The open source vs. proprietary software debate is at the very heart of the IT world. The ability to create and modify open source software offers huge advantages over proprietary software that hides its source code. Open source software allows the entire IT world the opportunity to create new ideas and innovations. Those ideas then become the basis for new innovation. Proprietary software keeps others from building on its platform and allows companies with monopolistic intentions, such as Microsoft, to dictate their agenda to everyone else. These concepts are especially important when it comes to databases. Databases are one of the key ingredients to virtually every IT system. Most every user of an IT system needs a way to store and manipulate data. Open source databases will allow true, and unhindered, technological advancement in the way data is used and stored.
There is a set of instructions for implementation of a database on builder.com.com. The instructions are as follows:
1. Identify your entities. You do this by examining customer requirements and identifying what needs to be stored and who owns that data. Usually the entities are the nouns in the sentence structure of the requirements documentation.
2. Determine the data structure. For each entity you need to decide what must be stored to describe that entity. This data becomes fields in your database tables. Often customers have no idea how long text fields should be, or how many digits numerical input should be, so you must rely on your best judgment to create appropriate fields.
3. Append System fields. Nearly every table requires fields that are not identifiable through requirements. System fields are things such as creation date time stamps, ID Primary key fields, last update date, etc.
4. Create relationships. This is where you examine your entities and create relationships between them. For example, an order must be tied to a certain customer; therefore your order entity must have a foreign key to the customer table. The two most common types of relationships are aggregate composition (one-to-many: 1..n) and many-to-many: (n..n). Many-to-many relationships must be broken out into a separate support table consisting of only two primary key fields.
5. Normalize your entities. This is where you take a final examination of your database model and optimize it by pushing redundant data out into its own tables. Normalization can reach an extreme, causing a degradation of performance due to too many table joins, so be careful what level of normalization you try to achieve.
(builder.com.com, 2004)
A good example of benchmarking a database comes from benchmarkresources.com as they give a list of the processes involved with benchmarking a database. They introduce their benchmarking process by saying. “Database Management Systems are commonly benchmarked by several different types of organizations. Each of these organizations has a different set of goals and faces different constraints when conducting a DBMS benchmark.” (benchmarkresources.com, 1998)



Bibliography



OpenSource.org, The Open Source Definition, online at
http://www.opensource.org/docs/definition.php , 2005


Webopedia.com, Database, online at
http://webopedia.internet.com/TERM/d/database.html , 2004


Builder.com, Database Implementation, online at
http://builder.com.com , 2004


benchmarkresources.com, The Benchmark Handbook Introduction, online at
http://www.benchmarkresources.com/handbook/10-1.html , 1998

WebServicesDeliverable

Web Services

Web services have become extremely important in the field of data communication. “The term Web services describes a standardized way of integrating Web-based applications using the XML, SOAP, WSDL and UDDI open standards over an Internet protocol backbone.” (Webopedia, 2004) Web services use web based technology to bridge the gap of communication difficulties amongst platforms and applications. Web Services can be thought of as “programmable application logic accessible using standard Internet protocols. Web Services combine the best aspects of component-based development and the Web. Like components, Web Services represent functionality that can be easily reused without knowing how the service is implemented. Unlike current component technologies which are accessed via proprietary protocols, Web Services are accessed via ubiquitous Web protocols (ex: HTTP) using universally-accepted data formats (ex: XML). In practical business terms, Web Services have emerged as a powerful mechanism for integrating disparate IT systems and assets. They work using widely accepted technologies and are governed by commonly adopted standards. Web Services can be adopted incrementally with little risk and at low cost. Today, enterprises use Web Services for point-to-point application integration, to reuse existing IT assets, and to securely connect to business partners or customers. Independent Software Vendors (ISVs) embed Web Services functionality in their software products so they are easier to deploy. (Systinet, 2003) Some great features of Web Services are that they are “application or information resources that can be accessed using standard Web protocols. Any type of application can be offered as a Web service. Web Services are applicable to any type of Web environment: Internet, intranet, or extranet. Web Services can support business-to-consumer, business-to-business, department-to-department, or peer-to-peer interactions. A Web Service consumer can be a human user accessing the service through a desktop or wireless browser; it can be an application program; or it can be another Web Service. Web Services support existing security frameworks.” (Systinet, 2003)
Web Services are essentially just like most every application out there. There are, however, “three things that Web Services are especially good at: integration, service reuse and business flexibility. (Invario, 2004) Web services use integration well because, again, applications not meant to communicate may now do so. Service Reuse is important for Web Services because their “applets semantically encapsulate discrete functionality in the same way that objects encapsulate functionality in an object-oriented system.” (Legorreta, 2004) This reusability concept is especially powerful here because the web services can be used on many platforms and with different applications. Web services are especially important when it comes to business flexibility. Flexibility comes in the form of being able to build new integration solutions for all IT systems within a business. Businesses can now integrate their systems more quickly and at a much more reasonable cost so that time-sensitive business requirements can be met easily.
A benchmark example of the use of a Web Service can be found with the Dyauwos team in MIS 160, spring semester. They have a functioning prototype of their project that effectively uses a Web Service which was provided by Google.com. The application gives a map and directions to the store site of their client. Implementation instructions for this Web Service were provided by Google.com.

Works Cited



Legoretta, Dr. Leo, Lecture 10: Web Services, online at
http://www.csus.edu/indiv/l/legorretal/160_Spring_2005_00_schedule.htm, 2004


Infravio Inc., Web Services: The Executive’s Guide, online at
http://www.infravio.com/resc.php?source=google&creative=1&campaign=web_services_related&group=what_are_web_services, 2004


Systinet, Web Services: A Practical Introduction, online at
http://www.webservices.org/index.php/ws/content/view/full/1390, 2003

Webopedia.com, Web Services, online at
http://www.webopedia.com/TERM/W/Web_services.html, 2004

Sunday, March 20, 2005

GISDeliverable

Geographic Information System
Geographic Information Systems (GIS) is a growing genre in the realm of Information Technology. GIS is defined as “information management systems tied to geographic data. Various types of data sets, such as hydrology, road networks, urban mapping, land cover, and demographic data can contain hundreds of pieces of information about a specific feature...all tied together geographically to provide spatial context.” (sparc.ecology.uga.edu, 2005) Use of these systems is growing because of the many advantages they offer in the field of geography and fields related to geography.
The importance of GIS when relating to business is illustrated by Mehdi-ul-Hasnain Syed Qadri Bokhari of directionsmag.com when he wrote: “While accepting the challenge of the 21st century we are required to establish an appropriate and cost effective technological framework that is capable of integrating and managing such business intelligence. There are three basic questions that need to be answered. One, what kind of system will support the largest number of data inputs? Data input may be a customer list, market questionnaire, health and educational statistics, land use and agricultural maps, GPS locations, remotely sensed environmental impact imageries, aerial photographs of transmission networks, weather station data, or financial plans and revenue streams. Second, what system has the capability to intelligently maintain these databases in an integrated environment? Third, what kind of system will provide the best possible information security and integration scenarios in a global eBusiness environment. One thing becomes obvious that such system should be able to integrate geography into its analysis for enhanced global decision-making processes. Only SAP/R3, PeopleSoft, SAS, or SPSS alone cannot fulfill such requirement. Need arises to establish a broader resource planning infrastructure that can capture and analyze geographic and geo-historic information resources.
Most of the organizations consider Geographic Information Systems for visualizing and analyzing existing information. This is true and just use of such system, but is not limited to such extent only. The real power of GIS systems is those silent features that manipulate and analyze those data sources that no other systems can process. Some of them are spatial topological constructions, data overlaying, geocoding, and linear referencing capabilities.” (Bokari, 2005)
Gis.com has a list of steps, under the link “What is Gis”, which explain how to use GIS. The steps are:
[1] Mapping Where Things Are[2] Mapping Quantities[3] Mapping Densities[4] Finding What's Inside[5] Finding What's Nearby[6] Mapping Change
(gis.com, 2005)
An effective benchmark for a GIS system is the software package developed by ESRI. ESRI, the world's leading developer of geographic information system (GIS) software, was named the winner in the GIS category of CMP Media's Intelligent Enterprise Seventh Annual Readers' Choice Awards for Best IT Products.
Intelligent Enterprise subscribers, including CEOs, CIOs, top application development managers, and data management and business intelligence decision makers, determined which IT products most effectively enable an "intelligent enterprise." These are the products that help organizations deploy strategic applications that collect, analyze, and deliver information wherever and whenever it is needed to improve performance and maximize relationships.
"We are honored to be chosen Best GIS by Intelligent Enterprise readers, said ESRI President Jack Dangermond. "It is gratifying that ESRI's GIS products are recognized as having strategic value throughout the enterprise. GIS has evolved into a mainstream information technology because its key payoffs include enhanced decision support, increased efficiency, and better communication throughout an organization and beyond." (esri.com, 2005)
Works Cited

Sparc.ecology.ugs.edu, COWEETA LTER GLOSSARY OF TERMS, online at
http://sparc.ecology.uga.edu/webdocs/1/glossary.htm, 2005


gis.com, How to Use GIS, online at
http://www.gis.com/whatisgis/dowithgis.html , 2005

esri.com, IT Decision Makers Choose Best Software to Enable the "Intelligent Enterprise, online at
http://www.esri.com/news/releases/04_3qtr/intelligent-enterprise.html, 2005


Bokhari, Mehdi-ul-Hasnain Syed Qadri, A Business Model for the Global GIS Business Environment, online at
http://www.directionsmag.com/article.php?article_id=244&trv=1&PHPSESSID=b597f68eaad7e14f27b0d40f6ccc8748, 2005