Sometime ago I went through a very useful book titled Software Estimation: Desmistifying the black art, and adapted some of the techniques listed in the book to create a standarized estimation procedure.
However, we deal with the fact that almost every month there is a new tool from Microsoft aimed to boost team productivity and reduce the effort required to build each piece of software, so it’s always a new challenge to give accurate estimations to our customers.
A critical thing is to record all the effort spent in every project and task, which can be used to calibrate the estimations and produce better results.
We try to follow the rule: “Count if at all possible. Compute when you can’t count. Use judgment alone only as a last resort.” as much as possible.
Once we have a good requirements specification we produce a WBS (detailed task list) and we count web pages, sql tables or anything that can help to compute the effort required to complete the task, we compute and then we calibrate with similar tasks done in the past. We identify risks, review tasks checklist and then use a 3 point estimate to be as much accurate as possible. These can be just the first steps of any estimation procedure.
Once we decide which technologies to use (i.e. Dynamic Data, Entity Framework, ASP.NET MVC or any other tool which could help to improve productivity), we calibrate the estimated effort with the results obtained in similar projects using the same technologies, or the results obtained from some pilot using any other emerging technology.
Finally we allocate some contingency (in software development it’s quite needed!). In the past few projects we convinced our customers about having an agile methodology in place (such as SCRUM). One of the various advantages of SCRUM is that the customer will get periodic releases of the software, while paying for the time spent building the features on each iteration. Contingency makes then no sense, and it can help to reduce total cost which is a great way to convince customers.
When following an agile methodology the rule (count, compute and calibrate) is still valid, as the team needs to estimate each story at the begining of each iteration, and the same procedure can be followed on each iteration, also considering team velocity (productivity) and the actual results obtained from the use of the selected development tools.
So far we are very happy with the results obtained from this combination of agile methodologies and a structured estimation procedure, reducing risks and increasing our list of happy customers.
Tags: Management · Tutorials / Tips
Microsoft is investing a lot of effort and money in their new service oriented model, named S+S (Software + Services). But, what is S+S ?
From MS site: “It is the next generation of SOA and Web-based applications spanning “on premise” software and “in the cloud” services”, an approach Microsoft calls Software + Services.
Some time ago, SaaS architecture discovered a new way of delivering the software: hosting it and providing it as a service, trying to catch the long tail of consumers, using the web as the distribution channel.
SaaS also introduced several questions and issues about data and application domain ownership, SLAs, and required particular characteristics for the product in order to be suitable for this deliver method. This led also into issues for the given ISV to find a reliable hosting provider for selling their product to the mass of consumers while reducing the costs.
S+S is no more than a hibryd architecture trying to have the best of various worlds.
Basically we are talking about connecting a on-premise or on-PC software package (running in the client computer, PDA or other devices) with an ISB (Internet Service Bus - which is no more than a integration hub containing a set of well defined URIs, connecting points, providing unified access to services within the “cloud” (Internet) ) + services connected to this ISBs.
This model will then allow third party providers to join the cloud of services and the clients to have a custom (composite) version of their software installed in their devices while consuming many of these services integrated within the ISB (which actually works as an ESB and as an ecosystem for various services providers). VMs are a perfect match for assembling this user needs in an isolated space and having the web (cloud) as the environment for running the applications.
So how is Microsoft supporting all these new trends? The set of technologies with the code name “OSLO” is the answer:
The .NET Framework “V4″
BizTalk Server “V6″
BizTalk Services “V1″
Visual Studio “V10″
System Center “V5″
All new versions for these well known existing products will be shipped during the current year. The target is to simplify the design, development and deployment of solutions based in this new architecture named S+S.
For more information about OSLO and how it will enable you to support your S+S and SaaS architectures you can visit http://www.microsoft.com/soa/products/oslo.aspx
Tags: S+S · SOA
Great news for our developers community !
Visual Studio 2008 has been shipped !
You can choose to download the free Express versions or the complete versions with MSDN Subscription. But if you are not a MSDN subscriber, you can also get the Team Suite version and try it for 90 days !
Team Foundation Server 2008 trial version is also available for download!
Standalone .NET 3.5 runtime is available here
So go ahead and download your desired version and checkout all the features we have been seeing around during the past year !
Tags: Visual Studio · .NET 3.5
There is a lot of buzz around about the new MVC framework from Microsoft. This will be an Optional feature for those who want an implementation of an MVC architecture in ASP.NET.
Latest Scott Guthrie post explains in great detail how to implement a simple e-commerce site using the new framework.
MVC maps URLs to classes, instead of files in disk, as most of the other web frameworks do.
You need create your Controller classes (which use a ControllerAction attribute on each method to map the requested URL to the proper controller method and use the parameters requested from the URL).
Scott uses Linq to SQL ORM for coding the data model. You can use DataSets, N-Hibernate or whatever you like to handle the data access and data objects.
Having such a layer architecture improves not only maintanance but also reusability. You can easily change the controller logic to render different data to the same view page.
This architecture is also very convenient for implementing test cases for each layer/class. For example, you can have a N-Unit class to test each controller. You don’t need the View/browser to do your unit testing, so it simplifies this task a lot.
Finally you render the UI implementing Views, and having a RenderView method to the proper View from the Controller.
For the view, MVC supports aspx, ascx, master pages and AJAX.NET. MVC View Pages by default derive from the System.Web.Mvc.ViewPage base class. This class includes helpers that you can use in the UI, such as the Html.ActionLink Method that allow you to have links in the page mapping to a Controller method.
So far, using the MVC Framework is pretty straight forward.
I suggest you to read Socott Guthrie first post explaining the new model here with lot of concepts and clear samples.
Brad Adams also posted about using MVC for creating a RSS Feed and Frederk Normen wrote about using Spring.NET to handle dependencies when creating Controllers through a Controller Factory.
If you’d like to learn in detail about all of these MVC concepts, then go to Scott’s post right away !
Tags: ASP.NET