scispace - formally typeset
Search or ask a question
Author

Dilip Soni

Bio: Dilip Soni is an academic researcher from Princeton University. The author has contributed to research in topics: Software construction & Software architecture. The author has an hindex of 6, co-authored 13 publications receiving 1031 citations.

Papers
More filters
Book
05 Apr 2009
TL;DR: Applied Software Architecture gives an overview of software architecture basics and a detailed guide to architecture design tasks, focusing on four fundamental views of architecture--conceptual, module, execution, and code.
Abstract: "Designing a large software system is an extremely complicated undertaking that requires juggling differing perspectives and differing goals, and evaluating differing options. Applied Software Architecture is the best book yet that gives guidance as to how to sort out and organize the conflicting pressures and produce a successful design." -- Len Bass, author of Software Architecture in Practice. Quality software architecture design has always been important, but in today's fast-paced, rapidly changing, and complex development environment, it is essential. A solid, well-thought-out design helps to manage complexity, to resolve trade-offs among conflicting requirements, and, in general, to bring quality software to market in a more timely fashion. Applied Software Architecture provides practical guidelines and techniques for producing quality software designs. It gives an overview of software architecture basics and a detailed guide to architecture design tasks, focusing on four fundamental views of architecture--conceptual, module, execution, and code. Through four real-life case studies, this book reveals the insights and best practices of the most skilled software architects in designing software architecture. These case studies, written with the masters who created them, demonstrate how the book's concepts and techniques are embodied in state-of-the-art architecture design. You will learn how to: * create designs flexible enough to incorporate tomorrow's technology; * use architecture as the basis for meeting performance, modifiability, reliability, and safety requirements; * determine priorities among conflicting requirements and arrive at a successful solution; and * use software architecture to help integrate system components. Anyone involved in software architecture will find this book a valuable compendium of best practices and an insightful look at the critical role of architecture in software development.

661 citations

Proceedings ArticleDOI
23 Apr 1995
TL;DR: A survey of a variety of software systems used in industrial applications found that software architecture is concerned with capturing the structures of a system and the relationships among the elements both within and between structures.
Abstract: To help us identify and focus on pragmatic and concrete issues related to the role of software architecture in large systems, we conducted a survey of a variety of software systems used in industrial applications. Our premise, which guided the examination of these systems, was that software architecture is concerned with capturing the structures of a system and the relationships among the elements both within and between structures. The structures we found fell into several broad categories: conceptual architecture, module interconnection architecture, code architecture, and execution architecture. These categories address different engineering concerns. The separation of such concerns, combined with specialized implementation techniques, decreased the complexity of implementation, and improved reuse and reconfiguration.

285 citations

Patent
29 Sep 1995
TL;DR: The Change Assistant (CA) as discussed by the authors automatically analyzes the impact of the intended change on all levels, identifying related changes that may be needed to achieve the programmer's goal, when the plan is finalized and approved, CA automatically performs the change, modifying the code, as needed, to make it consistent with the changed architecture.
Abstract: Analysis, planning and interrelated modifications of a software system across modular architectural, language and documentation levels are automated and facilitated by use of the Change Assistant (CA). CA automatically analyzes the impact of the intended change on all levels, identifying related changes that may be needed to achieve the programmer's goal. When the plan is finalized and approved, CA automatically performs the change, modifying the code, as needed, to make it consistent with the changed architecture. Thereby, the need for human intervention in maintaining software is significantly reduced and the possibility of error minimized.

40 citations

Proceedings ArticleDOI
15 May 1989
TL;DR: BiiN SMS is a new industrial-strength software management system that solves four con figuration management problems in new ways: the dependency mappingproblem, the stable context problem, the short circuit problem, and the composition problem.
Abstract: BiiN SMS is a new industrial-strength software management system that solves four con figuration management problems in new ways: the dependency mapping problem, the stable context problem, the short circuit problem, and the composition problem.

24 citations

Proceedings ArticleDOI
06 Dec 1993
TL;DR: The state of the practice and the problems faced by architects and engineers are described and the challenge for the software engineering research community is to address these problems and produce scalable, practical results that will have a real impact on the developers, improving their productivity and the quality of systems they build.
Abstract: The research community in the emerging area of software architecture has developed little consensus over the definition of architecture except that architecture is related to the structure of a system and the interaction among its components. Current efforts of building models of architecture have focused on taxonomy, description languages, and verification of architectural properties. What is missing is the focus on the pragmatic role of architecture in software development activities. We describe the state of the practice and the problems faced by architects and engineers. The challenge for the software engineering research community is to address these problems and produce scalable, practical results that will have a real impact on the developers, improving their productivity and the quality of systems they build. >

