The problems inherent in software development are addressed by the architecture of a software factory, using design models, templates and domain-specific languages.
SQDM shares the article on software factories written by Griffin Carpio and published by TechTarget portal.
Software development has always been a costly and time-consuming activity. Specialized requirements and lack of skilled resources are just two of the difficulties many companies face today. The pressure to release software in a timely manner and within budget 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 a template-based architecture-has been one of the key objectives 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 for different technology paradigms, this level of reuse has eluded the industry as a whole.
Listed below are four chronic problems of software development-each of which impedes a team’s ability to gain valuable knowledge and to reuse from existing expertise and domain information.
This 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 sufficient 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.
Typical enterprise application software development consists of an incredibly similar set of functionality. 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 high granularity 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 modeling languages and tools. While a language like UML is useful for documenting software architecture, it is inappropriate for allowing implementation to be derived from such models. UML lacks the extensibility needed to generate a large amount of code and also lacks the scope required to represent all aspects of software, including databases and user interfaces.
– Controlling complexity at the expense of change – many “traditional” processes could fit this definition, including RUP and Waterfall.
– 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 since only properly defined processes can be automated.
Software development projects in an enterprise are usually so focused on their most basic purpose and delivery times that the overall architecture is relegated to 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 that are produced are reusable within other contexts. This results in many development efforts within the same company, which create lots of valuable code and assets for use within the company’s domain.
Rarely are post-mortems run on projects where reusable components are identified, documented and packaged so that they can be reused in other projects.
These four problems and the industry’s incorrect understanding of how to apply reuse guidelines within the current economic model paint a bleak picture of the future of software development as an industry, 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’s software factories focus on the essentials: responding to each project’s requirements on time, under proven quality standards.