DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 2 of 2
  1. #1
    Jay Robinson Guest

    not quite off-topic

    I'm developing an ActiveX dll that essentially operates as the data access
    and business logic layers for an enterprise system. I'm well past the whiteboard
    stage of the project. However, I'm still worried about the decisions my
    team (mostly I) made regarding the logical structure of our system.

    I've been working with Visual Basic since 1993. I have mastered the code.
    In seven years, I haven't yet mastered the whiteboard. Put another way,
    I can build any house from the blueprints, but I can't draw the blueprints!
    How do *you* make design decisions? Where do you go for ideas? Where is
    your assurance that you're either right or pretty close to it?

    What I consider most frustrating is the situation in which I now find myself.
    My design decisions are only right because I haven't managed to prove them
    wrong yet - and I don't feel very confident in my ability to prove myself


  2. #2
    Tim Patrick Guest

    Re: not quite off-topic

    This is definitely not off-subject! What excites me about this post is that
    it shows your desire, from within, to design not just a solution, but the
    correct solution. This is what professional software development is all

    What you are describing in your post are two different aspects of the software
    development process: programming ("buiilding a house from blueprints") and
    architecture ("drawing the blueprints"). Your use of the term "blueprints"
    is perfect since that is what architecture produces. There has recently
    been more and more discussion about software architecture. Check out an
    article right here on DevX by Marc Sewell that discusses this topic (http://www.devx.com/upload/free/feat...00/sa10500.asp).

    There are many ways to design and implement almost any system, including
    wrong ways. Since you are developing an ActiveX DLL, it makes the job, in
    one key way, a little easier. When designing an ActiveX object, you really
    have two areas that you need to design: the ActiveX interface (the public
    Events, Methods, and Properties seen by the consumer of the object) and the
    internal workings of the object. The nice thing about objects is that the
    consumer of the object really doesn't care how it is designed internally,
    as long as it works.

    If you are concerned about the public interface of the DLL, then you should
    focus on how to best solve the user's problem (the user in this case is the
    consumer of the ActiveX object, probably you). Can you provide an object
    that solves the problem that required an ActiveX object in the first place?
    Does it do this without involving the consumer in the messy details of how
    the object works internally? If so, then you have probably designed a great
    interface. Since software development is the blending both art and logic,
    you have a lot of room for creativity in the design of your interfaces.
    If your interfaces will perform some tasks that are similar to other objects
    on the market, you should attempt to make the syntax similar. Other than
    that, you are free to be as creative as you want to be. What you really
    want to do, when designing an ActiveX object, is to make it very simple for
    the user of the object, even if that means increasing your programming effort
    within the object's black box.

    If you are concerned about the design of the internals of object, then you
    should focus on correctness and efficiency. (There may be other concerns,
    such as security, that must be addressed as high-priority issues in your
    specific circumstance.) When you implement an object, above all you want
    it to be bug free. Also, you want it to be efficient for the consumer of
    the object; you don't want the consumer to wait for seconds for an activity
    when a differently-written version of the object could do the same job in
    a fraction of a second. As long as the object works well and efficiently,
    the consumer does not care about the torture you had to endure to design
    the control.

    I spent parts of my childhood in both the blizzards of the Rocky Mountains
    and in the deserts of the Southwest. In my house in the mountanis, the central
    heating vents were placed along the floors in all of the rooms of the house.
    When I moved to the desert climate, I found that all of the air conditioning
    vents were on the cielings instead of the floor. Of course, both types of
    houses were built properly, although the blueprints that included the central
    air portions of the house were different to meet the climate needs of each
    location. To ask "should vents be on the floor or cieling; which is correct?"
    as a general question is not necessarily valid. It depends on the place
    where you are building the house. In the context of ActiveX DLLs, how you
    design the object depends on the environment into which the object will appear
    (the consuming application).

    My wife and I are thinking about remodeling our bathroom (the one with the
    1960's medium-blue bathtub and matching toilet). But this does not mean
    that the original design of the house was faulty. We are only changing the
    internals to address issues that were not there when the house was built
    (like good taste in color schemes). The "interfaces" to the bathroom will
    not change. If your team has taken the time to actually design the interfaces,
    then you should place a lot of confidence in the logic of your system. You
    may have to re-address portions later to account for issues that you could
    not see in early design. But that does not mean that the design is invalid.
    As long as you are efficiently and correctly solving the problem that prompted
    the software, you have succeeded.
    Tim Patrick

Similar Threads

  1. Good topic Jeff.
    By Charles Kiley in forum Careers
    Replies: 0
    Last Post: 08-14-2002, 04:38 PM
  2. Replies: 0
    Last Post: 04-17-2001, 03:20 PM
  3. Re: Anyone care to comment of this topic? VB for COM dev.
    By Jim Anderson in forum Enterprise
    Replies: 0
    Last Post: 01-29-2001, 04:33 PM
  4. Anyone care to comment of this topic?
    By T. Hoskins in forum Enterprise
    Replies: 0
    Last Post: 01-28-2001, 08:28 PM
  5. A new discussion topic
    By Richard Dalton NA in forum Talk to the Editors
    Replies: 7
    Last Post: 12-15-2000, 10:11 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center
Latest Articles
Questions? Contact us.
Web Development
Latest Tips
Open Source

   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center