Future trends in software engineering
Model-driven architecture (MDA)
- not old-style computer-aided software engineering (CASE), i.e. discredited round-trip engineering
- capture different levels of abstraction; elaborating lower-levels, constrained by higher-levels
- component-based libraries and frameworks
- meta-object facility (MOF) for store and registry of component meta-data
- dependency-injection, eg. Spring factory
- mocks objects to complement, not replace, unit and integration testing using fixtures
- continuing growth and refinement of ontology-based software engineering
- return to not-quite components, i.e. facade for service interfaces that are explicit
- growth of resource description framework (RDF), web ontology language (OWL) - semantic-description languages and extensions (hard problem!)
- realisation that C++, Java, C#, perl, python, yacc/bison (of course) incorporate support for domain-specific languages (DSLs) by extension, genericity and composition
- convergence of object-oriented analysis and design with design and enterprise patterns
- combine patterns and domain ontology to give DSL independent of technology and platforms - "form follows function"
- software and systems engineering merge into concrete discipline
- integration architecture, distributed and real-time computing are increasingly seen as facets of same problem
- enterprise security, single sign on, unified data views, portals - service and system mashups at user and data levels
- two-level development: 1) service and business levels based on business/logical processes and composite services; 2) implementations that conform to service and interface contracts can be in any technology, i.e. custom software, commercial-off-the-shelf (COTS) or free and open source software (FOSS)
- well-defined registry interface - "think global over enterprise, act local" every system and application adheres to enterprise guidelines
- configurable and adaptable - constrained flexibility due to absolute need to confidently test known configurations
- computer science and software engineering, psychology, management
- unified analysis, richer toolkit of analytics and heuristics
- mature processes, peer review and accreditation