@@ -4,38 +4,26 @@ \chapter{A look under the hood: \mbox{Our process}}
44% \ds{Make sure we talk about continuous integration / git processes / etc.
55% Actually might belong in the next chapter - iteration and refinement}
66
7- The focus of this chapter is the process by which we developed the Drasil
7+ This chapter examines the process by which we developed the Drasil
88framework itself. Rather than describing the general software development
99process that Drasil is intended to support or automate, we turn our attention
10- inward to examine the steps, decisions, and rationale that guided the creation
11- of the framework. Our goal is to provide transparency into the reasoning that
12- shaped Drasil, highlighting the challenges encountered and the strategies
13- employed to address them. By doing so, we aim to give the reader a clear
14- understanding of how the framework's design emerged from a careful analysis of
15- redundancy and knowledge organization across software artifacts.
10+ inward to examine the steps, decisions, and rationale that guided its creation.
11+ Our goal is to provide transparency into the reasoning that shaped Drasil,
12+ highlighting the challenges encountered and the strategies employed to address
13+ them. By doing so, we aim to give the reader a clear understanding of how the
14+ framework's design emerged from a careful analysis of redundancy and knowledge
15+ organization across software artifacts.
1616
1717As one of the central motivations for developing Drasil was the observation
18- that \sfs {} contain significant, unnecessary redundancy, our first step in
19- removing that redundancy is identifying exactly what it is and where it exists.
20- To that end we need to understand what each of our software artifacts is
21- attempting to communicate, who their audience is, and what information can be
22- considered boilerplate versus system-specific. Luckily, we have an excellent
23- starting point thanks to the work of many smart people: artifact templates.
24-
25- % Lots of work \ds{cite some people who did this} has been done to specify
26- % exactly what should be documented in a given artifact in an effort for
27- % standardization. Ironically, this has led to many different `standardized'
28- % templates. Through the examination of a number of different artifact templates,
29- % we have concluded they convey roughly the same overall information for a given
30- % artifact. Most differences are stylistic or related to content
31- % organization and naming conventions.
32-
33- % Once we understand our artifacts, we take a practical, example-driven approach
34- % to identifying redundancy through the use of existing software system case
35- % studies. For each of these case studies, we start by examining the source code
36- % and existing software artifacts to understand exactly what problem they are
37- % trying to solve. From there, we attempt to distill the system-specific knowledge
38- % and generalize the boilerplate.
18+ that \sfs {} contain significant, unnecessary redundancy, we begin by motivating
19+ our approach through concrete examples of redundancy in \sfs {}. We then
20+ describe how we selected and analyzed a set of representative case studies,
21+ breaking down their artifacts to identify recurring patterns and organizational
22+ structures. This analysis leads to a general methodology for knowledge capture
23+ and projection, which ultimately shaped the core principles of Drasil.
24+ Throughout, we emphasize the interplay between practical experience and
25+ theoretical insight, illustrating how each informed our process and contributed
26+ to the framework's evolution.
3927
4028\section {A minimal motivating example: HGHC }
4129\label {sec:hghc-mini }
@@ -63,7 +51,7 @@ \section{A minimal motivating example: HGHC}
6351 \]
6452
6553We can already see repeated knowledge ($ k_c$ and $ \tau _c$ ) in these two
66- equations. But the redundancy goes even deeper in the full SRS (which can be
54+ equations. The redundancy goes even deeper in the full SRS (which can be
6755found in Appendix~\ref {appendix:hghc }). There we can see repeated descriptions
6856and units for $ h_g$ and $ h_c$ in the table of symbols and the data definitions.
6957We also observe something more troubling: missing symbols. None of $ k_c$ ,
@@ -89,30 +77,29 @@ \section{A minimal motivating example: HGHC}
8977becomes even greater. Corrections would now be required across multiple input
9078languages (for example, \LaTeX {} and Python), significantly increasing the
9179verification burden. Ultimately, these \sfs {} are communicating much of the
92- same knowledge, merely formatted for different audiences. In the case of the
93- SRS and the source code, the audiences are human stakeholders and computers,
94- respectively, but both require a precise definition of $ h_g $ and $ h_c $ .
80+ same knowledge (i.e. the definitions of $ h_g $ and $ h_c $ ), merely formatted for
81+ different audiences. In the case of the SRS and the source code, the audiences
82+ are human stakeholders and computers, respectively .
9583
9684This small example foreshadows the larger patterns of redundancy that we
97- observe in more complex systems. The rest of this chapter
98- generalizes from such examples, showing how we systematically identified,
99- categorized, and addressed these issues in the development of Drasil.
85+ observe in more complex systems. The rest of this chapter generalizes from such
86+ examples, showing how we systematically identified, categorized, and addressed
87+ these issues in the development of Drasil.
10088
10189\section {A (very) brief introduction to our case study systems }
10290
103- To ground our analysis in practical reality and move beyond abstract
104- principles, this thesis draws on a set of detailed case studies. These case
105- studies serve not only to illustrate the prevalence and impact of redundant
106- knowledge in \sfs {}, but also to provide a concrete basis for systematically
107- identifying, comparing, and generalizing patterns of redundancy and knowledge
108- organization. By examining systems developed using common artifact templates,
109- we are able to empirically motivate the need for the Drasil framework and
110- inform its design.
91+ To ground our analysis in reality and move beyond abstract principles, this
92+ thesis draws on a set of detailed case studies. These case studies serve not
93+ only to illustrate the prevalence and impact of redundant knowledge in \sfs {},
94+ but also to provide a concrete basis for systematically identifying, comparing,
95+ and generalizing patterns of redundancy and knowledge organization. By
96+ examining systems developed using common artifact templates, we are able to
97+ motivate the need for the Drasil framework and inform its design.
11198
11299To simplify the process of identifying redundancies and patterns, we have chosen
113100several case studies developed using common artifact templates, specifically
114- those used by \smithea {} \ds {source?} Also, as mentioned in
115- Section~\ref {sec:scope }, we have chosen software systems that follow the
101+ those used by \smithea {} \ds {source?} Also, as previously mentioned in
102+ Section~\ref {sec:scope }, our case study software systems follow the
116103\mbox {$ `input'~\rightarrow ~`process'~\rightarrow ~`output'$ } pattern. These
117104systems cover a variety of use cases, to help avoid over-specializing into one
118105particular system type.
@@ -123,6 +110,10 @@ \section{A (very) brief introduction to our case study systems}
123110of each system, all relevant case study artifacts can be found in the GitHub
124111repository.
125112
113+ \ds {The cards were initially going to say more, but I might convert them into a
114+ table at this point. Though I like a bit of visual difference.}
115+ % if removing cards, update above sentence
116+
126117\card {\gb }
127118{We need to efficiently and correctly predict whether a glass
128119slab can withstand a blast under given conditions.}
@@ -185,25 +176,21 @@ \section{A (very) brief introduction to our case study systems}
185176\section {Breaking down \sfs }
186177\label {sec:breakdown }
187178
188- To meaningfully address redundancy in software artifacts, it is not enough to
189- simply observe that repetition exists; we must also understand the purpose,
190- content, and intended audience of each artifact. Building on the foundation
191- provided by our case studies, this section systematically examines the
192- structure and role of each major \sf {} in our process. By breaking down these
193- artifacts, we aim to reveal both their commonalities and their differences,
194- setting the stage for identifying patterns of knowledge organization and
195- redundancy that inform the design of Drasil.
179+ To meaningfully address redundancy in software artifacts, we must understand
180+ the purpose, content, and audience of each artifact\textemdash {}not just
181+ observe repetition. Building on the foundation provided by our case studies,
182+ this section examines the structure and role of each major \sf {} in our
183+ process. By breaking down these artifacts, we aim to reveal both their
184+ commonalities and their differences, setting the stage for identifying patterns
185+ of knowledge organization and redundancy that inform the design of Drasil.
196186
197187As noted earlier, for our approach to work we must understand exactly what each
198- of our artifacts are trying to say and to whom.\footnote {Refer to
188+ of our \sfs {} are trying to say and to whom.\footnote {Refer to
199189Section~\ref {sec:sfs } for a general summary of \sfs {}.} By selecting our case
200190studies from those developed using common artifact templates, we have given
201- ourselves a head start on that process, however, there is still much work to be
202- done.
203-
204- The following subsections present a brief sampling of our process of breaking
205- down \sfs {}, acknowledging that a comprehensive overview would be excessively
206- lengthy.
191+ ourselves a head start on that process. The following subsections present a
192+ brief sampling of our process of breaking down \sfs {}, acknowledging that a
193+ comprehensive overview would be excessively lengthy.
207194
208195\subsection {SRS }
209196\label {sec:breakdown:srs }
@@ -274,27 +261,24 @@ \subsection{SRS}
274261\item Appendix
275262\end {enumerate }
276263 \end {center }
277- }{The Table of Contents from the (\ds {expanded?}) \smithea {}
278- template}{fig:SRSToC}
264+ }{The Table of Contents from the expanded \smithea {} template}{fig:SRSToC}
279265
280266With the structure of the document in mind, let us look at several of our case
281267studies' SRS documents to get a deeper understanding of what each section truly
282268represents. Figure~\ref {fig:csRefSecs } shows the reference section of the SRS
283269for \gb . Each of the case studies' SRS contains a similar section so for
284270brevity we will omit the others here, but they can be found in the GitHub
285- repository.
286- % Provide a link / ref to relevant appendix
287- We will look into the case studies in more detail later \ds {will we actually?
288- depends on length of chapter}, for now we will try to
289- ignore any superficial differences (spelling, grammar, phrasing, etc.) in each
290- of them while we look for commonality. We are also trying to determine how the
291- non-superficial differences relate to the document template, general problem
292- domain, and specific system information.
271+ repository. We will try to ignore any superficial differences (spelling,
272+ grammar, phrasing, etc.) in each of the case studies while we look for
273+ commonality. We are also trying to determine how the non-superficial
274+ differences relate to the document template, general problem domain, and
275+ specific system information.
276+
277+ \ds {The figure with subfigures might be a hassle to keep co-located, might
278+ split it up into 3 separate figures and just refer to them collectively}
293279
294280\fig {
295281\centering
296- % \emph{Figure showing the Ref Section of one case
297- % study, split into multiple subfigures - case study TBD}
298282\begin {subfigure }{\textwidth }
299283\centering
300284\fbox {\includegraphics [width=\textwidth ]{figures/gb_SRS_ToU.png}}
@@ -357,7 +341,10 @@ \subsection{SRS}
357341Again we find some is boilerplate text meant to give a generic
358342(non-system-specific) overview, some is specific to the proposed system, and
359343some is in-between: it is specific to the problem domain for the proposed
360- system, but not necessarily specific to the system itself.
344+ system, but not necessarily specific to the system itself. For example, many
345+ theoretical models would fall into that in-between category\textemdash {}they
346+ represent theories from their problem domain (ex. Physics) that are used to
347+ derive the system-specific knowledge.
361348
362349Observing the contents of an SRS template adhere to said template may seem
363350mundane, but it is a necessary step before we can move on to other \sfs {}.
@@ -401,12 +388,13 @@ \subsection{Module Guide}
401388{fig:gbrmgtoc}
402389
403390Figure~\ref {fig:gbrmgtoc } shows the table of contents for the \gb {} case
404- study's MG. For the sake of brevity we will omit the other case studies
405- here (they can be found at \ds {TODO}). Just as with the SRS we are looking for
406- commonality and understanding of what the document is trying to portray to the
407- reader. As such we will ignore superficial differences between the MG sections.
408- As the MG is a fairly short document we will look at each of the most relevant
409- sections as part of this exercise.
391+ study's MG. Again, for the sake of brevity we will omit the other case studies
392+ here, even though we engaged in the same breakdown process for each of them.
393+ Just as with the SRS we are looking for commonality and understanding of
394+ what the document is trying to portray to the reader. As such we will ignore
395+ superficial differences between the MG sections. As the MG is a fairly short
396+ document we will look at each of the most relevant sections as part of this
397+ exercise.
410398
411399Breaking down the MG by section, we can see that the introduction is itself
412400completely generic boilerplate explaining the purpose of the MG, the audience,
@@ -558,6 +546,12 @@ \subsection{Source Code}
558546from the DD is calculated within the source code. This is one of many patterns
559547we see across our \sfs {} within each case study.
560548
549+ By systematically dissecting each artifact type, we not only reveal the sources
550+ and forms of redundancy, but also clarify the requirements for any framework
551+ (Drasil) that aims to automate or improve the generation of these artifacts.
552+ This analysis directly informs the patterns and organizational strategies we
553+ discuss in the following sections.
554+
561555\section {Identifying Repetitive Redundancy }
562556\label {sec:patterns }
563557
@@ -744,25 +738,11 @@ \section{Identifying Repetitive Redundancy}
744738redundancy.
745739
746740\section {Organizing knowledge - a fluid approach }
747- % **Subsec roadmap:
748- % - We see the patterns above, we can generalize a lot of that
749- % - Direct repetition (copy-paste) vs indirect repetition (view-changes)
750- % require us to pull together knowledge from all artifacts into one place
751- % - Some can be derived automatically, the rest must be explicitly stated
752- % - We need to create a categorization system (hint at chunks) that is both
753- % robust and extensible to cover a wide variety of use cases.
754- % - Finally the templates give us structure
755- %
756- % **NOTE: Under the hood section should explain the process of how we
757- % determined
758- % what we needed to do. What we ended up doing should come in the following
759- % section(s) - no 'real' implementation details, only conceptual stuff here.
760- %
761- % - Some ``boilerplate" information is actually in the domain of \sf{} writing
762- % and
763- % thus is so broad, yet relevant to everything we do, that we consider it
764- % completely general. Things like stakeholders, characteristics of the intended
765- % audience, etc.
741+
742+ Recognizing the patterns of redundancy, this section discusses our conceptual
743+ approach to organizing and managing knowledge. Here, we generalize from
744+ specific examples to propose a flexible framework for knowledge capture and
745+ projection, laying the groundwork for Drasil's design.
766746
767747Given the knowledge categories and patterns of use across \sfs {} we have seen
768748in the previous section, we can generalize knowledge projections by their
@@ -854,14 +834,11 @@ \section{Organizing knowledge - a fluid approach}
854834multiple \sf {} domains and multiple code langs}
855835
856836\section {Summary - The seeds of Drasil }
857- % **Subsec roadmap:
858- % -- Summarize the above subsections and lead into next section
859- % -- Add relevant information that doesn't quite fit above
860- % and isn't implementation related
861- % -- 'Relevant buckshot section'
862-
863- \ds {Point out what the reader should have learned from this chapter before
864- anything else}
837+
838+ This final section synthesizes the chapter's findings, highlighting the key
839+ insights that inform the design of Drasil. By summarizing our process and
840+ rationale, we prepare the reader for the transition from analysis to
841+ implementation in the following chapter.
865842
866843Through this chapter, as part of our effort to reduce unnecessary redundancy
867844across the software development process, we have taken an approach to breaking
0 commit comments