in

ASP.NET Weblogs

Natty Gur

.Net from enterprise architect point of view.

July 2004 - Posts

  • The differences between architecture and design (design pattern and architecture pattern as well)

    Here's my point of view : there are two main steps while designing a system. The first one is architecture and the second one id designing.

       - Architecture :  sets which functionality the system should perform, split the functionality between components, set how components should behave and communicate in the system context, set the physical location of components and finally choose the tools in order to create components.

       - Design : while architecture deals more with the wide picture, design should drill down in to the details relating to implementing certain components. Designing of components end up with classes, interfaces, abstract classes and other OO feature in order to fulfill the given component tasks.

    Both architecture and design got patterns available to solve given problem. While design pattern are more about classes and interfaces needed in order to create component, architecture patterns on the other hand are more about behavior of the system.  For example Singleton, which is well known design pattern, helps developers to create a class with single instance. Singleton deals with implementation of certain class in component. Singleton doesn’t have any implication on the system. Inversion of control (IOC), on the other hand, shapes the system behavior. IOC is architecture design pattern that force classes that write in the system to be control (run) by other mechanism rather then the code that class implementer wrote. IOC force Infrastructure in order to enable the writing class to be control by other code rather then the one that write to implement class. IOC doesn’t have any implication on class’s implementation but has direct influence on the way system behaves.

    In my next posts I’ll try to go through known architecture patterns and to show how to implement them using .Net.

  • Rules to create good architecture

    I was looking for short and easy to follow rules for creating architecture. While speaking with one of my friends (which is really bright one :-) ) I mention those 7 points which he likes a lot:

    1) Ensure that your architecture address business needs not technical trends.

    2) Keep your architecture non coupled and abstract much as you can.

    3) Make infrastructure and application interior services transparent for the programmers.

    4) Don't forget management aspects of your system.

    5) Always think about influence of your work on coding process and programmers.

    6) Use proven architecture patterns.

    7) Check your work by soil your hands with code.

    8) Think about the future, build your architecture based on expected tech trends, or at least to be able to adopt new technological trends.

     

  • VS 2005 – additions are good changes are bad.

    I guess that as everybody else I already install VS 2005 beta 1. I managed to create new projects and debug them as well but when I arrive to the real challenge VS 2005 failed big time. As one of the thousands that attend PDC I heard that Microsoft executive commit to guarantee compatibility to older versions of CLR from new versions, so I decide to give it a try.  I try to convert quit complicate 1.1 working project that use ASP.NET and libraries performing codeDom and Reflection functionality.

    a friendly wizard accompanies me through the conversion stage that ends successfully. The warning list contain several warning about change [assembly: AssemblyKeyfile("xxx.snk")] with sighing tab of project settings. And changing obsolete Assembly .LoadWithPartialName with Assembly.Load. Great those are just warnings I thought to myself … those guys made their promises it's really compatible. With a hart full of joy I run the project and ….. BOOM I got error … not just error, an error with HRESULT message and value (compatible :-) ). Even after fix every one of those warning I still get that error. Not to mention that I hade to uncheck Tools->Option->Debugging->General the 'Enable Just My Code' checkbox to be able to debug my code.

    It doesn't matter what the problem was eventually. What's count here is the fact that old code that I use to run isn’t running under new development environment. This fact, from my point of view, is huge obstacle to use VS 2005 in my enterprise ….  I encourage Microsoft to ensure that new tools will run old code. As I write in the title adding new abilities is great! (and there are a lot of new additions in VS 2005 + CLR 2.0) but if those additions come along with changes in existing code… well… I hope that someone will attend this issue …  

    Posted Jul 26 2004, 04:50 PM by nattYGUR with 6 comment(s)
    Filed under:
  • Steps to create enterprise/system Architecture.

    In those lines I’ll try to explain the steps that I’m going through while creating architecture for enterprise or system. First of all, to be clear, let’s define architecture. As I see it, architecture is a set of ideas back up by set of rules that should be followed by system’s designers and developers to ensure that the building system/s will solve enterprise/system needs by adhering enterprise rules and constraints. That set of rules should be published as diagrams and documents, describing chosen architecture and what designers and developers should do in order to fulfill the laying architecture. If it possible it’s better to create, as the first byproduct of architecture process, a infrastructure that will be used by system/s. this infrastructure supply both better enforcement of architecture and shorten system development process.

    I don’t see any different between enterprise and system architecture regarding the steps needed to defined them. The steps are the same just the scope different. While enterprise architecture should set architecture to solve entire enterprise goals and needs, system architecture should do the same but just for one system in the enterprise. Yes, enterprise architecture should take in account how to integrate all systems in the enterprise but system architecture should do the same to all system components. Actually there is just one difference between enterprise and system architecture. System architecture should follow enterprise architecture. In the rest of those lines I’ll address just architecture as it for enterprise or system use.

    As I see it, there are 7 steps that should be followed to create better architecture. Every one of those steps depends on previous steps. Flaw detected in every step could end up with changes that should be made to previous steps. I’ll try to go through those 7 steps and to describe shortly what the aim of each step is.

    full article :

    http://weblogs.asp.net/ngur/articles/194704.aspx.

     

  • Enterprise architects and programmers, demand architecture workshop when you’re starting new system.

    After 5 days of architecture workshop I can  say for sure that this was the best way, that I participate in, to achieve several goals for all parties that took part in that workshop. First few words about the workshop scope, content and context.

    - First and foremost rule is that the workshop should be base on real project that need to be develop. Not those customer –suppliers samples, real project with real difficulties and unexpected problem (yes, people need to learn how to deal with those situation as well).

    - The workshop should help system developer’s team to start up their project by laying down the right architecture for their project and validate chosen architecture. Validation process should be done by writing code that implement architecture and check if that code meets the system specifications.

    -  don’t try to deal with problems that you don’t think you will solve in a week time frame. If the project is too complicated or too large, find the right fragments from the project that represent project problems and can be done in week time frame.

    -  spend time with project leader to set workshop scope and flows. Don’t start to solve those problems while meeting with the project manager, solving problems is part of the workshop process. Architects need to see who programmers handle problems and programmers need to learn how to deal with architecture problems as well.

    - If you want to integrate frameworks into the workshop, don’t build them as part of the workshop. Integrated working infrastructures or don’t deal with them at all. The workshop target is to help kick up a project, not to develop new infrastructures.

    - While developing code in the workshop stick to enterprises selected development process and rules that your enterprise uses. (Case tools, daily builds, unit testing, etc’).

    We start the workshop with effort to find system requirements and problems and write them down. As input we use the system design. Then we start to select the right architecture for the given specification by moving through possible architectures for problems and explaining why we think that given architecture is the best solution for a given problem. To make long story short this process should teach participates what are architectural possibilities that they have and how to choose the right one. From architect point of view it’s a great way to see how programmers react to architectures patterns. Architects, Listen very carefully to what programmers have to say …. They are the one that eventually translate your ideas into code and you should know if your set of rules and ideas are easy to implement.

    After the whiteboard was full with rectangles, lines and all of those three letter words we move to the next step and simply create static class diagram and sequence diagram that resemble the code implementation of the chosen architecture. If that process raise flows in architecture … GREAT! Explain way and how to solve them. Before the architects try to solve the problem let programmers to deal with the issue. As an architect watch how programmers react to that problems see what solutions they choose and what motivate them to choose that solution. Remember those considerations, you might use them in your work while you create new architecture for new system.

    Last task is coding. Use this step to ensure that programmers are following enterprise development rules. This part is mainly to create base project code so the team will go back to work with base code containing samples for code implementation for architecture solutions. Another target is to let participants check out architecture while running code.

    That’s what I can say from my own point of view. I learned a lot from that workshop and hope that those guys that participate learn as well. I think that such a workshop is win-win situation to developing group and enterprise architecture group. I strongly recommend programmers and architects to promote such workshop in their organizations.

  • Error message indicating that you using the wrong method signature.

    The first day of the workshop went pretty well. After frontal explanation about design patterns and drill down to MVC 2 we create simple MVC 2 framework in order to get firm grasp of MVC II. As part of the MVC implementation we encourage a problem that drives me nuts. It seems that although we change assembly method signature we still receiving the old method signature. Nothing helps us … (copy the assembly to web bin directory, shutdown aspnet_wp, deleting temporary files, etc'). After smashing heads against the wall we found out that the naughty project simply missing checked compile check box in solution configuration manager (Build menu-> configuration manager), therefore simply didn’t compile!

  • (Powerpoint) ppt version of ASP.NET Internal presentation.

  • Creating ASP.NET system using MVC 2, pluggable architecture, IOC, AOP and Stack interceptor workshop.

    Next week I'll be busy with one of my customer conducting this 5 day workshop.  I'm much exited about it since it's the first time we success to take development team from their daily work and work with them very closely not just in the Architecture and design phase but also in the programming phase. We (the client and me) want to see if this mode of work will make the development team more independent and coherent to enterprise architecture and programming architecture as well.  

  • Creating Enterprise Architecture using architecture framework.

    I'm just wondering how many of you are using any Architecture framework such as FEAF, Zachman framework, MEMO, RM-ODP, TOGAF to create enterprise architecture?

    If you use one of those framework, which one of them are you using and with which support software tool are you working (MEMO, Enterprise architect, system architect … ) ?

    I want to see if there is any basic need for article on that Issue …

  • Debugging CodeDom in-memory generate code with VS.

    CodeDom is very powerful tool but debugging CodeDom in-memory generate code is hard task. Here what I'm doing in order to debug CodeDom output assemblies:

       1) Add function (decorate with System.Diagnostics.Conditional("DEBUG")so the function wont appear in release mode) that will output the emitted code into file.

       2) Create new solution with library project and add the output CodeDom file to that project. Set breakpoints.

       3) Set the debugging mode of the new solution to "Program" and set devenv.exe as "start application". Start the project in debug mode.

       4) Set the new instance of VS to open your project (that uses CodDom in memory assembly).

       5) Add a reference to the newly create project and change your code so new instance of the newly create project will be create instead of the CodeDom assembly instance.

       6) Run your program … breakpoints will be stop in your project as well as in the newly create project.

    Any other easier solution will be much appreciated.

More Posts Next page »