jump to navigation

What are some good books on User Interface design? How do you define user interfaces in your software specification documents? The Hub Tech Insider User Interface Design Bookshelf July 31, 2011

Posted by HubTechInsider in Agile Software Development, Ecommerce, Mobile Software Applications, Product Management, Project Management, Social Media, Software, Uncategorized.
Tags: , , , , , , , , , ,
add a comment
Screenshot of Glade Interface Designer

Image via Wikipedia

The Hub Tech Insider User Interface Design Bookshelf: Essential UI Design Books for IT Directors, Project Managers, Program Managers, Software Requirements Engineers, Business Analysts, User Interface Designers, Graphic Designers, Interaction Designers and Information Architects.

Some of the tools that I typically use to produce wireframes and mockups to specify software that is under development include traditional desktop personal computer graphics application software packages such as Adobe Illustrator and Photoshop, business graphics and diagramming packages such as Microsoft Visio, and many others, including some on the Mac OS X and Linux platforms.

But no matter which software program you use to prepare your wireframes and mockups, you still need to have the knowledge surrounding what types of controls are available, and the wisdom to know the most apropos situations in which to use those software controls.

It may be surprising to many people that are not involved in the software industry, but it is not always system and application software programmers who are the most familiar with these types of user interface interactivity patterns and controls. User interface designers, graphic designers, and information and interaction architects are usually the ones who specify these types of “Web 2.0” controls.

If you are writing software specification documents, I recommend that you become as familiar as possible with all of the different types of rich internet application controls and interaction patterns that are examined in detail within these books. Programmers and project and program managers will benefit as well.

A great amount of time and effort will be saved if everyone on the project team has familiarity with these fundamental web interface and interaction patterns. Having a common vocabulary with which to communicate to each other in design and development meetings will pay dividends throughout the course of the software development lifecycle.

The ability to suggest an interaction pattern or a type of control that can preserve screen or page real estate, for instance, can make the critical difference in getting a software system design specified in a limited amount of time. Having knowledge of user interface best practices and common user interaction patterns in-house, on the project team itself, can not only save money in avoidance of expensive user interface consultants and UI design firms, but it can also ensure that the tricky question of post-implementation compliance amongst your development team and programming staff.

I have compiled a list of books that in my opinion merit a place on any professional user interface designer’s bookshelf. If you are looking to stock your User Interface library, you really can’t go wrong with this list of books.

I feel that IT Directors, Product Managers, Program Managers and Project Managers, as well as Graphic Designers, Information Architects, and Interaction Designers and Usability Engineers (read this article if you need help understanding what these job titles mean) could all benefit from reading several or all of these books.

I have found in my professional career that having advanced knowledge of User Interface design techniques and best practices aids me greatly in producing high quality project plans and functional specifications for web based applications and their related software development projects. Mockups and wireframes that incorporate the various design patterns outlined in these books have greatly increased my ability to communicate and develop project related deliverables and artifacts for complex and cutting edge user interfaces, particularly those that include social media platform integrations and RIA, or Rich Internet Application, frontends.

The more knowledge that you acquire in your professional career on a software development team, and the more you know about user interfaces for web based applications, the more value you will be capable of delivering to both your employer and yourself in the form of expanded career opportunities.

Web Form Design: Filling in the Blanks

By Luke Wroblewski. Rosenfeld Media, May 2008.

Web Form Design: Filling in the blanks, by Luke Wroblewski

Anyone who designs anything for the web needs a copy of this. It makes it so nice to not have to think about designing forms. I can spend my time on more interesting design challenges. This book doesn’t leave my desk.

Forms make or break the most crucial online interactions: checkout, registration, and any task requiring information entry. In this book, Luke Wroblewski draws on original research, his considerable experience at Yahoo! and eBay, and the perspectives of many of the field’s leading designers to show you everything you need to know about designing effective and engaging web forms.

I have found this book to be the most practical, comprehensive and data-driven guide for solving form design challenges and I consider it an essential reference.

The Smashing Book #1

https://shop.smashingmagazine.com/smashing-book-intl.html

The Smashing Book #1

This book is available exclusively from Smashing Magazine. This book looks at Web design rules of thumb, color theory, usability guidelines, user interface design, best coding and optimization practices, as well as typography, marketing, branding and exclusive insights from top designers across the globe.

This book contains ten carefully prepared, written and edited stories that are based upon topic suggestions and wishes of Smashing Magazine’s readers. The topics covered here are fundamental and so the content is highly practical.

The Smashing Book #2

https://shop.smashingmagazine.com/smashing-book-2-intl.html#d=smashing-book-2

The Smashing Book #2

This book shares valuable practical insight into design, usability and coding. It provides professional advice for designing mobile applications and building successful e-commerce websites, and it explains common coding mistakes and how to avoid them. You’ll explore the principles of professional design thinking and graphic design and learn how to apply psychology and game theory to create engaging user experiences.

Designing Web Interfaces: Principles and Patterns for Rich Interactions

By Bill Scott & Theresa Neil

http://www.amazon.com/gp/product/0596516258?ie=UTF8&tag=looksgoodwork-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596516258

Want to learn how to create great user experiences on today’s web? In this book, UI experts Bill Scott and Theresa Neil present more than 75 design patterns for building great web interfaces that provide interaction. Distilled from the author’s years of experience at Sabre, Yahoo!, and Netflix, these best practices are grouped into six key principles to help you take advantage of the web technologies available today. With an entire section devoted to each design principle, Designing Web Interfaces illustrates many patterns with full-color examples from working websites. If you need to build or renovate a website to be truly interactive, this book will give you the principles for success.

Don’t Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition

by Steve Krug

http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pd_bxgy_b_img_c

Five years and more than 100,000 copies after it was first published, it is very difficult to imagine anyone working in web development or design that has not read this classic on web usability, but people are still discovering it every day. In this second edition, Steve adds three new chapters in the same style as the original: wry and entertaining, yet loaded with insights and practical advice for novice and veteran alike. Don’t be surprised if it completely changes the way you think about web design.

The three new chapters are entitled: Usability as common courtesy (why people really leave web sites), Web accessibility, CSS, and you (making sites usable and accessible), and Help! My boss wants me to ______. (Surviving executive design whims).

In this second edition, Steve adds essential ammunition for those whose bosses, clients, stakeholders, and marketing managers insist on doing the wrong thing. If you design, write, program, own, or manage web sites, you must read this book.

Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems

http://www.amazon.com/Rocket-Surgery-Made-Easy-Yourself/dp/0321657292/ref=pd_bxgy_b_img_b

