home *** CD-ROM | disk | FTP | other *** search
/ ftp.umcs.maine.edu / 2015-02-07.ftp.umcs.maine.edu.tar / ftp.umcs.maine.edu / pub / WISR / wisr4 / proceedings / detex / scacchi.detex < prev    next >
Text File  |  1992-04-05  |  28KB  |  542 lines

  1.  [12pt] article 
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.   Software Reuse in the USC System Factory Project 
  11.  
  12.   Walt Scacchi 
  13.          
  14.           Decision Systems Dept. 
  15.           University of Southern California 
  16.           Los Angeles, CA 90089-1421 
  17.        
  18.           Scacchi@pollux.usc.edu  
  19.  
  20.    
  21.  
  22.  
  23.   
  24. In  this  note,  I briefly review and describe some of the principal techniques
  25. and mechanisms for software reuse that we  have  used  within  the  USC  System
  26. Factory  Project. I first review our techniques for software reuse that include
  27. domain analysis and modeling,  formal  development  methods,  reverse  software
  28. engineering,  module  interconnection formalisms, and software process reuse. I
  29. then follow with a similar review of the computational  mechanisms  we  use  to
  30. support reuse including object repositories, software generators, process-based
  31. environments, software configuration tools, and extensible systems.
  32.  
  33.   0.3in 
  34.  
  35.    Keywords:  Domain analysis and modeling, formal development methods,
  36. reverse software engineering, module interconnection formalisms,
  37. process reuse, software reuse mechanisms
  38.  
  39.  
  40.  
  41.   Introduction 
  42.   In order to help convey an idea of our past and present efforts  in  software
  43. reuse  in  the  USC System Factory Project, I have prepared this working paper.
  44. However, I do want to point out that software reuse, per se,  has  not  been  a
  45. distinct  research  topic  for  us  in  the  SF  Project.  Instead, we think of
  46. software reuse as a basic  strategy  for  improving  our  software  development
  47. productivity.  Thus,  we  seek  to  make frequent and widespread application of
  48. software reuse techniques and mechanisms in our R D activities.
  49.  
  50.   First, I will identify  the  categories  of  software  reuse  techniques  and
  51. mechanisms  that  are  relevant,  then  follow  with a brief description of our
  52. efforts within  each.  Then,  I  will  briefly  describe  some  strategies  for
  53. organizing  software  reuse  activities.  Overall, we have a number of research
  54. publications,  available  from  the  author,   that   provide   more   detailed
  55. descriptions of our efforts than appropriate here.
  56.  
  57.   Software Reuse Techniques 
  58.   What  follows  is an unordered set of techniques for software reuse that have
  59. been employed within the SF project. The notion of "technique" here implies  an
  60. activity  performed by one or more persons that may or may not use a systematic
  61. notation to describe or enact a software reuse strategy.  Techniques appear  in
  62. contrast  to "mechanisms", described later, which refer to computational tools,
  63. executable processes,  or  other  operational  software  artifacts  that  might
  64. support some reuse technique.
  65.  
  66.   The  reuse techniques of interest to us include domain analysis and modeling,
  67. formal   development   methods,   reverse    software    engineering,    module
  68. interconnection formalisms, and software process reuse.
  69.  
  70.  
  71.  
  72.   Domain Analysis and Modeling 
  73.   A  few  years ago, I undertook an effort to survey and categorize the various
  74. families  of  software  systems  available  in  the  commercial  and   academic
  75. marketplace.    I  found  twenty different application families covered the few
  76. thousand software offerings then available.  In  turn,  I  then  had  teams  of
  77. graduate students conduct a systematic analysis of the operational requirements
  78. of the software systems that typified each family. I also  had  these  students
  79. conduct  a  literature  review  of  some  250  articles  that  covered software
  80. applications in each of the 20 families.  From this analysis,  I  identified  a
  81. small  set  of  domain-independent  software  subsystems  (e.g., user interface
  82. management systems, structured storage servers, etc.) that were common  to  two
  83. or  more  families.  Now while this set of software subsystem components is now
  84. fairly obvious, it became clear that  it  was  also  possible  that  unexplored
  85. software  applications  (ie,  potentially  innovative  applications)  could  be
  86. derived by mixing and matching components from different application  families.
  87. For  example,  a  data  visualization and animation subsystem might be combined
  88. with a corporate order-entry, dispersements, and payroll software components as
  89. a skeletal framework for visualizing corporate cash flow patterns and dynamics.
  90. Of course, the significance (or lack thereof) for these new application systems
  91. is in the eye of the beholder (or customer).  Nonetheless, this domain analysis
  92. of software application families did help to reveal which large-scale  software
  93. components  could  be targeted for reuse in different application domains 
  94.  .
  95. Also,  it  helped  to  reveal  that  development  environments   for   software
  96. application  families  should  provide  easy  access  to rapid composibility of
  97. subsystems to support more rapid application development or prototyping.
  98.  
  99.  
  100.  
  101.   Formal Development Methods 
  102.   Actually, one purpose of the preceding domain analysis  of  software  product
  103. families  was  to  try  to  derive  a  set of formal specification (in the Gist
  104. specification language from USC-ISI) for the  common  software  subsystems 
  105.  .
  106. This effort provide to be demanding and time-consuming.  Furthermore, we lacked
  107. a formal specification language support environment.  Thus, the use  of  formal
  108. development  techniques  such as operational specification languages to specify
  109. common software subsystem components remains an underexplored  reuse  technique
  110. for us.
  111.  
  112.   Nonetheless,   we   have   investigated   reuse   opportunities   for  formal
  113. specifications.  For  example,  in  one  experiment,  we  provided  a  set   of
  114. development   teams   (5-7   graduate  students  in  each)  with  access  to  a
  115. hypertext-based catalog of formal specifications  .
  116. The teams were  given  a
  117. problem  statement  to develop and deliver a formal specification (in Gist) and
  118. informal narrative specification within a two week period for a software system
  119. they were then to design, implement, and test.  The specified systems were then
  120. implemented, and the resulting C source code varied in size from 3000 to  12000
  121. lines  of  code.    Thus, we considered the delivered specifications to be more
  122. than toy or textbook level problems.
  123.  
  124.   We recorded the time each  team  spent  producing  their  specification,  the
  125. number  of automatically detected errors in the delivered formal specification,
  126. and whether they  used  specification  fragments  available  in  the  hypertext
  127. catalog  . 
  128. Admittedly  these  are  crude  (but  acceptable)  measures  of
  129. productivity,  quality,  and  reuse.    To  our  surprise,  reuse   of   formal
  130. specification,  per  se,  was not significantly associated with productivity or
  131. quality variations.  Instead, we found that intra-team dynamics  accounted  for
  132. the  most  variance  observed in productivity and quality.  While these results
  133. are only suggestive, not definitive, they did begin to dissuade us from further
  134. studies  of  the  reuse  of  formal specifications as a productivity or quality
  135. enhancement strategy.  However, we do still believe that  formal  specification
  136. do  contribute  to improved understanding of the software applications by their
  137. developers.
  138.  
  139.  
  140.  
  141.   Reverse Software Engineering 
  142.   As part of our work in software engineering environments, we  got  interested
  143. in  reverse software engineering (RSE) and software system re-engineering.  Our
  144. focus was aimed at (a) extracting, visualizing, and restructuring architectural
  145. design representations from source code, and (b) transitioning legacy code into
  146. forms compatible with advanced software engineering environments (such as those
  147. incorporating configuration management services).  A couple of companion papers
  148. describe these efforts and associated environment  mechanisms  in  more  detail
  149.  .
  150.  
  151.   From  a  reuse  perspective,  one  reason to investigate RSE techniques is to
  152. determine to  what  extent  extracted  architectural  designs  reveal  software
  153. reusability  information.  Consider  the  following:   Assume that an extracted
  154. architectural design  of  a  software  application  can  be  represented  by  a
  155. directed-acyclic  graph,  with  nodes corresponding to application modules, and
  156. edges as module interconnections for resource exchange.   Then  we  might,  for
  157. example, seek to identify modules with high interconnectivity as candidates for
  158. reusable components.  This makes more sense when many applications  have  their
  159. architecture  extracted  and logical subsystems compared.  Alternatively, if we
  160. must build new generation  replacement  systems  for  older  less  maintainable
  161. systems,  then  recovered  design  information  might serve as a guide for more
  162. rapidly analyzing and prototyping the new replacement system.    However,  when
  163. moving  to  new  source  code  language  paradigms  (e.g.,  from  imperative to
  164. object-oriented) this technique may not be as useful.  Instead, we may need  to
  165. develop  application-specific  RSE  tools which produce a neutral, intermediate
  166. representation for possible reuse. We have proposed to develop  such  tools  to
  167. some of our research sponsors to aid their proposed redevelopment of
  168. large  programs in ``old'' programming languages into Ada.
  169.  
  170.  
  171.  
  172.   Module Interconnection Formalisms 
  173.   There is now growing interest within the software research community focussed
  174. on    the    rapid    composition    of    reusable,    large-grain    software
  175. components/subsystems   into   large    systems.    Techniques    now    called
  176. "megaprogramming"  by  some are representative of this interest. Basically, the
  177. idea is that there should exist a separate notation, language,  or  some  other
  178. formalism  for  describing the interfaces and interconnection portals for large
  179. components that can configured into operational systems with modest effort.
  180.  
  181.   Our work in this area is an outgrowth of our prior studies in developing  and
  182. applying  module  interconnection  language  (MIL)  concepts  and mechanisms to
  183. support the evolution of configured software life cycle descriptions (ie,  life
  184. cycle  components,  not  just  source  code components) 
  185.  .
  186. In
  187. 1985,  we  developed  the  NuMIL  language  for  specifying  how  families   of
  188. multi-version source code modules can be interconnected into subsystem families
  189. through well-defined resource exchange interfaces.  The NuMIL notation was then
  190. adapted  for  use in any software description notation, formal or informal, and
  191. supported by the SOFTMAN environment since 1989 
  192.  .
  193. This environment in
  194. turn  supports  the  incremental  development, verification and validation, and
  195. quality assurance of software applications throughout their life cycle.  We are
  196. currently  restructuring SOFTMAN so as to incorporate a programmable life cycle
  197. process interface.
  198.  
  199.   The NuMIL notation was also at the same time adapted to serve as a  data  and
  200. tool  integration  language  for  use  in  the  DIF  hypertext environment 
  201.  .
  202. DIFConfig, as well now  call  it,  serves  as  a  domain-independent  hypertext
  203. environment  shell  into  which  we  can  inegrate  existing  software tools or
  204. applications from other domains in  order  to  rapidly  create  domain-specific
  205. hypertext environments (DSHE)  .
  206. These  DSHE also provide hypertext and data
  207. management services to the integrated applications.  We have used DIFConfig  to
  208. develop  DSHE for journal publication, computer-aided design (CAD/CAM), medical
  209. clinic  information  systems,  payroll  and  personnel,  and   computer   music
  210. composition  applications.    If  one were to measure the volume of source code
  211. assembled in these DIFConfig-based environments, the measures run in the  range
  212. of  50K  SLOC  to  250K  SLOC.  Further,  these  application  environments were
  213. developed by  domain  specialists  unfamiliar  with  our  mechanisms,  but  who
  214. averaged about 120 hours of total development effort from start to sign-off.
  215.  
  216.   We  are  currently  redoing  the  backend  to  DIFConfig  to  utilize a newly
  217. developed  distributed  hypertext  (DHT)  service  layer  which  will   provide
  218. hypertext  navigation  and  integration capabilities to applications, tools, or
  219. data distributed over  local/wide-area  network  of  heterogeneous  information
  220. repositories  .
  221. The  DHT  service  is  also being added to the restructured
  222. SOFTMAN environment noted above.
  223.  
  224.  
  225.  
  226.   Process Reuse 
  227.   We have come to recognize that most of the  attention  directed  at  software
  228. reuse is directed to reuse of executable software products. However, we observe
  229. that if our interest is to improve productivity or to reduce the  time  to  get
  230. new  products  out  the  door,  we  can  also  focus attention to improving and
  231. optimizing software production processes.  However,  until  recently,  software
  232. processes   were   informal,   too   abstract,   and  lacking  any  operational
  233. representation. Times have changed.
  234.  
  235.   In order to improve and optimize software production processes, they must  be
  236. observable,  repeatable,  measurable, enactable, and reconfigurable.  In short,
  237. software  processes  should  be  reusable  in  order  to  be   improvable   and
  238. optimizable.
  239.  
  240.   We  are  now  developing  and experimenting with formal languages and graphic
  241. notations for specifying operational software process models.    These  process
  242. models  in  turn  can  be  used  to  integrate and "drive" software development
  243. environments, such as SOFTMAN noted earlier.  We have  developed  a  number  of
  244. associated   mechanisms   for  modeling,  simulating,  configuring,  repairing,
  245. querying, and replaying software process specifications 
  246.  . As we
  247. develop  larger number of software process specifications, we will need to also
  248. develop techniques and mechanisms for indexing process specifications as  well.
  249. Last,  we should also note that process specification techniques and mechanisms
  250. may  be  applied  to  domains  other  than   software   production,   such   as
  251. manufacturing, technology transition, training, and others  .
  252.  
  253.   Software Reuse Mechanisms 
  254.   The  following  is  an unordered set of computational mechanisms for software
  255. reuse that have been employed or mentioned by various researchers:
  256.  
  257.  
  258.  
  259.   Object Repositories and Catalog Servers 
  260.   Most of the software reuse techniques described above implicitly  expect  the
  261. availability  of  some  sort  of software component or artifact repository.  We
  262. have experimented with various  hypertext  mechanisms  as  a  way  to  catalog,
  263. browse,  query, and access various reusable software entities.  At present, our
  264. attention is directed to construction of a distributed hypertext service  layer
  265. (noted   above)   that   will   enable  autonomous,  distributed  heterogeneous
  266. repostories to be integrated and accessible through  a  common  hypertext-based
  267. communication  protocol  .
  268. Thus,  this  service  layer might enable various
  269. repositories of software entities  on  a  wide-area  network  to  be  accessed,
  270. browsed,  and  so  forth  as  if  they  were part of a global or corporate-wide
  271. repository.
  272.  
  273.   On the other hand, there are still some  substantial  problems  that  current
  274. repositories  and  catalog  servers  do  not address very well.  These problems
  275. include (a) naming reusable entities with semantically meaningful names or part
  276. numbers;  (b) discovering whether there exists a reusable entity that satisfies
  277. some request, specification, or semantic signature; and (c)  determining  which
  278. repository  to search for certain types of reusable entities.  At this time, we
  279. are investigating part naming techniques developed for use in group  technology
  280. as a way to address (a).  For (b) and (c), we think that "intelligent gateways"
  281. or "distributed search agents" may be needed as extensions to the  DHT  service
  282. layer.  But these are still preliminary hypotheses.
  283.  
  284.  
  285.  
  286.   Software Generators 
  287.   Software  generators,  as  the name suggests, are programs that produce other
  288. programs. In this regard, software generators are  a  kind  of  "meta-reusable"
  289. software component, since the programs they produce might themselves be treated
  290. as reusable components.  The most common example  of  software  generators  are
  291. parser  and  lexical  analyzer generators. Of course, other kinds of generators
  292. have been produced including 
  293. code generator generators, full compiler generators,
  294. report  generators,  and  various  application  generators.   We have developed
  295. language-directed  editor  generators,  user   interface   generators,   formal
  296. specification (Gist) generators, and spreadsheet application generators 
  297.  .
  298. As  these  generators all produce operational stand-alone programs in the range
  299. of a 1K-25K+ lines of code, such programs become more interesting when they can
  300. be  generated as complete subsystems that can be rapidly composed or integrated
  301. into larger systems or environments.  We have some experience with this in  the
  302. SOFTMAN  environment  where  we  can generate language-directed editors for new
  303. languages  that  are  easy  to  integrate  into  an  existing  or  new  SOFTMAN
  304. environment instance. We have also investigated other meta-tools
  305. and generators of software development environments as well  .
  306.  
  307.  
  308.   However,  we are also interested in exploring the idea of cascading different
  309. software generators together, so that the output of one generator  becomes  the
  310. input  to  one  or  more  other  generators.    For  example,  when  we built a
  311. spreadsheet application generator a few  years  ago,  its  input  specification
  312. language  was a subset of the Gist language.  The generator in turn transformed
  313. the input specification into a working program approximately 10 times the  size
  314. of  the  input specification (as measured by number of statements--admittedly a
  315. crude measure).  We also developed a Gist generator that accepted a structured,
  316. form-based  informal language as input, that in turn paraphrased the input into
  317. a different Gist subset.  In this case, the output-input ratio was roughly 3-1.
  318. Finally,  in  a  systematic  study of the specification and implementation of a
  319. dozen software systems using Gist and C, we observed a C-Gist ratio of  between
  320. 25-1  and  30-1.  Thus,  the  hypothesis  I  then  derived was that if we could
  321. restructure the Gist specification subsets used by the two generators, it might
  322. therefore  be  possible  to connect (or cascade) the specification generator to
  323. the spreadsheet application generator, then expansion ratios of  30-1  or  more
  324. might  be  possible. Further, if the Gist subsets could be expanded to the full
  325. Gist  language,  and  another  intermediate  generator  added  to  handle   the
  326. additional  constructs,  then  it  might  be possible to demonstrate a software
  327. generator cascade that could produce programs with an expansion ratio of  100-1
  328. or  more.    However,  the  students  who  were working with me on this project
  329. graduated and took industrial  positions  before  the  project  was  completed.
  330. Thus,  I  think  of  domain-specific  cascaded  software  generators as still a
  331. promising mechanism for research.
  332.  
  333.  
  334.  
  335.   Process-Based Environments and Interfaces 
  336.   We think that the reuse of software processes is  emerging  as  an  important
  337. technique for software production. Accordingly, we have development a number of
  338. mechanisms for exploring the value of this  technique.  Specifically,  we  have
  339. developed  a  knowledge-based  environment  for modeling and simulating complex
  340. software engineering processes  .
  341. The processes of greatest interest to  us
  342. are  those  that  involve  multiple  development  agents  acting  in  multiple,
  343. sometimes overlapping roles, who are assigned to perform a web of  interrelated
  344. tasks with limited resources. Our environment, called the Articulator, has been
  345. used to model and analyze software development processes in practice by some of
  346. our  industrial sponsors, as well as those which we practice in the SF Project.
  347. We have fund these software process models can be used for  planning,  training
  348. or  guiding, monitoring, and improving software production processes.  Further,
  349. through knowledge-based simulation and query interfaces,  we  can  symbolically
  350. execute  modeled processes, both forward and backward. Thus, we can configure a
  351. process model, simulate its development progress, stop and reply it, back it up
  352. to  some  prior  state,  reconfigure  the  state then continue on a new path of
  353. progress.
  354.  
  355.   In addition, we have  also  developed  what  we  call  a  process-based  user
  356. interface  (PBI)  for software development environments  .
  357. With PBI, we can
  358. use  a  process  model  constructed  with  the  Articulator  to  configure  the
  359. development  environment  to  directly support the process. That is, PBI adds a
  360. capability  to  add  "process  integration"  to  development  environments   or
  361. environment  frameworks  (e.g.,  HP Softbench) that provide data and/or control
  362. integration mechanisms.  We are currently developing  a  PBI  for  the  SOFTMAN
  363. environment  which  also  incorporates  or  supports  the  other software reuse
  364. mechanisms described in this memo.
  365.  
  366.  
  367.  
  368.   Software Configuration Tools 
  369.   As noted in the discussion of  module  interconnection  formalisms,  we  have
  370. developed  a small number of software configuration mechanisms.  DIFConfig is a
  371. primary  example  of  such  a  mechanism  that  supports  the  development   of
  372. hypertext-based   application   environments  that  can  integrate  large-grain
  373. software components. Our experience with DIFConfig has been very  promising  to
  374. date.  However, the current DIFConfig implementation, based on the original DIF
  375. hypertext backplane, lacks capabilities we now consider desirable. Thus, we are
  376. currently  directing  effort  to extending DIFConfig to support the DHT service
  377. layer, as well as to incorporate other software reuse mechanisms  described  in
  378. this section.
  379.  
  380.  
  381.  
  382.   Extensible Software Systems 
  383.   Objects  within  a class hierarchy, subclass specialization, polymorphism and
  384. inheritance are all elements of extensibility available in most object-oriented
  385. program   development   systems.   Software   development  tools  that  support
  386. extensibility directly may therefore be  appropriate  as  part  of  a  reusable
  387. software  environment.  We have developed an extensible tree/graph editor (TGE)
  388. as an example of such a tool  .
  389. With  TGE,  it  is  possible  to  construct
  390. domain-specific  tree  or graph editors. The resulting editors are developed by
  391. specializing the classes of objects and functions provided in the base tree  or
  392. graph  editors.  This  development  technique has the advantage of that the the
  393. target editor is incrementally built from an already operational editor.   This
  394. in turns means that the emerging target editor is always operational throughout
  395. the development process. This ability to execute and try out an emerging editor
  396. during  development  of  course provides an excellent source of feedback during
  397. early prototyping stages. With  our  TGE,  we  have  developed  about  a  dozen
  398. tree/graph  editor  applications  which  we have been able to readily integrate
  399. into a variety of application environments, including SOFTMAN. Thus, extensible
  400. systems  such  as TGE provide capabilities similar in ways to those of software
  401. generators.
  402.  
  403.   Summary 
  404. In this note, I have briefly described  some  of  the  major  techniques  and
  405. mechanisms for software reuse that we use as a regular part of our research and
  406. development activities.  Although software  reuse  has  not  been  an  explicit
  407. research  focus  for  us in the System Factory project, we believe that it will
  408. increasingly become part of normal development practices, at least  within  the
  409. research community.
  410.  
  411.   Acknowledgements 
  412. Work describe in this report is part of 
  413. The USC System Factory project. This work was
  414. supported through contracts and grants with ATT Bell Laboratories, 
  415. Northrop Corporation, Office of Naval Technology through the
  416. Naval Ocean Systems Center, and Pacific Bell.
  417.  
  418.    Bend 89a 
  419.  
  420.  
  421.  
  422. Bendifallah, S. and W. Scacchi.  ``Work Structures and Shifts: An Empirical
  423. Analysis of Software Specification Teamwork.''  Proc. 11th. Intern. Conf.
  424. Software Engineering, ACM, 1989, pp. 260-270.
  425.  
  426.  
  427. Castillo, A., S. Corcoran, and W. Scacchi.``A Unix-based Gist Specification
  428. Processor: The System Factory Experience.''  Proc. 2nd. Intern. Conf. Data
  429. Engineering, 1986, pp. 582-589.
  430.  
  431.  
  432.  
  433. Choi, S., and W. Scacchi. ``Assuring the Correctness of Configured Software
  434. Descriptions.''  Proc. 2nd. Intern. Workshop Software Configuration Management
  435. ACM Software Engineering Notes, 17(7) (1989), 67-76.
  436.  
  437.  
  438.  
  439. Choi, S.C. and W. Scacchi.  ``Extracting and Restructuring the Design of
  440. Large Systems''.  IEEE Software 7, 1 (1990), 66-71.
  441.  
  442.  
  443.  
  444. Song Choi and Walt Scacchi.  ``SOFTMAN: AN Environment for Forward and
  445. Reverse Computer-Aided Software Engineering''.  Information and Software
  446. Technology, to appear (1991).
  447.  
  448.  
  449.  
  450. Garg, P.K. and W. Scacchi.``A Software Hypertext Environment for Configured
  451. Software Descriptions.''  Proc. Intern. Workshop on Software Version and
  452. Configuration Control, January, 1988, pp. 326-343.
  453.  
  454.  
  455.  
  456. Garg, P.K. and W. Scacchi.  ``A Hypertext System to Manage Software Life
  457. Cycle Documents''.  IEEE Software 7, 3 (1990), 90-99.
  458.  
  459.  
  460.  
  461. Karrer, A. and Scacchi, W.  ``An Extensible Object-Oriented Tree/Graph
  462. Editor''. ACM SIGGRAPH Symp. on User Interface and Software Technology, 
  463. October, 1990, pp. 84-91.
  464.  
  465.  
  466.  
  467. Karrer, A. and Scacchi, W.  ``Meta-Environments for Software
  468. Development''.  submitted for publication, October (1991).
  469.  
  470.  
  471.  
  472. Mi, P. and W. Scacchi.  ``A Knowledge Base Environment for Modeling and
  473. Simulating Software Engineering Processes''.  IEEE Trans. Knowledge and Data
  474. Engineering 2, 3 (1990), 283-294.
  475.  
  476.  
  477.  
  478. Peiwei Mi and Walt Scacchi. ``Process Integration for CASE Environments.''
  479. submitted for publication, May (1991).
  480.  
  481.  
  482.  
  483. Narayanaswamy, K. and W. Scacchi.  ``A Database Foundation to Support
  484. Software System Evolution''.  J. Systems and Software 7 (1987), 37-49.
  485.  
  486.  
  487.  
  488. Narayanaswamy, K. and W. Scacchi. ``An Environment for the Development and
  489. Maintenance of Large Software Systems.''  Proc. SOFTFAIR II, 1985, pp. 11-25.
  490.  
  491.  
  492.  
  493. Narayanaswamy, K. and W. Scacchi. ``Maintaining Configurations of Evolving
  494. Software Systems''.  IEEE Trans. Soft. Engr. 13, 3 (1987), 324-334.
  495.  
  496.  
  497.  
  498. Noll, J. and W. Scacchi.  ``Integrating Diverse Information
  499. Repositories: A Distributed Hypertext Approach''.  Computer 24, 12 (1991), to
  500. appear.
  501.  
  502.  
  503.  
  504. Scacchi, W.  ``On the Power of Domain-Specific Hypertext Environments''.
  505. J. Amer. Soc. Info. Science 40, 3 (May 1989), 183-191.
  506.  
  507.  
  508.  
  509. Scacchi, W.  ``Understanding Software Productivity: Towards a
  510. Knowledge-Based Approach''.  Intern. J. Soft. Engr. and Know. Engr. 1, 3
  511. (September 1991).
  512.  
  513.  
  514.  
  515. Scacchi, W., S. Bendifallah, A. Bloch, S. Choi, P. Garg, A. Jazzar,
  516. A. Safavi, J. Skeer, and M. Turner.  Modeling System Development Work:  A
  517. Knowledge-Based Approach.  Computer Science Dept., USC, 1986. working paper
  518. SF-86-05.
  519.  
  520.  
  521.   Biography 
  522. Walt Scacchi received a B.A. in Mathematics, a B.S. 
  523. in Computer Science in 1974 at California State University,
  524. Fullerton, and a Ph.D. in Information and Computer Science at
  525. University of California, Irvine in 1981. He is currently
  526. an associate research professor in the Decision Systems Dept. at USC.
  527. Since joining the faculty at USC in 1981,
  528. he created and continues to direct the USC System Factory 
  529. Project.
  530. This was the first  software factory research project
  531. in a U.S. university. Dr. Scacchi's research interests include 
  532. very large scale software production,  knowledge-based systems
  533. for modeling and simulating organizational processes and operations, 
  534. CASE technologies for developing large heterogeneous information systems,
  535. and organizational analysis
  536. of system development projects. Dr. Scacchi is a member of ACM,
  537. IEEE, AAAI, Computing Professionals for Social Responsibility (CPSR),
  538. and Society for the History of Technology (SHOT).
  539.  
  540.  
  541.  
  542.