Research on Knowledge-Based Software Environments at Kestrel Institute
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
IEEE Transactions on Software Engineering
Report on a knowledge-based software assistant
Readings in artificial intelligence and software engineering
A framework for information systems architecture
IBM Systems Journal
Knowledge-based systems: implications for human-computer interfaces
Knowledge-based systems: implications for human-computer interfaces
Telos: representing knowledge about information systems
ACM Transactions on Information Systems (TOIS)
From information system requirements to designs: a mapping framework
Information Systems
Foundations for the study of software architecture
ACM SIGSOFT Software Engineering Notes
Case-based reasoning
Introduction to the Special Issue on Software Architecture
IEEE Transactions on Software Engineering - Special issue on software architecture
A Domain-Specific Software Architecture for Adaptive Intelligent Systems
IEEE Transactions on Software Engineering - Special issue on software architecture
Object-oriented requirements to object-oriented design: an easy transition?
Journal of Systems and Software - Double issue on reengineering complex systems
Dealing with non-functional requirements: three experimental studies of a process-oriented approach
Proceedings of the 17th international conference on Software engineering
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
ICSE '94 Proceedings of the 16th international conference on Software engineering
Modelling strategic relationships for process reengineering
Modelling strategic relationships for process reengineering
Managing performance requirements for information systems
Proceedings of the 1st international workshop on Software and performance
Software architecture and mobility
ISAW '98 Proceedings of the third international workshop on Software architecture
The Unified Modeling Language user guide
The Unified Modeling Language user guide
The unified software development process
The unified software development process
Doing hard time: developing real-time systems with UML, objects, frameworks, and patterns
Doing hard time: developing real-time systems with UML, objects, frameworks, and patterns
Design and use of software architectures: adopting and evolving a product-line approach
Design and use of software architectures: adopting and evolving a product-line approach
Knowledge engineering and management: the CommonKADS methodology
Knowledge engineering and management: the CommonKADS methodology
Using object-oriented technology to design efficient IEEE-488.2 (GPIB) interface instruments
Computer Standards & Interfaces
Testable embedded system firmware development: the out-in methodology
Computer Standards & Interfaces
Tool support for engineering adaptability into software architecture
Proceedings of the International Workshop on Principles of Software Evolution
Designing Concurrent, Distributed, and Real-Time Applications with Uml
Designing Concurrent, Distributed, and Real-Time Applications with Uml
IEEE-488, General Purpose Instrumentation Bus Manual
IEEE-488, General Purpose Instrumentation Bus Manual
Assessing the Changeability of two Object-Oriented Design Alternatives—a Controlled Experiment
Empirical Software Engineering
Software architecture adaptability: an NFR approach
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
An approach to a theory of software evolution
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
Design erosion: problems and causes
Journal of Systems and Software
Experiences with ALMA: architecture-level modifiability analysis
Journal of Systems and Software
What's Ahead for Embedded Software?
Computer
Exploring Alternatives During Requirements Analysis
IEEE Software
Representing and Using Nonfunctional Requirements: A Process-Oriented Approach
IEEE Transactions on Software Engineering - Special issue on knowledge representation and reasoning in software development
Dealing with Security Requirements During the Development of Information Systems
CAiSE '93 Proceedings of Advanced Information Systems Engineering
Architecture-Based Semantic Evolution: A Study of Remotely Controlled Embedded Systems
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Extensibility in programming language design
ACM SIGPLAN Notices - Special issue on programming language design
Developing a UML profile for modelling knowledge-based systems
MDAFA'03 Proceedings of the 2003 European conference on Model Driven Architecture: foundations and Applications
Discovery and diagnosis of behavioral transitions in patient event streams
ACM Transactions on Management Information Systems (TMIS)
A CIM-based framework to manage monitoring adaptability
Proceedings of the 8th International Conference on Network and Service Management
Hi-index | 0.00 |
Architecture generation is the first step in the design of software systems. Many of the qualities that the final software system possesses are usually decided at the architecture development stage itself. Thus, if the final system should be usable, testable, secure, high performance, mobile and adaptable, then these qualities or non-functional requirements (NFRs) should be engineered into the architecture itself. In particular, recently adaptability is emerging as an important attribute required by almost all software systems. Briefly, adaptability is the ability of a software system to accommodate changes in its environment. Embedded systems are usually constrained both in hardware and software. Current adaptable architecture development methods for embedded systems are usually manual and ad hoc--there are almost no comprehensive systematic approaches to consider NFRs at the architecture development stage. While there are several examples of approaches to generate architectures based on functional requirements, we believe that there are very few techniques that consider NFRs such as adaptability during the process of architecture generation. In this paper we present an automated design method that helps develop adaptable architectures for embedded systems by developing a tool called Software Architecture Adaptability Assistant (SA3). SA3 helps the developer during the process of software architecture development by selecting the architectural constituents such as components, connections, patterns, constraints, styles, and rationales that best fit the adaptability requirements for the architecture. The developer can then complete the architecture from the constituents chosen by the tool. SA3 uses the knowledge base properties of the NFR Framework in order to help automatically generate the architectural constituents. The NFR Framework provides a systematic method to consider NFRs, in particular their synergies and conflicts. We validated the architectures generated by SA3 in a type of embedded system called the vocabulary evolution system (VES) by implementing the codes from the generated architectures in the VES and confirming that the resulting system satisfied the requirements for adaptability. A VES responds to external commands through an interface such as ethernet and the vocabulary of these commands changes with time. The validation process also led to the discovery of some of the shortcomings of our automated design method.