Author » Otavio Ferreira

Otavio Ferreira

Technical Architect & Scrum Junkie

Technical Architect, Agilist, Semantic Web researcher, Software Engineering lecturer, RESTful Web Services expert, UML believer. BS in Computer Science (PUC-SP) and MS in Software Engineering (USP), with thesis on RESTful Semantic Web Services and Web Ontologies. SWAT member since 2007, based in São Paulo, Brazil.

Read full post »

Agile software development methods have reached great popularity among technology-based companies around the globe, arguably due to their effectiveness at managing the project stakeholders’ expectations and goals. However, this positive outcome is directly related to the team members’ ability to carry out the planning phases. And unfortunately the minimalistic theory frequently observed in agile processes tends to result in poorly written user stories.

Read full post »

Web services are key elements in the fields of distributed software engineering and code reuse. They also play a very important role on the Semantic Web by providing data to semantic software agents, as described by Tim Berners-Lee:

“The real power of the Semantic Web will be realized when people create many programs that collect Web content from diverse sources, process the information and exchange the results with other programs. The effectiveness of such software agents will increase exponentially as more machine-readable Web content and automated services become available. The Semantic Web promotes this synergy: even agents that were not expressly designed to work together can transfer data among themselves when the data come with semantics.”

Read full post »

This post might be considered academic, but it offers a good overview of what I believe to be the guiding principles in terms of software modularity.

Read full post »

In a previous post we met object orientation’s worst enemy (i.e. strong, unplanned dependencies among classes). It is now time to have a closer look at Dependency Inversion, which is one of the most efficient OOP techniques available with which to fight our adversary.

Read full post »

Strong dependencies among classes (or components) are definitely the villains within a software architecture. The opposite of strong dependencies, ie completely decoupled architectures, do not exist however, because such a utopian schema would actually result in no messages being exchanged among objects at all. Architects should focus on minimizing strong dependencies, designing only well-planned ones. I refer to the latter as healthy dependencies, and they undoubtedly bring a lot of benefits to a system.

Read full post »