Powerd by dasBlog RSS 2.0
 Wednesday, February 13, 2008

Three items were the focus of my attention today. Well, rather 2, and the 3rd I just saw over on daily tech and it got me very excited.

MSF for CMMI

I have been reviewing the process guidance for MSF for CMMI version 4.2 which ships with TFS 2008. I plan on using this process as the foundation on my next software development project. While out of the box it is a bit of an overkill for my team, project and company, I prefer to start with more (process) and remove what I don't need. I also feel that CMMI is a great compromise between management, who is used too, and wants a more traditional software development approach, and the developers, such as my self who are advocating a more agile process.

The great thing about MSF for CMMI is that it is written around agile concepts, yet still has processes in place for oversight. The process guidance, is written in HTML, making it very easy to edit and customize it after the project is created to meet your needs. There is a way to edit the template so that it generates the new project to meet your needs, but I figure this way is easier for the first go around.

My plan is to make changes to the HTML as needed, and then create a new template. In addition to tracking my changes, you can use a tool like WinMerge to compare your modified document library with a default one. You can access a document library via windows explorer by going to the document library and choosing open in explorer from the actions menu. This creates a UNC path in the form of \\SharepointServer\Sites\SiteName\Process Guidance, which you can supply to WinMerge.

I have spent some time going over the default tasks that are created with a new CMMI based project to see what workstreams and activities they relate to, and I think I have a pretty good handle on the first two tracks. I plan on documenting this in a future post.

Requirements

Oil and Water, Superman and Kryponite, Me and Requirements. I am having some difficulties in creating a formal software requirements specification, using this book as a guide. It's not the books fault (although I wish it hand an end to end case study of a project), but rather a differing of opinion on some of the definitions (which that end to end case study might help with).

  • Where is the line between Use Cases and Functional Requirements? Use cases look a lot like test plans to some people, and have a tendency to add test plan like information to them, which I feel is incorrect.
  • Where is the line between systems and users in the use cases?
  • How much detail is the right amount of detail?

Similar to my quest to gain a better understanding in the use of TFS and the MSF for CMMI, I'm going to have to put some time into researching (primarily looking for examples) software requirements. In addition to the book, which we now have 6 copies of at work, I found this website with some additional templates, as well as fairly detailed article on writing requirements from the perspective of a technical writer. There appear to be some good articles over at wikipedia as well, such as Requirements Analysis and Use Cases, and Use Case Diagrams. Someone today asked the question about how do all the use cases get related, and I believe the answer is the use case diagram (at least one use for a use case diagram), as illustrated in the example on Wikipedia.

I hope to be able to report back with some answers to my questions sometime in the future.

NVidia Application Processor

Daily Tech had an article on the NVidia APX 2500 application processor which is designed to add hi-def capabilities to mobile devices. The article states that NVidia has been working with Microsoft, so once can assume (as does the author of the article), that this is destined for a Windows Mobile application.

I've really been giving my HTC Mogul a work out and have always wanted a all in one device (video, mp3, phone, PDA, etc), so I am very excited about this. Since I have a bias against Apple, I am not a fan of the iPhone, although I can appreciate and respect what it is. This gives me some hope that my next Windows Mobile phone will be a force to be rekon with.

In addition to smart phones, I can also see this making it's way to other embedded systems, especially something like a mall kiosk. This brings me to the second reason that I am excited, and that is, my current software project is all about embedded systems running Windows CE. I have some future customer requirements that could take advantage of the functionality provided by this chip.

Wednesday, February 13, 2008 5:14:14 AM UTC  #    Comments [0] - Trackback
Programming | Review For Future Projects
 Sunday, February 10, 2008

Back in September I wrote a blog post title Collaborate with Myself, in which I talked about various ways to write down and store information, as well as syncing that information between multiple computers. I wanted to take some time to write an update. Of all the software I blogged about, OneNote, Groove and Live Writer are probably the one's that I have used the most in the past 5-6 months.

What am I Using

Groove

Currently I have 5 workspaces: IE Favorites, KeePass, Live Writer (Drafts), OneNote Notebooks, and Work Documents. I have had very few problems syncing between 2 computers, and only a couple of times were there were conflicts, primarily a result of groove not running on one of the computers.

