Neil B. Harrison

Neil B. Harrison
Utah Valley University | UVU · Department of Computer Science

PhD, Computer Science, University of Groningen

About

44
Publications
28,045
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
973
Citations
Additional affiliations
May 2006 - April 2011
University of Groningen
Position
  • PhD Student

Publications

Publications (44)
Conference Paper
Full-text available
Participants in open-source software projects are often geographically dispersed, and may work in different companies, and have different visions of the software. These present special challenges to creating unified architectural decisions. Yet opensource projects are often successful. We studied architectural documentation of forty-four open-sourc...
Article
Full-text available
Architectural software patterns capture successful designs for recurring problems in software architecture. For the first time, a workshop in the tradition of the software-pattern conference series (e.g. PLoP, EuroPLoP) was held jointly with the European Conference on Software Architecture (ECSA 2014) in Vienna, Austria. The main objective of this...
Chapter
Software architecture is an important foundation of every software project. Therefore, it is advisable to evaluate it in early stages of the software design. Architecture evaluation helps to uncover risks and suboptimal decisions before they cause tremendous cost and re-engineering efforts. Unfortunately, many software companies still do not integr...
Conference Paper
Full-text available
Recent surveys show that 42% of Agile projects are successful. While this is three times better than traditional projects, 49% of Agile projects are late or over budget and 9% are total failures. There is a better way to help Agile teams to implement Scrum. At the 2013 Scrum PLoP Conference held in Tisvildeleje, Denmark thought leaders in the Agile...
Article
Architecture evaluation is an important activity in the software engineering life cycle that ensures that the architecture satisfies stakeholders' expectations. Additionally, risks and issues can be uncovered before they cause tremendous costs later in the life cycle. Unfortunately, architecture evaluation isn't regularly practiced in industry. Thi...
Book
アジャイル開発における組織の在り方の指針を網羅! 本書は、ソフトウェアを開発する上で「人間」とその「組織」に着目し、ソフトウェアを開発する際にどのような組織であるべきなのかを、実際の観察に基づいて書いている本です。同時に、広く使われるようになった「パターン」とは何かということについても起源に忠実な形で解説しています。主著者のJim Coplien はスクラムやアジャイルの世界でも最重要人物のひとりに位置づけられている人物です。その彼の根本的な主張は、「ソフトウェア開発では技術的な側面にとらわれず、人間的な側面に目を向けろ」というものであり、本書は建築業界でのバイブル的位置づけである「クリストファー・アレグザンダーのパターン」の思想を、ソフトウェア開発に昇華させ結実したものでもあります。
Conference Paper
Full-text available
Design and coding processes are an important part of an overall project methodology. However, perceptions of these processes influence how developers use them. A process perceived as desirable is more likely to be sustainable than one that is not. Test Driven Development has gained popularity in recent decades and we compared its perceived desirabi...
Chapter
Full-text available
Architecture reviews are effective for identifying potential problems in architectures, particularly concerning the quality attributes of the system, but are generally expensive. We propose that architecture reviews based on the architecture patterns and their interactions with quality attributes can be done with small effort. We performed an explo...
Article
The documentation of software architectural design decisions is important to help people understand the system and the rationale behind architectural solutions. In practice, the documentation of such decisions is regularly done after the fact, or skipped completely. To support software maintenance and evolution, the decisions have to be recovered a...
Article
Full-text available
Software architecture reviews are effective in identifying potential problems in architectures, however, are expensive, time-consuming, and generally rely on extensive architecture documentation. An architecture review that accommodates projects with very short development cycles, minimal documentation, or frequently changing requirements could be...
Article
Full-text available
Software architecture designers inevitably work with both architecture patterns and tactics. Architecture patterns describe the high-level structure and behavior of software systems as the solution to multiple system requirements, whereas tactics are design decisions that improve individual quality attribute concerns. Tactics that are implemented i...
Article
Full-text available
One important way that an architecture impacts fault tolerance is by making it easy or hard to implement tactics that improve fault tolerance. Information about how the implementation of fault tolerance tactics affects the architecture patterns of a system should be useful to architects during architectural design in selecting optimal fault toleran...
Article
Full-text available
Testing software is actually two different activities, depending on whether one is the developer of the software or the tester. As software engineering students may end up in roles as either a developer or a tester, they must learn skills for both. In order to teach both skills, our software testing course has a two-part major project. In the first...
Conference Paper
Full-text available
An important way that the reliability of a software system is enhanced is through the implementation of specific run-time measures called runtime tactics. Because reliability is a system-wide property, tactic implementations affect the software structure and behavior at the system, or architectural level. For a given architecture, different tactics...
Conference Paper
Full-text available
Architecture patterns are an important tool in architectural design. However, while many architecture patterns have been identified, there is little in-depth understanding of their actual use in software architectures. For instance, there is no overview of how many patterns are used per system or which patterns are the most common or most important...
Conference Paper
Full-text available
One important way that an architecture impacts fault tolerance is by making it easy or hard to implement measures that improve fault tolerance. Many such measures are described as fault tolerance tactics. We studied how various fault tolerance tactics can be implemented in the best-known architecture patterns. This shows that certain patterns are b...
Article
Architecture patterns are established approaches to software architecture. They describe a system structure that meets the needs of an application to be designed in a given domain. Architecture patterns are commonly used in industry, and therefore, software engineering students should be familiar with architecture patterns and how to use them. In o...
Conference Paper
Full-text available
Architectural design has been characterized as making a series of decisions that have system-wide impact. These decisions have side effects which can have significant impact on the system. However, the impact may be first understood much later; when the system architecture is difficult to change. Architecture patterns can help architects understand...
Article
Full-text available
Throughout the software design process, developers must make decisions and reify them in code. The decisions made during software architecting are particularly significant in that they have system-wide implications, especially on the quality attributes. However, architects often fail to adequately document their decisions because they don't appreci...
Conference Paper
Full-text available
One of the vexing challenges of software architecture is the problem of satisfying the functional specifications of the system to be created while at the same time meeting its non-functional needs. In this work we focus on the early stages of the software architecture process, when initial high-level system partitioning is being performed. Specific...
Article
Full-text available
The patterns movement in software design has provided a framework for codifying and communicating solutions for commonly encountered design challenges. Design patterns are not intended to be only entries in a cookbook, however; they emerge by following good design principles to balance the forces present in a software development context. According...
Conference Paper
Full-text available
Changing the approach to dynamic memory allocation in a large legacy application is challenging. In order to improve the robustness of memory allocation, we fundamentally changed it. We replaced standard heap allocation with class-specific heaps. We were able to do it with almost no changes to the existing class code by overriding the C++ new() and...
Book
This book covers the human and organizational dimension of the software improvement process and software project management -- whether based on the CMM or ISO 9000 or the Rational Unified Process. Drawn from a decade of research, it emphasizes common-sense practices. Its principles are general but concrete; every pattern is its own built-in example...
Article
Full-text available
Reviews are a mainstay of architectural validation, yet one size does not fit all. As we facilitated architecture reviews, we learned that different projects need different things from architecture reviews. Time and budgetary constraints also affect architecture reviews. The architecture reviews tended to fall into a few distinct styles. It was use...
Conference Paper
Full-text available
Conference Paper
Agile Methods are advocated as a way of producing better software. Advocates of agile methods suggest that practices such as keeping in close communication with your customers, frequent integration, and frequent assessment of project status will enable us to produce software that has value for the customer - quality software. It's hard to argue wit...
Article
Full-text available
Agile software development is an approach to software that focuses on lightweight processes and adaptability to change. The best-known agile methodology is called Extreme Programming. It suggests twelve practices that include iterative development practices, automated unit testing, and pair programming. Extreme Programming is designed for small pro...
Conference Paper
Full-text available
Article
Every SOFTWARE SYSTEM must deal with errors. Most systems report errors to the user in some manner, and many provide additional diagnostic information to assist the user in tracking down the problem. Transaction-oriented systems lend themselves to common approaches to logging diagnostic messages. These approached are embodied in three general softw...
Article
Full-text available
The CHECKS Pattern Language of Information Integrity [Cunningham 95] presents a language of patterns that describe how to capture and check values, and detecting and correcting mistakes. This set of patterns focus more on the internal structure of software that supports processing user input. In this way, these input processing patterns and the CHE...
Article
Software development is a predominantly social activity. It is important to view software development groups, departments, and corporations as social bodies. We study software organizations by using a novel data-gathering approach that com- bines several techniques commonly used in social network analysis. We differ from ordinary social anthropolog...
Article
Software development is a predominantly social activity. Individuals in a software project fill various roles and communicate with other roles, forming a social network of communication that embodies many important characteristics of the organization. These social networks lend themselves to both quantitative and visual analysis. In an attempt to i...

Network

Cited By