Archive

Posts Tagged ‘linkedin’

XML In UML

October 13, 2010 Leave a comment

While learning XML, I concocted this UML class diagram of the conceptual structure of XML as a quick look refresher guide:

The diagram can be interpreted as:

  • A typical XML document is composed of  a “Document Element“, an optional “Prolog Element”, and many application specific “Element” classes.
  • Besides a base “Element” class, there are two subclass types: the “Document Element” and the “Prolog Element”.
  • In an XML file, the “Prolog Element” (if present) must precede the “Document Element”.
  • An element contains content and, optionally, 1 or more “Attributes”.
  • Each “Attribute” is comprised of a Name/Value pair.
  • An element can also contain other nested elements, providing support for structured data representation.

Here’s a simple concrete example XML file and the mapping from concrete to abstract. Note that the “comment” and “xml declaration” lines aren’t represented in the abstract class diagram model. I left out that second order level of detail to keep the class diagram simple.

How’s Your GoF Swing?

October 12, 2010 4 comments

I don’t think many software professionals would disagree with the assertion that one of the greatest and innovative software design books of all time is “Design Patterns” by the Gang of Four (GoF). According to these PGA GoFfers, one dimensional software developers who only cut code and are “above” documenting behavioral and structural views of their designs do everyone a great disservice, especially themselves.  Here’s why:

An object-oriented program’s run-time structure often bears little resemblance to its code structure. The code structure is frozen at compile-time; it consists of classes in fixed inheritance relationships. A program’s run-time structure consists of rapidly changing networks of communicating objects. In fact, the two structures are largely independent. Trying to understand one from the other is like trying to understand the dynamism of living ecosystems from the static taxonomy of plants and animals, and vice versa. With such disparity between a program’s run-time and compile-time structures, it’s clear that code won’t reveal everything about how a system will work. – Design Patterns, GoF.

Here’s the double whammy from UML co-creator Grady Booch.

The (source) code is the truth, but not the whole truth. – Grady Booch

I interpret these quotes to mean that without supporting “artifacts” (I use the less offensive “a” word here because “documentation” to most programmers is the equivalent of a four letter word.) to aid in understanding, maintenance developers and new team members and even the original coders are hosed. Of course, it goes without saying that their organizations and customers are hosed too. The hosing may be later than sooner, but the hosing will take place.

“The bitterness of poor system performance remains long after the sweetness of low prices and prompt delivery are forgotten.” – Jerry Lim

When one dimensional programmers are combined with one dimensional, schedule-is-the-only-thing-that-matters BMs who don’t care to know squat about software other than that the code is “done”, a toxic and self-reinforcing 2 X 1D brew of inefficiency and endless downstream rework is guaranteed. No superficial org restructurings, process improvement initiatives, excellence committees, or executive orders can solve deeply rooted quality problems like this. Bummer.

So what’s the advice that goes with this typical Bulldozer00 rant? Learn UML (on your own time; see the quote below) and develop your software from end-to-end with a process that interlaces coding and “artifacting” similar to PAYGO.

“I hold great hopes for UML, which seems to offer a way to build products that integrates hardware and software, and that is an intrinsic part of development from design to implementation. But UML will fail if management won’t pay for quite extensive training, or toss the approach when panic reigns.” – Jack Gannsle

My version of Jack’s quote replaces the “if” with “when”.

ImAnIdiot

October 11, 2010 Leave a comment

A colleague recently sent me a cute little nerd-to-nerd poem:

A programmer started to cuss
Cos getting to sleep was a fuss
As he lay in his bed, going round in his head
was:

while (!asleep) sheep++;

Being a stage 3 type, I retorted with:

bool ImAnIdiot(true);
while(ImAnIdiot)
{
;
}


Categories: technical Tags: ,

Self-Assessment

October 10, 2010 2 comments

“I’m just an ordinary average guy….. Pick up the dog doo, hope that it’s hard (woof woof).” – Joe Walsh

Okee Dokee. Today is my birthday and it’s self-assessment time. Time to step back and guess who I am and where I stand……

At the present time, I’m a dude with a stage 3 mindset working in a stage 3 benevolent patriarchy. My situation may not be as nirvana-ish as being a stage 5 dude working in a stage 5 DEPAM, but it sure beats being a stage 1 dude imprisoned in a stage 1 malevolent patriarchy, no?

How about you? What’s your self-assessment, today? Awe come on, don’t be shy.

Unconstraining UML And SysML Modeling Tools

October 9, 2010 Leave a comment

For informal, rapid, and iterative design modeling and intra-team communication, I use the freely downloadable and unconstraining UML and SysML stencil plugins for visio. These handy little stencils are available here: Visio UML and SysML stencils homepage. When installed and opened, the shapes window may look like the figure below. Of course, you can control which shapes sub-windows you’d like to display and use within a document via the file->shapes menu selection. Open all 11 of them if you’d like!

If you compare the contents of the two sets of shape stencils, since UML is a subset and extension of UML you’ll unsurprisingly find a lot of overlap in the smart symbol sets. Note that unlike the two UML stencils, the set of nine SysML stencils are “SysML Diagram” oriented. Because of this diagram-centric decomposition, I find myself using the SysML stencils more than the UML stencils.

To use the stencils, you just grab, drag, and drop symbols onto the canvas; tying them together with various connector symbols. Of course, each symbol is “smart”, so right-clicking on a shape triggers a context sensitive menu that gives you finer control over the attributes and display properties of the shape.

