I am continuing work on reviewing and defining requirements for a SCM tool. I have found a tool called Protégé that I am reviewing to use to enter my detailed requirements. Then I can analyze these and create N3 and RDF I hope. I am curious to see how this can be used to evaluate requirements and help determine the best choice for a tool.
So my abstract is as follows for my paper:
Semantic web technologies provide a way to add meaning to data and to use software tools to help navigate that data in new and interesting ways. This paper explores the use of semantic web technologies in the area of Software Configuration Management (SCM) tools and how to select the correct one for your project or organization. Specifically, this paper reports on how variables in selecting a tool have been used to help solve the problem of what requirements are met by analyzing the functionality of each tool and determining how each requirement has or has not been met. The results of this effort will show that we were able to select the best SCM tool for the job.
This paper will attempt to break down the requirements for a SCM tool and develop an ontology so that they can be analyzed, rated, and matched to specific tools provided by several vendors. N3 notation can be used to structure the requirements and to convert them into RDF. I will be exploring a tool called Protégé in an attempt to explore the requirements for this topic in SCM tools. There are many levels of requirements when looking at tools and semantic web technology is a good mechanism to help delve into these requirements to create a tree structure of classes, subclasses and inference components.
So my main goal is here is to determine the best way to break the components down from the requirements. I will create a spreadsheet to list the requirements, and review a product called Protégé that I will enter the requirements into and be able to graph and evaluate further to try and simplify the presentation of the requirements in terms of evaluating them for each tool vendor. Then from Protégé I will be able to export the requirements to N3 notation and RDF.
Sunday, April 12, 2009
Sunday, March 1, 2009
The requirements specification
I have a completed requirements specification of which I will provide a brief part of it. The main task here is to determine the best way to break the components down into N3/triple terminology. This can then be graphed and evaluated further to try and simplify the presentation of the requirements in terms of evaluating them for each tool vendor.
Requirements are important to be able to document the customer's needs. They also form the basis for measuring the success of the implementation of the project and are used to confirm that what was agreed up was delivered. In creating requirements for a large, enterprise level tool there are many areas to discuss with the vendor. A proof of concept can then be conducted to validate the requirements against the actual tool.
So let's look at the categories of the requirements in detail.
Any comments on how I can begin creating a table for N3 notation will be appreciated.
Impact Areas:
Admin – this area contains tasks that apply to or are completed by the CM tools administrator.
Build and deploy – tasks where a full or partial compilation is done of the code base at any given time. Normally done with code from a specific code base version or branch
Defect tracking – allows users from any functional team on the project to enter a defect or issue against a current build or release of the system. This can also be listed as an enhancement if the tool allows for tracking of new requirements. A key component here is for the tool to have traceability or integration back to the source code base at the module level.
Global – these are tasks spread across many functional areas such as admin, pricing, engineering, setup, analyst, etc.
Sales – tasks that apply to pricing or cost of the product, usually determined by license types and scenarios. The licenses are broken into user types (QA, engineering, help desk, and analyst) and can be either named (assigned to a specific user), or floating (shared by multiple users).
Source control – tasks that allow the source code to be changed, managed, and reported on. A key component of this is integration with third party code development tools.
…….. So how to combine all of this into N3/triples notation?
Requirements are important to be able to document the customer's needs. They also form the basis for measuring the success of the implementation of the project and are used to confirm that what was agreed up was delivered. In creating requirements for a large, enterprise level tool there are many areas to discuss with the vendor. A proof of concept can then be conducted to validate the requirements against the actual tool.
So let's look at the categories of the requirements in detail.
Any comments on how I can begin creating a table for N3 notation will be appreciated.
Impact Areas:
Admin – this area contains tasks that apply to or are completed by the CM tools administrator.
Build and deploy – tasks where a full or partial compilation is done of the code base at any given time. Normally done with code from a specific code base version or branch
Defect tracking – allows users from any functional team on the project to enter a defect or issue against a current build or release of the system. This can also be listed as an enhancement if the tool allows for tracking of new requirements. A key component here is for the tool to have traceability or integration back to the source code base at the module level.
Global – these are tasks spread across many functional areas such as admin, pricing, engineering, setup, analyst, etc.
Sales – tasks that apply to pricing or cost of the product, usually determined by license types and scenarios. The licenses are broken into user types (QA, engineering, help desk, and analyst) and can be either named (assigned to a specific user), or floating (shared by multiple users).
Source control – tasks that allow the source code to be changed, managed, and reported on. A key component of this is integration with third party code development tools.
…….. So how to combine all of this into N3/triples notation?
Monday, February 23, 2009
The SCM Tools Requirements statement
I am ready to begin creating my N3/triples table for my CM tools requirements spec so doing some research on where to begin. I have a spreadsheet with many columns to detail responses to each requirement which are laid out in each row. The columns will serve to display the following:
Impact Area - the task area or part of the tool does the requirement affect (such as admin, build and deploy, defect tracking, source control, etc.)
Role - the functional area is affected (admin, build, engineering, QA, BA, support, etc.)
Item - the requirement description
Detail - a detailed description of the requirement that needs to be met, or specific data requirements
Benefit Value - a statement of justification to why this requirement is important or needed
Value to Us - a ranking scale of 1-5 where 1 is Ok and 5 is Mandatory
Vendor response and rankings - comments from the vendor if needed (i.e. if a requirement is not met why, and can it be expected in the next release), and how they are rated against the requirement.
So, as an abstract on my Project Page in our wiki group I have stated: "Semantic web technologies provide a way to add meaning to data and to use software tools to help navigate that data in new and interesting ways. This paper explores the use of semantic web technologies in the area of Software Configuration Management (SCM) tools and how to select the correct one for your project or organization. Specifically, this paper reports on the how variables in selecting a tool have been used to help solve the problem of what requirements are met by analyzing the functionality of each tool and determining how each requirement has or has not been met. The results of this effort will show that we were able to select the best SCM tool for the job."
Impact Area - the task area or part of the tool does the requirement affect (such as admin, build and deploy, defect tracking, source control, etc.)
Role - the functional area is affected (admin, build, engineering, QA, BA, support, etc.)
Item - the requirement description
Detail - a detailed description of the requirement that needs to be met, or specific data requirements
Benefit Value - a statement of justification to why this requirement is important or needed
Value to Us - a ranking scale of 1-5 where 1 is Ok and 5 is Mandatory
Vendor response and rankings - comments from the vendor if needed (i.e. if a requirement is not met why, and can it be expected in the next release), and how they are rated against the requirement.
So, as an abstract on my Project Page in our wiki group I have stated: "Semantic web technologies provide a way to add meaning to data and to use software tools to help navigate that data in new and interesting ways. This paper explores the use of semantic web technologies in the area of Software Configuration Management (SCM) tools and how to select the correct one for your project or organization. Specifically, this paper reports on the how variables in selecting a tool have been used to help solve the problem of what requirements are met by analyzing the functionality of each tool and determining how each requirement has or has not been met. The results of this effort will show that we were able to select the best SCM tool for the job."
Thursday, February 5, 2009
What Tool to use for Software Configuration Management
On my current project we are currently experiencing much difficulty in managing a very large software code repository with dozens of software branches, most in support that have become ‘customer specific’ branches due to specific changes or enhancements that the customer has requested. Add to that the multiple development branches all in parallel, and more customer specific branches that include the latest release that they all want to test in their production databases to see if they can upgrade from at least several major versions back of the product. Oh, and don’t forget we also have more changes being submitted (defects or enhancements) and worked on every day that must be merged to other branches if they are considered a ‘core’ fix. So you have code changes across many branches that need to be synchronized with defect or change management along with builds and releases that need to be propagated to their correct environments like QA, client test, production test, etc.
You get the picture. In order to manage all of this you need to have tools that fit the projects needs. An ALM (Application Lifecycle Management) tool is best because it has added benefits of requirements, design, and test management which can integrate well with your SCM (Software Configuration Management) tools.
There are many tools available in the market today that do some or all of the ALM processes required for good implementation and tracking of project activities. Some of the keys to good tools are integration, traceability and automation. These simplify the entering, tracking, and reporting of data while also providing a detailed result of what is being delivered.
My current project has been using the same tools for many years, all of which are not integrated and have minimal automation. Many of the processes used are manual and take many hours to complete. Communication can be affected my not having the right information at the right time, or not being able to generate the information in a complete and quick fashion.
So my task is to help select a new tool (or set of tools) that meet the majority of our needs and that can migrate as much of our existing data as possible so that we can maintain the history of our product. The challenge though will be to select the best tool for the job for the best cost. This doesn’t mean choosing the tool that costs the less, but choosing the tool that gives the best long term ROI (return on investment).
This will be the subject of my paper for this class. I will use a requirements specification written specifically for our project detailing requirements for SCM tools. This requirements specification will also contain items specific to our project in terms of third party tool integration (SCCI – Source Code Control Interface), distributed or remote use and performance, and that will satisfy all key stakeholders in the project organization such as engineering, quality assurance, project management, implementation teams, support teams, etc.
To summarize, the problem I am going investigate is how to pick the best SCM tool for the project with the best ROI. After all this is a must in today’s environment to get senior management to approve these kinds of expenditures which can easily grow to well over $100,000.
You get the picture. In order to manage all of this you need to have tools that fit the projects needs. An ALM (Application Lifecycle Management) tool is best because it has added benefits of requirements, design, and test management which can integrate well with your SCM (Software Configuration Management) tools.
There are many tools available in the market today that do some or all of the ALM processes required for good implementation and tracking of project activities. Some of the keys to good tools are integration, traceability and automation. These simplify the entering, tracking, and reporting of data while also providing a detailed result of what is being delivered.
My current project has been using the same tools for many years, all of which are not integrated and have minimal automation. Many of the processes used are manual and take many hours to complete. Communication can be affected my not having the right information at the right time, or not being able to generate the information in a complete and quick fashion.
So my task is to help select a new tool (or set of tools) that meet the majority of our needs and that can migrate as much of our existing data as possible so that we can maintain the history of our product. The challenge though will be to select the best tool for the job for the best cost. This doesn’t mean choosing the tool that costs the less, but choosing the tool that gives the best long term ROI (return on investment).
This will be the subject of my paper for this class. I will use a requirements specification written specifically for our project detailing requirements for SCM tools. This requirements specification will also contain items specific to our project in terms of third party tool integration (SCCI – Source Code Control Interface), distributed or remote use and performance, and that will satisfy all key stakeholders in the project organization such as engineering, quality assurance, project management, implementation teams, support teams, etc.
To summarize, the problem I am going investigate is how to pick the best SCM tool for the project with the best ROI. After all this is a must in today’s environment to get senior management to approve these kinds of expenditures which can easily grow to well over $100,000.
Monday, February 2, 2009
some paper writing tips
I have been doing some research on criteria for acceptance of a paper for a conference or journal publication (OOPSLA site). Following are some things you want to do to explain the contribution of your paper and convince the program committee that your work is correct.
Have your paper reviewed by colleagues. This is important to get expert advice on the topic or problem you are writing about. Opinions of others in the community and profession will always make you think about the details of you research such as 'did I cover everything?'.
Tips on getting a theoretical paper accepted:
- Motivate and analyze the significance of the topic being theorized
- Give paper a clear focus, a single idea that is thoroughly discussed
- State thesis carefully, be sure to support it and make it easy for the reader to find quickly
- Theory must prove or disprove something of interest to the community
- Answer the question of ‘what does x provide that was lacking in a previous analyses?’ explain how things can be done differently
Tips on getting an experience paper approved:
- Tells an informative story on some aspect of development, delivery, design, or architecture on an application
- Present a single topic or case study and then reflect on broader issues
- Present ideas clearly and succinctly
- Don’t discuss areas of future research
- Include relevant facts, sum up key points and cite related ideas when appropriate
- Provide enough details to relate the experience to the readers
- Present lessons learned to compare with other’s experiences
- Don’t include too detailed of coding examples
- Summarize highlights and amplify a few keys points
Here is a good check list, advice to follow by Kent Beck:
“The rejection rate for OOPSLA papers in near 90%. Most papers are rejected not because of a lack of good ideas, but because they are poorly structured.”
So by following some simple steps in writing a paper, it will dramatically increase your chances of acceptance.
Start the paper quickly and get o the point in the first page as you want to grab the interest of the reader right away. There are many steps to get a paper approved and many readers
Ensure your paper has a ‘spark’ to keep an expert reading it until the end. Think of one startling sentence to get attention and then make your case
Convince the reader of the truth of your amazing statement. Formalize your argument into 4
sections in terms of problem, solution, defense, related work.
- Problem – describe why it is a problem and what the problem is
- Detail how your solution solves the problem
- Defend the solution and convince the reader that the problem is actually solved. Show that you have thought of all reasonable counter arguments
- Describe what other people have done in the area to convince the reader that what you have done is novel
Abstract – begin with a four sentence summary of the conclusions of your paper. This is important to get your paper into the ‘A’ pile which will be passed on to the next phase of approval
Well this is the end of today’s research on how to write a good paper.
Have your paper reviewed by colleagues. This is important to get expert advice on the topic or problem you are writing about. Opinions of others in the community and profession will always make you think about the details of you research such as 'did I cover everything?'.
Tips on getting a theoretical paper accepted:
- Motivate and analyze the significance of the topic being theorized
- Give paper a clear focus, a single idea that is thoroughly discussed
- State thesis carefully, be sure to support it and make it easy for the reader to find quickly
- Theory must prove or disprove something of interest to the community
- Answer the question of ‘what does x provide that was lacking in a previous analyses?’ explain how things can be done differently
Tips on getting an experience paper approved:
- Tells an informative story on some aspect of development, delivery, design, or architecture on an application
- Present a single topic or case study and then reflect on broader issues
- Present ideas clearly and succinctly
- Don’t discuss areas of future research
- Include relevant facts, sum up key points and cite related ideas when appropriate
- Provide enough details to relate the experience to the readers
- Present lessons learned to compare with other’s experiences
- Don’t include too detailed of coding examples
- Summarize highlights and amplify a few keys points
Here is a good check list, advice to follow by Kent Beck:
“The rejection rate for OOPSLA papers in near 90%. Most papers are rejected not because of a lack of good ideas, but because they are poorly structured.”
So by following some simple steps in writing a paper, it will dramatically increase your chances of acceptance.
Start the paper quickly and get o the point in the first page as you want to grab the interest of the reader right away. There are many steps to get a paper approved and many readers
Ensure your paper has a ‘spark’ to keep an expert reading it until the end. Think of one startling sentence to get attention and then make your case
Convince the reader of the truth of your amazing statement. Formalize your argument into 4
sections in terms of problem, solution, defense, related work.
- Problem – describe why it is a problem and what the problem is
- Detail how your solution solves the problem
- Defend the solution and convince the reader that the problem is actually solved. Show that you have thought of all reasonable counter arguments
- Describe what other people have done in the area to convince the reader that what you have done is novel
Abstract – begin with a four sentence summary of the conclusions of your paper. This is important to get your paper into the ‘A’ pile which will be passed on to the next phase of approval
Well this is the end of today’s research on how to write a good paper.
Thursday, January 29, 2009
The assignment
So the next task is:
Pick a topic to do research on and complete a paper for submission to a conference or journal. Lots of places to find information on this but I am going to start here as I will first need to learn how to do this. There is a good site at OOPSLA that can tell me how to get a paper accepted http://www.sigplan.org/oopsla/oopsla96/how93.html. I see the acceptance rate for papers can be very low (10-15%). This can be due to several factors such as a large amount of submissions for a specific topic, poor structure of the paper, standards not being met, etc.
Pick a topic to do research on and complete a paper for submission to a conference or journal. Lots of places to find information on this but I am going to start here as I will first need to learn how to do this. There is a good site at OOPSLA that can tell me how to get a paper accepted http://www.sigplan.org/oopsla/oopsla96/how93.html. I see the acceptance rate for papers can be very low (10-15%). This can be due to several factors such as a large amount of submissions for a specific topic, poor structure of the paper, standards not being met, etc.
Wednesday, January 21, 2009
Introduction to this site, what is the Semantic Web
Greetings and welcome to my blog.
About myself: I am a professional software engineer with over 28 years experience in the field specializing in Software Configuration Management, Software Quality Assurance and Software Process Engineering. I am currently employed by a medium sized corporation and as an adjunct professor at a local university.
What this blog is:
This blog will be dedicated to a current class I am taking as part of a Doctorate of Engineering in Software Engineering. The topic is CSE 8394, Readings and Investigations in Software Application Development for the Spring 2009 semester.
Topic of study: What is the Semantic Web
Let's get started, then:
The Wikipedia definition is as follows:
The Semantic Web is an evolving extension of the World Wide Web in which the semantics of information and services on the web is defined, making it possible for the web to understand and satisfy the requests of people and machines to use the web content. It derives from World Wide Web Consortium director Sir Tim Berners-Lee's vision of the Web as a universal medium for data, information, and knowledge exchange.
At its core, the semantic web comprises a set of design principles, collaborative working groups, and a variety of enabling technologies. Some elements of the semantic web are expressed as prospective future possibilities that are yet to be implemented or realized. Other elements of the semantic web are expressed in formal specifications. Some of these include Resource Description Framework (RDF), a variety of data interchange formats (e.g. RDF/XML, N3, Turtle, N-Triples), and notations such as RDF Schema (RDFS) and the Web Ontology Language (OWL), all of which are intended to provide a formal description of concepts, terms, and relationships within a given knowledge domain.
So what does this mean to the average person (like myself) who has heard this phrase for the first time? Well let's look at it this way ...
The definition of semantics is this "The study or science of meaning in language." This will be a very interesting topic for me as I also studied linguistics as part of my undergraduate degree and linguistics is "the scientific study of language ". Of course linguistics covers a wide range of language characteristics as well, such as the study of the nature, structure, and variation of language, including phonetics, phonology, and morphology, and answers the question of "what is language and how is it represented in the mind?". Or in the case of semantic web technologies, how is it represented to the user to help them find what they are looking for as quickly as possible?
With the overwhelming amount of data available on today's web, it can be very time consuming (and intimidating) to find exactly what one is looking for. So the semantic web I imagine will take the web search engine a step further and help that user find what they are looking for quicker and give them suggested results to match. A good example of this in action I think is the Google search of a topic. Have you noticed when you first start entering your search words, as soon as Google recognizes it, it pops up the entire word before you've finished typing it. And for multiple word searches it even thinks ahead for you to give you multiple choices before you've finished!
Let's try it:
Open a Google window and in the search field start typing 'why do dogs ...'. Look at the results below the search window that pop up! Amazing that the search engine has given suggestions for you to search on, based on the semantic phrase component you've entered. So now you can easily find out why dogs ... eat grass, poop, lick, howl, bark, etc.
Hmmm, now this is intelligent language recognition at work on the web ... and semantically correct.
About myself: I am a professional software engineer with over 28 years experience in the field specializing in Software Configuration Management, Software Quality Assurance and Software Process Engineering. I am currently employed by a medium sized corporation and as an adjunct professor at a local university.
What this blog is:
This blog will be dedicated to a current class I am taking as part of a Doctorate of Engineering in Software Engineering. The topic is CSE 8394, Readings and Investigations in Software Application Development for the Spring 2009 semester.
Topic of study: What is the Semantic Web
Let's get started, then:
The Wikipedia definition is as follows:
The Semantic Web is an evolving extension of the World Wide Web in which the semantics of information and services on the web is defined, making it possible for the web to understand and satisfy the requests of people and machines to use the web content. It derives from World Wide Web Consortium director Sir Tim Berners-Lee's vision of the Web as a universal medium for data, information, and knowledge exchange.
At its core, the semantic web comprises a set of design principles, collaborative working groups, and a variety of enabling technologies. Some elements of the semantic web are expressed as prospective future possibilities that are yet to be implemented or realized. Other elements of the semantic web are expressed in formal specifications. Some of these include Resource Description Framework (RDF), a variety of data interchange formats (e.g. RDF/XML, N3, Turtle, N-Triples), and notations such as RDF Schema (RDFS) and the Web Ontology Language (OWL), all of which are intended to provide a formal description of concepts, terms, and relationships within a given knowledge domain.
So what does this mean to the average person (like myself) who has heard this phrase for the first time? Well let's look at it this way ...
The definition of semantics is this "The study or science of meaning in language." This will be a very interesting topic for me as I also studied linguistics as part of my undergraduate degree and linguistics is "the scientific study of language ". Of course linguistics covers a wide range of language characteristics as well, such as the study of the nature, structure, and variation of language, including phonetics, phonology, and morphology, and answers the question of "what is language and how is it represented in the mind?". Or in the case of semantic web technologies, how is it represented to the user to help them find what they are looking for as quickly as possible?
With the overwhelming amount of data available on today's web, it can be very time consuming (and intimidating) to find exactly what one is looking for. So the semantic web I imagine will take the web search engine a step further and help that user find what they are looking for quicker and give them suggested results to match. A good example of this in action I think is the Google search of a topic. Have you noticed when you first start entering your search words, as soon as Google recognizes it, it pops up the entire word before you've finished typing it. And for multiple word searches it even thinks ahead for you to give you multiple choices before you've finished!
Let's try it:
Open a Google window and in the search field start typing 'why do dogs ...'. Look at the results below the search window that pop up! Amazing that the search engine has given suggestions for you to search on, based on the semantic phrase component you've entered. So now you can easily find out why dogs ... eat grass, poop, lick, howl, bark, etc.
Hmmm, now this is intelligent language recognition at work on the web ... and semantically correct.
Subscribe to:
Posts (Atom)