IE Favorites are kept in sync, although sometimes the order in which they are displayed is not the same. The first time this happened, I thought that syncing wasn't working at all. KeePass is a great program to store passwords in. I maintain 3 password "databases" and all 3 available at work and home. With Live Writer, I sync the My Weblog Posts folder, which contains drafts and recently posted. Having the drafts sync is great. I can start a post at work, and finish it at home or vice versa. One Note syncs just fine, and if there is a conflict it's pretty easy to spot because you get a new tab that has the word Copy in it. Finally, I just started syncing my work documents, as it's nice to have them available at home without requiring some sort of remote access. It's also my way of backing them up (DTA = Don't Trust Anybody).

Live Writer

Not much to report on Live Writer, other then it works as advertised. I added a plug-in to format source code in posts, and that's about it. The only thing I have to log into my blog for is if I want to add a track back. I'm up to 89 posts, and except for a couple of posts I've brought over from a different blog, all of been created with Live Writer.

One Note

OneNote is a great program that I have started using on a daily basis. I have the quick launcher in the system tray so all I have to do is press Shift+Windows+N to bring it up. I'll write something down, close OneNote (as my task bar gets so full during the day) and can bring it back up with ease.

I've used OneNote to record meeting notes, project ideas, book notes, track trouble shooting steps during my on-call rotations. I have a Personal and Work notebook, each with several tabs, and Groove keeps everything in sync.

Looking back at my first post, I am not even using the features I blogged about, but am still finding great value. This is the perfect opportunity to revisit some of those features and see if I can make use of them.

Unfortunatly I still haven't gotten a tablet PC. I was looking on Ebay again today, but just couldn't pull the trigger on buying one as I have some other expenses coming up, including a possible roller hockey tournament in Cincinnati, OH. I need to put some thought into how I can justify it as a work expense. On the one hand, it would make taking notes during meetings more efficient, but I'm really trying to limit the number of meetings I'm in, as it means I'm not getting much development time in.

What I'm Not Using (yet)

Wiki

I did finally get some Wiki software installed on the website, but there is no content on it yet. I still need to get backups setup and play around with the software a little more before I commit any serious time to writing content for it.

I have chosen ScrewTurn Wiki as it's an asp.net file based Wiki, which also has support for running offline. With the launch of http://wiki.asp.net I am a little more encouraged to move forward with my own Wiki, although I am interested to see if Telligent does in fact release a community version of the Wiki software, although I suspect the data store will be SQL which I think is overkill for my needs.

One thing that is lacking from ScrewTurn is page level, or category level security. While I realize that a Wiki is all about collaboration and public involvement, some of the pages I would want to restrict access to. The reason for this, is that I see the Wiki acting as somewhat of a CMS for my site in certain instances.

Sharepoint (at home)

I did finally get Sharepoint installed at home, if for no other reason then to try out the 40 some Sharepoint templates provided by Microsoft. Currently I'm playing around with the Stock tracker template (not the official name), and Lending Library.

I defiantly like Sharepoint and the templates, but it's hard to get too excited when you are the only one using the Sharepoint Site. Even though I have changed the wife's home page to the Sharepoint site, she still doesn't read the announcements and calendar. I bet if I put the project management template on there and told she would use it ;)

Sunday, February 10, 2008 9:22:13 PM UTC  #    Comments [0] - Trackback
Technology
 Saturday, February 09, 2008

I am adding my name to the list of developers who have not heard about the InternalVisibleTo attribute. I came across this while checking out Derik Whittaker's blog in response to the email I got saying that Derik will be presenting at this month's Milwaukee area .Net Users Group.

The InternalVisibleToAttribute was added in .Net 2.0 and most people seem to be using it in order expose internal methods to external unit test classes. However, there is nothing to prevent you from using it in non-testing situations., although I have not seen a good reason other then unit testing to use it.

The MSDN documentation talks about the special case of applying the attribute to a strong named friend assembly. This is also a C# only attribute.

Saturday, February 09, 2008 7:33:18 PM UTC  #    Comments [0] - Trackback
Programming | Tools
 Friday, February 08, 2008

Scott Hanselman today announced the Asp.Net Wiki (Beta).

"The idea is that folks spend a lot of time trolling the blogs, googling live-searching for answers to common "How To" questions. There's piles of fantastic community-created and MSFT-created content out there, but if it's not found by a search engine and the right combination of keywords, it's often lost."

I think it's a great idea and I hope to see other product groups at Microsoft follow suit. Since it's linked off http://www.asp.net, and a Microsoft entity, I see it quickly becoming the one stop shop for Asp.Net information.

If you jump on and contribute to the wiki right now, you could be a top contributor, at least for a couple of days.

Friday, February 08, 2008 11:34:45 PM UTC  #    Comments [0] - Trackback
Technology | Programming | Review For Future Projects
 Wednesday, February 06, 2008

Jeff Atwood wrote about databases under version control in a recent blog posting. In it he advocates that you should put the goal of getting your database into source control above things such as what tools and processes to us as per the Agile Manifesto.

We have met this goal, and our database is under version control, however, I feel it has become a cumbersome and time consuming process (although my I have a lot shorter time working with the process then the other developers so maybe I'm missing some tricks). I have been thinking of ways to improve upon the process.

Also in Jeff's post, are links to a series of 5 posts by K. Scott Allen in which he explains how he does database version control. Some of his points match up with what I have been thinking, some don't. That, in and of itself further proves a my idea that no process is perfect, and what works for someone may not work exactly for you.

K Scott Allen's Posts:

  1. Three rules for database work
  2. The Baseline
  3. Change Scripts
  4. Views, Stored Procedures and the Like
  5. Branching and Merging

I recommend that interested parties take the time to read the posts, as what follows is a brief overview.

  • 3 rules for databases: Never use a shared database for development work, Always have a single schema source (source control), Always version your database.
  • Create a baseline script. This is a single script for your tables. Your derived objects (stored procedures, views, etc).
  • Change scripts are used to update the baseline, and should include an insert statement into your custom version table.
  • Derived objects (stored procedures, views), are updated, by making changes to the individual file corresponding to the objects. These changes are checked into source control. All derived objects are dropped and recreated from the script files. If you add a new object, create a new file, if you need to delete an object, delete the file. Once thing I don't understand, is how are these "versions" related to the schema version? One of the points made is that you should be able to create a database from any point in time. This process covers the schema well, but you would have to hunt thru source control to find the collection of files that relate to that version. Perhaps this is a necessary trade off.
  • Branching and merging depend on how you branch your application. The example given, is that when it gets close to a release, functionality is frozen and a branch is made for the release. Only bug fixes go into the branch and new features for the next version go into the main trunk. For the database, this means a new baseline script is created for the new version, which is a point in time snapshot of the database at the time of the branch. If there are changes in the branch, those changes are duplicated as a change script in the main trunk. You just have to be careful that the main trunk script is written in a way that it checks to see if the branch script has been run. (See the actual post for a better explanation).

Finally, I somehow got to this post by Phil Haack, in which he describes how using the information_schema views (see his post, and Books Online for a listing of what you can get from the views) will help future proof your scripts, because as Phil points out, Microsoft makes no guarantees on the schemas of the system tables.

As I posted before, I'm now heading up our embedded device project, so I won't be working on our uber back-end database as much. While we have a need for a database in the embedded project, I'm strongly considering using DB for Objects (db4o). While there is a bit of a learning curve, it looks pretty easy to use.

My plan is to use db4o to start out and then re-evaluate our database needs at the end of the project, hopefully saving the time it takes to manage a data access layer, scripts, etc. This would also make a cost benefit analysis of db4o easier, as I can simply estimate the time it would take to implement a traditional RDBMS and compare that to the cost of db4o.

Wednesday, February 06, 2008 4:56:16 AM UTC  #    Comments [0] - Trackback
Sql
 Tuesday, February 05, 2008

One of the goals I am working on at work, is a revitalization of our use of Team Foundation server, starting with a new project that I am leading. While we have always used TFS, I do not think that we are taking full advantage of its features. Part of the reason I think, is because there is so much good information that you really have to take some time to understand what it's telling you.

In the past week, I re-discovered the Process Guidance section of the Share Point site which is created when you create a new TFS project. I have been going thru each tab and sub section trying to gain a better understanding for how to use, and interpret the data.

One particular section that I have over looked in the past, is the Index tab. As it sounds, the index tab displays a list of all the topics covered in the process guidance (and then some), broken down by group (Workstreams, Activities, Work Items, Work Products, Reports, Queries and How To's). I have been looking into the CMMI template, so you may not have all of what is listed below.

Workstreams

From the process guidance: "Workstreams are groups of activities that flow logically together and are often associated with a particular role."

Activities

Activities are the specific individual activities that make up a workstream.

Work Items

From the process guidance: "A work item is a database record which Visual Studio Team Foundation uses to track the assignment and state of work. The MSF for CMMI Process Improvement process defines seven work items to assign and track work. These seven work items are task, change request, risk, review, requirements, bug, and issue."

Work Products

From the process guidance: "Work products are files, documents, specifications, binaries, parts, and other tangible items that are necessary to complete activities and build the product. Many times the creation of one work product is dependent on the completion of another work product."

Most of the definitions given here, relate to the document templates which are created with each new SharePoint site. For the CMMI template, you need to click on Documents from the quick launch menu, then general documents to find the templates.

Reports

From the process guidance: "Project health charts aggregate metrics from work items, source control, test results, and builds. They answer questions about the actual state of your project at many scales: for the days within an iteration, iterations within a project, or projects with in a program. The questions are also relevant for many kinds of work items such as scenarios, quality of service requirements, tasks, and bugs."

Each report gets a description, as well as healthy and unhealthy examples. This is great reading material for management to help them to understand how they can take advantage of TFS (It's not just for developers).

Queries

This index lists the pre-defined queries and that they are designed to show. Again, a good way to show management how they can keep an eye on the project without relying exclusively on MS Project (it's not a bad tool, but it's not the only tool).

How To's

From the process guidance: "How To's present information on how to accomplish tasks related to activities and workstreams"

There are 8 how to's that cover enough to get you started with the template. I wish they had more how to's and examples, and even a complete project walk thru, but I guess they needed to leave something for partners and book writers.

Speaking of books, I am currently reading Software Engineering with Microsoft Visual Studio Team System, which is a book on how to use TFS in the context of Project Management. I have also seen this book, Visual Studio Team System: Better Software Development for Agile Teams, which looks very interesting as it has a book length case study. Unfortunately I can really only read 1 book at a time, but I think I will defiantly be looking to buy this book soon.

Look for more posts of TFS and possibly project management in the future.

Tuesday, February 05, 2008 12:27:16 AM UTC  #    Comments [0] - Trackback
Technology
 Sunday, February 03, 2008

While surfing the web, I found some interesting news, that there was a leaked beta for my cell phone, a HTC Mogul (HTC Titan, PPC 6800) which finally enables the GPS and EDVO-Rev A. I decided to look into this more, as well as give it a try.

** WARNING: I assume no responsibility if you brick your phone. Be sure to spend at least 1 HOUR reading thru all of the directions (in the forums) before proceeding. Also, BE SURE to back up your PST settings **

Resources:

I was having issues getting the ROM and Radio updates to go over active sync, but I found these instructions on how to flash the ROM from an SD Card.

  1. First open the ROM or Radio exe file with WinRar. There will be a .nbh file. Extract that and rename it to TITAIMG.nbh
  2. Next format a microSD card with FAT 32 (you will most likely have to do this as most are FAT16 by default). Copy the file TITAIMG.nbh to the root of the sd card with a card reader.
  3. Finally place sdcard in device and reset into bootloader mode (press and hold the power button and the camera button while pushing the reset button). The flash will proceed from the SD card and it should work fine.
    1. The 3 color boot loader screen showed briefly (you should see that it's version 2.4), then it went into a gray screen with the words "Loading...".
    2. It should say loading for a couple of seconds, then some other stuff comes up and then it should say TITAIMG.nbh at the top with some other stuff below, and finally, Press power button to start update image.
    3. After the upgrade has completed, it will say complete in blue letters. Perform a soft reset to reboot the phone with the new ROM.
  4. After the ROM update the phone will reboot and "hang" at the Sprint Screen (if you have a sprint phone). You need to reset the phone and go into the boot loader (see step 3) to flash the radio.

I also tried this using a different computer and sync cable, and had much better results then the first computer I tried (which led me to use the SD card version). 

At this point I had my phone flashed and it was booting into Windows Mobile. However, I was unable to use it except as a PDA as some of the required settings were missing. I went into the PST (##PST#) menu and reset the MSID and MDN values. You will need your MSL key in order to edit the settings (search for a program called GetSCP or GeSPC on xda-developers).

I started setting my phone up, and ran into issues getting my phone to sync over the air with our exchange server. Turns out, I was using the wrong URL. It had been such a long time since I first set the phone up that the start of the URL should have been mobil.X.com instead of webmail.x.com. After that issue was resolved, I had no other problems. The rest of my email accounts are all setup, custom programs, etc.

So, what about the GPS. All I can say is, IT WORKS! I was able to acquire a location fix on Google Maps, as well as a free program called VisualGPSce which has a couple of screens which remind of of traditional screens found on older GPS devices. In doing some additional research I found this thread on XDA-Dev which talks about GPS software and issues with the Titan. Most of the commercial software like TomTom, you need an app like Google maps, or VisualGPSce to "start" the GPS. There are several links to launcher applications, which enable the GPS and keep it running in the background.

So about this time, I went back to the post with DCD's ROM, and saw he had released a 2.1 version. So I was off and running again, updating my ROM, then reinstalling everything. His 2.1 version is running Windows Mobile 6.1 as an added bonus, removes the extra crap sprint installs, and has a nice black theme/skin, including a new skin for the dialer (a new skin is a must for the dialer, as you can actually press the buttons with your thumb). He has another ROM in the works which will add more optimizations based on WM 6.1

I've started keeping all the applications I run on my MicroSD card so I can share them with other people (like my Dad who just bought a Mogul yesterday). This is what I currently have installed:

Stuff that I am considering

  • Point UI (if they are able to extend the UI to more screens)
  • Astro GPS Launcher (If I get a commercial GPS Package)
  • Commercial GPS software
  • HTC Home Customizer

The driving factor in the commercial GPS software will be if I can find an acceptable car mounting kit. I would like to find one which has integrated power, such as this one. I do NOT like the idea of using the FM transmitter, as it eliminates my ability to listen to music at the same time. They do sell one with an amplified speaker, but I don't know if they have one specific for the mogul.

This brings up an interesting question, can I get the turn by turn directions, and music from the Mogul thru my Stereo? I wanted to get the Blue Tooth adapter for my Alpine Deck so I could have hands free phone calls. I wonder if I could pipe the turn by turn directions, and possibly music from the Mogul to the deck via Blue Tooth. I've seen a 6GB micro SD card on Amazon for around $50, and heard of the Mogul being able to support at least an 8GB card. I only have an 8GB MP3 player hooked up right now, and I'm not even using all of that space. So I could get most of my favorite music, 1-1.5GB of map data and still have around 1GB free for files. Defiantly something I will have to look into. I would be one step closer to the all in one device I have been waiting for.

Sunday, February 03, 2008 2:19:02 AM UTC  #    Comments [0] - Trackback
Technology
 Wednesday, January 30, 2008

I will be attending the first annual Microsoft RFID Solution Days, February 18-21 in Washington. I'm hoping to make it for the Reception on Sunday but I'm still waiting for my travel itinerary to be finalized by the Travel Agency. I'm also on the wait list for the hands on training and hope to get into that as well.

Wednesday, January 30, 2008 8:38:49 PM UTC  #    Comments [0] - Trackback
BizTalk
Archive
<February 2008>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Adam Salvo
Sign In
Statistics
Total Posts: 160
This Year: 86
This Month: 2
This Week: 0
Comments: 9
Themes
All Content © 2008, Adam Salvo
DasBlog theme 'Business' created by Christoph De Baene (delarou)