Shahzad Bhatti Welcome to my ramblings and rants!

October 24, 2004

A couple of papers on Aspected Oriented Programming

Filed under: Computing — admin @ 4:14 pm

A couple of papers on Aspected Oriented Programming

Excertp

Most software systems consist of several concerns that crosscut multiple modules. Object-oriented techniques for implementing such concerns result in systems that are invasive to implement, tough to understand, and difficult to evolve. The new aspect-oriented programming (AOP) methodology facilitates modularization of crosscutting concerns. Using AOP, you can create implementations that are easier to design, understand, and maintain. Further, AOP promises higher productivity, improved quality, and better ability to implement newer features.

I want my AOP
AJDT Tutorial
articles, tutorials, and advice about using and writing AspectJ pr
Improve modularity with aspect-oriented programming
Contract enforcement with AOP
AOP banishes the tight-coupling blues
“Use AOP to maintain legacy Java applications
Adrian’s blog
Introduction to AOP 1/2
Introduction to AOP 2/2


schmidmeier.pdf
kiczales
dynaop
AOP PPT
verifying AOP

AOP Pattern Testing

JDBC Rowset

J2ME SMS

EJB Shortcomings
AOP Filter

October 16, 2004

What is right methodology?

Filed under: Computing — admin @ 5:43 pm

What is right methodology?
Since beginning, software development was compared with manufacturing and construction, so early methodologies were largely influenced by them. They separated analysis and construction and came up with waterfall, or spiral methodologies. Finally, people are realizing is that the only construction in software development is compiling the source code and it’s all about design. Nevertheless, now there are tons of agile methodologies and new one coming every year. Sure there is a lot of commonality like lean development with emphasis on working software, short iteration, testing, etc. But, most of them are prescritive. Here, the thing, most companies have very unique business model and working environment, so one size does not fit. I do find Crystal family tries to come up with methodology based on company or team makeup. Again, most productive environment have smart people and little or no methodologies.

September 30, 2004

Best Practices 2004 (East)

Filed under: Computing — admin @ 6:36 pm

Best Practices 2004 (East)
I was in Boston during the week of Sep 20, 2004 and attended Best Practices conference. It was sort of fun, I get to see faces behind author of many books I own and articles I enjoy a great deal.
Here are excerpts from a few of noteworthy lessons:

Tom DeMarco’s five core risks for technology projects:
  • Size inflation: The project grows beyond the basic set of functionality into the realm of impossibility.
  • Original estimate flaw: Management sets a date that has no statistical relevance to reality.
  • Personnel turnover: “This is your biggest risk if your project is anything over a year,” according to DeMarco.
  • Failure to concur: A breakdown among the interested parties, often culminating in litigation.
  • Productivity variation: The difference between the assumed and the actual team performance

Finally, DeMarco presented a useful self-test for checking to see whether you’re actually doing risk management:

  • Is there a census of risks with at least 10 to 20 risks on it?
  • Is each risk quantified as to probability and cost and schedule impact?
  • Is there at least one early transition indicator associated with each risk?
  • Does the census include the core risks indicated by past industry experience?
  • Are risk diagrams used widely to specify both the causal risks as well as the net result (schedule and cost) risks?
  • Is the scheduled delivery date significantly different from the best-case scenario?
MIT Portfolio Pyramid

The projects in four asset classes: infrastructure (allowing basic enterprise capability; improving flexibility and integration), transactional (focusing on reducing cost and boosting productivity), informational (based on information for managing the company) and strategic (focusing on sales growth and competitive advantage). Based on your company’s objective, the proportions in each of the four classes vary.

Abstract Prototyping

Interface designers have basically two prototype choices: figurative (conventional pictorial representations that reflect what the user actually sees) and abstract (conceptual diagrams, notations and descriptions). And since abstract prototypes isolate and simplify design decisions, Constantine, a self-professed third-degree wizard, likes starting from the abstract before developing the figurative.

The process of deriving the abstract prototype using canonical components from task case steps included:

  • For each task case, identifying the contents without regard to the final layout on sticky notes.
  • Repositioning components to explore layouts (sticky notes were useful for this).
  • Sketching on paper or computer the size, shape, position and composition combinations.
  • Refining and redrawing as needed.
