USABILITY -From Desire to Design Tina Celia John B.S., Jawaharlal Nehru Technological University, India, 2009 PROJECT Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in SOFTWARE ENGINEERING at CALIFORNIA STATE UNIVERSITY, SACRAMENTO FALL 2011 USABILITY -From Desire to Design A Project by Tina Celia John Approved by: __________________________________, Committee Chair Ahmed Salem, Ph.D. __________________________________, Second Reader Robert Buckley. ____________________________ Date ii Student: Tina Celia John I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the Project. __________________________, Graduate Coordinator Nikrouz Faroughi, Ph.D. Department of Computer Science iii ________________ Date Abstract of USABILITY -From Desire to Design by Tina Celia John Defined by the ISO as "The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency, and satisfaction in a specified context of use", Usability came to light when it slowly turned out to be the sole reason for the failure of several software projects, both big and small. Though simple in definition, it remains ambiguous in practice since there is no way to measure the human mind and perception. Studies have shown and researches have proved that Usability is one of the key factors for a product to thrive and survive in the market. The reason for this is that Usability that was once restricted to being a measure of how efficient the User Interface of a product is, has over the years, grown beyond those shackles and now stands associated with not just the interface but the functionalities of a product as well. This new face of Usability brings with it the need to reconsider the method in which Usability was built into a project. Usability was often discussed as a non-functional requirement during the Requirements Gathering phase and then shelved until it was brought out while designing the interface iv for the product. But today, the whole idea of Usability has changed; it does not just focus on the final interface, rather on the entire product. Due to this, it becomes essential for developers to consider the idea of “ease-of-use” while designing the system itself. This project thus proposes a new approach of incorporating the mental model of a user, as a factor that needs to be considered while working through the Requirements and Design phases. I intend to contribute an approach/ a model, which would be supported by a real time example, to prove the same. In addition to it, I would like to come up with a prototype of an automated tool that would implement the ideas proposed by my model. It would help us rethink the generic method of designing, by giving us a new approach of how to come up with a design that takes the user's mental model of what they do and what they need to do and translates that into the design of the software. The entire focus of this approach would be to keep the ultimate end user in mind while not just gathering requirements or creating an interface but instead during the other phases of the project development as well. _______________________, Committee Chair Ahmed Salem, Ph.D. _______________________ Date v ACKNOWLEDGMENTS I would like to take this opportunity to thank all the people who have been involved in this project, without whose professional knowledge, guidance and encouragement, this project would not have been successfully completed. I would like to profoundly thank my project advisors, Dr. Ahmed Salem and Prof. Robert Buckley, for giving me an opportunity to work under their guidance. Their professional inputs, advice and corrections are the key ingredients that went into making this project a success. I would also like to thank Ms. Rachel Hernandez, User Acceptance Test Lead, CGI; for being supportive and sparing her time to work with me and for accepting to incorporate the ideas proposed by this project, as part of their work strategy. I would like to specially thank my friend, Sandeep Pedditi, for contributing innovative ideas and making my project an interesting experience. Last but not the least; Special thanks to my family for their constant support and belief in me, though far away, their every word of encouragement helped me fight all challenges and motivated me toward successfully completing my project and earning my Masters Degree. vi TABLE OF CONTENTS Page Acknowledgments.............................................................................................................. vi List of Tables ..................................................................................................................... ix List of Figures ..................................................................................................................... x Chapter 1. INTRODUCTION .......................................................................................................... 1 1.1. The Need for Usability ......................................................................................... 1 2. BACKGROUND OF THE PROBLEM ......................................................................... 8 2.1. What is Usability? .................................................................................................... 8 2.2. Major Components of Usability ............................................................................... 8 3. REVIEW OF THE LITERATURE and METHODOLOGY ........................................ 15 3.1. User-Centered Design Approach............................................................................ 19 3.2. User Analysis ..................................................................................................... 22 3.3. User’s Mental Model .......................................................................................... 25 3.4. Behavioral Model ............................................................................................... 32 3.5. Task Analysis ..................................................................................................... 32 vii 3.6. Usability Testing .................................................................................................... 34 4. ‘YOU-I DESIGN’ TOOL ............................................................................................. 37 4.1. Introduction ............................................................................................................ 37 4.3. User Analysis ......................................................................................................... 39 4.4. Requirements .......................................................................................................... 42 4.6. Idea Proposed for “User Case Diagrams” .............................................................. 50 4.7. Paper Prototype ...................................................................................................... 56 4.8. Prototype Screenshots ............................................................................................ 63 5. CONCLUSIONS AND FUTURE WORK ................................................................... 70 5.1. Conclusion .............................................................................................................. 70 5.2. Future Work ........................................................................................................... 71 Appendix A ....................................................................................................................... 72 Bibliography ..................................................................................................................... 78 viii LIST OF TABLES Table 1: User Characteristics ......................................................................................................... 41 Table 2: High Level Requirements ................................................................................................ 42 Table 3: List of Detailed Requirements ......................................................................................... 42 Table 4: Hardware Interface Requirements ................................................................................... 44 Table 5: Software Requirements .................................................................................................... 44 Table 6: Login Scenario ................................................................................................................. 48 Table 7: Create Sticky Scenario ..................................................................................................... 49 Table 8: Create Scenarios Scenario ............................................................................................... 50 ix LIST OF FIGURES Figure 1: The DOS Prompt ................................................................................................. 3 Figure 2: Windows 1.0 GUI................................................................................................ 4 Figure 3: Windows 95 GUI................................................................................................. 5 Figure 4: The latest GUIs .................................................................................................... 6 Figure 5: Detailed SDLC .................................................................................................. 15 Figure 6: Modern SDLC versus Human Centered Systems Development Methodology 17 Figure 7: Mental Model .................................................................................................... 25 Figure 8: Overall System Design ...................................................................................... 33 Figure 9: System Use Case Diagram ................................................................................ 45 Figure 10: Administrator Functions Use Case Diagram ................................................... 46 Figure 11: User Functions ................................................................................................. 47 Figure 12: Use Case Diagram components ....................................................................... 51 Figure 13: Level 1 User Case Diagram ............................................................................. 52 Figure 14: Level 1 User Case Diagram ............................................................................. 53 Figure 15 : Level 3 User Case Diagram ............................................................................ 54 Figure 16: Login Screen.................................................................................................... 56 Figure 17: Welcome Screen .............................................................................................. 57 Figure 18 : List of options ................................................................................................. 58 Figure 19: Create a Sticky................................................................................................. 59 x Figure 20: List all Stickies ................................................................................................ 60 Figure 21: Create Scenario................................................................................................ 61 Figure 22: User-Case Diagrams ........................................................................................ 62 Figure 23 : Welcome Screen ............................................................................................. 63 Figure 24 : Create Sticky Group ....................................................................................... 64 Figure 25 : Create New Sticky .......................................................................................... 65 Figure 26 : View Sticky List ............................................................................................. 66 Figure 27 : Create Scenario Group ................................................................................... 67 Figure 28 : List Scenario Groups ...................................................................................... 68 Figure 29 : Create New Scenario ...................................................................................... 69 xi 1 Chapter 1 INTRODUCTION 1.1. The Need for Usability Defined by the ISO as "The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency, and satisfaction in a specified context of use", Usability came to light when it slowly turned out to be the sole reason for the failure of several software projects, both big and small. Though simple in definition, it remains ambiguous in practice since there is no way to measure the human mind and perception. Studies have shown and researches have proved that Usability is one of the key factors for a product to thrive and survive in the market. The reason for this is that Usability that was once restricted to being a measure of how efficient the User Interface of a product is, has over the years, grown beyond those shackles and now stands associated with not just the interface but the functionalities of a product as well. This new face of Usability brings with it the need to reconsider the method in which Usability was built into a project. Usability was often discussed as a non-functional requirement during the Requirements Gathering phase and then shelved until it was brought out while designing the interface for the product. But today, the whole idea of Usability has changed; it does not just focus on the final interface, rather on the entire product. Due to this, it becomes essential for developers to consider the idea of “ease-of-use” while designing the system itself. This 2 project thus proposes a new approach of incorporating the mental model of a user, as a factor that needs to be considered while working through the Requirements and Design phases. This project contributes an approach and a prototype of a tool, which would be supported by a real time example, to prove the same. This approach would help us rethink the generic method of designing, by giving us a new stand of how to come up with a design that takes the user's mental model of what they do and what they need to do and translates that into the design of the software. The entire focus of this approach would be to keep the ultimate end user in mind while not just gathering requirements or creating an interface but instead during the other phases of the project development as well. The four following figures will walk you straight into the importance of Usability and the evolution of it thereof: 3 Figure 1: The DOS Prompt 4 Figure 2: Windows 1.0 GUI 5 Figure 3: Windows 95 GUI 6 Figure 4: The latest GUIs Which one would you prefer? The answer is needless to say. The transition of software products over the years has a story of its own to tell, the moral of which is: Usability lies not just in impressive appearances but in how efficiently it helps users accomplish their tasks. 7 1.2. Motivation During my masters program, I had taken a “Human Computer Interface Design” course, this course turned out to be an eye-opener. This course introduced to us a concept that existed but never paid attention to; ‘Understanding the User’. I was very interested in the concept and tried to research on it. The book, by Alan Cooper; ‘About Face- the Essentials of Interaction Design’,[1] had very clearly listed what a goal directed design should be like. My research then led me to find some real good papers that listed means and methods of adopting the techniques of better Usability. Some of the techniques that were widely being discussed were that of building a user Persona, creating scenarios, storyboarding etc. To me, all these were excellent techniques, but there were two thoughts constantly lingering in my head; 1. Where in the entire Software Development Life Cycle can I fit these techniques? 2. How can I transform the output of these techniques into a good design? It was these two thoughts that form the major ideas of my project. I began thinking critically about how to go about my project when I recalled my professor’s words “When you start a project, do not delve into the details of ‘How’ to implement it, rather spend quality time on identifying ‘What’ needs to be accomplished!” Thus without delving further into the details of how I intend to implement the proposed idea, I began to try to draw a boundary around my understanding of usability, the outcome of which is listed in the upcoming chapters of my paper. 8 Chapter 2 BACKGROUND OF THE PROBLEM 2.1. What is usability? Usability is a quality that the system is built on, which certifies it to be easy to adapt to, user-friendly, error tolerant, pleasing to the user not just by its looks and feel but also through its functionality. A more clear and concise definition has been given by ISO as “the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use”. The methodology employed to achieve usability involves understanding the user that the system is being built for, trying to relate to the tasks that the user would perform, prioritizing these tasks to make a list of what’s more essential, designing the interface keeping in mind all the attributes gathered from the study of the user and his perception of the system. 2.2. Major Components of Usability Designing a usable interface requires an understanding of the seven key components of usability.[2] These seven components pose a challenge to the designers, challenging their ability to come up with a design that would help users effortlessly work their way through the product being built. It is these components that many a time serve as a checklist for the designers as well. 9 The 7 key components are: Learnability Consistency Memorability Error Prevention Efficiency Satisfaction Accessibility The benefits of these components are enormous and their impact far reaching. Considering these components in building a user interface not only assures a good product but also a longer product lifetime. Designing a system fully using the components of usability and testing early, often against representative users increases its overall performance, acceptance, and likelihood of success. A brief overview of each of these components should give you a better idea of why they stand as pillars that uphold Usability; 2.2.1. Learnability The learnability of a system is the ease with which users that are unfamiliar with the System are able to accomplish their required tasks. From the beginning of the project, the System’s design should maximize learnability. 10 The idea that learnability must come at the price of efficiency is a myth. In reality, the two are interrelated. Increasing learnability means structuring tasks in such a way that they are easy to learn and quick to accomplish. Learnability is often confused with the idea of intrusive help; ease of learning should be accomplished by the simplicity of the design, avoiding the need for users to work their way through bulky user manuals and reference guides. An easily decipherable system speeds up the completion of tasks, even for the experienced user. Thus designing for learnability involves more than just providing step-by-step instruction; it calls for designers to pay attention to consistency and memorability, while proposing the design of the interface. 2.2.2. Consistency Consistency refers to the uniform application of common metaphors, concepts, terms, processes, and visual elements across the System. Consistency can increase the learnability and memorability of the System. Flexibility in the design of user interfaces provides the developer with multiple ways to represent a given task. What might appear to be the simplest way to perform a given task may not actually be the easiest if it is inconsistent with the rest of the System. If a user must remember that a certain action has two different results based on where they are in the System, the extra mental processing required far outweighs any short-term savings in the individual task. This brings back the discussion of a learning curve being involved in being able to adapt to a change in a product or a new product itself. 11 2.2.3. Memorability The memorability of a system refers to the ability of the System’s users to remember how to use it after a period has elapsed, often weeks or months. Functional consistency helps increase memorability. When users remember how to perform specified commands, they spend less time searching. The most efficient users are those that know “where to go” to perform their tasks. Other contributors to memorability include naming choices, logical site structure/hierarchy, and the spatial arrangement of interface options. Spatial memory is subtle yet incredibly powerful and should be cultivated wherever possible. 2.2.4. Error Prevention Systems that prevent users from making mistakes, and allow users to recover if they make mistakes, are more usable than Systems that do not prevent errors or do not allow users to recover from mistakes. Users should feel free to explore the System. They should be able to undo an action and then return to their place of origin. In addition, whenever the user is about to commit a destructive action that cannot be undone (one that permanently changes data or erases their previously entered data), they should be presented with an appropriate opportunity to stop or confirm the action. Rather than slow the user down, this undo option allows the user to feel comfortable and confident in their environment, knowing that minor changes can be undone and that changes with a larger impact do not occur without confirmation. 12 The goal is not to clutter the interface with alert boxes verifying at every corner that a user is sure they want to do something, but rather to provide users with the ability to avoid or easily correct their mistakes. 2.2.5. Efficiency The efficiency with which the user can complete their tasks in the System affects its usability. The previous four components all contribute to efficiency in a number of ways. Users that are comfortable with their environment and its ability to help them prevent errors tend to spend much less time contemplating their actions. Users that are familiar with the System’s navigation and interface spend less time trying to master the mechanics of the System and more time completing their tasks. Interface structure, navigation, data representation, and text readability are additional factors that increase efficiency. 2.2.6. Satisfaction Users’ subjective satisfaction with the System contributes directly the overall success of the System. Users should perceive the System as an enabling tool rather than a barrier between themselves and the tasks they need to accomplish. Under no circumstance should users feel like the System is second-guessing their decisions. Most importantly, users need to feel like they are in control of the System. Considering ease of use, 13 aesthetic design, and proper tone of language can help mitigate this disparity and increase overall satisfaction. 2.2.7. Accessibility Accessibility refers to the ability of a system to accommodate the largest possible audience, including those users who may be disabled or who must access the System using special assistive technologies. Accessibility involves more than providing a textonly version of the System. Accessibility means understanding all users and their needs. Taking the steps to make the System accessible to all users increases the usability of the System, not only for those individuals with special needs or disabilities, but also for all users. These 7 components clearly and concisely outline the importance of usability and the factors that need to be considered therein. The myth that does the rounds states that close communication with the user helps the designer. Communicating with the user might help a designer or the usability team, understand the problems a user faces, they may be able to figure out how to prevent errors or how simple to make the interface but mere communication will not give the designer any idea of the learnability, memorability, efficiency or satisfaction. To be able to understand all that, a designer should go beyond words, he should observe the users, 14 their regular tasks, how they interact with the system or a similar system, actions certainly speak louder than words! The kind of inputs that can be received from observing and working with the user cannot be matched by even the best questions posed to them. “ Kenneth Craik suggested in 1943 that the mind constructs "small-scale models" of reality that it uses to anticipate events.”[15] This idea crept into the Human Computer Interface world too and researchers started working on identifying a means to understand the user’s mental models in order to build a system closest to their expectations. Similar research and work have been covered by authors like Scott McDaniel, Alan Cooper, Craig Tomlin and other researchers who have written articles and papers to propose easy techniques to work with users and understand them better. Alan Cooper’s team, at Cooper are working research and come with strategies that have formed a basis for the ideas used in this project.[16] “As designers and developers of a product, we are often too close and too attached to what we make to see how something may not be obvious to an uninformed user.” – Pek Pongpaet.[4] 15 Chapter 3 REVIEW OF THE LITERATURE and METHODOLOGY A clear understanding of the components of Usability encouraged me to think further into the two ideas I was to work on; the next step for me was to be able to incorporate the usability piece into the SDLC so that it is introduced much earlier into the lifecycle of the project, ensuring that it grows as the project grows. A study of the existing SDLC, made me feel it’s complete, and that there was more than just a reason behind the software industry to follow this rigid pattern of a life cycle model. Figure 5: Detailed SDLC 16 There have been countless articles and numerous studies on the SDLC and researchers have given it their best shot, trying to modify it seemed nothing but impossible to me; It was then that I stumbled upon a white paper, one I consider very well written; ‘Integrating HCI in SDLC’[4]. Written by a group of professors, this article clearly chalks out the ideology of incorporating, in their case Human Computer Interaction, into the SDLC. They proposed a new SDLC model, named ‘Human-Centered Systems Development Life Cycle (HCSDLC) Model’. There is a lack of clarity about Usability (precisely Human Computer Interaction) and its role in the systems development life cycle (SDLC). One pre-existing myth that has blinded the software industry is that usability is only about the final user interface design, such as format, menu layouts, choice of colors, icon design, and screen layouts etc. Many popular textbooks and courses contain only one or two chapters in the design stage of SDLC to cover user interface issues. What we often overlook is the fact that users are most frustrated or annoyed by problems that are way beyond the computer screen level. Illogical overall organization of data/information in the system, lack of task support, misfit between the nature of the task and the support provided, difficulty of navigation, and inconsistent mental models of system operation are among the major problems or difficulties users’ experience.[4] These incompatibilities may affect user reaction, acceptance, and use of the system. These issues critically affect users’ interaction with the system, they can even lead to the system being completely rejected by the users, 17 leading to failure of the entire project. This can be avoided by addressing such issues during usability development practices. A better understanding of various human cognitive, affective, and behavioral factors involved in users’ tasks, problem solving processes and interaction contexts is required to address these problems. The new ‘Human-Centered Systems Development Life Cycle (HCSDLC) Model’ proposed versus the already existing model is well depicted in the figure below: Figure 6: (a) Modern SDLC versus (b) Human Centered Systems Development Methodology 18 This model sparked new thoughts as the future work of this paper welcomed anyone to think further and implement detailed steps into each of these phases. I studied the model further and came to a consensus that this was indeed a perfect step for developers/designers not just to start thinking about usability but also to start involving the users, only then can usability be a effectively designed as part of the System design. The only point that I did not quite agree with was the position of the User Acceptance test phase, I would rather have it after the Task Analysis step. Having a good understanding of the user, the tasks intended to be performed and the functionality the system is entitled to comprise of, would give the developers a clearer mindset of the kind of test cases to come up with and also lets them anticipate the users’ expectations. Now that we have seen how and where in the SDLC, the feature of Usability designing can be incorporated, the rest of the paper focuses on outlining a strategy to accomplish it. In a nut shell, this paper talks about: Adopting the User-Centered Design approach Techniques of understanding the users ( ie. Users’ Mental models and Behavioral Models) Methods of communicating users’ needs Actions to validate that the designers are moving in the right direction and Finally, a prototype of a potential tool that will help capture all the above mentioned actions. 19 3.1. User-Centered Design approach The User-Centered Design Approach, can be defined as ‘a process that emphasizes on the end user, his needs, his wants and his expectations toward the system being built.’ These desires of the user are given extensive attention through each stage of the design process, as designers work to design a system that best fits the identified requests. The usercentered design process in no magic, it has been built by understanding the psychology of the users’. This approach was proposed after years of research and several experiments, which resulted in not just a theoretical process but also outlines a set of practical steps that can be put to use instantly. User-Centered Design encompasses 3 key features: 1. Observing and understanding the users of the system – This step is the most critical in the UCD process since it forms a bases for the rest of the process. It is the goal of the designers or usability team, to observe the users and the activities they perform. This kind of observation is done in the users’ natural environment, so that he is comfortable with his surroundings and works normally. All conclusions and observations are drawn from looking at the users work; this limits the need for designers to make assumptions. This step can be considered complete when designers are able to answer the following questions: Who are the users of the system? 20 What are the users’ tasks and goals? What are the users’ experience levels with the system or similar systems? These three questions are summed up as the Users’ Mental Models and Behavioral Models. These aspects are discussed in detail in the User Analysis section. Based on the observations made, designers are required to come up with a Persona or in other words, a ‘Virtual User’ of the system. This persona has a name and a form; this gives it a more realistic edge. The persona is considered to be the perfect user of the system, some of the characteristics are: It portrays all the requirements proposed by the users Has the skill set and experience level of the users Meets the demographic constraints and cognitive intelligence similar to that observed in the users. 2. Designing for the Persona - All the effort put into reading the users and building a persona gets paid off here. Designers now need not consider the hundreds of users; they can just keep the one persona in mind. They can build prototypes and validate it against the persona’s limitations and traits; they can question the designs built as well, before presenting it to the user himself. This step is considered complete when the designer can clearly see through the following questions: 21 What functions do the users need from the system? What information might the users need, and in what form do they need it? How do users think the system should work? 3. Working with the users throughout the designing process – The glue that binds this entire process is the user. Working with the user is thus the key to the user-centered design approach. The only golden rule that is followed throughout this process is ‘Involve the user by consulting, validating and questioning every action and assumption that will transform into the final system design.’ Once the design is built right, the system will follow pursuit. These are the simple steps of adapting the User-Centered Design approach. The myth that does the rounds in the development world is the only limitation to this approach ‘This approach is cumbersome and the level of detail is not required for every project.’ Agile Development teams have adapted this approach and certify that this preliminary work saves tons of ‘trace back and revert’ time in the end, thus conserving cost and resources. 22 3.2. User analysis User Analysis simply implies, studying the user and coming to a consensus of who he is, what he desires versus what he needs and his expectations. The more effort put into identifying these traits will reap fruitful results, ensuring a smooth flow of the development process. It is via this process that the usability team needs to identify the target users and their characteristics. These characteristics include Demographic data, such as age, gender, education, occupation, cultural background, any special needs, computer training and knowledge, experience with similar systems/products, etc. Traits and intelligence, such as cognitive styles, affective traits, and skill sets or capability; and Job or task related factors, such as job characteristics, knowledge of application domain and job familiarity, frequency of computer use for the job and usage constraints.[5] Surveys and questionnaires can be useful in collecting demographic data. They can help determine the users' prior knowledge and level comfort with the tasks to be performed. Another technique known as Contextual Inquiry, involves observation at the user's work site. This method is used because a user’s understanding of his work often depends on being in the actual work environment. Users may not accurately describe the work that they do correctly or comprehensively, during an interview or via a research, most of their work may be implicitly understood or performed in a habitual manner. In contextual inquiry, evaluators observe and record a user's actions as they go about a typical work 23 day. A great deal of information can be gathered about the user's environment, workflow, business processes, and use of technology. While all the above mentioned traits give you an understanding of whom the system will be presented to, it is also very important to understand ‘what is the users’ expectation of the system that is going to be presented to them’. It is certainly a challenge for the usability team to understand the users’ perceptions, since these are more so impalpable characteristics that are innate in a person’s mind. Listed below are the three factors that play a key role in forming an idea in a person’s mind, they are: 1. Perception - Perception relates to the way people acquire and organise sensory information. It involves the acquisition of information through the classic five senses (sight, hearing, smell, taste, touch) and processing it to relate it to a past memory or in creating a new memory of it. Of the 5 senses, ‘sight’ is the primary sense used in many situations and the one that is most relevant for the design of computer-based systems. Usable systems recognise the users’ perceptual abilities and limitations and allow them to use this sense in adapting to the tasks to be performed. 2. Decision making - People believe that decisions are made in a logical way by evaluating options and making rational decisions. In practice, most decisions are not made this way, we rather satisfy ourselves by accepting the first reasonable 24 answer that fits the situation. Designers of systems that help people to make decisions (such as information systems) should thus recognise that users are likely to use the first set of information they see, they may not read beyond that, much less go scrambling around looking for a hidden function. It is very unlikely for them to want to read pop-ups or corrective messages that would flair off the idea of them being wrong each time. 3. Information seeking behaviour - Most information seeking behaviour is one of two types: a. Known-item: People know exactly what information they are looking for, know that it exists and know how to describe what they are looking for. b. Exploratory (unknown item): People are not sure what information they are looking for, may not know how much information there is and do not know how to describe what they want. Some methods of information retrieval suit some tasks better than others, requiring an understanding of how people will approach a particular set of information.[6] These guidelines thus help streamline the minds of the designers, leading them to think more critically about the users they are to design the system 25 for. Once this thought process in brought to action, the next step would be to identify the User’s Mental Model. 3.3. User’s Mental Model The latest new invention is that of a tablet; imagine you are the user and you are asked to read a book on the tablet. The very first thing that comes into your mind is a book and you would try to find a similar approach of reading it on your new device as you had read it the traditional way. This perception is nothing but the mental model of the user. Figure 7: Mental Model 26 Susan Carey’s 1986 journal article, Cognitive science and science education, most aptly describes mental models: A mental model represents a person’s thought process for how something works (i.e., a person’s understanding of the surrounding world). Mental models are based on incomplete facts, past experiences, and even intuitive perceptions. They help shape actions and behavior, influence what people pay attention to in complicated situations, and define how people approach and solve problems. 3.3.1. How Can Mental Models Be Applied in Software Design? Software interfaces should be designed to help users build productive mental models of a system. [7] Common design methods employed to support and influence users’ mental models include: simplicity, familiarity, availability, feedback, safety, and affordances. i. Simplicity Since mental models simplify reality, interface design should simplify actual computer functions. A function should only be included if a task analysis shows it is needed. Basic, most frequently used functions should be more apparent and easily accessible, while advanced functions should be less obvious to users. Cluttering an interface with many advanced functions only distracts users from accomplishing their 27 goals. A well-organized interface that supports users’ tasks fades into the background and allows the user to work efficiently. Experiment: Aim: To observe how users react to different User Interfaces. Process: Present the user with the two search engines, Google and Yahoo. Observe their reaction and work strategy with each. Target users: Users of the age groups 17, 47, 77 who have basic computer skills. Date conducted: 06/20/2011 Results: The final observation showed how the users instantly used the search functionality in Google whereas they got distracted by the news bits and other links on the Yahoo page. The 77 yr old was hesitant to click on any link on the Yahoo page as he feared that some irrevocable change would occur. The completely filled web page was distracting in comparison Google which was clear and had limited, relevant options. ii. Familiarity The ability to relate to an object seen, used or come across in the past makes a person feel that he is familiar with it. This concept should be adapted in design as well; an interface should allow users to build on prior knowledge, or experience gained from interacting with objects in the real world. The use of concepts and techniques that 28 users already understand from their real world experiences creates a level of comfort instantly, this allows them to relate to the system and adapt to it easily. Creating this kind of a comfort zone, not only gives the user the courage to use the system, it also encourages him to explore more without the fear of him going wrong. Advance concepts and techniques can be learned as and when the requirement arises. By choosing to be consistent with something the user already understands, an interface can be made easier to learn, more productive, and even fun to use. [8] iii. Availability An interface should provide visual cues, reminders, lists of choices, and other aids, either automatically or on request. Humans are much better at recognizing things than at recalling them. Users should never have to rely on their own memory for something the system already knows, such as previous settings, file names, and other interface details. The availability of the required options clearly presented adds to the ease of usage tremendously. A user need not have a skill set in order to use a well designed and clearly built interface. iv. Feedback A system should provide complete and continuous feedback to the user, about the results of his actions. Any feedback a user gets that supports their current mental model strengthens it. Feedback that contradicts the current mental model should be 29 presented by supportive error messages, warnings or responses that will help the user to learn from it and adapt to the change. Immediate feedback should be available as that’s the only way a user can assess if his expected outcome was the result of his actions or not. A system that does not give feedbacks poses a risk of being considered as a ‘non-responsive’ interface. v. Safety A user's actions should yield expected results. Let’s take an example: If a user sees a but-con with number on it, clicking it should generate a number on the screen, if a character appears or some unexpected symbol, it would only surprise the user and confuse him. Users should feel confident in exploring, knowing they can try an action, view the result, and undo the action if the result is unacceptable.[8] Users feel more comfortable with interfaces in which their actions do not cause irreversible consequences. vi. Affordances An affordance refers to the properties of an object; it provides clues to how an object can be used. Perceived affordance is what a person thinks can be done with an object. When an interface is built, taking into consideration the affordances by using realworld representations of objects in the interface, users will intuitively know what to do with the object just by looking at it. For example, the camera application in the 30 latest mobiles; a camera in the real world has specific functions like clicking a photo, focusing, zooming etc. the components that are used to perform these functions are a lens, click button, zoom in and zoom out switches, power on and off. Using similar kind of an interface and interaction keys will help users relate to it immediately and they will be able to use their mobiles without much effort or learning. This is an instance of how affordances can be used to better design an interface. [10] 3.3.2. Working with Users to Capture and Validate Users' Mental Models Mental models are a result of people's tendency to form explanations of things they see, interact with or perceive in the world. “Users tend to assume causal relationships when one event immediately follows another. For example, you download a file from the Internet and then your computer crashes. Most people will blame the downloaded file for the crash. The timing of events seems to infer a cause and effect relationship. In reality, there may be no connection at all between the two events. Users tend to create anthropomorphic mental models when interacting with software. They will describe the system as "reading" what is typed in, or "asking me to save." Even more advanced users will curse at their computers when they don't get the expected response.” [1] 31 Another innate behavior is that people tend to blame themselves when they have difficulties using a system, especially when they believe that others are able to use the system and that the task is not very complex. In fact, the problem may be a design flaw and many people may have the same problems but they would have just accepted it and try to find a work around or maybe just ignore the issue sometimes. Sometimes it could simply be that the users feel guilty assuming it is their lack of skill and do not want to admit that they are having trouble or do not understand how a system works.[13] In order to decipher the mental models of the users and to be able to look at the product from their point of view, several techniques have been devised. Some of the top rated techniques, that have proven to draw tremendous results, are listed below: Design walk through sessions, Paper prototyping, Blue prints of the design and finally leading into User Acceptance testing. But before stepping into user acceptance testing, some other parameters need to be determined. All this while we have been focusing on understanding the user’s mental model, an effort needs to be put in to understand how to translate these ideas into concrete functionalities. To determine this, the designers need to understand what tasks are intended to be performed by the users. The behavior model and task analysis help unravel this aspect. 32 3.4. Behavioral Model It does not suffice if the mental model of a user is understood, we need to bridge the gap between the user and the system; this bridge came in the form of a Conceptual / Behavioral model. In order to understand why mental models are so important to designing user interfaces, you have to also understand what a behavioral model is. A conceptual model is the actual model that is given to the user through the interface of the product. Consider the example of an eBook; you have a mental model about what reading a book will be like on the Kindle, how it will work, and what you can do with it. But when you sit down with the Kindle, the “system” (the Kindle) will display what the conceptual model of the book actually is. There will be screens, and buttons, and things that happen. The actual interface is representing the conceptual model. Someone designed a user interface and that interface is communicating to you the conceptual model of the product. Understanding this behavioral model and synchronizing it with the mental model of the user will help in efficient and smart design. Task analysis is a good place to start working on the Behavior model. What then is Task Analysis? 3.5. Task Analysis Task analysis is the process of identifying and understanding users' goals and tasks, the strategies they use to perform the tasks, the tools they currently use, any problems they experience, and the changes they would like to see in their tasks and tools. Tasks may include those that involve the computer and those that are manually performed.[11] For 33 example, a task analysis of a camera app on a mobile, the main tasks the user can relate to it are focusing on a point, zooming in and out, taking a picture, recording a video, etc. Thus looking at all the above mentioned models and how they lead into design, we have a proposed new design module for User Interface design that takes shape from the combination of the Mental model and the Behavioral model. Figure 8: Overall System Design 34 3.6. Usability Testing As important as it is to be able to build usability into the system, that important it is to be able to rightly test the usability of a system. Thus it does not suffice if a system is considered to be user friendly after all the requirements are gathered and after following the above specified standards, we also need to perform the right tests to confirm that we have indeed met all our requirements. I believe that the test would be complete only when it is validated by the users themselves. A team that has been working on understanding the user’s mental model, behavioral model and part took in the Persona building and story boarding kind of activities, according to me are the ones that would form a good test team to validate usability. This Usability team should perform testing early on. Usability testing should involve the following: A group of test users who are a representative sample of the user population and who are not involved with the design of the project A prototype model with which the users may interact A set of scenarios that prompt the users to interact with the prototype A facilitator to introduce and administer the test A group of observers who document the users’ behavior 35 3.6.1. Low-Fidelity Testing Low-fidelity testing makes use of a paper prototype to test early decisions made in the design of the user interface. The user interacts with the drawings as though they were the pages of a System application by writing on the prototype where they would normally type and by pointing to buttons they would normally click. Detailed prototypes are difficult to create, whereas low-fidelity paper prototypes are quick and inexpensive to create. Screens are hand-drawn with pen and ink and deliberately made to look spontaneous and imprecise. It is important that the level of detail in the prototypes invite the right kind of feedback. Prototypes that are too precise and look as though someone has painstakingly drawn them invite the user to scrutinize the details of the prototype rather than its content. The user will point out that the fields are out of alignment, that the colors do not match, or that not enough spacing exists between sections, rather than the more useful feedback that information is missing from the page, or that the order of events does not make sense. Low-fidelity testing not only makes the System more usable, it reveals the kinds of errors early that are very expensive to fix later in the design process. 3.6.2. High-Fidelity Testing In high-fidelity testing, users interact with a detailed computer-based prototype, such as a HyperText Markup Language (HTML) mockup of the application, rather than paperbased prototypes. High-fidelity testing focuses on the details of the interface that a hand- 36 drawn prototype cannot convey. High fidelity testing sessions should begin shortly after low-fidelity testing, when opportunities still exist to modify the application with minimal expense. 37 Chapter 4 ‘YOU-I DESIGN’ TOOL 4.1. Introduction The entire concept of the UI designing thus far was presented to the User Acceptance Test team at ACS, Xerox. The team lead, Ms. Rachel Hernandez was very impressed with the ideas proposed but pointed out the issue that most often, the user acceptance community tries to follow these methods but due to tight timelines, constraints in budgets and less availability of the right tools, it gets dropped and traditional methods are adapted. Well the tight timelines and budget issues are managerial concerns but the nonavailability of a tool is a resolvable constraint. Thus I proposed the idea of a tool, the ‘You-I Design’ tool, to handle UAT concerns. The first step of the process was to have a meeting with the team to understand the problems they are facing currently and what issues would they like for the tool to incorporate. Apart from this, I began to research some of the common problems UAT teams face in their normal work processes. Some of the common problems are listed below; The Problem: o Requirements are documented in never ending paragraphs o Wordy requirements are ambiguous 38 o Sticky notes are used and then placed on a white board, to refer to these notes, you need to go to the white board each time o All discussions and decisions are made during meetings, ideas that come up during other times need to wait for the next meeting to be presented o The option of scenarios was not considered or more so verbally discussed to a brief extent. o Diagrams are drawn to present ideas to the users, these diagrams have no formal representation, or standard that’s followed. Thus they vary according to the requirement. The solution: Taking into consideration all these high level requirements, I proposed to come up with a prototype of a tool that can resolve if not all, at least some of the issues faced by not just the ACS UAT but the user acceptance test teams in the industry as a whole. The main focus of this tool would be to serve as a simple level one documentation tool. It merely replaces processes that need a paper or a white board. After all the decisions are made through using this tool, the final ideas can be documented in a well formulated business process tool like DOORS or RQM. 39 4.2. Scope This project presents the requirements, design and a working prototype of the proposed system. The main aim of this tool is to satisfy and provide a simple checklist to the teams working on user acceptance tasks. The requirements for this tool were gathered from the client, in this case, the user acceptance test team from ACS. The work process of this tool follows the ideas proposed by the paper. 4.3. User Analysis i. Method: The users are a set of 5 team members who are part of the user acceptance test team. They have good knowledge of the technical world and have been working with computers, having hands on experience with tools. They have a clear idea of the techniques that can be used for user acceptance. Most of them are good in analysis and documentation but not in technical stands. I have observed this group working in their regular work environments, this gave me a better understanding and insight into what best would suit their needs. As we sat to have lunch one day, I put forth a question: “If you were to create a tool that would help assist the UA team, what would it be like?” This was an open question and they did not know that their inputs would indeed be seriously considered. This was a good way to get information as they were not formal or very critical about what they said; each one proposed what they thought was a good way of improving the process and 40 proposed their ideas. I think instead of starting off with formal meetings and throwing the users in the limelight, its better to pose a question as to what they would do if given a choice. This should not impact the designer but it would certainly help him understand the mental model of the user. To get concrete results and validate them instantly with the user, later on, a formal meeting was organized, where I put forth my idea to the team, the team instantly liked the proposal, accepting to give inputs, feedbacks and be the clients for the project. The requirements gathered from them are documented as High Level Requirements. ii. Observations: In a nut shell; from the discussions we had and observations made, I noticed that this team relies on the white board the most. Since it is a test team, they go through the following process: Get test requirements from the development team Build their test matrix and come up with the detailed requirements Verify these requirements with the users to confirm that its apt Internal process: List out the requirements that they think are critical, on a white board 41 Have a discussion about each requirement and group them into categories that can be used for future analysis. The team lead assigns a member to keep track of the listed requirements; that are then copied into DOORS, an IBM rational tool that they use to track requirements. Meetings are held with the design team and paper prototypes are created. Meetings are arranged with users to validate these designs and requirements. The inputs are communicated with the design team from time to time and prototypes are built to support the improvements. The user’s mental model relates to the tasks performed on paper or via a white board so a simple design of the tool which can resemble the same will be apt to solve the purpose. User Characteristics: Table 1: User Characteristics Administrator Team ● Create users for the tool ● Logs in to the tool ● Performs all activities as a ● List requirements 42 Administrator Team member of the team ● Create Scenarios ● Link use case diagrams ● Link prototypes 4.4. Requirements Table 2: High Level Requirements Requirement ID Requirement Description R1 Tool that can be shared among the team R2 List requirements and classify them as groups R3 Create scenarios based on the group of requirements R4 Draw or link diagrams to represent the tasks and functions identified for the user. R5 Upload and link prototypes 4.4.1. Detailed Requirements: Table 3: List of Detailed Requirements 43 ID Description Input Input Method Input Validity User ID Password Manual Not NULL R 2 List requirements and create groups Create a new requirement by typing it in as a sticky Assign a group to the sticky View all the stickys Requirement Manual Group Not NULL R 3 Create scenarios based on the group of requirements View sticky groups, Create a scenario for each group to determine the tasks associated with each Scenarios Manual Not NULL R 4 Draw or link diagrams to represent the tasks and functions identified for the user. Draw diagrams to represent the tasks associated with the user Save diagrams and upload them to link them to the scenario and sticky group Diagrams File Upload R 5 Create/Upload and link prototypes Diagrams (This is an additional requirement that was proposed as a good idea for File Upload R 1 Tool to be shared among the team The tool must provide the ability to have user logins. Assign user id Create default passwords for logging in to user accounts. Deletes user accounts Resets Passwords 44 ID Description Input Input Method Input Validity future enhancements) 4.4.2. Hardware Interface Required hardware configuration must satisfy at a minimum, the following: Table 4: Hardware Interface Requirements CPU 1GHz or higher RAM 2GB or higher INPUT Standard Keyboard & Mouse Monitor Output Communication interface RJ45 connector (for Ethernet) 4.4.3. Software Interface Required software must satisfy at a minimum the following: Table 5: Software Requirements OS 4.5. Use Case Models and Use Case Scenarios o Windows XP or higher, o Mac OS 10 or higher, or o Ubuntu 7.04 or higher 45 4.5.1. System Use Case Diagram Figure 9: System Use Case Diagram 4.5.2. Administrator Functions 46 Figure 10: Administrator Functions Use Case Diagram 4.5.3. User Functions: 47 Figure 11: User Functions Use Case Scenarios: 48 i. Login Scenario Table 6: Login Scenario Login Use Case Name: Login Use Case # 1: Ref (4.5.2: Multi-User Account Administration) Actors: Tool administrator and Team Member Overview: This use case describes the login process. References: R1 Typical Flow Description 1) Enter user name 1: 2) Enter password 3) System performs user authentication 4) Successful authentication and log in complete Pre-condition: User wants to log in to system. Post-condition: User is successfully logged in. Alternative Description: Flow 1) Enter user name 2) Enter password 3) System performs user authentication 4) User authentication fails 5) System displays an error message Pre-condition: User wants to log into the system. Post-condition: User re-enters user name and password. 49 ii. Use Case Scenario to Create Stickies Table 7: Create Sticky Scenario Creating Stickies Use Case Name: Login Use Case # 1: Ref (4.5.3: Sticky note user function) Actors: Team Member Overview: This use case describes the process of saving requirements References: R2 Typical Flow Description 1) Key in the requirement 1: 2) Click Save 3) System saves the requirement 4) Successful requirement capture Pre-condition: User wants to save requirements for the project. Post-condition: User successfully saves requirement. Alternative Description: Flow 1) Key in requirement 2) Click Cancel 3) System cancels the save and clears the requirement field iii. Use Case Scenario to Create Scenarios 50 Table 8: Create Scenarios Scenario Creating Scenarios Use Case Name: Login Use Case # 1: Ref (4.5.3: Scenarios user function) Actors: Team Member Overview: This use case describes the process of saving scenarios References: R3 Typical Flow Description 1) Key in the scenario 1: 2) Click Save 3) System saves the scenario 4) Successful scenario capture Pre-condition: User wants to save scenarios for the project. Post-condition: User successfully saves scenario. Alternative Description: Flow 1) Key in scenario 2) Click Cancel 3) System cancels the save and clears the scenario field 4.6. Idea Proposed for “User Case Diagrams”: 4.6.1. Use Case diagrams: A use case diagram is best described as a diagram that represents a set of scenarios that describe an interaction between a user and a system. A use case diagram displays the 51 relationship among actors and use cases. The two main components of a use case diagram are use cases and actors. Figure 12: Use Case Diagram components 4.6.2. Transitioning Use Cases to User Cases: On the same lines as use case diagrams, a new concept of user case diagrams can be introduced. These diagrams are quite similar to the use cases except that they are adapted to capture the user’s requirements with respect to the user interface. These diagrams will follow the same rules as use cases but the only difference comes in the levels these diagrams flow into and the kind of information they represent. These diagrams flow into 3 levels; Level 1: Captures the tasks that the user intends to perform with the system; Level 2: Captures the functions/icons that will be interfaced to perform the particular tasks Level 3: Captures the detailed levels of nested functions/ butcons on the screen that will be needed to perform the tasks requested by the user. 52 Let’s take an example of the You-I Design tool and see how the requirements can be captured in a User Case Diagram and how its different levels can be determined; 4.6.2.1. Level 1: Figure 13: Level 1 User Case Diagram 53 4.6.2.2. Level 2: Figure 14: Level 1 User Case Diagram 54 4.6.2.3. Level 3: Figure 15 : Level 3 User Case Diagram 55 These are some simple example of the levels of user cases that can be created. If it were a complex system, the different nested sets of buttons and options would be listed as well; this gives the designer as well as the user an idea about the complexity of the interface. The designer can also arrange the icons and options of top priority in the first set and nest the advance features. All this can be represented clearly to the user before building the prototype. Once the user gives his consensus, the designer can build his prototypes and explicitly show the user how he intends to place the options on the screen and the benefits of nesting the other features. 56 4.7. Paper Prototype: Figure 16: Login Screen 57 Figure 17: Welcome Screen 58 Figure 18 : List of options 59 Figure 19: Create a Sticky 60 Figure 20: List all Stickies 61 Figure 21: Create Scenario 62 Figure 22: User-Case Diagrams 63 4.8. Prototype Screenshots Figure 23 : Welcome Screen 64 Figure 24 : Create Sticky Group 65 Figure 25 : Create New Sticky 66 Figure 26 : View Sticky List 67 Figure 27 : Create Scenario Group 68 Figure 28 : List Scenario Groups 69 Figure 29 : Create New Scenario 70 Chapter 5 CONCLUSIONS AND FUTURE WORK 5.1. Conclusion This project thus helps rethink the generic method of designing, by proposing a new approach that takes the user's mental model of what they do and what they need to do and translates that into the design of the software. The entire focus of this approach was to keep the ultimate end user in mind while not just gathering requirements or creating an interface but instead during all the other phases of the project development as well. The contributions of this project are: An approach to incorporate the concepts of usability in design, into the SDLC; A step by step wise approach to be able to build usability into the design of the system; A prototype of a tool to help teams use techniques like sticky notes, scenario building, user cases and prototyping efficiently. 71 5.2. Future Work This project brings to light different ideas both theoretical, in the form of research and practical, in the shape of the prototype of the You-I Design tool. These ideas can be enhanced further, by researching in the domain of human computer interaction, usability and concepts of mental models. The paper written by Dr. Zhang, “Integrating HCI in SDLC”, can also be contributed to. With respect to the tool, it is just a prototype, work can be done in building it into a concrete tool. Modules such a virtual white board for sticky note management, drawing pane to be able to draw use case diagrams and create prototypes through the tool can be added, to make this tool complete. Such enhancements will definitely contribute to a very large extent since no single tool has been implemented or exists that has all these features under one hood. Contributions of ideas and tools in this domain will not just add to the work done in the past but will also bring promising changes to the way work is done in the future… 72 APPENDIX A import org.springframework.roo.addon.entity.RooEntity; import org.springframework.roo.addon.javabean.RooJavaBean; import org.springframework.roo.addon.tostring.RooToString; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import com.csus.entites.StickyGroup; import javax.persistence.ManyToOne; @RooJavaBean @RooToString @RooEntity public class Sticky { @NotNull @Size(max = 4000) private String Req; @ManyToOne private StickyGroup StickyGroupName; } import org.springframework.roo.addon.entity.RooEntity; import org.springframework.roo.addon.javabean.RooJavaBean; import org.springframework.roo.addon.tostring.RooToString; import javax.validation.constraints.NotNull; import javax.persistence.Column; import javax.validation.constraints.Size; import com.csus.entites.SecGroup; import javax.persistence.ManyToOne; @RooJavaBean @RooToString @RooEntity public class Sec { @NotNull @Column(unique = true) 73 private String Name; @Size(max = 4000) private String desr; @ManyToOne private SecGroup SecGroupName; } import org.springframework.roo.addon.entity.RooEntity; import org.springframework.roo.addon.javabean.RooJavaBean; import org.springframework.roo.addon.tostring.RooToString; import javax.validation.constraints.NotNull; import javax.persistence.Column; import com.csus.entites.SecGroup; import javax.persistence.ManyToOne; @RooJavaBean @RooToString @RooEntity public class UseCase { @NotNull @Column(unique = true) private String Name; @ManyToOne private SecGroup SecGroupName; } import org.springframework.roo.addon.entity.RooEntity; import org.springframework.roo.addon.javabean.RooJavaBean; import org.springframework.roo.addon.tostring.RooToString; import javax.validation.constraints.NotNull; @RooJavaBean @RooToString @RooEntity 74 public class StickyGroup { @NotNull private String StickyGroupName; } import org.springframework.beans.factory.annotation.Configurable; privileged aspect StickyGroup_Roo_Configurable { declare @type: StickyGroup: @Configurable; } import com.csus.entites.StickyGroup; import java.lang.Integer; import java.lang.Long; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.PersistenceContext; import javax.persistence.Version; import org.springframework.transaction.annotation.Transactional; privileged aspect StickyGroup_Roo_Entity { declare @type: StickyGroup: @Entity; @PersistenceContext transient EntityManager StickyGroup.entityManager; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") 75 private Long StickyGroup.id; @Version @Column(name = "version") private Integer StickyGroup.version; public Long StickyGroup.getId() { return this.id; } public void StickyGroup.setId(Long id) { this.id = id; } public Integer StickyGroup.getVersion() { return this.version; } public void StickyGroup.setVersion(Integer version) { this.version = version; } @Transactional public void StickyGroup.persist() { if (this.entityManager == null) this.entityManager = entityManager(); this.entityManager.persist(this); } @Transactional public void StickyGroup.remove() { if (this.entityManager == null) this.entityManager = entityManager(); if (this.entityManager.contains(this)) { this.entityManager.remove(this); } else { StickyGroup attached = StickyGroup.findStickyGroup(this.id); this.entityManager.remove(attached); } } @Transactional public void StickyGroup.flush() { if (this.entityManager == null) this.entityManager = entityManager(); 76 this.entityManager.flush(); } @Transactional public void StickyGroup.clear() { if (this.entityManager == null) this.entityManager = entityManager(); this.entityManager.clear(); } @Transactional public StickyGroup StickyGroup.merge() { if (this.entityManager == null) this.entityManager = entityManager(); StickyGroup merged = this.entityManager.merge(this); this.entityManager.flush(); return merged; } public static final EntityManager StickyGroup.entityManager() { EntityManager em = new StickyGroup().entityManager; if (em == null) throw new IllegalStateException("Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)"); return em; } public static long StickyGroup.countStickyGroups() { return entityManager().createQuery("SELECT COUNT(o) FROM StickyGroup o", Long.class).getSingleResult(); } public static List<StickyGroup> StickyGroup.findAllStickyGroups() { return entityManager().createQuery("SELECT o FROM StickyGroup o", StickyGroup.class).getResultList(); } public static StickyGroup StickyGroup.findStickyGroup(Long id) { if (id == null) return null; return entityManager().find(StickyGroup.class, id); } public static List<StickyGroup> StickyGroup.findStickyGroupEntries(int firstResult, int maxResults) { return entityManager().createQuery("SELECT o FROM StickyGroup o", 77 StickyGroup.class).setFirstResult(firstResult).setMaxResults(maxResults).getResultList() ; } } import java.lang.String; privileged aspect StickyGroup_Roo_JavaBean { public String StickyGroup.getStickyGroupName() { return this.StickyGroupName; } public void StickyGroup.setStickyGroupName(String StickyGroupName) { this.StickyGroupName = StickyGroupName; } } import java.lang.String; privileged aspect StickyGroup_Roo_ToString { public String StickyGroup.toString() { StringBuilder sb = new StringBuilder(); sb.append("Id: ").append(getId()).append(", "); sb.append("StickyGroupName: ").append(getStickyGroupName()).append(", "); sb.append("Version: ").append(getVersion()); return sb.toString(); } } 78 BIBLIOGRAPHY 1. Cooper, Alan (1995). “About Face - The Essentials of User Interface Design”. 2. John Britsios, “Why Usability is Important to you?” Available online: http://www.webnauts.net/usability.html 3. Pek Pongpaet, “The Importance of Usability” Available online: http://blog.roundarch.com/2009/07/24/the-importance-ofusability/ 4. Zhang, et al. “Integrating HCI in SDLC”; Proceedings of the Americas Conference on Information Systems, New York, New York, August 2004 Available online: http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2 &ved=0CCQQFjAA&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2 Fdownload%3Fdoi%3D10.1.1.64.2693%26rep%3Drep1%26type%3Dpdf&ei=yq fCToOJAoK3tgeJvrWrDQ&usg=AFQjCNEG6GA9pgd3FSBAHUfw_MrA1VZ Wvw&sig2=AGe_3HvT7X1-PvmBgYk8ew 5. Shneiderman, B. (1998) “Designing the User Interface - Strategies for Effective Human-Computer Interaction” Addison-Wesley. 6. Step Two Design; “What is Usability?” by Donna Spencer. Available at: http://www.steptwo.com.au/papers/kmc_whatisusability/index.html 79 7. Preece, Jenny (1994). “Human-Computer Interaction”. Addison-Wesley. 8. Mental Models and Usability; Depaul University, Cognative Psychology 404 November 15, 1999. Mary Jo Davidson, Laura Dove, Julie Weltz 9. “Dokeos User Interface Guidelines” Available online: http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0 CCIQFjAB&url=http%3A%2F%2Fwww.dokeos.com%2Fdoc%2Fsource%2Fdui g-1.0.doc&ei=gqnCTtlwj-q2B-dmMsN&usg=AFQjCNGAKp9JtvSSp2J8Bv7qYrT8V9XqmQ&sig2=94s1mHT6 iOA0jnb7zA3bRA 10. “Apple Human Interface Guidelines” Available online: http://developer.apple.com/library/mac/#referencelibrary/GettingStarted/GS_User Experience/_index.html 11. Hix, Deborah and Hartson, H. Rex (1993). “Developing User Interfaces Ensuring Usability Through Product and Process.” 12. Mental Models, Instructional Design. Available online: http://www.instructionaldesign.org/concepts/mentalmodels.html 13. James Kirk, Becky Cannon, Laura Burke. “Mental Models: The Food for Thought.” 80 Available online: http://www.eric.ed.gov/PDFS/ED410393.pdf 14. Bill Buxton. “Sketching User Experiences.” Microsoft Research, 2007. 15. Mental Models – Wikipedia. Available online: http://en.wikipedia.org/wiki/Mental_model 16. Cooper, “Design + Strategy for a digital World”. Available online: http://www.cooper.com/#approach:research