SharePoint 2007 is a serious application platform; you will find huge number of companies that developed products top of SharePoint especially based on WSS 3.0. Microsoft will also create next generation of web applications based on SharePoint. I got really surprised right now, during this blog post, when I received a new post from SharePoint Team Blog about Microsoft Azure Services Platform!
Anyway, I’ve been looking to find kind of methodology about how to develop based on SharePoint, not just developing web parts, but architecting and building whole business application or solution top of SharePoint. I couldn’t find any, we have Microsoft Solution Framework (MSF) or Microsoft Operations Framework (MOF), but it’s all about Planning, Delivering and Operating solutions based on Microsoft products and technologies. So I started to organize my thoughts and my experiences to recommend kind of framework or methodology for our local use at Persian SharePoint Solutions. If you know any official methodology or recommendations from The Microsoft, please ping me a note.
Scope of Applications
First and foremost, what kind of applications we are going to develop top of SharePoint? What kind of applications are suit to be run by SharePoint features and functionality?
Off course building a payroll or accounting system by SharePoint is possible but it’s not a good idea. But gathering the list of salaries for this month from the payroll system and showing them to manager on his personal site, or announce him about top 10 incomes from accounting system, is the exact applications of SharePoint.
But I’m not talking about architecting this kind of applications; they are good ideas to make a portal solution more useful and operational. I’m talking about those applications that will store and work with data inside the SharePoint, building an application with SharePoint itself.
SharePoint is great for storing Unstructured Data, mechanism of categorizing, taxonomy, presenting and most important finding data is amazing, so it’s obviously great for Unstructured or Semi-Structured Business Applications.
Those Tracking and Collaboration applications for example:
- Project Tracking
- Help Desk
- Custom Issue Tracking
- Sale Management System
- CRM ( it’s obviously possible, I’m suggesting Microsoft to use SharePoint for the next generation of Microsoft CRM )
Any applications related to Documents, Forms and Flow of them on the organization like:
- Office Automation Applications
- Human Resource Management
Get idea from 40 Application Templates from Microsoft top of WSS 3.0
Benefits
What are the benefits? Building applications top of WSS 3.0 versus developing them from the scratch by .Net Framework?
For a .Net Web Application you need .Net Framework, Microsoft SQL Server and Windows Server for hosting your application, and since WSS 3.0 is a free Windows Service offered by Windows Server 2003 and 2008, so you will pay nothing more, but you will get lots benefits, some of them are:
- You will not think about how to architect Users, Groups and Roles, WSS 3.0 will provide you a rich architecture for managing users, groups, roles, permission levels and you can define security for your sites, lists, document libraries and any items you will store on your application, it’s completely integrated with Active Directory, and you can also plug your custom authentication model.
- You will use great Document Management features of SharePoint to store and manage documents of your application.
- You have search functionality of SharePoint, which is almost impossible to develop by yourself.
- Backup and restore mechanism which is ready made by SharePoint.
- Expensive Administration Architecture, Coherent User Interface, and most important, out of the box integrations with Microsoft Office and other Microsoft technologies.
Let’s go back and talking about WSS 3.0 Application Development Methodology (WSSADM), keep in mind that it’s NOT same as STSADM ! It’s a Five Step approach I’m recommending to use for building applications top of WSS 3.0.
I will do my bests to describe it by enough details and arrange it on proper order.
Step 1) Defining your Data Model
One of the first steps for traditional application development is Database Design, we have same approach here, but remember reading from and writing to SharePoint’s databases is not supported. For developing an application top of SharePoint we have nothing to do with Database designing, it’s one of the most advantages of SharePoint that will allow designers and developers to design and develop applications without thinking about database. SharePoint will create proper tables and columns based on your design, and you can use your full potential to stay as a designer and architecting the best solution for your business needs. So, what you are going to design as your Data Model?
What information you need to store on the SharePoint?
What are the basic lists of your solution?
Witch columns you have on those lists?
What kind of relations you will design between those lists?
Do you have any documents in your solution?
What kind of Document Libraries you need to store your documents?
Is there any Metadata that you will describe those documents?
What is the relation between your Document Libraries and Lists?
How you will categorize your documents and lists?
Are there any critical columns that you will use on different lists and document libraries? We will call those columns as Site Columns, define your Site Columns.
Do you have especial type of contents that will use on different Lists and Document Libraries? We will call them as Content Types, Define those type of contents that you will share on your solution.
How you will arrange Lists and Libraries on different Sites, Sub sites and Site Collections? What is the relation between those sites? Will you send data between sites? Or do you need to have cross site views and reports?
Do you need access to external data? If yes, where are those? What kind of access you need? Will you update those data or just need to read them?
So, Defining Data Model is to answer above questions and defining below structure:
- Site Columns
- Content Types
- Lists & Columns
- Document Libraries and Columns
- Site Collections, Sites and Sub Sites
- External Data Sources and how to use them
If you do your Data Model design more close to real requirements, production of your ideas will be done faster and with best quality.
I’m looking to find a proper tool for documenting above definitions, if you know some, please ping me a note.
<\Neo>
Posted on SharePoint Blogs