8 citations


Cited by
More filters
Book
01 Sep 2002
TL;DR: This lecture maps the concepts and templates explored in this tutorial with well-known architectural prescriptions, including the 4+1 approach of the Rational Unified Process, the Siemens Four Views approach, and the ANSI/IEEE-1471-2000 recommended best practice for documenting architectures for software-intensive systems.
Abstract: This lecture maps the concepts and templates explored in this tutorial with well-known architectural prescriptions, including the 4+1 approach of the Rational Unified Process, the Siemens Four Views approach, and the ANSI/IEEE-1471-2000 recommended best practice for documenting architectures for software-intensive systems. The lecture concludes by re-capping the highlights of the tutorial, and asking for feedback.

1,476 citations

Proceedings Article
01 Jan 1994
TL;DR: This paper provides an introduction to the emerging field of software architecture by considering a number of common architectural styles upon which many systems are currently based and showing how different styles can be combined in a single design.
Abstract: As the size of software systems increases, the algorithms and data structures of the computation no longer constitute the major design problems. When systems are constructed from many components, the organization of the overall system -- the software architecture -- presents a new set of design problems. This level of design has been addressed in a number of ways including informal diagrams and descriptive terms, module interconnection languages, templates and frameworks for systems that serve the needs of specific domains, and formal models of component integration mechanisms. In this paper we provide an introduction to the emerging field of software architecture. We begin by considering a number of common architectural styles upon which many systems are currently based and show how different styles can be combined in a single design. Then we present six case studies to illustrate how architectural representations can improve our understanding of complex software systems. Finally, we survey some of the outstanding problems in the field, and consider a few of the promising research directions.

1,396 citations

Proceedings ArticleDOI
06 Nov 2005
TL;DR: A new perspective on software architecture is presented, which views software architecture as a composition of a set of explicit design decisions, which makes architectural design decisions an explicit part of a software architecture.
Abstract: Software architectures have high costs for change, are complex, and erode during evolution We believe these problems are partially due to knowledge vaporization Currently, almost all the knowledge and information about the design decisions the architecture is based on are implicitly embedded in the architecture, but lack a first-class representation Consequently, knowledge about these design decisions disappears into the architecture, which leads to the aforementioned problems In this paper, a new perspective on software architecture is presented, which views software architecture as a composition of a set of explicit design decisions This perspective makes architectural design decisions an explicit part of a software architecture Consequently, knowledge vaporization is reduced, thereby alleviating some of the fundamental problems of software architecture

605 citations

Journal ArticleDOI
TL;DR: An assessment of UML's expressive power for modeling software architectures in the manner in which a number of existing software architecture description languages (ADLs) model architectures finds that UML lacks direct support for modeling and exploiting architectural styles, explicit software connectors, and local and global architectural constraints.
Abstract: The Unified Modeling Language (UML) is a family of design notations that is rapidly becoming a de facto standard software design language. UML provides a variety of useful capabilities to the software designer, including multiple, interrelated design views, a semiformal semantics expressed as a UML meta model, and an associated language for expressing formal logic constraints on design elements. The primary goal of this work is an assessment of UML's expressive power for modeling software architectures in the manner in which a number of existing software architecture description languages (ADLs) model architectures. This paper presents two strategies for supporting architectural concerns within UML. One strategy involves using UML "as is," while the other incorporates useful features of existing ADLs as UML extensions. We discuss the applicability, strengths, and weaknesses of the two strategies. The strategies are applied on three ADLs that, as a whole, represent a broad cross-section of present-day ADL capabilities. One conclusion of our work is that UML currently lacks support for capturing and exploiting certain architectural concerns whose importance has been demonstrated through the research and practice of software architectures. In particular, UML lacks direct support for modeling and exploiting architectural styles, explicit software connectors, and local and global architectural constraints.

416 citations

Proceedings ArticleDOI
01 May 2000
TL;DR: This paper examines some of the important trends of software architecture in research and practice, and speculates on the important emerging trends, challenges, and aspirations.
Abstract: Over the past decade software architecture has received increasing attention as an important subfield of software engineering. During that time there has been considerable progress in developing the technological and methodological base for treating architectural design as an engineering discipline. However, much remains to be done to achieve that goal. Moreover, the changing face of technology raises a number of new challenges for software architecture. This paper examines some of the important trends of software architecture in research and practice, and speculates on the important emerging trends, challenges, and aspirations.

416 citations