The software factory: maximizing software reuse

The problems inherent in software development are addressed by the architecture of a software factory, using design models, templates and domain-specific languages.

SQDM comparte el artículo sobre fábricas de software escrito por Griffin Carpio y publicado por el portal TechTarget.

Software development has always been an expensive and time-consuming activity. Specialized requirements and lack of trained resources are just two of the difficulties many companies face today. The pressure to release software in a timely manner and within budgets has led developers to seek alternatives that increase the value delivered, as development times are reduced.

For many years, efficient reuse of existing resources-whether through object-oriented programming, component-based development, or template-based architecture-has been a key objective for the IT industry. Software reuse is seen as a means to combat many of the problems faced by development teams. However, for many years and due to different technology paradigms, this level of reuse has eluded the industry as a whole.

The following are four chronic software development problems – each of which impedes a team’s ability to gain valuable knowledge and reuse existing expertise and domain information.

Monolithic development
It refers to the creation of software in such a way that it becomes difficult or almost impossible to use the resulting artifacts, outside a defined scope with limitations. Different projects, different development teams – all building isolated applications, without enough care to establish what others are doing and without knowing what domain knowledge they are incorporating into the application(s). This results in large, inflexible applications that are of little use to anyone outside the target audience.

Copious granularity
Typical business application software development consists of an incredibly similar set of functionalities. For example, many business applications read data from a database, present it to the user, and allow the user to modify the information in a certain way – subsequently allowing the user to apply the change to the database. Even if this is an oversimplification of many applications, the basic activities remain the same in different projects. Why do developers use highly granular tools such as standard programming languages like C# or VB.NET to represent basic patterns or templates?

Part of the reason is the immaturity of the languages and modeling tools. While a language such as UML is useful for documenting software architecture, it is inappropriate for allowing implementation to be derived from such models. UML lacks the extensibility necessary to generate a large amount of code and also lacks the scope required to represent all aspects of the software, including databases and user interfaces.

Immaturity of the processes
– Controlling complexity at the expense of change – many “traditional” processes could fall under this definition, including ORs and Cascade
– Controlling change at the expense of complexity – most “agile” methodologies could fall under this definition, including Scrum and XP

Before a process is redefined for software reuse, it must be mature because only correctly defined processes can be automated.

Specific Developments
Software development projects in a company are usually so focused on their most basic purpose and on delivery times that integral architecture is left in a secondary role, as if it were something “academic”. Little importance is given to the analysis and evaluation of existing assets and very little time is allocated to ensuring that the new assets produced are reusable within other contexts. This results in many development efforts within a single company, creating amounts of valuable code and assets to use within the company’s domain.

Post-mortem is rarely executed in projects where reusable components are identified, documented and packaged so that they can be reused in other projects.

These four problems and the incorrect understanding by the industry of how to apply reusability guidelines within the current economic model, show an inhospitable scenario regarding the future of industry-wide software development, especially when compared to more mature industries, such as manufacturing. Fortunately, this is where software factories play their role.

Read the full article here.

For more than ten years, SQDM – Software Quality Driven Management – has provided countless companies with professional consulting, specialized in different IT areas. By eliminating unnecessary analysis and reinventing the wheel, SQDM software factories focus on the essential: to respond to the requirements of each project on time, under proven quality standards.

También disponible en: Spanish

Entradas Relacionadas

Deje un comentario

Empezar Chat