Archive for the Design and Architecture Category

Visual Studio Team System 2010, Microsoft’s collaborative development environment, will introduce features that both align agile methodologies with project management and help developers from a “fingers on the keyboard” perspective.
2010agile.jpg
(more…)

Hi guys,

If we know better about the design pattern, it will be usefull a lot for us to build the reusable software component like we want to achieve it, one of the famous pattern is singeleton and much of developer especially in web development until this time still confuse to implemented. Now i wanna to discuss the common usage of singeleton pattern in aspnet which always shown in development project. Lets rock and roll …

There may be numerous programming scenarios when we may need to restrict an
object to a single instance. Some of them are:

  • A single instance of a mail server might be required to process all incoming
    mail requests.
  • The Session object in ASP.NET is implemented using singleton pattern. That
    is why each user will have only one session instance accessible at any point
    of time.
  • The Application object in ASP.NET is also singleton based. There is only
    one instance of the Application object for an entire application.
    We may need a single instance of a logging utility to process all logging
    requests in our application.

(more…)

Hi, Geeks …See you again in my blog, in this session I would like to share about the exactly how to define the methodology for our development. I thought that these phase are become the part of a very basic designing the requirement which compulsory to initial our step. The architect and the team need to formulate the methodology based on the type of project, load project and also time line which is supposed to be discussed together with the project manager as a liaison person to the management area.I would like to walk straight ways to some little bit point which are become the main discussion in this session:

  1.  I would like to explain and share the main core of each methodology that I’ve known as a practical person.
  2. Then we need to perform the team development based on the methodology that we’ve already taken.
  3. I would like to share as well about the probability of infrastructure that we need for accommodating your team development, in this case I am refer to use the Team Foundation server and Visual Studio Team Suite edition.

As we known before, there are many methodology for development, for instance we know about waterfall before, and then after water fall really “fall”  due to this methodology following the sequential phase method which couldn’t got adaptation to the fast changing and requirement which driven by deadline and timeline such as this diagram below :

WaterFall_Model

Failure_Of_Waterfall

So the conclusion of the legacy failure method of waterfall are :

  • Waterfall method failed to deliver the application as intended to the customer in the time frame we predicted because all of the process is sequential but the deadline could move according to the key time line that customer defined, and remember one thing that “…your customer is your king …”
  •  Because of the inability in us to deliver the application as the customer want then we felt like don’t have anything to ship to the hold the customer’s confidence.
  • Reworking what we have may require ripping out some of what we’ve already built for instance when we are in the midst of project then suddenly there are some accidental requirement come from customer, let say 25 percent from the entire load project , but after we doing re-analyzing again then show 50 even more up to 75 percent of whole entire development supposed to be changed, oops..knock..knock…. your development team will kill you asap due to you will be charged as the most wasting time and energy in the world… J and every developer will hate you pale … 
  •   Finally we haven’t driven the risk out of the project because integration is not complete yet  and the time line will always move into the left side. and  then raise new methodology based on the collaboration team with roles activities and involve the customer as the part of whole interaction role, method such as RUP (Rational Unified Process) , Agile Methodology, Agile for CMII  (continuity methodology for Capability mature process)and then for short development is Agile Extreme Programming, in the other side there is a Scum methodology which based on product back log requirement designing, administering by scrum master  and the sprint task as the iteration development methodology.Okay, it’s time to keen our discussion about those method above, first we should to know the essential of each method  :

Currently the  Collaboration team methodology has many elements which refer to agile manifesto (www.agilemanifesto.org), it was a synthesis of common beliefs that underlie the various method whether contain such elements like this :

  • Individuals and interactions over process and tools (TDD, Source control and work item traceability)
  • Working software over comprehensive documentation (process guidance)
  • Customer collaboration over contract negotiation (Timeline management and resources )
  • Responding to change over following plan (Iteration process drive the project goal ) 

So, The modern tools of team collaboration development will refer to the Agile Manifesto principle, in next session i will describe one by one of each methodology of SDLC refer to Agile Manifesto.

Cheers,

Doddy Ch Saputra, MCPD,MCITP,MCTS

Hi Folks,

Nice to see you again, in this session i would like to share something nice about practically of high availibility strategies based on my experiences. As we known that all of a IT elements, i mean as a Software architect in application or in Database application had agree about one principle about how to get the goal of application process, especially in data transaction process. The rule is ACID test (Atomicity,Consistency,Isolation and Durability), i wouldn’t talked too much about the detail of these rules due to you can grab the knowledge from many theoritical database book in any where but the things that we should understand is ,between application domain and database should have mutual cooperation to gain this goal in practically, you might take care this rule in transaction process in application by using smart transaction method using ADO.NET or handling smart transaction by using stored procedure in the database. But in in these session, i wouldn’t discuss with you about those things probabaly next session pale , i would like to emphasize the discussion to maintain high availibility in database infrastructure in YUKON or as we known is SQL Server 2005.

Let say i have a scenario mirroring design like this following picture :

 MirrPic


(more…)

Folks,

Session object in Web Application is very important things for transferring variable or even doing some caching, as we known before in ASPNET there are a view mechanism to implement this caching object, one way approach is using the SQL server session wheter this way is eat the peformance of the retrieving the session object coz the system need to go round trips during the process, okay let’s forget it about using SQL Server session object in stead of we implement the session that we stored in Dictionary Collection which encapsulated in the class, the second things is using the cache object whether the system could save the system in web server memory by implement the cache and put it the span time to arrange the life cycle of the caching. Those action should be done coz the cache has a unlimited time life cycle in the web server memory, until  we destroy the cache by manually.