PM Metrices
  • Earned value: How many person days you need to do a project. Instead of focusing on how much time has elapsed, you should look at a particular deliverable, measuring what’s been accomplished and comparing the ratio of accomplishments made to the time used.
  • Release Criteria: Those few critical criteria that tell you when the project is complete.
  • Estimates versus Actuals for major and appropriate minor milestones: Rothman recommended starting estimates at what she called the “fuzzy front end” of the project so as not to get caught limping toward the finish line burdened with unwieldy—and unrealistic — expectations.
  • Tom DeMarco’s Estimation Quality Factor process, which provides a histogram of the most significant duality in project management: the date of estimate versus estimated end date. EQF is useful in three ways, Rothman stated: First, as an early warning sign to see if events outside your project are consuming people when they should be focused on your project; second, as a check against the initial estimations on your next project; and third, as a means of determining if you have a chance of completing the current project.
  • Measure the number of requirements early on in the project, as well as enumerating the number of major and minor changes per week over the course of the project, warning about the disaster potential of midstream major requirements changes.
  • Tracking defect trends can help project managers keep control of the process, enumerating how long it takes to fix defects, as well as their costs.
  • Fault Feedback Ratio, examining the total picture of productivity, asking the Big Questions “What do the creators create? How much is good stuff, and how much is redo?
  • Determining the number of defects that remain open and making sure developers aren’t getting stuck fixing the easiest problems first can go a long way in salvaging a project that seems headed for the barrel room.
Five principles guide good OO design, according to Martin:
  • The single responsibility principle (every class should do just one thing);
  • Cohesion
  • The open/closed principle (abstracting modules protect them from changes in implementation)
  • Modules should be open for extension,but closed for modification. Add new code for new functionality, don’t modify existing working code. Need to anticipate likely modifications to be able to plan ahead in the design. Plan ahead, but don’t implement what is not already needed
  • The Liskov substitution principle – All derived classes must be substitute-able for their base class Square cannot extend from Rectangle, violation will require Reflection/RTTI.
  • The dependency inversion principle (details should depend on abstractions, but not vice versa). In OO, we have ways to invert the direction of dependencies, i.e. class inheritance and object polymorphism.
  • Use DI to avoid deriving from concrete classes, associating to or aggregating concrete classes Encapsulate invariant: generic algorithms, Abstract interfaces don’t change.
  • Concrete classes implement interfaces, Concrete classes easy to replace.
  • The interface segregation principle – Many client specific interfaces are better than one general purpose interface. High level modules should not depend on low level modules. Both should
    depend.
  • Upon abstractions (interfaces) – Abstractions should not depend upon details. Details should depend abstractions.

August 24, 2004

A few articles and useful links:

Filed under: Computing — admin @ 7:22 pm

A few articles and useful links:
Amazon Web Services APIs

DrScheme

JbossIDE

Option Exchange

Outlook replacement

MockObjects Paper

Jini Guide ***

JAVAADN Paper

C24

July 15, 2004

Software Development Profession is Doomed?

Filed under: Computing — admin @ 5:44 pm

People have been saying this for a long time. Before the PC revolution, people thought that this profession will be reduced to maintenance work, which would be done offshored. In the 80s, Japan created software development factories and failed miserably because software development is not like other engineering schools or like manufacturing.

Since Nicholas Carr’s critique “IT doesn’t matter” in 2003, people have been joining the club. The phase I for this is already completed, where most of the jobs have moved to offshored. Though, at this time most of the offshore companies are simply sweatshops where workers work 14 hours a day and 6-7 days a week, in time they will be converted into truly software factories just as Japan imagined it 30 years ago. Phase II is will be the concentration of offshore companies to a few big houses. Phase III depends on another revolution, which is real software factories process such as software product lines, DSL and MDA based development, which will further reduce IT profession. Yeah, MDA and alike development are a little more than an idea, where tools may do a fraction of the work, but this ratio will shift towards automation within a decade. So ultimately, this profession already doomed in US and other western countries and it will be doomed globally in another few decades.

 

May 11, 2004

What do I think about Software Developers

Filed under: Computing — admin @ 5:44 pm

What do I think about Software Developers
I generally distinguish developers into following categories:

  • Day-Job vs bright-light chasers and real hackers
  • Generalists vs Specialists
  • Application Developer vs Tool Builder

    So, I consider myself hacker, generalist and tool builder. Like many other enthusiastics, I chase any new computer technologies and after chasing Java, Jini, CORBA, and J2EE for many years, I have putting more focus lately on light-weight J2EE, JXTA, J2ME, aspect-oriented programming, ruby and rails.

April 15, 2004

Java Developer Journal Reports

Filed under: Computing — admin @ 8:27 pm

Java Developer Journal Reports
FTPO nline Storage
FTPO nline Testing
FTPOnline Lifecycle
FTPO nline Operation
FTPOnline SOA

