Browsing by Subject "Software design"
Now showing 1 - 5 of 5
- Results Per Page
- Sort Options
Item Application of techniques to test software designs against requirements(2009-12) Howell, Kelly Thomas; Julien, Christine, D. Sc.; Graser, TomEngineers in diverse fields are able to model their design and experiment with that design to determine how it responds to the environment and how it satisfies the requirements. Design tools for software engineering have become standardized and matured to allow for formal definition of software design. This paper tests the current state of design documentation to determine the quality of design testing available at the early stage of software design.Item Design and analysis of multidimensional program structures(2006-12) Thaker, Sahil; Batory, Don S., 1953-Software design is an art. More often than not, designers rely on craftsmanship and creativity for designing software products. Just as understanding of the structure of atomic elements is critical to the natural sciences, it too is fundamental to the science behind software engineering. Structural theories simplify our understanding of a convoluted mechanism and allow us to reason in a clear and concise manner. Therefore, decision making can transcend subjective justification and move to quantitative and precise reasoning. Feature-Oriented Programming and compositional programming embody ideas of software decomposition structure. Feature-Oriented Programming treats Features as the building-blocks that are composed to synthesize programs. Its convergence with algebraic transformations has led to AHEAD - a simple algebraic model of Feature-Oriented Programming. Within AHEAD, reasoning over simple algebraic structures enables codification and mechanization of well-understood principles. In this thesis we demonstrate just that by showing that critical properties of a decomposition can be identified and verified efficiently. First, we introduce multidimensional structures, a higher-order structural relationship within conventional decomposition. Multidimensional structures simplify a complex decomposition’s representation, understanding, and compositional specification. However, not all decompositions are fit for a multidimensional arrangement. We identify an essential property of orthogonality that a decomposition and its implementation must satisfy in order to warrant a multidimensional structure. Next, we identify a class of errors that occur at module composition-time. These composition errors are a result of unsatisfied dependencies when feature modules are composed in arbitrary arrangements. AHEAD introduces architectural-level domain constraints that govern the compatibility of feature modules. Besides architectural-level composition constraints, there are also low-level implementation constraints: a feature module can reference classes that are defined in other feature modules. Safe composition is the guarantee that programs composed from feature modules are absent of references to undefined classes, methods, and variables. We show how safe composition can be guaranteed for AHEAD product lines using feature models and SAT solvers. The significance of this work lies in the generality of our approach. Multidimensional structures are not unique to AHEAD; we demonstrate its applicability under any form of decomposition. Likewise, safe composition also extends AHEAD. We draw an analogy between safe composition and C++ linking errors. Moreover, we demonstrate how non-code artifacts benefit from modularization as well as safe composition analysis. In identifying and verifying key properties, we have also demonstrated how the structural model of AHEAD can simplify our understanding and applicability of essential principles. When the fundamental structure is well-understood, software design is amenable to automation.Item The smartphone as a data collection device(2013-08) Scaffidi, Salvatore Gregory, III; Ghosh, JoydeepThe introduction of mobile devices to the pockets and handbags of people living all over the world has made the practice of mobile computing nearly ubiquitous in modern society. iSeeMe is an Android application that empowers the user through the revelation of the vast amount of private data that mobile devices are capable of silently capturing in the background. iSeeMe strives to provide the user with a means to correlate this passively-collected information with data of personal importance to the user. This report looks into the development and implementation of the iSeeMe solution. It discusses design decisions, describes the iSeeMe architecture, and outlines the process of engineering the application. It also examines the role of personal data in modern society and explores the mobile application market to see where iSeeMe will fit in among similar applications. Finally, it analyzes the results of the development effort and identifies areas for future enhancement.Item The traceable lifecycle model(2010-12) Nadon, Robert Gerard; Barber, K. Suzanne; Graser, ThomasSoftware systems today face many challenges that were not even imagined decades prior. Challenges including the need to evolve at a very high rate, lifecycle phase drift or erosion, inability to prevent the butterfly effect where the slightest change causes unimaginable side effects throughout the system, lack of discipline to define metrics and use measurement to drive operations, and no "silver bullet" or single solution to solve all the problems of every domain, just to name a few. This is not to say that the issues stated above are the only problems. In fact, it would be impossible to list all possible problems--software itself is infinitely flexible bounded only by the human imagination. These are just a portion of the primary challenges today's software engineer faces. There have been attempts throughout the history of software to resolve each one of these challenges. There have been those who tried to tackle them individually, simultaneously, as well as various combinations of them at one time. One such method was to define and encapsulate the various phases within software, which has come to be called a software lifecycle or lifecycle model. Another area of recent research has lead to the hypothesis that many of these challenges can be resolved or at least facilitated through proper traceability methods. Virtually none of today's software components are completely derived from scratch. Rather, code reuse and software evolution become a large portion of the software engineer's duties. As Vance Hilderman at HighRely puts it, "Research has shown that proper traceability is vital. For high quality and safety-critical engineering development efforts however, traceability is a cornerstone not just for achieving success, but to proving it as well." So if software is not derived from scratch, having the traceability to know about its origination is invaluable. Given today's struggles, what is in store for the future software engineer? This paper is an attempt to quantify and answer (or at least project a possibility) that involves a new mindset and a new lifecycle model or structure change that may assist in tackling some of the above referenced issues.Item Using machine learning techniques to simplify mobile interfaces(2012-12) Sigman, Matthew Stephen; Julien, Christine, D. Sc.; Ghosh, JoydeepThis paper explores how known machine learning techniques can be applied in unique ways to simplify software and therefore dramatically increase its usability. As software has increased in popularity, its complexity has increased in lockstep, to a point where it has become burdensome. By shifting the focus from the software to the user, great advances can be achieved by way of simplification. The example problem used in this report is well known: suggest local dining choices tailored to a specific person based on known habits and those of similar people. By analyzing past choices and applying likely probabilities, assumptions can be made to reduce user interaction, allowing the user to realize the benefits of the software faster and more frequently. This is accomplished with Java Servlets, Apache Mahout machine learning libraries, and various third party resources to gather dimensions on each recommendation.