If you don’t want to open the stencils manually, you can create either a new SysML or UML document from the templates that are co-installed with the stencils (file->new->choose drawing type->SysML). In this case, either the 2 UML stencils, or all 9 SysML stencils are auto-opened when the first page of the new document is created and displayed. I often use the multi-page feature of visio to create a set of associated behavior and structure diagrams for the design that I’m working on, or to reverse-engineer a section of undecipherable code that I’m struggling to understand.

If you’re a visio user and you’re looking to learn UML and/or SysML, I think experimenting with these stencils is a much better learning alternative than using one of the big, formal, and more hand-cuffing tools like Artisan Studio or Sparx Enterprise Architect. You can “Bend it like Fowler” much more easily with the visio stencils approach and not get frustrated as often.

From Concrete & Objective To Abstract & Subjective

October 8, 2010 Leave a comment

Most companies, because of a UCB-anchored perception of a lack of viable alternatives, institute a digitized, leveled job description policy. Typically, as the level of importance increases up the corpo chain of command, the skills and behaviors and performance required of a candidate transition from concrete and semi-measurably objective, to abstract and unmeasurably-subjective. Even in those rare cases where performance expectations of managers/directors/executives are specified as measurable, it either isn’t measured, or poor performance is well camouflaged in order to keep the high level dudes in their ka-ching penthouse. Thus, at some mysterious and unknown threshold on the curve below, behavior starts trumping merit as one moves upward.

From Consumer To Participant

October 7, 2010 Leave a comment

As I’ve stated before, I love Clay Shirky. The guy is phenomenally perceptive and insightful in detecting subtle changes in global trends and patterns of behavior. In “Cognitive Surplus”, Mr. Shirky recounts the rut of one-way consumerism that most of us were in, and many of us are still in, until relatively recently. The figure below shows the “old days” model, which is still “these days” for a boatload of people – especially institutional SCOLs.

In the “old days” model, content was concocted by “professional” content concocters and spoon fed to us through the (yawn) standard one-way media outlets of TV, radio and newspaper. The media creators and the media communication infrastructure owners had full say over what we heard and saw through the limited, one way-media outlets. We were (and most still are) passive consumers sitting in our lazy boys and scarfing up the input provided to us.

With the advent of social networks, the situation has changed drastically. As the figure below illustrates, the “old days”, one- way system of forced feeding has been supplemented by a parallel, “new days”, two-way system in which you and I have the opportunity to participate and create. The meteoric rise of social networks has allowed previously shackled DORKs like you and me to actively create and share content while simultaneously allowing a much greater variety of choice over what we consume. Ain’t life grand?

Of course, the emergence of this brave new world has triggered great angst and fear in those old school power mongers who can’t or won’t morph with the times. As far as most corpricracies go, they’re still stuck in the mindset of “we’ll control the crap and we’ll control the distribution of the crap of what you see and hear. As you know, we’re better and smarter than you and your fellow amateurs, so it’s in your best interest if you forgo the opportunity to participate.

Khan Academy

October 6, 2010 1 comment

Via this Bill Gates tweet;

I discovered the Khan Academy. The breadth and depth of knowledge that Sal Khan has acquired and freely shares is astonishing and awe inspiring. Mr. Khan creates blackboard based videos in which he gently derives and explains the topic at hand. In real-time, Sal explains his thinking and makes/corrects mistakes on the way to the successful transmission of knowledge, understanding, and insight. I’ve watched several of Sal’s physics and math videos and I’m grateful for his selfless and passionate contribution to the world.

I’d love to create something on the scale of a Khan academy (would you?). Alas, all I need to do is develop a hard-to-copy product that someone actually wants and a strategy for selling it. D’oh! To the chagrin of the institutional world, the low cost tools of production and no-cost means of getting word out have been here for at least a decade, but it is only being slooowly recognized as the ultimate business infrastructure.

Reuse Based Estimation

October 5, 2010 Leave a comment

“It’s called estimation, not exactimation” – Scott Ambler

One of the pragmatically simple, down to earth equations in Steve McConnell‘s terrific “Software Estimation” defines the schedule for a new software development project in terms of past performance as:

Of course, in order to use the equation to compute a guesstimate, as the table below shows, you must have tracked and recorded past efforts along with the calendar times it took to get those jobs completed.

Of course, not many orgs keep a running tab of past projects in an integrated, simple to use, easily accessible form like the above table, or do they? The info may actually be available someplace in the corpo data dungeon, but it’s likely fragmented, scattered, and buried within all kinds of different and incompatible financial forms and Microsoft project files. Why is this the case? Because it’s a management task and thus, no one’s responsible for doing it. In elegant corpo-speak, managers are responsible for “getting work done through others“. The catch phrase used to be “getting work done“, but to remove all ambiguity and increase clarity, the “through others” was cleverly or unconsciously tacked on.

How about you? How do you guesstimate effort and schedule?

Empowerment Examples

October 4, 2010 Leave a comment

Everyone’s heard of the worn and tired “employee empowerment” exhortation, but does anyone really walk the talk? Here are two specific and quantifiable empowerment examples from the same company. You be the judge.

Example 1 (via Gary Hamel: HCL’s Vineet Nayar on its ‘Management Makeover’ – Gary Hamel’s Management 2.0 – WSJ):

For example, our annual planning process for FY 2010 included a review of business plans for HCL customer accounts not only by top management but by 8,000 people throughout the organization. Under the program, dubbed My Blueprint, the plans were available on a portal where customer-facing employees, who would be charged with implementing those plans, could comment on them. This produced a flood of feedback and prompted the re-engineering of several plans.

Example 2 (via The world’s most modern management – In India):

Every employee rates their boss, their boss’ boss, and any three other company managers they choose, on 18 questions using a 1-5 scale. Such 360-degree evaluations are not uncommon, but at HCL all results are posted online for every employee to see.