Academia.eduAcademia.edu

Scenario-based assessment of software architecture usability

2003, Bridging the Gaps Between Software …

Over the years the software engineering community has increasingly realized the important role software architecture plays in fulfilling the quality requirements of a system. The quality attributes of a software system are, to a large extent determined by the system's software architecture. In recent years various tools and techniques have been developed that allow for design for quality attributes, such as performance or maintainability, at the software architecture level. We believe this design approach can be applied not only to non-operational quality attributes such as performance or maintainability, but also to operational quality attributes such as usability. This paper presents and describes a scenario based assessment method to assess whether a given software architecture (provided usability) meets the usability requirements (required usability).

Scenario-based Assessment of Software Architecture Usability Eelke Folmer, Jilles van Gurp, Jan Bosch Department of Mathematics and Computing Science University of Groningen, PO Box 800, 9700 AV the Netherlands [email protected], [email protected], [email protected] Abstract Over the years the software engineering community has increasingly realized the important role software architecture plays in fulfilling the quality requirements of a system. The quality attributes of a software system are, to a large extent determined by the system’s software architecture. In recent years various tools and techniques have been developed that allow for design for quality attributes, such as performance or maintainability, at the software architecture level. We believe this design approach can be applied not only to non-operational quality attributes such as performance or maintainability, but also to operational quality attributes such as usability. This paper presents and describes a scenario based assessment method to assess whether a given software architecture (provided usability) meets the usability requirements (required usability). 1. Introduction The quality attributes of a software system are to a considerable extent defined by its software architecture. In addition, design decisions in the beginning of the design process are the hardest to revoke. Therefore it is important to have an explicit and objective design process. Various researchers in the software engineering research community have proposed software architecture design methods: SAAM [1], ATAM [2] and QASAR [3]. The latter, the Quality Attribute-oriented Software ARchitecture design method (QASAR), is a method for software architecture design that employs explicit assessment of, and design for the quality requirements of a software system. The architecture design process depicted in Figure 1 can be viewed as a function that transforms a requirement specification to an architectural design. The requirements are collected from the stakeholders; the users, customers, technological developments and the marketing departments. These groups often provide conflicting requirements and have to agree on a specific set of requirements before the design process can start. The design process starts with a design of the software Figure 1: Software architecture design method architecture based on the functional requirements. Although software engineers will not design a system on purpose that is unreliable or performs poorly, most nonfunctional requirements are typically not explicitly defined at this stage. The design process results in a preliminary version of the software architecture design. This design is evaluated with respect to the quality requirements by using a qualitative or quantitative assessment technique. During assessment the provided quality attributes are compared to the required quality attribute specifications. If these are satisfactory, then the design process is finished. Otherwise, the architecture transformation or improvement stage is entered. This stage improves the software architecture by selecting appropriate quality attribute optimizing or improving design solutions. When applying architecture design solutions, generally one or more quality attributes are improved whereas other attributes may be affected negatively. By applying one or more architectural design solutions, a new architectural design is created. The design is evaluated again and the process is repeated, if necessary, until all non-functional requirements have been satisfied as much as possible. Other design methods such as SAAM or ATAM take a similar approach with respect to iterative refinement of the design. Generally some compromises are necessary with respect to conflicting non-functional requirements. The design process described here depends on two requirements: • It is required to determine when the software design process is finished. Therefore, assessment techniques are needed to provide quantitative or qualitative data, to determine if the architecture meets the nonfunctional requirements. • Development or identification of architectural design solutions that improve quality attributes. As of yet, no architectural assessment techniques for usability exist. The goal of this paper is to outline and present an assessment technique for usability that fulfills one of the requirements to be able to design for usability on the architectural level. 2. Architecture assessment of usability Most usability issues are only discovered late in the development process, during testing and deployment. This late detection of usability issues is largely due to the fact that in order to do a usability evaluation, it is necessary to have both a working system and a representative set of users present. This evaluation can only be done at the end of the design process. It is therefore expensive to go back and make changes at this stage. Most usability improving modifications are structural and can hence not be implemented because of their cost One of the goals of the STATUS1 project is to develop techniques and methods that can assess software architectures for their support of usability. The reason for developing such techniques is because the quality attributes of a software system are, to a large extent determined by a system’s software architecture. We believe this not only holds for non-operational quality attributes such as maintainability or modifiability but also for usability. Being able to assess the quality attributes such as usability during early development therefore is very important. Three types of architecture assessment have been identified [3] • Scenario based assessment: In order to assess a particular architecture, a set of scenarios is developed that concretizes the actual meaning of a requirement. For instance, the maintainability requirements may be specified by defining change profiles that captures typical changes in the requirements, underlying hardware and so on. For each scenario the architecture is assessed for its support of this scenario. 1 STATUS is an ESPRIT project (IST-2001-32298) financed by the European Commission in its Information Society Technologies Program. The partners are Information Highway Group (IHG), Universidad Politecnica de Madrid (UPM), University of Groningen (RUG), Imperial College of Science, Technology and Medicine (ICSTM), LOGICDIS S.A. • Simulation: Simulation of the architecture uses an executable model of the application architecture. This comprises models of the main components of the system composed to form an overall architecture model. It is possible to check various properties of such a model in a formal way and to animate it to allow the user or designer to interact with the model as they might with the finished system. • Mathematical modeling: By using mathematical models developed by various research communities such as high performance computing, operational quality attributes can be assessed. Mathematical modeling is closely related to, or an alternative to simulation. It is our conjecture that a scenario based approach for developing an assessment method for usability is the most promising candidate technique. Mathematical modeling and simulation are better suited to assess operational quality attributes because such quality attributes, for example performance, are easier and more accurately estimated than usability. A scenario is similar to a use case for those familiar with object oriented modeling. A scenario is defined as a short statement describing and interaction of one of the stakeholders with the system in a particular context. The usage of scenarios is motivated by the consensus it brings to the understanding of what a particular software quality really means. Scenarios are a good way of synthesizing individual interpretations of a software quality into a common view. This view is both more concrete than the general software quality definitions [4] and also incorporates the uniqueness of the system to be developed, i.e. it is more context sensitive. Traditionally, scenario based assessment has been applied to development related software qualities [5]. Software qualities such as maintainability can be expressed very naturally through change scenarios. The safety quality attribute may be specified by hazard scenarios In [1] the use of scenarios for assessing architectures is also identified. It is our conjecture that scenario based assessment can also be applied for usability assessment. Usability is often defined in a very abstract fashion. Scenarios can make abstract usability requirements more specific. For example a usability requirement like “the system should be learnable” is much harder to evaluate for a system than a usage scenario defined as: “For a novice user operating on a helpdesk context, inserting a new customer in the sales database should be learnable”, which is a more concrete statement. Before we developed an assessment technique for usability the relationship between usability and architecture was investigated. The results of that research are presented in the next section. 3. Usability Framework • Reliability in use - this attribute refers to the error rate in using the system and the time it takes to recover from errors. • Satisfaction - the subjective opinions that users form in using the system. These attributes can be measured directly by observing and interviewing users of the final system using techniques that are well established in the field of usability engineering. 3.2. Usability properties Figure 2: Usability framework One of the first goals of the STATUS project was to investigate the relationship between usability and software architecture. A framework has been developed [6] which illustrates this relationship. This framework provides the basis for developing assessment tools for usability. The framework is used for extracting information regarding the architectural information related to usability required for the assessment (this will be discussed when presenting our assessment technique). The framework consists of the following concepts: • Usability attributes. • Usability properties. • Usability patterns. Figure gives some examples of attributes, properties and patterns, and shows how these are related to illustrate the relationship between usability and software architecture. The concepts used are defined below. 3.1. Usability attributes A comprehensive survey of the literature [7] revealed that different researchers have different definitions for the term usability attribute, but the generally accepted meaning is that a usability attribute is a precise and measurable component of the abstract concept that is usability. After an extensive search of the work of various authors, the following set of usability attributes has been identified for which software systems in our work are assessed. No innovation was applied in this area, since abundant research has already focused on finding and defining the optimal set of attributes that compose usability. Therefore, merely the set of attributes most commonly cited amongst authors in the usability field has been taken. The four attributes that are chosen are: • Learnability - how quickly and easily users can begin to do productive work with a system that is new to them, combined with the ease of remembering the way a system must be operated. • Efficiency of use - the number of tasks per unit time that the user can perform using the system. Essentially, usability properties embody the heuristics and design principles that researchers in the usability field have found to have a direct influence on system usability. Usability properties cannot be observed when evaluating usability for an implemented system. These properties can be used as requirements at the design stage, for instance by specifying "the system must provide feedback", however they are not strict requirements in way that they are requirements that should be fulfilled at all costs. Usability properties should be considered as higher-level design primitives, which have a known effect on usability. It is up to the software engineer to decide how and at which levels these properties are implemented by using usability patterns of which it is known they have an effect on this usability property. The following properties have been defined: • Providing feedback - the system provides continuous feedback as to system operation to the user. • Error management - includes error prevention and recovery. • Consistency - consistency of both the user interface and functional operation of the system. • Guidance - on-line guidance as to the operation of the system. • Minimize cognitive load - system design should recognize human cognitive limitations, short-term memory etc. • Natural mapping - includes predictability of operation, semiotic significance of symbols and ease of navigation. • Accessibility - includes multi-mode access, internationalization and support for disabled users. 3.3. Usability patterns The term usability pattern refers to a technique or mechanism that can be applied to the design of the architecture of a software system in order to address a need identified by a usability property at the requirements stage (or iteration thereof). Various pattern collections have been defined [8], [9], the difference with other collections is that our collection considers only patterns which should be applied during the design of a system’s software architecture, rather than during the detailed design stage. There is not a one-to-one mapping between usability patterns and the usability properties that they affect. A pattern may be related to any number of properties, and each property may be improved (or impaired) by a number of different patterns. The choice of which pattern to apply may be made on the basis of cost and the trade off between different usability properties or between usability and other quality attributes such as security or performance. 20 patterns have been identified and a detailed analysis of each usability pattern and the relationship between this patterns, usability properties and usability attributes can be found on http://www.designforquality.com/ The next section presents our proposal of a scenario based assessment method for architectural assessment of usability. The assessment method uses the framework described in this section as a source of input for extracting the information required for assessment. 4. Usability assessment technique: SALUTA What is Saluta? The Scenario based Architecture Level UsabiliTy Analysis method (SALUTA) comprises the following steps: 1) Determine the goal of the assessment. 2) Create usage profile. 3) Describe the software architecture. 4) Evaluate usage scenarios: determine the support for the scenarios. 5) Interpret the results: draw conclusions from the analysis results. The steps are discussed and defined in detail in the following subsections: 4.1 Determine the goal of the assessment The first step in the analysis method is to determine the type of results that will be delivered by its analysis. The following goals are distinguished: • Predict the level of usability: give an accurate indication of the support of usability for an architecture. • Risk assessment: detect usability issues for which the software architecture is inflexible. • Software architecture selection: compare two candidate software architectures and select the optimal candidate which has the best support for usability 4.2 Create usage profile Before an architecture can be assessed for its support of usability, first a way to describe the required usability is required. Preece [10] and Hix [11] suggest various techniques for the specification of usability. The way traditional techniques specify usability such as proposed by Preece and Hix are not suited for architectural assessment because of the following reasons: • Very little is mentioned about usability requirements in scientific literature. In addition, real-life examples are rarely provided. Preece for example, presents much advice on usability requirements, but in a rather abstract setting without real-life examples. Traditionally usability specifications are rather defined in an abstract fashion and therefore not suited for architectural assessment. • Traditionally usability requirements have been specified such that these can be verified for an implemented system. However, such requirements are largely useless in a forward engineering process. For example, we could say that a goal for a system is that it should be easy to learn, or that new users should require no more than 30 minutes instruction, however, requirements at such a level are hard to assess on an architectural level, because those can only be measured when the system is in use. Such statements are therefore useless for architectural assessment of usability. A more suitable format (as argued in section 1.1) for specifying required usability for architectural assessment is by using scenarios. Scenario profiles are increasingly often used for the assessment of quality attributes during the architectural design of software systems [12]. A scenario profile describes the semantics of software quality factors such as maintainability or safety for a particular system. A usage profile is defined as: “a description of the semantics of usability for a particular system in terms of scenarios”. Scenario profiles are created using the following steps: 1) Identify the context of scenario profile (SP) generation. 2) Identify all scenario entities for usability 3) Create usage scenarios 4) Scenario elicitation 4.2.1 Identify the context of SP generation. A scenario profile can, basically, be defined in one of two contexts [13]: the Greenfield and the experienced context. If a scenario profile is defined in an organization using the technique for the first time, for a new system and no historical data is available about similar systems, the profile definition fully depends on the experience, skill and creativeness of the individuals defining the profile. The resulting scenario profile is the only input to the architecture assessment. The lack of alternative data sources in this case and the lack of knowledge about the representativeness of scenario profiles defined by individuals and groups, indicates that there is a need to increase our understanding of profiles in this situation. In the second situation, there is either an earlier release of the system or historical data of similar systems available. Since, in this case, empirical data can be collected, this data can be used as an additional input for the next prediction and a more accurate result is achieved. 4.2.2 Identify all scenario entities for usage scenarios. A scenario is defined as: "Scenarios refer to interactions between independent entities [14]. Entities for example can be stakeholders, the system (or possibly parts of it such as hardware, software, subsystems, objects) and the environment" There are different ways to interpret the definition of scenario. In object oriented design methods a scenario generally refers to use case scenarios; scenarios that describe system behavior. However it is also possible to use the definition above so it describes actions or sequence of actions that might occur in relation to the system. For example usage scenarios describe system behavior whereas change scenarios describe an action (a modification task) in relation to the system. Entities as defined in the definition above play an essential role in defining scenarios. For example the entity stakeholders is taken into account because different stakeholders in the software lifecycle take different viewpoints when expressing their concerns about a software system. These viewpoints reflect the stakeholders' differing needs with respect to the software architecture [15]. Because of that the different needs of each stakeholder directly relate to the different needs concerning quality attributes and hence to different needs concerning its software architecture. The same argumentation holds for other entities such as the context in which the stakeholder operates or the hardware that impose requirements on the quality attributes. Identification of all entities that influence a particular quality attribute is essential for defining a scenario for that quality attribute. For usage scenarios the following entities have been identified that define a usage scenario: • The user (as a stakeholder) • The context in which the user operates (as part of the environment) • The tasks that a user can perform (as part of the system). 4.2.3. Create usage scenarios. The way scenarios are created or defined for a quality attribute largely depends on the entities that define the scenario for that particular quality attribute. For usability the following activities are defined: 1. Identify the users: A representative list of distinct users has to collected and defined. Examples: Novice users, expert users or system administrators. 2. Identify the tasks: The next step is identification and selection of distinct tasks. Most systems have a lot of different tasks; therefore a representative selection of these tasks that are distinct has to be made. For example a task could be: insert new customer in database. 3. Identify the context: The third step is determination of the unique contexts in which each user operates. Examples: helpdesk context or training environment. 4. Create attribute preference table: The attribute preference table (APT) is defined to relate a scenario to usability. Because a scenario consisting of a user, a task and a context only describes interaction we have defined a way to relate it to usability. To express the usability issues a user has while performing a task in a specific context the scenarios are related to our usability attributes as defined in [6]. To relate a scenario to usability we determine the usability attribute values for that particular scenario. For example for a novice user performing a task “insert order” in a “learning environment” the learnability attribute of usability may be important. The APT expresses the required usability for that scenario. An example of an APT can be found in Table 1 By defining the APT the required usability is quantified by stating the users’ preference concerning usability for that scenario. For each type of user, task and context, the user’s preferences concerning usability is determined. There are various ways to determine quantitative values for the preference to usability. It can be done as part of requirements collection process: typical users or experts assign values, for example they assign values between 1 to 5 to each attribute for each task and context. The assigning of values can also be done as a post requirements process (during assessment), where an expert (or a team of experts) determine values for the usability preferences, the usability requirements that are collected during requirements analysis can then be used as an informative source for assigning the values. 4.2.4. Scenario selection. The attribute preference table that was created in combination with a descriptive list of users, tasks and contexts of operation can be used to summarize and describe the different scenarios that have been created. From this table, which holds all scenarios a scenario, profile is created by selecting scenarios that are representative. Scenario selection is the process of selecting those scenarios that are to be used in the assessment step of the analysis. Scenario selection results in a scenario profile which holds the set of relevant scenarios which will be evaluated. A scenario profile is a Table 1: Example APT Scenario attribute preference table User Task Context A A A A B B B … T1 T2 T3 T4 T1 T1 T2 … C1 C2 C1 C2 C1 C2 C1 … Learnability 5 5 1 1 …. Efficiency of use 2 5 1 … Reliability 4 3 3 3 … Satisfaction 3 2 3 3 … set of scenarios that form the context for a quality requirement posed on the system. Different profiles may be defined depending on criteria for selecting the scenarios into the profile. The selection criteria influence the representativeness of the scenario profile, since in essence it is a kind of population sampling strategy. Two types of general scenario profiles have been identified: • Complete scenario profile: “all scenarios that can potentially occur” • Selected scenario profile: “a representative subset of the population of all possible scenarios Scenarios may be assigned additional properties, such as an associated weight, priority or probability of occurrence within a certain time. The selection of usage scenarios also depends on the goal of the analysis, if the goal is to: • Predict the level of a quality attribute: Select scenarios that have high probability of occurring. • Risk assessment: select scenarios that expose those risks. • Software architecture selection: select scenario that highlight differences The process of identifying scenario entities, scenario creation and scenario selection are often combined performed in one process called scenario elicitation. 4.3 Describe the software architecture The third step, architecture description, concerns the information about the software architecture that is needed to perform the analysis. Generally speaking, usability analysis requires architectural information that allows the analysis to evaluate the scenarios. The result of this step is a description of the provided usability. Information related to the architecture; for example, box and line diagrams or documented design decisions, may provide data about various quality attributes but since our interest lies in usability only the information that is related to usability is required. To achieve this, the information required is extracted using our framework described in section 3. Different types of assessment techniques have been defined depending on the amount of architectural information that is available for assessment or what information one is willing to acquire to get a more accurate result from the assessment. The following subsection discusses the different assessment types defined and the architectural information necessary to perform that type of assessment. 4.4 Evaluate Scenarios Assessing an architecture for its support of a particular quality attribute basically comes down to a comparison between the required values of that particular quality attribute versus the provided value of that quality attribute. For usability assessment the required usability ‘levels’ are compared to the provided usability ‘levels’. The levels are specified by scenarios. In section 2.2 a technique is discussed for capturing and describing the required usability using scenario profiles. For each scenario in the scenario profile the architecture is analyzed for its support of that scenario. The process that identifies the support for the scenarios is defined as architectural support analysis. Eventually the results from the analysis are summarized into an overall result. For example the number of supported scenarios versus the number scenario not supported. This number will be an indication of the support of the architecture for its support of usability. Three different types of assessment have been defined (as depicted in Figure ): • Pattern based • Design decision based • Use case map based The framework is used to extract the architectural information required for each assessment technique. 4.4.1. Pattern based. By analyzing an architectural description of the system an expert assesses the architectures support of usability. The architecture designs present within the development are used as a source of input for this type of assessment. The architectural design can be a simple box and line diagram Figure 3: Scenario based assessment techniques or for example a 4+1 view on the architecture. These designs can provide a lot of information about quality attributes and since the subject of our evaluation is usability we are only interested in those parts of architecture information that are related to usability. To acquire this information we use the framework to extract the required information. For expert based analysis an identification of patterns that influence usability in the system is required. By heuristically evaluating the system using the list of patterns identified in [6] a list of patterns or possible derivatives of those patterns implemented can be identified. The list usability patterns present in the software system should provide the information necessary for the software engineer to decide if a scenario will be supported by the architecture. For each scenario the software engineer will determine which patterns are involved and whether the usage scenario is sufficiently supported. 4.4.2. Design decision based. Not only a description of the structure of a system as it is decomposed into components and relations with its environment may be used for analysis. The design decisions that led to that particular architecture are also very important. The earliest design decisions may have a considerable influence on various quality attributes of the resulting system. However such design decisions which are made during design are most often not documented. If they have been however they may be used as a source of input for this type of assessment. For design decision based analysis it needs to be determined which design decisions have been made with regard to usability. By heuristically evaluating the design decisions made during design, using the list of usability properties defined in our framework the required information for the assessment (the design decisions that relate to usability) is extracted. This type of assessment heavily depends on the amount of information documented during or after initial architectural design. If no design decisions have been documented, this information could be retrieved by interviewing the system architect(s). For design decision based analysis, the list of design decisions that have been extracted using the framework is used to determine the support for each usage scenario. For each scenario we analyze if a scenario is affected by the design decisions and whether this has resulted in sufficient support for that scenario. 4.4.3. UCM based. An even more detailed way of assessing is to use use case maps (UCM) for describing the architecture. Using UCM for describing the architecture has the following benefits: • Use case maps describe behavioral and structural aspects of systems at a high (architectural level) of abstraction • UCM are easy to learn & understand but precise. • Use case maps can show multiple scenarios in one diagram and the interaction amongst them. (which allows reasoning about a system as a whole) • Use case maps are an informal abstract notation suited to our purposed Architecture designs and design decisions made during design can be provided by the software architect who assists the analysis. Use case maps in case not present can be constructed with the assisting software architect. Based on the scenarios in the scenario profile for each scenario a use case map is build. Some tasks may have the similar or the same use case maps. The use case map allows us to analyze various static properties that relate to the usability attributes layer in our framework. For example a use case map may visualize the number of steps or time it takes to perform a task. The number of steps may be an indication to the efficiency or learnability attribute. Next to providing static information use case maps allow close analysis of architectural components (such as a patterns) involved in that particular scenario. The information gathered during this analysis is an extra source of input for the architectural support analysis of the scenarios. 4.4.4. Summarize: The types of assessment techniques presented here are complementary as shown in Figure . In general expert based assessment can be applied in most cases, assuming that at least some basic form of Figure 4: Assessment process architectural description has been made for design which allows for identification of patterns. Design decision and use case map based assessment may give additional information for the architectural support analysis. However because these types of required information are not always present these can be retrieved or created by interviewing the system architects, which has its costs. [1] R. Kazman, G. Abowd and M. Webb, "SAAM: A Method for Analyzing the Properties of Software Architectures", Proceedings of the 16th International Conference on Software Engineering, 1994, pp. 81-90 4.5 Interpret the results [3] J. Bosch, Design and Use of Software Architectures: Adopting and Evolving a Product Line Approach, Pearson Education (Addison-Wesley and ACM Press).2000. When the scenario evaluation has been finished we need to interpret the results to draw our conclusions concerning the software architecture. At this stage we go back to our architecture design stage (see Figure ) where we wondered if this architecture had sufficient support for usability. The interpretation of the results depends entirely on the goal of the analysis and the system requirements. If the architecture proves to have sufficient support for all quality attributes the design process is ended. Otherwise we need to apply architecture transformations or design decisions to improve certain quality attribute(s). The choice to use particular transformations may be based upon results from the analysis. For example: Consider a system, which proves to have a low support for usability, for example learnability for some usage scenarios is not supported. To improve learnability we could use the design primitive of guidance, to address guidance we could implement for example a wizard pattern or provide context sensitive help. 5. Conclusions The work presented in this paper is motivated by the increasing realization in the software engineering community of the importance of software architecture for fulfilling quality requirements. We have presented a provisional assessment technique for usability based on scenarios, which has potential to improve current design for usability. Future case studies should determine the validity of our approach to refine it, possibly redefine and elaborate the steps that should be taken to make it generally applicable. Several issues need to be resolved during case studies, which have been summarized below: • Relevance of framework: The relationships depicted in our framework indicate potential relationships. Further work is required to substantiate these relationships. • Use case maps: may provide information about static properties of usability. More research is required to determine whether use case maps can provide that kind of information. The main contribution of this paper is the formulation and derivation of an architectural assessment approach for usability. 6. References [2] R. Kazman, M. Klein, M. Barbacci, T. Longstaff, H. Lipson and J. Carriere, "The Architecture Tradeoff Analysis Method", Proceedings of ICECCS'98, 1998 [4] IEEE Architecture Working Group. Recommended practice for architectural description. Draft IEEE Standard P1471/D4.1, IEEE. [5] P. O. Bengtsson; N. Lassing; J. Bosch and H. van Vliet ,"Architecture-Level Modifiability Analysis (ALMA),", Conditionally Accepted for the Journal of Systems and Software, 2002. [6] E. Folmer and J. Bosch, "Usability patterns in Software Architecture", Accepted for HCI International 2003, 2003 [7] E. Folmer and J. Bosch ,"Architecting for usability; a survey", Accepted for the Journal of systems and software, 2002. [8] M. Welie and H. Trætteberg, "Interaction Patterns in User Interfaces", Conference on Pattern Languages of Programming (PloP) 7th, 2000 [9] J. Tidwell, "Interaction Design Patterns", Conference on Pattern Languages of Programming 1998, 1998 [10] J. Preece, Y. Rogers, H. Sharp, D. Benyon, S. Hollandand T. Carey, Human-Computer Interaction, Addison Wesley.1994. [11] D. Hix and H. R. Hartson, Developing User Interfaces: Ensuring Usability Through Product and Process., John Wiley and Sons.1993. [12] J. Bosch and P. O. Bengtsson, "Assessing optimal software architecture maintainability", fifth European Conference on Software Maintainability and Reengineering, 2002 [13] P. O. Bengtsson and J. Bosch ,"An Experiment on Creating Scenario Profiles for Software Change", special issue on Software maintenance in Annals of Software Engineering (ISSN: 1022-7091 ), vol. 9 59-78, 2000. [14] J. M. Caroll, 1995. The Scenario Perspective on System Development, in Scenario Based Design: Envisioning Work and Technology in System Development. Caroll, J. M., John Wiley and Sons. [15] C. Gacek, A. Abd-Allah, B. Clark and B. Boehm, "On the Definition of Software System Architecture", 1995