It’s been known for years that usability testing can dramatically improve products. But with a typical price tag of $5,000 to $10,000 for a usability consultant to conduct each round of tests, it rarely happens.

In this how-to companion to Don’t Make Me Think: A Common Sense Approach to Web Usability, Steve Krug spells out an approach to usability testing that anyone can easily apply to their own web site, application, or other product. (As he said in Don’t Make Me Think, “It’s not rocket surgery”.)

Information Architecture for the World Wide Web: Designing Large-Scale Web Sites

http://www.amazon.com/Information-Architecture-World-Wide-Web/dp/0596527349/ref=pd_sim_b_2

Saul Wurman first used the term Information Architecture in his book of the same name. His book was mostly lots of really pretty pictures of media and webs compiled from a graphic design perspective; they were beautiful but never really dealt with the information end of things. Rosenfeld and Morville get it right. They show how to design manageable sites right the first time, sites built for growth. They discuss ideas of organization, navigation, labeling, searching, research, and conceptual design. This is almost common sense, which is often overlooked in the rush for cascading style sheets and XML.

The Elements of User Experience: User-Centered Design for the Web

http://www.amazon.com/Elements-User-Experience-User-Centered-Design/dp/0735712026/ref=pd_sim_b_5

From the moment it was published almost ten years ago, Elements of User Experience became a vital reference for web and interaction designers the world over, and has come to define the core principles of the practice. Now, in this updated, expanded, and full-color new edition, Jesse James Garrett has refined his thinking about the Web, going beyond the desktop to include information that also applies to the sudden proliferation of mobile devices and applications.

Successful interaction design requires more than just creating clean code and sharp graphics. You must also fulfill your strategic objectives while meeting the needs of your users. Even the best content and the most sophisticated technology won’t help you balance those goals without a cohesive, consistent user experience to support it.

With so many issues involved—usability, brand identity, information architecture, interaction design— creating the user experience can be overwhelmingly complex. This new edition of The Elements of User Experience cuts through that complexity with clear explanations and vivid illustrations that focus on ideas rather than tools or techniques. Garrett gives readers the big picture of user experience development, from strategy and requirements to information architecture and visual design.

Forms that Work: Designing Web Forms for Usability

by Caroline Jarrett and Gerry Gaffney

http://www.amazon.com/Forms-that-Work-Interactive-Technologies/dp/1558607102/ref=pd_sim_b_3

Forms are everywhere on the web – used for registration and communicating, for commerce and government alike. Good forms make for happier customers, better data, and reduced support costs. Bad forms fill your organization’s databases with inaccuracies and duplicates and can cause the loss of potential or current customers. This book isn’t about just colons and choosing the right widgets. It’s about the entire process of making good forms, which has a lot more to do with making sure you’re asking the right questions and in such a way that your users can answer than it does with whether you use a drop-down list or radio buttons.