April 14, 2004

CD Copying Software

Filed under: Computing — admin @ 5:52 pm

CD Copying Software

April 4, 2004

Filed under: Computing — admin @ 9:23 am

Here are a few things to keep in mind.

  • Most robots are available as building kits or preassembled.
  • Robot kits are a little too expensive for child’s play, not to mention dangerous once you start soldering.
  • If you buy a kit, you’ll learn a lot about how to assemble and program a robot.

Now, onto the kits.

  • Robot Olympics
  • BugBrain 3.0.2, aka BugBrain with BasicX microprocessor kit ($169)
    Construct a PC-programmable insect that walks, chirps, and interacts with its environment.

  • Extreme Hexapod 2 Walking Robot ($375)
    Extreme Hexapod 2 Combo Kit for RC ($468.68)
    Create a six-legged creature you control like an RC car. It moves front and back, left and right. Just remember to print the assembly instructions while you’re online. You won’t find printed instructions with your kit.

  • Cybug Scarab Artificial Lifeform Kit ($49.95)
    This robotic scarab uses touch and light sensors to move around. The price looks right, but you may be tempted to buy certain add-ons, such as a $59.95 sunflower-shaped feeding station where your creature can recharge, to enhance the experience. Also, brush up on your soldering skills before it arrives.

  • OctoBot Survivor Robot Kit ($189.95)
    If you like soldering and painting, step up to this shell-shocked bot. Paint the preprogrammed pod, plug in its recharge station, and watch it go. When your new little friend gets tired and hungry (i.e. when it starts running low on juice), it’ll seek out its feeding station and recharge.

  • Trekker Sumo and Line Following Robot ($269)
    This little guy definitely doesn’t reach sumo proportions. However, it does stay within the bounds of its black wrestling ring unless it’s pushed out. Sensors watch the ground to detect the difference between the black of the ring and the white of the ring perimeter. You can also train it to follow a certain color and walk a line.

February 21, 2004

A few interesting java-related articles

Filed under: Computing — admin @ 10:52 am

A few interesting java-related articles

  1. Distributing Sun Java System Identity Server Applications Using Java Web Start
  2. Java and Security, Part 1
  3. Java and Security, Part 2
  4. More JSP best practices
  5. Add concurrent processing with message-driven beans
  6. Achieve implementation transparency for your business objects with the Business Object Factory framework
  7. Implement Flyweight to improve performance
  8. Jump the hurdles of Struts development
  9. Mix protocols transparently in Struts
  10. Strut your stuff with JSP tags
  11. UI design with Tiles and Struts
  12. Test email components in your software
  13. Follow the Chain of Responsibility
  14. Clustering with JBoss 3.0
  15. Boost Struts with XSLT and XML
  16. Why extends is evil
  17. Introducing the Portlet Specification, Part 1
  18. Introducing the Portlet Specification, Part 2
  19. Java APIs for Bioinformatics
  20. BlackMamba: A Swing Case Study
  21. Integrating Struts, Tiles, and JavaServer Faces
  22. Client quality reporting for J2EE Web services
  23. Web and Enterprise Architecture Design Patterns for J2EE, Part 1
  24. Managing Complexity: Keeping a Large Java Project on Track
  25. Using JSF
  26. Make the Java-Oracle9i connection
  27. Call JavaBean methods from JSP 2.0 pages
  28. View Web camera snapshots using a J2ME-capable phone
  29. Transparently cache XSL transformations with JAXP
  30. Jini Starter Kit 2.0 tightens Jini’s security framework
  31. Progress on the JMF and Java Media APIs
  32. A Gentle Re-Introduction to QuickTime for Java
  33. Re-Introducing QuickTime for Java, Part 2
  34. QTJ Audio
  35. A Gentle Re-Introduction to QuickTime for Java
  36. Java Media Framework Player API
  37. Readable Java 1.5
  38. Create Desktop Applications with Java-Based Web Technologies
  39. Create client-side user interfaces in HTML, Part 1
  40. Create client-side user interfaces in HTML, Part 2
  41. SearchAssist: A Portable Search Engine in Java
  42. SAAJ: No strings attached
  43. Transforming iCal Calendars with Java
  44. Nukes: the Open Source Java CMS
  45. Customize SwingWorker to improve Swing GUIs
  46. High-availability mobile applications
  47. aspect-oriented refactoring 1
  48. aspect-oriented refactoring 2
  49. Isolate server includes’ runtime context
« Newer PostsOlder Posts »

Powered by WordPress