(more…)

Hi Folks,

See me again, just like my last posted before, i promise to you to share about the xml serialization transfer object.

I have a case that i should transfer the data inside in the xml from another platform such as SAP application but unfortunately ,the xml file that i’d received is not equipped by the schema or even the diffgram, my consideration doing the xml transfer data is QoS ( Quality of Service ), this is the unfuncionality area that i should focus because has a relation to the application performance, well, i don’t want to use the object dataset as much like the developer way to approach the transfer between the wire by using  return object dataset, coz it’s very heavy and reduce the performance a lot, so i must find out how to serialize the xml file into object class,and then i am using my old method to rectify the solution and here is my old method :

(more…)

Interviewers: Scott Swigart and Sean Campbell.

Interviewees:Blaine Wastell and Glenn Block.

In this interview with Blaine Wastell and Glenn Block of the Patterns and Practices Group at Microsoft we asked them about:

Blaine:   I’m Blaine Wastell. I’m a program manager in patterns & practices, and I’ve been in this role for a little over four years now. Most recently my focus has been in what we call the “client UX program”. It’s about providing guidance to customers on developing both smart client and web client applications.

For 12 years before Microsoft I was out in the consulting world helping business customers develop enterprise line of business applications, mainly Web applications.

(more…)

image005.gif  OVERVIEW

Model –View-Presenter ( MVP ) Pattern is one of the popular design pattern for creating the enterprise application, introduced by Martin Fowler, this pattern leverage many functionalities of loose coupling modules.

The Intention is separation between its business logic to user interface design, and for the developer will just keen to think to the particular business logic to drive the application, the MVP Pattern also enhance the fully functionality of module testing, which mean you could use mock object to test your every module and class or every single wire in your MVP application.

There are many kind implementation of MVP Pattern, one of the best and become the easiest way to implement the MVP Pattern is using the MVP framework from the Microsoft Pattern and Practise team. In this case I’ll try to explain of using the MVP Bundle package from them which is become the embedded skeleton as a library tools in your visual studio.

image0061.gif  Analysis Surgery

Actually there are two variants functionality and also the benefit that we could get from this bundle, which are Passive View and Supervising Controller.

Problem

A page in a Web application contains controls to display application domain data. A user can modify the data and submit the changes. The page retrieves the domain data, handles user events, alters other controls on the page in response to the events, and submits the changed domain data. Writing this code in the Web page (the code-behind class) makes the class complex, difficult to maintain, and hard to test. In addition, it is difficult to share code between Web pages that require the same behavior.

Forces

You want to maximize the code that can be tested with automation. (Views are hard to test.) You want the share code between pages that require the same behavior. You want to separate business logic from UI logic to make it easier to understand and maintain.

Solution

Separate the responsibilities for the visual display and the event handling behavior into different classes, the view and the presenter. The view class (the Web page) manages the controls on the page, and it forwards events to a presenter class. The presenter contains the logic to respond to the events, update the model (business logic and data of the application) and, in turn, manipulate the state of the view.

To facilitate testing the presenter, make the presenter have a reference to the view interface instead of to the view concrete implementation. By doing this, you can easily replace the real view with a mock implementation to run tests.

View Updates

When the model is updated, the view has to be updated to reflect the changes. View updates can be handled in several ways. The Model-View-Presenter variants Passive View and Supervising Controller specify different approaches to implement view updates.

In Passive View, the presenter updates the view to reflect changes in the model. The interaction with the model is handled exclusively by the presenter; the view is not aware of changes in the model.

In Supervising Controller, the view interacts directly with the model to perform simple data-binding that can be defined declaratively, without presenter intervention. The presenter updates the model; it manipulates the state of the view only in cases where complex UI logic that cannot be specified declaratively is required. Examples of complex UI logic might include changing the color of a control or dynamically hiding/showing controls. Figure 1 illustrates the logical view of the Passive View and Supervising Controller variants.

mvp-1.JPG

Figure 1

Passive View

In figure 1, explain about interaction by model is handled exclusively by the presenter and then the view is updated exclusively by the presenter which using the view interface.

The decision to use Passive View or Supervising Controller lies primarily on the testability level that you want to achieve for your application. If testability is a primary concern in your application, Passive View might be more suitable because you can test all the UI logic by testing the presenter. On the other hand,

mvp-2.JPG

Figure 2

Supervising Controller

if you prefer code simplicity over full testability, Supervising Controller might be a better option because you do not have to write code in the presenter to update the view for simple changes ( as you can see at the figure 2 above ). When choosing between Passive View and Supervising Controller, consider the following:

  • Both variants allow you to increase the testability of your presentation logic.
  • Passive View usually provides a larger testing surface than Supervising Controller because all the view update logic is placed in the presenter.
  • Supervising Controller typically requires less code than Passive View because the presenter does not collaborate in simple view updates.

Note:

In the View-Presenter pattern, the presenter exclusively handles the interaction with the model and updates the view; the view is not directly bound to the model. Thus, this approach is in line with the Passive View variant described in this topic.

Interaction with the Model

You can implement the interaction with the model in several ways. For example, you can implement the Observer pattern and have the presenter listen to events of the model and update the view as required. Another approach is to use an application controller to update the model.

Liabilities

There are more solution elements to manage.
You need a way to create and connect views and presenters.
The model is not aware of the presenter. Therefore, if the model is changed by any component other than the presenter, the presenter must be notified. Typically, notification is implemented with events.