If your web site includes forms, then you need to read this book. In an easy-to-red format with lots of examples, Caroline Jarrett, who runs the usability consulting company Effortmark Ltd.(http://www.usabilitynews.com), and Gerry Gaffney, who runs the usability consulting company Information & Design Proprietary Ltd.(http://www.uxpod.com), present their three layer model – appearance, conversation, and relationship. You need all three for a successful form – a form that looks good, flows well, asks the right questions in the right way, and most importantly, gets users to fill it out.

Designing good forms is trickier than people think. This book explains exactly how to design great forms for the web. Liberally illustrated with full-color examples, it guides readers through how to define and gather requirements to how to write questions that users will understand and want to answer, as well as how to deal with instructions, progress indicators, and error conditions.

I found that this book provides proven and practical advice that will help designers avoid pitfalls, and produce forms that are aesthetically pleasing, efficient, and cost-effective.

The book is filled with invaluable design methods and tips to help ensure accurate data and satisfied customers, and includes dozens of examples, from nitty-gritty details (label alignment, mandatory fields) to visual design (creating good grids, use of color).

Defensive Design for the Web: How to improve error messages, help, forms, and other crisis points

http://www.amazon.com/gp/product/073571410X?ie=UTF8&tag=looksgoodwork-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=073571410X

by Matthew Linderman and Jason Fried

Let the 37signals team show you the best way to prevent your customers from making mistakes, and help them recover for errors if a mistake does occur. This book doesn’t leave my desk either.

The folks at 37signals have created an invaluable resource: tons of ‘best practice’ examples for ensuring that web users can recover gracefully when things – as they inevitably will – go ‘worng’ !

In this book, you will learn 40 guidelines to prevent errors and rescue customers if a breakdown does occur. You will see hundreds of real-world examples from companies like Amazon and Google that show the right (and wrong) ways to handle crisis points.

You can also use this book to evaluate your own site’s defensive design with an easy-to-perform test and find out how to improve your site over the long term.

About Face 3: The Essentials of Interaction Design

By Alan Cooper. Wiley 2007.

About Face 3, by Alan Cooper

Learn the rules before you break them. Please. Pretty please with a cherry on top? Get this book and read it if you are responsible for designing anything more than a simple web site. Good for Flex developers and Ajax developers as well. Lots of patterns that can be extrapolated for Rich Internet Applications.

Prototyping: A Practitioner’s Guide

http://www.amazon.com/gp/product/1933820217?ie=UTF8&tag=looksgoodwork-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1933820217

Prototyping: A Practitioner’s Guide” is a terrific and comprehensive review of both the prototyping process and the tools involved. There’s really very little with which to find fault. I found that the book both validated my experience in prototyping and provided new techniques to try out, with many “Aha!” moments in both respects. The inclusion of case studies illustrating the techniques provide additional perspective and make the techniques more “real”. The review of each prototyping technique/tool, whether paper or software-based, includes links to additional resources like toolkits, sample images, and the like – these would be especially useful to someone just getting started with a particular tool. Speaking as a designer who’s typically relied on HTML prototypes and Visio, I must say my interest in Adobe Fireworks and, to a lesser extent, Axure is piqued. I think any UI/UX/IX designer, of any level of experience, would get something out of this book. Not that it would be useful only to them – analysts and software engineers will benefit from it as well.


Want to know more?

You’re reading Boston’s Hub Tech Insider, a blog stuffed with years of articles about Boston technology startups and venture capital-backed companies, software development, Agile project management, managing software teams, designing web-based business applications, running successful software development projects, ecommerce and telecommunications.

About the author.

I’m Paul Seibert, Editor of Boston’s Hub Tech Insider, a Boston focused technology blog. I have been working in the software engineering and ecommerce industries for over fifteen years. My interests include computers, electronics, robotics and programmable microcontrollers, and I am an avid outdoorsman and guitar player. You can connect with me on LinkedIn, follow me on Twitter, follow me on Quora, even friend me on Facebook if you’re cool. I own and am trying to sell a dual-zoned, residential & commercial Office Building in Natick, MA. I have a background in entrepreneurship, ecommerce, telecommunications and software development, I’m a Technical PMO Director, I’m a serial entrepreneur and the co-founder of several ecommerce and web-based software startups, the latest of which are Twitterminers.com and Tshirtnow.net.

What is UML? What is Unified Modeling Language? July 17, 2011

Posted by HubTechInsider in Agile Software Development, Project Management, Software.
Tags: , , , , , , , , , , , , ,
add a comment
A collage of UML diagrams including use case d...

A collage of UML diagrams including use case diagram, class diagram, activity diagrams, sequence diagrams, deployment diagram,component diagrams, composite structure diagram, package diagrams. (Photo credit: Wikipedia)

 

What is UML?

UML is an acronym for Unified Modeling Language. UML is widely accepted as the de facto standard description language for the specification and design of object-oriented software systems. UML is a family of “languages”, or diagram types, that attempt to bring together the “best in breed” software specification techniques for describing software systems. Users and practicioners of UML can choose which members of the family are the most suitable for their application domain.

Personally, I have become associated with UML through my years and years of specifying software products. Several of the UML diagram types that I will discuss below are among my primary tools for communicating application and system requirements and software designs to programmers.

I do not advocate, nor do I personally practice, an over-attachment to UML. Like many of these project management and requirements management techniques, there is a time and a place for the proper introduction of these types of UML artifacts into the software development process. Programmers may be unfamiliar with the UML diagram types and symbology, and so if you are a business analyst, project, program or product manager, and you are using these types of project deliverables with a new staff of engineers, be prepared to explain the UML diagram type you are using, keep the introductions down to one or two different new UML “Languages”, or diagram types, at a time.

I also recommend that if you insert UML diagrams into your functional specification documents, and I recommend that if you have invested the time to properly prepare UML diagrams that you do leverage them into your spec docs, make sure that you include an explanatory prose component into your accompanying functional specification document’s text.

There are nine different types of UML languages, or diagram types:

1. Use Case.

2. Sequence.

3. Collaboration.

4. Statechart.

5. Activity.

6. Class.

7. Object.

8. Component.

9. Deployment.

Five of these diagram types render behavioral views, the use case, sequence, collaboration, statechart and activity diagrams, while the remaining four diagram types are concerned with architectural or static aspects of the software design.

 

How does UML help in specifying a software design?

UML is a graphical language that is based on the premise that any software system can be described in terms of interacting business entities and that various aspects of these entities and their interactions, can be described visually using one or more of the above nine types of UML diagrams.

Use Case diagrams represent and document the dialog between external (to the system under discussion, as in an embedded system) actors and the system.

Sequence and collaboration diagrams describe interactions between objects.

Activity diagrams illustrate the flow of control between objects.

Statecharts represent the internal dynamics of active objects.

 

What is UML 2.0?

UML 2.0 is a revision to Unified Modeling Language that incorporates several improvements to UML. UML 2.0 is only just now beginning to supplant UML as the de facto standard.

A shorthand description of UML 2.0 is that it is designed for more rigor of specification, and it can sometimes be too much, or too much of a fine-grained distinction to bandy about when in an actual day-to-day, working software development environment. You are very likely to be working with only a subset of the UML languages, or diagram types, I outlined above at any one given point in the development project.

UML 2.0, when the diagrams are laid out in a software program such as VisualUML or others, can actually be used to generate working object code. If the business analysts have developed their proficiency enough with UML diagramming software, they can actually construct and output from these programs working java (or other programming language) object code.

In order to obtain this level of integration with application programmers, UML 2.0 had to have more access to a more robust and constrained specification language. The improvements to UML 2.0 include:

1. New base classes that provide the foundation for UML modeling constructs.

2. Object constraint language, a formal method that canbe used to better describe object interactions.

3. An improved diagram meta-model that allows users to model systems from four viewpoints:

a. Static models (e.g., class diagrams)

b. Interaction (e.g., using sequence diagrams)

c. Activity (i.e., to describe the flow of activities within a system)

d. State (i.e., to create FSMs, or Finite State Machines, using state charts)

UML has always been used to not only specify software systems for systems and application programming, but also specification for embedded systems as well. This emphasis on the notion of time and state is evident in the way that sequence diagrams are implemented in UML, and indicates the special considerations that were undertaken to support embedded systems design in the original conception of UML.


Want to know more?

You’re reading Boston’s Hub Tech Insider, a blog stuffed with years of articles about Boston technology startups and venture capital-backed companies, software development, Agile project management, managing software teams, designing web-based business applications, running successful software development projects, ecommerce and telecommunications.

About the author.

I’m Paul Seibert, Editor of Boston’s Hub Tech Insider, a Boston focused technology blog. You can connect with me on LinkedIn, follow me on Twitter, follow me on Quora, even friend me on Facebook if you’re cool. I own and am trying to sell a dual-zoned, residential & commercial Office Building in Natick, MA. I have a background in entrepreneurship, ecommerce, telecommunications and software development, I’m a PMO Director, I’m a serial entrepreneur and the co-founder of several ecommerce and web-based software startups, the latest of which is Tshirtnow.net.

What is pattern-based software development? What is pattern-based design for software projects? July 17, 2011

Posted by HubTechInsider in Agile Software Development, Project Management, Software.
Tags: , , , , , , ,
1 comment so far

UML class diagram describing the Prototype des...

Image via Wikipedia




What is pattern-based software development?

What was the original impetus behind the development of software development patterns, and why do we need them? Why did programmers invent patterns for software development?

Well, developing software is very difficult, and developing software that can be easily reused is even harder. the designs for sections of software code should be general enough solutions to be able to address future problems and requirements flexibly while still being specific enough in order to address the current problem at hand. Programmers that are experienced at designing software systems know better than to design their system using one-off problem solutions, and instead reuse patterns that they have grown familiar with through prior use in similar situations and scenarios and reuse these solutions as a basis for their new designs. The basic fundamental principle of software engineering known as the “Principle of generality” predicts and encourages this behavior.


What’s so great about programmers using pattern-based development on software projects?

For one thing, it is absolutely fascinating to sit in a meeting room with a group of programmers who have been working all together on a software development project using patterns for a few months. The rate of information exchange is extremely high, with a idea mentioned by one programmer, and a few others simultaneously finishing the first programmer’s sentence with an exclaimed, unison word like “Bridge!”, and then one of them scribbling lines of code frantically on the whiteboard as the rest nod in compliment.

The language of the programming team using patterns is mysterious and magical, almost like incantations spoken in some artful black language. Many computer science instructors contend with conviction that the teaching of patterns and the learning of them speeds the learner’s adoption of the principles of object oriented software technology. It is undeniable that the learning of patterns improves the programmers’ development vocabulary.

Software design patterns also help in finding appropriate objects, in determining the apropos object granularity and in designing a software system that is architected from the outset to better adapt to change. At the design level, patterns enable large-scale reuse of software architectures by capturing the expert knowledge of pattern based development and distributing it throughout the development team.

It is generally acknowledged that these are the two most important benefits: the way in which they form a vocabulary for articulating design decisions during the normal course of development conversations among promgrammers. This can also come into play during the close programming work of so-called “pair programming“, among those who have found it to be useful for them.

When you are working with a group of programmers who are either working in pairs or as part of a group using pattern-based development, you frequently hear talk like “I think we need a strategy here”, or, from one programmer to the rest of the group, “Let’s implement this functionality as an Observer”.

Programmers’ familiarity with pattern-based development has also become a kind of hiring shorthand. Whenever a talented programmer leaves a software development team I am leading, and we need to replace him or her with anther programmer, I use the “Do we need a programmer familiar with design patterns” question as a line of demarcation for recruiting and hiring decisions. The answer is *not* always to hire an expensive programmer intimately familiar with design patterns, either.

It is fashionable in development manager circles to use design patterns as a hiring demarcation line as well, as in the following exchange:

“So…regarding design patterns: what would you say is your favorite design pattern?”

“Well, the factory, I guess.”

“Yeah…OK…thanks for coming down.”


What does a software development pattern look like?

A pattern is a problem-solution pair that can be applied in a similar fashion in new contexts; the pattern is complete with advice on how to apply it in the new context. It is important to note that the formal definition of a pattern is not consistent in the literature.

There are three types of patterns:

1. An architectural pattern occurs across software subsystems.

2. A design pattern occurs within a subsystem but is independent of the language.

3. An idiom is a low-level pattern that is programming language-specific.

Each individual pattern is compromised of four elements:

1. A name. Some of the names of the software design patterns can be rather whimsical: “flyweight”, and “singleton”. The whimsy is to serve the purpose of making the patterns memorable to programmers.

2. A problem description. The problem part of the pattern describes the problem and its context, as well as specific design issues such as how to represent algorithms as objects. The problem statement may also speak about when it is best to apply this particular pattern and may also describe class structures that are symptoms of an inflexible software design.

3. A solution to the problem. The solution part of the design pattern does not desibe any one particular concrete design or implementation, but only describes the elements that make up the design, The solution only provides a general arrangement of objects and classes which can be used to solve this type of problem.

4. The consequences of the solution. This part of the design pattern describes the results and inherent risks and trade-offs associated with applying this particular design pattern. It may include the impact of this design pattern on space and time, programming language and implementation issues, or include notes on software flexibility, system extensibility, and portability. These consequences are critical for evaluating alternative software design patterns.


What is the history of software design patterns?

The concept of design patterns was first introduced by Christopher Alexander for use in architecture and town planning. He realized that architects encounterd the same sorts of problems when engaged in the design of buildings and once an elegant architectural solution to these common problems was discovered, it could be repeated over and over again. In 1977, he wrote a book, published by the Oxford University Press, called “A Pattern Language”, in which he stated:


“Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice”

Design patterns as an idea were first applied to computer software programming in the 1980’s, when the infamous “Gang of Four” book, “Design Patterns: Elements of Reusable Object-Oriented Software” popularized the use of design patterns. Ward Cunningham, Kent Beck, and Jim Coplien were some of the initial practicioners and popularizers of software design patterns.


What are the “Gang of Four” software design patterns?

The “Gang of four” book first introduced this set of patterns into the software programming world. The book lays out 23 design patterns for software development, and it was first published in 1995. Building upon the work of Kent Beck, Christopher Alexander, and others, the gang of four set out to redirect all of the effort being put into “rengineering the wheel” in software development teams all over the world and redirect it into something much more useful.

The book was an instant hit with computer programmers, selling over half a million copies since its publication in 1995 and undoubtedly influencing the thoughts and code of millions of computer programmers worldwide. Many computer programmers can vividly remember buying their first copy of the book and in addition many computer programmers look upon their reading of the book as a rite of passage. It can be a difficult book to get through, and it is not infrewunt for even advanced computer programmers to have to spend several readthroughs in order to extract the desired effects out of their investment of time in the gang of four’s words. The book did two very important things for programmers:

First, computer software programmers were introduced to the world of design patterns, where each pattern is a prepackaged solution to a common design problem. The book encourages programmers to look at their code and to find and identify common solutions to common problems. Programmers should give each solution a name, and they should talk about what each solution is good for, and when to use each solution, and when to reach for something that is a more appropriate solution. If all of these solutions are documented well, then over time more and more programmers will become better and more effiecient programmers, and this knowledge can be distributed throughout the developer community in the most direct and sane way.

Secondly, the book describes 23 software design patterns that are organized into three groups based on the intention for their use: creational, behavioral, or structural:

1. Creation design patterns are associated with object creation and their intent is to allow programmers to create software objects without actually knowing what they are creating beyond the interfaces themselves. There is a fundamental principle in computer programming, known as information hiding. When programmers code using interfaces to object creation and objects, then they are following this fundamental principle well.

As described by Gamma, Helm, Johnson and Vlissides, the “Gang of four”, these creational patterns include the abstract factory, the builder, the factory method, the prototype, and the singleton.

2. Structural design patterns are concerned with organization classes. Structural design patterns are static in nature; they are not designed to change. As laid out by the Gang of four, structural design patterns include the adapter, the bridge, composite, decorator, facade, flyweight, and proxy.

3. Behavioral design patterns are concerned with runtime or dynamic system behavior of the program, and they help define the roles of software objects and their interactions. By their dynamic nature, behavioral patterns are designed to change, and are not static and contain very little “structural” code. The gang of four describe behavioral software design patterns called the chain of responsibility, command, interpreter, iterator, mediator, memento, observer, state, strategy, template method and visitor.

In the years that have followed the publication of the gang of four book, and as I will get into in more depth here in a moment, many different sets of alternative design patterns have been proposed. the original gang of four patterns – the 23 patterns I wrote of above – really stick to the old school, middle ground of object-oriented software design. Smaller than a database system, but larger than just a simple hashtable. They focus on some very key questions that face all programmers that are tasked with building an object oriented software system: how do you know what types of objets to create, how many, and how? How should these objects relate and interoperate? What should they know about each other? How should they be coupled together? How can programmers swap out parts that are likely to change frequently with the most efficiency?


What are some of the situations in which a software design pattern might be used?

Each individual situation which is faced by software programmers will have an individual solution tailored for that specific situation. If this were not the case, then a piece of complete, reusable software code could be used, instead of the rough problem-solution description of a design pattern.

It is not difficult, however, for me to illustrate a few of the scenarios and what type of design pattern could potentially be used to address this situation:

If a programmer is faced with a situation in which there needs to be one and only one instance of a class in the application – the single class that everybody uses. This would be a scenario for the singleton pattern.

If a programmer needs to include code from another programming language to best solves the problem at hand, then the programmer could use the Interpreter design pattern in order to use that code programmed in another language directly.

If a programmer is faced with a scenario in which an object needs to be created according to a complex, precise, and changing, set of parameters. In this circumstance, perhaps the builder pattern would be best to utilize.

If a programmer or development team is faced with a scenario where they have objects which need to take on additional responsibilities at runtime in addition to their established responsibilities, then the decorator design pattern made be called for.


Are there any other popular sets of software design patterns?

There are indeed many other sets of software design patterns. For instance, Martin Fowler laid out a very popular set of software analysis design patterns in his 1996 book, “Analysis Patterns: Reusable Object Models” , and there was also a set of software architecture and design patterns laid out in the excellent and well-read book, also published in 1996, “Pattern-Oriented Software Architecture, Volume 1: A System of Patterns“.

But one of the most popular and well-known, regarded, and most-used set of software design patterns was popularized by Craig Larman in his 2002 book, “Applying UML and Patterns“. He called them the GRASP patterns, for general principles in assigning responsibilities, and they are a fairly high-level set of patterns for software design. There are nine GRASP patterns for software design:

1. Creator.

2. Controller.

3. Expert.

4. Low coupling.

5. High cohesion.

6. Polymorphism.

7. Pure fabrication.

8. Indirected.

9. Protected variations.

I will select one of the GRASP patterns I have listed above and describe what the pattern actually is in terms of the name of the design pattern, the problem the design pattern is trying to solve, and the solution for the problem as implemented using the design pattern.

For instance, a scenario that would be best served by the Creator design pattern would be one in which the problem is that it is unclear who should be responsible for creating a new instance of a class.

The solution as proposed by the Creator pattern would be to assign this responsibility to a class B to create an instance of class A if one or more of the following is true: (a) B aggregates A objects, (b) B contains A objects, (c) B records instances of A objects, (d) B closely uses A objects. B has the initializing data that will be passed to A when it is created.


How about design patterns in the Ruby programming language?

You probably realized that I wasn’t going to write an entire article of this length and depth without pimping Ruby. Design patterns are particularly easy to implement in Ruby, partially because of similarities between Smalltalk, the programming language used by the Gang of four to illustrate their programming examples in their design patterns book, and Ruby, and partly because of syntax peculiarities inherent in the Ruby programming language.

Ruby’s absence of static typing lowers the overall number of lines of code to begin with, and the Ruby standard library (if you have been paying attention, you recall the difference between code libraries and design patterns) makes it possible to implement many of the most common design patterns in Ruby with a single one-line include.

Other design patterns are essentially built into the Ruby programming language itself. For instance, a Command object in the canonical Gang of four sense is a state-aware code wrapper, something very closely approximated by a Ruby construct known as a Proc, or a Ruby code block object. This is not to say that although a simple Command construct can be implemented in Ruby with a single one-line include, if we add more complex state and behavior information to the block, the implementation will not need some additional Ruby code. As I stated earlier in this article, and without equivocation, design patterns do not lead to direct code reuse, this is the work of software libraries.

The main point I am trying to promote is that because design patterns are the common idioms of object-oriented software code, a good or great programming language should make design patterns easy to implement, or even make the use of them nearly a transparent excercise, as if the design patterns’ usage was inherent in the use of the language itself.

Ruby works marvelously well in a pattern-based software development environment because:

1. Static typing reduces code bloat and overhead. Common patterns can be implemented in less code. You can turn a class into a singleton with a simple “include singleton” command.

2. Ruby has code closures, which means that chunks of code can be passed around complete with their associated scope within a program without having to construct entire classes and objects whose only purpose is this scope and code transferral.

3. Ruby classes are real objects, so any runtime operation that can be applied to a Ruby class can be used to implement the logical intent of any of the design patterns. A Ruby class can be modified by adding or deleting methods. A class can be cloned and the copy can be modified while leaving the original class unmodified.

4. Ruby has mixins, which in addition to the same inheritance of other programming languages, is a simple yet sophisticated way in which Ruby code can be shared among several Ruby classes.

One of the books I recommend all Ruby programmers read is “Design patterns in Ruby“, by Russ Olsen, with a foreword by renowned Ruby programmer Obie Fernandez.

In the book, you will learn why there are only 14 patterns in Ruby instead of 23 original Gang of four patterns, and you will also find out about three new Ruby-specific design patterns that have a great deal of usefulness in Ruby.


Are there any drawbacks or negatives to using pattern-based software development?

Well, actually, there are several drawbacks to all of this talk of pattern-based software development.

One of the main drawbacks, and one of the most important thing for technical project managers and business stakeholders as well as senior managers to keep in mind, is that patterns do not lead to direct software reuse.

Direct reuse of sections of software code is for software libraries. Patterns do not create or promote software libraries of reuable plug-and-play software code, but rather lead to reuable design, architectures and techniques which can be converted by computer programmers into unique program code.

Even though the cutesy names of software design patterns may lead you to believe that they are also simpe to learn, they are not. It is easy enough to master some of their names, and to also memorize their structure visually, but it is not very easy to see how they can lead to actual design solutions. This can take even very experienced computer programmers years and years of practice, education and working experience.

Integrating the use of software patterns into an actual, real-world development organization’s daily development life and regular deployment cycle can be a daunting task. The integration, aside from the demands the aforementioned education and training can take on a development staff compromised of computer programmers unfamiliar with the software design patterns described above, is a very labor-intensive activity.

A software development team’s programmers may experience pattern overload, whereby in their unending quest to use pattern-based techniques, they have become an obsession rather than as an effective and efficient means to an end. Aa mentioned above, software design patterns are no silver bullet, and do not lead to direct code reuse, but rather provide another approach to systematically solving software design problems that are commonly and frequently encountered by software development teams.


Want to know more?

You’re reading Boston’s Hub Tech Insider, a blog stuffed with years of articles about Boston technology startups and venture capital-backed companies, software development, Agile project management, managing software teams, designing web-based business applications, running successful software development projects, ecommerce and telecommunications.

About the author.

I’m Paul Seibert, Editor of Boston’s Hub Tech Insider, a Boston focused technology blog. You can connect with me on LinkedIn, follow me on Twitter, follow me on Quora, even friend me on Facebook if you’re cool. I own and am trying to sell a dual-zoned, residential & commercial Office Building in Natick, MA. I have a background in entrepreneurship, ecommerce, telecommunications and software development, I’m a Technical PMO Director, I’m a serial entrepreneur and the co-founder of several ecommerce and web-based software startups, the latest of which are Twitterminers.com and Tshirtnow.net.

What are the qualities of bad software code? How can you tell if your software project has bad code? July 12, 2011

Posted by HubTechInsider in Agile Software Development, Project Management, Software.
Tags: , , , ,
1 comment so far
User:Dreftymac/Docs/ImageDisclaimer

Image via Wikipedia

What are the qualities of bad code? How can you tell if your software project has bad code?

Troubled software projects and bad code are facts of life in the software business. Today’s applications, system software, even embedded and operating systems programming is increasing being outsourced or at least distributed.

The need for being able to quickly evaluate the quality of software code, describe any known issue in simple aterms and then execute on a planned approach to rectify these issues is greater than ever.

A common vocabulary for project teams, refactoring engineers, and project managers and stakeholders is of a fundamental assistance in manageing software development projects.

You may find yourself sitting in a meeting or conference room or perhaps on a conference call with a group of computer programmers who are discussing some sections of code, or if you are particularly unlucky, perhaps an entire application of software development project, that is troubled using some of these below listed terms. After each of these negative, “bad code” terms I have tried to describe what is meant by each of these terms for bad software. After each description, I list the term for the opposite, positive “good code” quality contrary to the bad code quality.

1. Fragility: When changes in the software code cause the system to break in places that have no conceptual relationship to the part that was changed. This is a sign of poor design. The opposite of fragility is known as robustness.

2. Immobility: When the code is hard to resuse. The opposite of immobility is known as re-usability.

3. Needless complexity: When the design is more elaborate than it needs to be. This is sometimes also called “Gold plating”. The opposite of complexity is known as simplicity.

4. Needless repetition: This occurs when cut-and-paste of code segments is used too frequently. The opposite of repetition is known as parsimony.

5. Opacity: When the code is written in such as manner as it is not clear. The opposite of opacity is known as clarity.

6. Rigidity: When the design is hard to change because every time you change something, there are many other changes needed to other parts of the system. The opposite of rigidity is known as flexibility.

7. Viscosity: When it is easier to do the wrong thing, such as a quick and dirty fix, than the right thing. The opposite of viscosity is known as fluidity.

In order for your software development project to feature the opposite, more desirable positive qualities to the ones listed above, your project must exhibit a good software architecture, solid software design, and effective coding practices.

For further reading on this topic, I highly recommend the excellent book by R.C. Martin, “Agile Software Development, Principles, Patterns, and Practices“, Prentice-Hall, Englewood Cliffs, NJ, 2002.

Want to know more?

You’re reading Boston’s Hub Tech Insider, a blog stuffed with years of articles about Boston technology startups and venture capital-backed companies, software development, Agile project management, managing software teams, designing web-based business applications, running successful software development projects, ecommerce and telecommunications.

About the author.

I’m Paul Seibert, Editor of Boston’s Hub Tech Insider, a Boston focused technology blog. You can connect with me on LinkedIn, follow me on Twitter, follow me on Quora, even friend me on Facebook if you’re cool. I own and am trying to sell a dual-zoned, residential & commercial Office Building in Natick, MA. I have a background in entrepreneurship, ecommerce, telecommunications and software development, I’m a Technical PMO Director, I’m a serial entrepreneur and the co-founder of several ecommerce and web-based software startups, the latest of which are Twitterminers.com and Tshirtnow.net.

What is software traceability? What is a software requirements traceability matrix? July 12, 2011

Posted by HubTechInsider in Agile Software Development, Project Management, Software.
Tags: , , , , ,
add a comment

What is Traceability in software development?

In my experience working on custom software development projects, the number one cause of project failure is inadequate requirements. When programmers code either without requirements or with inadequate requirements, nothing good ever comes of it.

The relationship between the requirements, the source of those requirements, and the system design that is ostensibly being built to enable those requirements, is what code traceability is all about.

I think it is very important to point out that regardless of the software development lifecycle process model you and your team happen to be following, be it a traditional “Waterfall” type software model or a so-called “Agile” fixed-iteration development lifecycle, documentation and code traceability is paramount.

If your software has provided for a high level of traceability, then the requirements can flow down through the design and code and then can be traced back up at every stage of the process.

This makes it a simple matter to trace a coding decision back to a design decision to satisfy a corresponding requirement.

In embedding systems software engineering, traceability is vital because hardware constraints can act as limiting factors on design and coding decisions that may not be as easily associated with a requirement as in a non-embedded system design.

When even a basic “traceability matrix” is not provided for on a software project, then the lack of a traceability path from design and coding decisions back through to the requirements can lead to severe difficulties in extending and maintaining the system.

What is a software traceability matrix?

A software traceability matrix document can take many different forms, but one of the most common forms is a table-like document that serves simply as a graphical representation of all of the cross referenced links between project deliverables and artifacts, and the code.

This cross referenced table is constructed, usually using a spreadsheet application program, by listing the relevant software documents and then the doe unit as columns, and each software requirement as a row.

An example of a software requirement tracing matrix.

If you use a spreadsheet program, then you can create multiple matrices sorted and cross-refernced by each column as needed. For example, you could provide a traceability matrix sorted by test case number, which could serve as a very apropos appendix to the test plan.

The traceability matrices should be updated at each step in the software life cycle. For example, the column for the code unit names, things like procedure names, object classes, etc., can not be added until after the code is developed.

What are the elements of a good traceability matrix?

A traceability matrix is a document, sometimes in the form of a table, that will provide a cross reference between all the documentation and software code in a system.

At a very minimum, a good traceability matrix will provide links, or cross references showing the associations between the following elements:

1. From the requirements to the stakeholders who first proposed these requirements, with the dates they were first proposed.

2. The associations between any dependent requirements listed.

3. From the requirements through to the system design, or functional specification document.

4. From the design to the relevant code segments. (oftentimes referencing the technical specification document).

5. From the requirements to the test plan document.

6. From the test plan to the relevant test cases.

What is requirements traceability?

Software requirements traceability is the ability for a project team to provide references that document the relationships between the software requirements, their sources, and the system design. If software requirements traceability has been provided well, then the requirements can be linked to their source, to other requirements, and to design elements.

Requirements traceability links between the different requirements, source traceability links these requirements to the stakeholders who proposed those requirements, and design traceability link from the requirements to the system design documents.

The software requirements document, sometimes referred to as the SRS, or software requirements specification document, MUST be “traceable”, because the software requirements provide the starting point for the entire traceability chain.

It is very common within professional project management organizations, or PMOs, to enact and enforce traceability policies which codify how much information regarding requirement relationships is required to be maintain, and the format in which this information is to be presented. There are a number of open source and proprietary open-source tools which can be used to help improve a software organization’s requirements traceability.

A traceability matrix sorted by requirement numbers that correspond to a numbering scheme

The overarching goal of software traceability and software traceability matrix is to ensure that for critical software, nothing falls through the cracks. Ultimately there is a way of mapping for each requirement which test cases exist to cover that requirement and the functional specification.

As shown in the sample traceability matrix above, one way to show the traceability from requirements through design and testing is through the use of an appropriate numbering system throughout the documentation for the system. For example, a requirement numbered 3.2.2.1 would be linked to a design element with a similar number (the numbers don’t have to be the same so long as the annotation in the document provides traceability). The main intent here is to show that all the appropriate documents and project deliverables are connected through referencing and notation.

Want to know more?

You’re reading Boston’s Hub Tech Insider, a blog stuffed with years of articles about Boston technology startups and venture capital-backed companies, software development, Agile project management, managing software teams, designing web-based business applications, running successful software development projects, ecommerce and telecommunications.

About the author.

I’m Paul Seibert, Editor of Boston’s Hub Tech Insider, a Boston focused technology blog. You can connect with me on LinkedIn, follow me on Twitter, follow me on Quora, even friend me on Facebook if you’re cool. I own and am trying to sell a dual-zoned, residential & commercial Office Building in Natick, MA. I have a background in entrepreneurship, ecommerce, telecommunications and software development, I’m a PMO Director, I’m a serial entrepreneur and the co-founder of several ecommerce and web-based software startups, the latest of which is Tshirtnow.net.

HubTechInsider.com YouTube Channel

Subscribe to HubTechInsider.com YouTube Channel

SEO Made Easy 2013 FREE Special Report!

PHP for Beginners

Google + Domination for Business

LinkedIn for Business Training Course

Mastering WordPress Video Training Course

Twitter Business Magic Video Tutorial Series

What’s the difference between a Graphic Designer, an Information Architect and an Interaction Designer? September 15, 2010

Posted by HubTechInsider in Agile Software Development, Definitions, Ecommerce, Mobile Software Applications, Project Management, Social Media, Software, VoIP, VUI Voice User Interface, Wireless Applications.
Tags: , , , , , , , , , , , , , , , ,
add a comment

Information Architecture is the study of the organization and structure of effective web systems. Information architects study and design the relationships between internal page elements, as well as the relationships and navigation paths between individual pages. They combine Web design, information and library science as well as technical skills to order enterprise knowledge and design organizational systems within websites that help Users find and manage information more successfully. They are also responsible for things like ordering tabs and content sections of a web-based software application.  They try to structure content and access to functions in such a way as to facilitate Users finding paths to knowledge and the swift accomplishment of their User Goals with the System.

Graphic Design is the skill of creating presentations of content (usually hypertext or hypermedia) that are delivered to Users through the World Wide Web, by way of a Web browser or other Web-enabled software like Internet television clients, micro blogging clients and RSS readers. Graphic designers study and design graphic elements, logos, artwork, stock photography, typography, font selection, color selection, color palettes and CSS styles.


Interaction Design is the process of creating an interface for the user to engage with a site or application’s functionality and content. Interaction designers are concerned mainly with facilitating users’ goals and tasks, and use a systematic and iterative process for designing highly interactive user interfaces. Their methodology includes research and discovery techniques such as requirements analysis, stakeholder analysis, task analysis, as well as prototyping, inspection and evaluation methods to define the structure and behavior of a web-based software system.


What’s the difference between Design and User Experience?

  • Design is about changing understanding; user experience is about changing behavior.
  • Design is about intent; user experience is about purpose.
  • Design is about style; user experience is about substance.
  • Design is about the platform; user experience is about the person.
  • Design is about the present; user experience is about the past and future.
  • Design is about action; user experience is about impact.

Lexington’s Tokutek, indexing software developer, raises $2.8 Million from a group of undisclosed investors August 23, 2010

Posted by HubTechInsider in Software, Startups, Venture Capital.
Tags: , , , , , , , , ,
add a comment

Lexington, Massachusetts -based Tokutek, an indexing software developer, raises $2.8 Million from a group of undisclosed investors.

LA’s Magneto Software, Open Source Ecommerce Platform Powerhouse, Raises $22.5 Million and gets ready to kick sand in kümmerlich Demandware’s face March 22, 2010

Posted by HubTechInsider in Cloud Computing, Ecommerce, Investing, IPOs, Software, Startups, Venture Capital.
Tags: , , , , ,
add a comment

You’ve read here before about the grimmig shape Woburn’s (and Deutschland’s) tiny non-IPO’ing Demandware looks to be in right about now. Well, things are looking even worse for the durchfallend company today, as Los Angeles-based Open Source Ecommerce Platform Powerhouse Magneto Software has announced they have raised $22.5 Million Green American Dollars from a group of undisclosed investors, and their armies are on the march. The never-humble, always self-serving Demandware founder, Stephan Schambach, no doubt reeling from his company’s dimming IPO hopes and shrinking client base, has recently been picking a series of kindlich fights with the American company with a tutonic bluster that would have made Field Marshall Von Kesselring blush. As usual, Demandware has trotted out an endless series of their own marketing and PR flaks to churn out schadenfreude “press releases” denying that they are caught in an Open Source Crossfire reminiscent of the Kessel at Stalingrad. Even Demandware’s Ulrike Müller, “Chief Software Architect” (of Germanic dinosaur J2ee code bloat?) has chimed in with a completely unbiased bit of ranting. Now LA’s Magneto (taking the metaphor further) has scored a major victory with an enourmous $22.5 Million dar Bozhii, or “gift from God,” of an investment from a group of undisclosed investors, which they will undoubtedly use to beat Demandware over the head with. It’s put up or shut up time, Schlaubergern!


Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine


Add to Google Buzz

Boston based Iron Mountain buys Santa Clara, CA-based Mimosa Systems for $112 Million March 8, 2010

Posted by HubTechInsider in Acquisitions, Software.
Tags: , ,
add a comment

Boston based Iron Mountain buys Santa Clara, CA-based Mimosa Systems for $112 Million. Information management company Iron Mountain Inc (IRM.N) said it acquired Mimosa Systems Inc, a Santa Clara, California-based provider of on-site digital storage services, for $112 million in cash.

With the acquisition, Iron Mountain will now get access to Mimosa’s key customers like United Healthcare Group (UNH.N) and Flextronics (FLEX.O).

The acquisition is expected to “modestly” hurt earnings in its first year, with expected synergies and revenue growth driving significant increases in profits beyond 2010, the company said.

“By combining Mimosa’s on-premises archive with our cloud-based technologies, Iron Mountain can now store, recover and discover digital content wherever it resides,” Iron Mountain Digital president Ramana Venkata said in a statement.

Iron Mountain provides records management, data protection and recovery, and paper shredding services. Until now, Iron Mountain Digital, the technology arm of Iron Mountain, provided cloud-based services to customers.

Boston-based Iron Mountain entered the digital storage segment in 2001 and has made four acquisitions since then.

Iron Mountain’s last acquisition in the digital segment was of e-discovery firm Stratify for $158 million, its biggest deal in the space.

The company has spent about $800 million on acquisitions in the last five years.

“With Mimosa in the fold, what we’re going after is an approximately $10.5 billion market around the things we’re doing today,” Venkata said.

Iron Mountain’s rivals include EMC (EMC.N) and Symantec (SYMC.O).

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Add to Google Buzz

Dedham’s Reflexis Systems, a maker of retail management software, raises $6 Million March 8, 2010

Posted by HubTechInsider in Ecommerce, Software, Startups, Venture Capital.
Tags: , , , , ,
add a comment

Dedham’s Reflexis Systems, a maker of retail management software, raises $6 Million from a group of undisclosed investors.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Add to Google Buzz

Chelmsford’s Desktone, a desktop virtualization company, raises $5 Million March 8, 2010

Posted by HubTechInsider in Software, Startups, Venture Capital.
Tags: , ,
add a comment

Chelmsford’s Desktone, a desktop virtualization company and provider of network computer services for large organizations, raises $5 Million from a group of investors including Highland Capital Partners, SoftBank Capital, Citrix Systems, and Tangee International.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Add to Google Buzz

Lexington’s StreamBase Systems pioneers CEP (Complex Event Processing) database technology January 24, 2010

Posted by HubTechInsider in Software, Startups, Venture Capital.
Tags: , , , ,
add a comment

Lexington’s StreamBase Systems pioneers CEP (Complex Event Processing) database technology

CEP allows users to analyze information as it streams in, a huge step up from relation databases, in which data needs to be stored before being processed. Whereas most databases can handle hunded of bits of data per second, StreamBase’s platform can process hundreds of thousands of pieces of info, or “events”, per second: emails, Facebook posts, signals intelligence, audio and video streams – or a combination.

Pair brute force processing power with realtime analysis, and you get a sense of how CEP can be useful to an intelligence agency. The platform can search for specific combinations of words or numbers, so if an al-Qaeda suspect whose email address is known started getting messages that included, say, “bomb” and “Washington” and “Martyrdom”, an alert would go off.

As terrorist operations are frequently controlled and planned via the Internet, a major commercial application of CEP database technology is the ability to tap into the stream of Internet communications data and make realtime decisions based on that information.

Mark Palmer is the President of StreamBase Systems, headquartered in Lexington, Massachusetts.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Islandia, NY’s CA, Inc., acquires Waltham’s Oblicore for undisclosed terms January 24, 2010

Posted by HubTechInsider in Software, Startups, Venture Capital.
Tags: , , ,
add a comment

Islandia, NY’s CA, Inc.,an IT management software company, acquires Waltham’s Oblicore, a provider of Service Level Management (SLM) software for enterprises and service providers, for undisclosed terms.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Bedford’s Progress Software acquires Santa Clara’s Savvion for $49 Million January 22, 2010

Posted by HubTechInsider in Software, Startups, Venture Capital.
Tags: , , ,
add a comment

Bedford’s Progress Software, a maker of systems for integrating enterprise software applications acquires Santa Clara’s Savvion, a maker of business process management software, for $49 Million.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Boston’s Auction Holdings Inc. raises $13 Million December 29, 2009

Posted by HubTechInsider in Software, Startups, Venture Capital.
Tags: , ,
add a comment

Boston’s Auction Holdings Inc., a seller of software to estate auctioneers, raises $13 Million from a group of investors including Ascent Venture Partners and Commonwealth Capital Ventures.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Cambridge’s Cambridgesoft, life sciences software company, raises $31.3 Million in equity funding December 1, 2009

Posted by HubTechInsider in Biotech, Health Care IT, Pharmaceuticals, Software, Startups, Venture Capital.
Tags: , , , , , ,
add a comment

Cambridge, MA-based Cambridgesoft, which makes software for life sciences companies, disclosed in regulatory documents filed November 17 that it has raised $31.3 million in new equity-based financing. Cambridgesoft first announced the funding round (though not the amount) in a November 16 release that named new investor Health Evolution Partners and existing investor Goldman Sachs as the funders in the round.

Boston’s Roam Data, cell phone payment processing software maker, raises $6.5 Million in a Series B round of equity financing December 1, 2009

Posted by HubTechInsider in Mobile Software Applications, Software, Startups, Venture Capital, Wireless Applications.
Tags: , , ,
add a comment

Boston’s Roam Data, a developer of cell phone payment processing software that allows merchants to process payments over cell phones, has raised $6.5 Million in a Series B round of equity financing led by Ingenico Ventures (a unit of payment solutions provider Ingenico SAS) and George Wallner (founder and former CEO of Hypercom).

Waltham based Leostream, virtual desktop software maker, raises an additional $2 Million in equity financing November 27, 2009

Posted by HubTechInsider in Software, Venture Capital.
Tags: , ,
add a comment

Leostream, a Waltham, MA-based provider of application-management software for virtual desktop infrastructures, has raised $2 million in an equity financing, according to an SEC filing. VentureWire reports that Meakem-Becker Venture Capital, of Sedwickley, PA, provided Leostream with the $2 million capital infusion, which the company hopes will be enough to support its operations until it becomes profitable. Leostream raised $3 million in its Series A round of venture capital in 2008, also led by Meakem Becker Venture Capital.

%d bloggers like this: