New Generation of Software Development

Size: px
Start display at page:

Download "New Generation of Software Development"

Transcription

1 New Generation of Software Development Terry Hon University of British Columbia Main Mall Vancouver B.C. V6T 1Z4 ABSTRACT In this paper, I present a picture of what software development will be like ten years down the road. I believe software development will continue to move towards higher level of abstraction, closer to human languages and communication. I envision a seamless integration of aspect oriented programming, domain specific languages, generative programming and intentional programming, along with more sophisticated development tools to complement the changes. 1. INTRODUCTION Software development practices have moved towards a higher level of abstraction as compared to ten or twenty years ago. Programming languages are more high level; development tools are becoming more sophisticated and more integral in the process of software development; crosscutting concerns are addressed more effectively and in a more modular fashion. I believe that the trends from the past ten years will continue, integrating aspect oriented programming, domain specific languages, generative programming and intentional programming seamlessly. Tools will continue to evolve and ultimately become an indispensable part of software development. I will try to support the above claim in the rest of the paper. The rest of the paper is organized as follows. Section 2 gives a brief description of software development trend in the past ten years. Section 3 describes my vision for the future in programming languages. Section 4 describes my vision for the future in software development tools. Section 5 describes adoption process I envisioned for what I have proposed in Sections 3 and 4. Finally Section 6 gives a summary. 2. PAST TRENDS To get a better view of the future in software development in the next ten years, let us first look at the innovations of the past ten years. 2.1 Aspect Oriented Programming Object oriented language only allow one core decomposition of a Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.. piece of software into a hierarchy of packages and classes; however there are many features of the software that crosscut the core decomposition, causing code implementing this feature to be scattered throughout the software. Aspect Oriented Programming surfaced to provide a solution to this scattering problem. It uses aspect, which consists of advices that apply to code that is matched by the corresponding pointcuts. These advices are woven by the provided weaver to the base source code wherever pointcuts are matched. If location to weave an advice is undecidable statically, dynamic checks are added to all probable location in the base code. Aspect Oriented Programming provides effective modules for crosscutting concerns, as specified with aspects and pointcuts). It also provides an automated weaving process. The woven code, along with the help of any optimizations that a sophisticated compiler will perform, is expected to perform as good as if a programmer was to write the base level code himself. Also woven code is compatible with base language executable, making adoption of this technology easier, since no additional software or hardware is needed to incorporate the change. Even though having aspects to separate crosscutting concerns from the code of the core decomposition is ideal in most cases, there are still time when a developer would like to actually see what the woven code would look like, or at least to have an idea of what it will look like. Without adequate tool support, woven code can not be easily displayed. Even with tools that are available today, where there is an indication (an arrow) at locations of code that match an advice pointcut, it can still be quite tedious to navigate through all the codes that an advice affects. I believe that better tool support can solve this problem, and will be discussed further in Section Intentional Programming Intentional Programming can be credited to Charles Simonyi. He proposes that programmers should be able to express their intentions explicitly in their code, rather than being limited by the language features, implicitly expressing their intentions through layers of unnecessary code [1]. Intentional Programming uses intermediate language as the canonical representation of code. Instead of storing plain ASCII text, Intentional Programming stores AST structure [2] that represents intent. Developers interact with these specialized ASTs, which more closely correspond to how a human thinks about a program. Since the code more closely reflects the design, there is no need for extra documentation, which requires extra resources to create and maintain and usually becomes outdated after code/design modification.

2 The idea of coding using intent is a great idea, since it gives user a higher level of abstraction to reason with, reducing time to translate a human thought into code and also the time to translate from code to human thought (in the case of reasoning about design from code). One of the reasons I believe that Intentional Programming has not become more widely adopted is because it stores code in its specialized AST structures. This means that once a team of developers adopt this technology, they cannot change their mind about the technology without losing everything that they worked on when they were using the IP technology. In other words, there is no incremental adoption for this technology, which is integral factor in the decision process of adoption in industry. 2.3 Domain Specific Language Domain Specific Language allows developers to reason in a higher level of abstraction. Since domain specific knowledge is already incorporated in the construction of the domain specific language, it is unnecessary for a developer to reiterate domain information again in his/her own code. This, similar to Intentional Programming, allows developers to reason and understand programs written with a domain specific language quickly, since they more closely relate to how they reason about the problem. There is no doubt that given a domain specific language, programming does become easier, especially for novice or interim programmers. Code becomes more concise and, like intentional programming, it reflects more closely what the programmer s thoughts were when he/she was trying to solve the problem. However, designing and implementing an adequate domain specific language is very difficult. A good domain specific language deals with common cases easily, but also tries to keep the language syntax as simple while relating to the domain as closely as possible. Also this language has to be general enough that more than one project can take advantage of the domain knowledge. This can cause the language implementation to explode in size; therefore it is unrealistic for each project team to design its own domain specific language from scratch. 2.4 Generative Programming Generative Programming involves a generator, which takes a set of input and generates code (usually at a lower level of abstraction then the input language) according to the specification of the input. The idea of generative programming incorporates a subset of domain specific languages. The input file to the generator is written in a language (the domain specific language) so that the generator can have enough information, along with its built in domain knowledge, to generate adequate base level code that achieve what the input file specified but without developers having to reiterate information that the generator already knows. Generative Programming is an ingenious idea if the generatoroutputted code does not have to be edited by the developer, meaning it fits perfectly with what the intents of the programmers are. However, to build a generator that can incorporate all possible scenarios of its domain is very difficult. This dilemma is similar to the difficulty in building an extensive domain specific language. If we allow the generator to generate code that leaves some of the work to the developers, meaning the developers might have to fill in some parts of a method, or edit code that the generator generated, then we have to deal with the issues that arise when codes are regenerated after modifications have been made to the old generated code. What should happen to the changes made to the generated code? I will try to come up with a solution to this problem in Section PROGRAMMING LANGUAGE I believe that programming languages will continue to evolve, incorporating the advantages of aspect oriented programming, domain specific language, intentional programming and generative programming and also improving on the disadvantages of these programming paradigms. 3.1 Generators Even at a high-level language, it is inevitable to write code that has many repetitive parts; usually these repetitive parts are spread out all over a piece of software. Generators are used occasionally to solve this problem, and I believe they will become more widely used than they are nowadays. For example, to implement the visitor pattern, the visit and visitchildren methods need to be implemented in every class that a Visitor will visit. Most of the time, the body of the visit methods just involve calling the correct visit method of the Visitor class. Similarly the body of the visitchildren method simply involves calling the visit methods of its children, which are usually stored as the private fields of the class. This can be easily generated if the fields that represent children of a class can be corrected annotated. In Java 1.5, metadata can be added to code and these information remains in the source file even after compilation, easing the process of debugging and lessening the work needed to incorporate a generator. These metatdata tags are quite similar to the idea of intentional programming, except that the metatdata tags can only describe very limited intent. However I believe this illustrates the probability that generative programming will become an integral part of programming in the future. As long as all the adequate information can be annotated in source code, a generator can be easily implemented to take advantage of the annotations. Since there are already well known patterns that many developers follow while they program, these patterns can be easily simplified to incorporate generative programming, along with the corresponding generator so that developers can all take advantage. To take these patterns and generators to the next level, domain specific languages can be created that use these patterns and use the accompanying generators in the background. For example there might be a domain specific language for building a piece of software that deals with code, like a compiler or a type checker. Then this domain specific language can lessen the work of a developer by providing easy syntax for writing AST classes and the visitors that are used to actually do the compiling or type checking. As discussed in Section 2.4, one inevitable problem that arises from generative programming is the interaction between developers and generated code. Should a developer be allowed to alter the output of a generator? If so, what happens to the changes if codes are regenerated after input to the generator is changed? I believe the output of a good generator would not need to ever be altered by a developer, at least not directly. The reason for a developer to edit generated code is that the code generated is too

3 general to deal with a special case he/she is trying to deal with in the code. I believe that a good generator should deal with these special cases by accepting parameters in the input that indicates what to do in these special cases. This way, if the generated code is not as specialized as the developer wished, he/she should update the input of the generator rather than changing the generated code. But this specialized generator would mean that each project would require its own specialized generator. Then how can we take advantage of the off-the-shelf generators which have been well researched and well optimized from past experience? This problem can be solved if we allow output of a generator to be part of the input to another generator. This way, all the work that deals with general cases are done by the off-the-shelf generator, and minimal work would need to be done in the second generator, which injects specialized information to the code. This second generator can then be developed by the developers who know these specialized details the best. All this generator has to do is to inject specialized information to the generated code from the off-the-shelf generators, which should not be any more work than to actually edit the generated code to incorporate the specialized details by hand; therefore, no extra work is really needed to incorporate generators into a project as compared to coding by hand. 3.2 Aspectual Improvements I believe that the idea of using pointcuts and weavers in Aspect Oriented Programming is ideal for dealing with crosscutting concerns; however the mechanism in which pointcuts and advice bodies are declared can still be improved. An advice body can get very complicated depending on the application. It can also get tedious to define poincuts as the system grows bigger and more code needs to be affected by an advice. I believe that one of the reasons why pointcuts are difficult to understand is because they actually perform multiple rolls in the weaving process. Some pointcuts are only used to describe locations in code that the corresponding advice affects, but some pointcuts are also used to gather information for the body of the corresponding advice. As advice body changes (for example one more action needs to be taken in the advice body, meaning additional information needs to be gathered by the pointcuts), the poinctcuts that are used to gather information can also change, even though the locations that the advice affects remain exactly the same. This violates the principles of modularity, and I think this duality of role that a pointcut plays should be omitted. If the advice body is where the gathered information is used, why not leave the gathering to the body as well? One problem that arises from advice body being responsible for gathering information is that there are some repetitive codes that arise, because the pointcuts would be responsible for type checking a certain data, and similar code would be needed to actually remember what the data was. This is where domain specific language can come into play. As long as we keep the syntax for getting these information simple (similar to a variable declaration) then this task can become much simpler. For example if we limit all data that can be gathered in the advice body to be the variables that are checked in the pointcuts, then the syntax can be kept at a relatively simple level. With the knowledge to actually gather the data hidden in the definition of the domain specific language, this is plausible. 3.3 Higher Level of Abstraction Even though domain specific languages can be tedious to design and implement, I believe it is an integral part to move forwards in the improvement of programming language. As we have seen in Section 3.2 and 3.3, I believe domain specific language plays an important role in both generative programming and aspect oriented programming. We are programming in a higher level of abstraction as we did ten years ago, but there comes a certain point when additional abstraction means losing vital information in the finish product of a piece of software, even though the hidden information may be trivial to developer of a certain project. This is where domain specific languages come in; we can hide some of these details in the implementation of the language, leaving developers to express only the highest level of details that the language cannot know about (for example, parameters to pass into a generator). This is plausible because these trivial details are specific to the domain of the project. In order for domain specific languages to be effective in this process, it needs to be well developed and also general enough that not everyone that uses the language has to modify it drastically to incorporate his or her uses. This involves several domain experts and developers to develop this language, but I believe that if such a language does exist, many developers can benefit from the well established domain knowledge and will help fund the development, refinement and optimization needed for such a large scale project. For example, domain specific language can be developed for each generic pattern. If these languages are developed properly, it will be very easy to modify them slightly to have specialized languages that incorporate the specialized use of the pattern by any developers. Initially domain specific languages will remain small and private to developers involve in certain projects. As more developers become interested in a certain domain, they can join forces in developing a large language. I believe this process will be incremental and eventually an equilibrium of large and small specialized languages will be reached. As far as coding by intentions is concerned, I believe that as we move towards higher level of abstraction in source code, we are moving towards programming with intents. The reason why intents become lost in translation from design to implementation is because there is much code needed to express an intent from design. But with higher level of abstractions, these useless codes will be abstracted away, leaving only the intents in the code. 4. SOFTWARE DEVELOPMENT TOOL I believe that many innovations in programming languages cannot be fully appreciated until there are corresponding improvements in software development tool that help maximize the benefits of the programming language innovations. I believe that the key to effective and helpful software development tool is to give developers as much options as

4 possible. Tools should give developers choices in the way they view their code, and choices in the way they edit their code. Furthermore, tools should not lock users in a single way of doing things. It should allow users to change their mind any time they see fit. For example, a developer can choose to edit his/her code using a graphical view of the code, and then choose to edit it in plain text mode. These options do not mean that multiple copies of a piece of software need to be stored, reflecting each model. I believe that only one effective model of the code needs to be stored (ASCII texts or some other representation of an effective model). As long as the model is effective, all other information needed in other models can be derived. In language nowadays, this statement might not be true yet, because there are intents of developers that are lost in the translation to base language code. I believe that with the aid of domain specific languages, programming with intents and aspect oriented programming, the design details will not become lost when a developer actually starts coding. With this in mind, there is a direct correlation between any models with the base model that a tool used to store code; therefore, any change a user makes in one model can be stored in the base language, and if he/she changes his view to another model, the changes can be easily reflected. To give an example of my vision of software development tool, one model would be something similar to a class diagram, but instead of only having only method and field signatures, more information is needed to make this model effective. Inside each method, there must be some more information about the body of the method. A collapsible body would be perfect in this situation. If the user really does want to see the class diagram, he/she can choose to view the model with all the method bodies collapsed. This distinguishes this model from a normal class diagram, in which the class diagram is not yet effective. Interacting with this model can involve adding/removing a method or a field. A red cross or an error message is shown if no body is given for a new method. There are also options for adding domain specific languages or generators to lessen the work a user needs to do to implement a piece of software. For example, if the visitor pattern is selected, user would not need to implement the visit or visitchildren methods. Anything that deals with the pattern would be automatically inserted into each model where appropriate, according to the specification of the domain specific language or the generator. Sometimes users might still want to see non-effective models (for example a plain class diagram) without all the additional information. This can still be allowed in tools except that no modification can be made to these non-effective models. If users do want to make modification to a non-effective model, there will be links that lead them directly to the corresponding effective model where he/she can then make the appropriate modifications. To incorporate aspect oriented programming or any programming language features that deal with crosscutting concerns, choice of multiple views also help developers reason with aspects. For example an option for user to view AOP code would be to look at each aspect on its own (looking at each crosscutting concern separately). Another user might then want to know how the woven code would actually look. He/she can then select the woven code model/view to learn more about the woven code. This feature can be hard to implement if there are many dynamic pointcut in the implement of a crosscutting concern, but I believe that this view can still be helpful, if only for letting the user know that many areas can be affected in the woven code if the dynamic test does succeed, triggering the user to narrow the static pointcut instead of leaving all the work to the dynamic tests, improving efficiency in the executable. To incorporate generators and generated code, similar to AOP, views of input to the generator and the generated code can be chosen whenever the user chooses. As discussed in the previous section, generated code would not be encouraged to be edited. If there were changes that user wants to make to the generated code, he/she should change the input to the generator instead. An ideal generator would actually provide link between generated code and the part of the input to the generator that is responsible for that part of the generated code. 5. TECHNOLOG ADOPTION Technology always takes time to be adopted. I believe that development tool adoption is going to affect what programming language paradigm gets adopted first. If there is not enough adequate tool support for a certain programming language innovation, nobody will want to use it. On the other hand, a beautifully designed tool for a useless language would also not be used by many people. I believe that the usability and the novelty of features of a tool is what is going to attract people to try out a tool, and the usefulness is what is going to keep people using the tool continuously. Another big factor in swaying people to adopt a tool is if it allows incremental adoption. Developers like to have the option of changing their mind about a technology after trying it out. A tool that is backward compatible, which let developers back track to their old tool easily and without losing all the work that they did when trying out the new tool, will increase the probability of the tool being adopted. I believe that another key role in getting a tool adopted is that the choice of editing code with EMACS or VI must still be an option to the developer, if he/she so chooses. Because of this, I believe that no matter what models are available to users through the tool, plain ASCII text should still be what is used to store the code. In spite of this, there is no limitation on what a user can use when manipulating an effective model of the system, including graphics, or high level languages (languages that are close to our everyday speech). This is because the model is effective, which means there is a direct translation between the model and the ultimate executable byte codes. Therefore there is always a translation between the model the user is interacting with and ASCII text. Small start-up companies will probably be the first ones to take the challenge of trying out new tools, since they are in search of something that can help them compete with the larger, more wellestablished companies. As everything else in life, as a tool becomes more widely-used, more funding will become available for the improvement and maintenance of the tool. Gradually more developers and companies will start to adopt the tool. And the tool will then be able to improve by incorporating more

5 programming language innovations, which will maintain their customer support. 6. SUMMARY I do not believe there will be any drastic changes in the next ten years of software development. I believe there will be many extensions to already existing innovations and paradigms, including aspect oriented programming, domain specific languages, generative programming and intentional programming. I also believe that software development tools will become a more integral part of software development in the near future, simply because a human mind cannot envision what code will look like without tool support, because languages are becoming more and more abstract, there are more options to developers to decide how they would like to view code. And it is becoming harder for them to be able to simultaneously keep track of what each of these views look like. 7. REFERENCES [1] Cunningham & Cunningham Inc., Intentional Programming. [2] Lutz Roeder. Transformation and Visualization of Abstractions using the Intentional Programming System.

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering

More information

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The

More information

Unification of AOP and FOP in Model Driven Development

Unification of AOP and FOP in Model Driven Development Chapter 5 Unification of AOP and FOP in Model Driven Development I n this chapter, AOP and FOP have been explored to analyze the similar and different characteristics. The main objective is to justify

More information

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona Progress Report Aspect Oriented Programming meets Design Patterns Academic Programme MSc in Advanced Computer Science Guillermo Antonio Toro Bayona Supervisor Dr. John Sargeant The University of Manchester

More information

A COMPARISON OF AOP BASED MONITORING TOOLS

A COMPARISON OF AOP BASED MONITORING TOOLS STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LVI, Number 3, 2011 A COMPARISON OF AOP BASED MONITORING TOOLS GRIGORETA S. COJOCAR AND DAN COJOCAR Abstract. The performance requirements of a software system

More information

Generating Aspect Code from UML Models

Generating Aspect Code from UML Models Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany Iris.Groher@fh-hagenberg.at Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,

More information

CRANFIELD UNIVERSITY. João Pedro Rodrigues de Almeida. Visualising defects in source code

CRANFIELD UNIVERSITY. João Pedro Rodrigues de Almeida. Visualising defects in source code CRANFIELD UNIVERSITY João Pedro Rodrigues de Almeida Visualising defects in source code School of Engineering MSc in Computational Software Techniques in Engineering MSc Academic Year: 2011-2012 Supervisor:

More information

Commercial Database Software Development- A review.

Commercial Database Software Development- A review. Commercial Database Software Development- A review. A database software has wide applications. A database software is used in almost all the organizations. Over 15 years many tools have been developed

More information

WHITE PAPER. Peter Drucker. intentsoft.com 2014, Intentional Software Corporation

WHITE PAPER. Peter Drucker. intentsoft.com 2014, Intentional Software Corporation We know now that the source of wealth is something specifically human: knowledge. If we apply knowledge to tasks we already know how to do, we call it productivity. If we apply knowledge to tasks that

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16 Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

More information

Integration of Application Business Logic and Business Rules with DSL and AOP

Integration of Application Business Logic and Business Rules with DSL and AOP Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland Bogumila.Hnatkowska@pwr.wroc.pl

More information

Efficient database auditing

Efficient database auditing Topicus Fincare Efficient database auditing And entity reversion Dennis Windhouwer Supervised by: Pim van den Broek, Jasper Laagland and Johan te Winkel 9 April 2014 SUMMARY Topicus wants their current

More information

5Get rid of hackers and viruses for

5Get rid of hackers and viruses for Reprint from TechWorld /2007 TEChWoRLd ISSuE 2007 ThEBIG: 5 FIREWaLLS TEChWoRLd ISSuE 2007 ThEBIG: 5 FIREWaLLS TEChWoRLd ISSuE 2007 ThEBIG: 5 FIREWaLLS # # # Load balancing is basically a simple task where

More information

The Service Revolution software engineering without programming languages

The Service Revolution software engineering without programming languages The Service Revolution software engineering without programming languages Gustavo Alonso Institute for Pervasive Computing Department of Computer Science Swiss Federal Institute of Technology (ETH Zurich)

More information

GCE APPLIED ICT A2 COURSEWORK TIPS

GCE APPLIED ICT A2 COURSEWORK TIPS GCE APPLIED ICT A2 COURSEWORK TIPS COURSEWORK TIPS A2 GCE APPLIED ICT If you are studying for the six-unit GCE Single Award or the twelve-unit Double Award, then you may study some of the following coursework

More information

Instructional Design Framework CSE: Unit 1 Lesson 1

Instructional Design Framework CSE: Unit 1 Lesson 1 Instructional Design Framework Stage 1 Stage 2 Stage 3 If the desired end result is for learners to then you need evidence of the learners ability to then the learning events need to. Stage 1 Desired Results

More information

Engineering Process Software Qualities Software Architectural Design

Engineering Process Software Qualities Software Architectural Design Engineering Process We need to understand the steps that take us from an idea to a product. What do we do? In what order do we do it? How do we know when we re finished each step? Production process Typical

More information

YouTrack MPS case study

YouTrack MPS case study YouTrack MPS case study A case study of JetBrains YouTrack use of MPS Valeria Adrianova, Maxim Mazin, Václav Pech What is YouTrack YouTrack is an innovative, web-based, keyboard-centric issue and project

More information

Experiences with Online Programming Examinations

Experiences with Online Programming Examinations Experiences with Online Programming Examinations Monica Farrow and Peter King School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh EH14 4AS Abstract An online programming examination

More information

Hypercosm. Studio. www.hypercosm.com

Hypercosm. Studio. www.hypercosm.com Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks

More information

The Recipe for Sarbanes-Oxley Compliance using Microsoft s SharePoint 2010 platform

The Recipe for Sarbanes-Oxley Compliance using Microsoft s SharePoint 2010 platform The Recipe for Sarbanes-Oxley Compliance using Microsoft s SharePoint 2010 platform Technical Discussion David Churchill CEO DraftPoint Inc. The information contained in this document represents the current

More information

(Refer Slide Time 00:56)

(Refer Slide Time 00:56) Software Engineering Prof.N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-12 Data Modelling- ER diagrams, Mapping to relational model (Part -II) We will continue

More information

Base One's Rich Client Architecture

Base One's Rich Client Architecture Base One's Rich Client Architecture Base One provides a unique approach for developing Internet-enabled applications, combining both efficiency and ease of programming through its "Rich Client" architecture.

More information

Voice and data recording Red Box makes it easier than you imagine

Voice and data recording Red Box makes it easier than you imagine Voice and data recording Red Box makes it easier than you imagine SIMPLER SMARTER VOICE If you re reading this, there s a good chance your organization has to record phone calls, radio conversations or

More information

Chapter 13: Program Development and Programming Languages

Chapter 13: Program Development and Programming Languages 15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning

More information

How to save money with Document Control software

How to save money with Document Control software How to save money with Document Control software A guide for getting the most out of your investment in a document control software package and some tips on what to look out for By Christopher Stainow

More information

White Paper: 5GL RAD Development

White Paper: 5GL RAD Development White Paper: 5GL RAD Development After 2.5 hours of training, subjects reduced their development time by 60-90% A Study By: 326 Market Street Harrisburg, PA 17101 Luis Paris, Ph.D. Associate Professor

More information

5 Signs Your ATS is Dying

5 Signs Your ATS is Dying 5 Signs Your ATS is Dying Introduction Applicant Tracking Systems (ATS s) come in a variety of manifestations touting a variety of features and claims. What they all have in common is that they aggregate

More information

Waterfall vs. Agile Methodology

Waterfall vs. Agile Methodology 2012 Waterfall vs. Agile Methodology Mike McCormick MPCS, Inc. Revised Edition 8/9/2012 Contents Waterfall vs. Agile Model Comparison...3 Conceptual Difference...3 Efficiency...4 Suitability...4 Waterfall

More information

Foundation of Aspect Oriented Business Process Management

Foundation of Aspect Oriented Business Process Management Foundation of Aspect Oriented Business Process Management Amin Jalali Department of Computer and Systems Sciences Degree project 30 HE credits Degree subject: computer and Systems Sciences Degree project

More information

Firewall Builder Architecture Overview

Firewall Builder Architecture Overview Firewall Builder Architecture Overview Vadim Zaliva Vadim Kurland Abstract This document gives brief, high level overview of existing Firewall Builder architecture.

More information

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali Software development life cycle Software life cycle: Software Engineering - II ITNP92 - Object Oriented Software Design Dr Andrea Bracciali Module Co-ordinator 4B86 abb@cs.stir.ac.uk Spring 2014 (elicitation)

More information

Chapter 5 Aspect Oriented Programming

Chapter 5 Aspect Oriented Programming 2I1AC3 : Génie logiciel et Patrons de conception Chapter 5 Aspect Oriented Programming J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé. Je ne

More information

Top 10 Tips for Successful Software Development Management

Top 10 Tips for Successful Software Development Management 71% of the software projects do not succeed! Top 10 Tips for Successful Software Development Management by Jack Bicer Here are some time tested guidelines that have been used extensively to deliver web

More information

Chapter 13: Program Development and Programming Languages

Chapter 13: Program Development and Programming Languages Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented

More information

Programming in Access VBA

Programming in Access VBA PART I Programming in Access VBA In this part, you will learn all about how Visual Basic for Applications (VBA) works for Access 2010. A number of new VBA features have been incorporated into the 2010

More information

D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013

D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013 D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013 The purpose of these questions is to establish that the students understand the basic ideas that underpin the course. The answers

More information

Pypad. A magical and revolutionary collaborative editing platform. Apr 2010 R. Crosby, M. Huang, J.J. Poon, S. Zhang

Pypad. A magical and revolutionary collaborative editing platform. Apr 2010 R. Crosby, M. Huang, J.J. Poon, S. Zhang Pypad A magical and revolutionary collaborative editing platform 0. CODE OVERVIEW 0.1. FILES Apr 2010 R. Crosby, M. Huang, J.J. Poon, S. Zhang PypadGui.py - user interface for text and drawing editing

More information

2. Analysis, Design and Implementation

2. Analysis, Design and Implementation 2. Subject/Topic/Focus: Software Production Process Summary: Software Crisis Software as a Product: From Individual Programs to Complete Application Systems Software Development: Goals, Tasks, Actors,

More information

2. Analysis, Design and Implementation

2. Analysis, Design and Implementation 2. Analysis, Design and Implementation Subject/Topic/Focus: Software Production Process Summary: Software Crisis Software as a Product: From Programs to Application Systems Products Software Development:

More information

VISUALIZATION. Improving the Computer Forensic Analysis Process through

VISUALIZATION. Improving the Computer Forensic Analysis Process through By SHELDON TEERLINK and ROBERT F. ERBACHER Improving the Computer Forensic Analysis Process through VISUALIZATION The ability to display mountains of data in a graphical manner significantly enhances the

More information

Fourth generation techniques (4GT)

Fourth generation techniques (4GT) Fourth generation techniques (4GT) The term fourth generation techniques (4GT) encompasses a broad array of software tools that have one thing in common. Each enables the software engineer to specify some

More information

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0 1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level

More information

Integration of Application Business Logic and Business Rules with DSL and AOP

Integration of Application Business Logic and Business Rules with DSL and AOP e-informatica Software Engineering Journal, Volume 4, Issue, 200 Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska, Krzysztof Kasprzyk Faculty of Computer

More information

Functional Decomposition Top-Down Development

Functional Decomposition Top-Down Development Functional Decomposition Top-Down Development The top-down approach builds a system by stepwise refinement, starting with a definition of its abstract function. You start the process by expressing a topmost

More information

Evaluating OO-CASE tools: OO research meets practice

Evaluating OO-CASE tools: OO research meets practice Evaluating OO-CASE tools: OO research meets practice Danny Greefhorst, Matthijs Maat, Rob Maijers {greefhorst, maat, maijers}@serc.nl Software Engineering Research Centre - SERC PO Box 424 3500 AK Utrecht

More information

Custom Web Development Guidelines

Custom Web Development Guidelines Introduction Custom Web Development Guidelines Unlike shrink wrap software, custom software development involves a partnership between the architect/programmer/developer (SonicSpider) and the owner/testers/users

More information

Bentley ArcGIS. Connector

Bentley ArcGIS. Connector Bentley ArcGIS Connector Introduction ESRI, as a GIS software products company, and Bentley Systems, Incorporated, as a developer of solutions for architecture/engineering/construction (AEC) professionals,

More information

Spreadsheet Programming:

Spreadsheet Programming: Spreadsheet Programming: The New Paradigm in Rapid Application Development Contact: Info@KnowledgeDynamics.com www.knowledgedynamics.com Spreadsheet Programming: The New Paradigm in Rapid Application Development

More information

Coordinated Visualization of Aspect-Oriented Programs

Coordinated Visualization of Aspect-Oriented Programs Coordinated Visualization of Aspect-Oriented Programs Álvaro F. d Arce 1, Rogério E. Garcia 1, Ronaldo C. M. Correia 1 1 Faculdade de Ciências e Tecnologia Universidade Estadual Paulista Júlio de Mesquita

More information

Journal of Information Technology Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION ABSTRACT

Journal of Information Technology Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION ABSTRACT Journal of Information Technology Management ISSN #1042-1319 A Publication of the Association of Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION MAJED ABUSAFIYA NEW MEXICO TECH

More information

Case studies: Outline. Requirement Engineering. Case Study: Automated Banking System. UML and Case Studies ITNP090 - Object Oriented Software Design

Case studies: Outline. Requirement Engineering. Case Study: Automated Banking System. UML and Case Studies ITNP090 - Object Oriented Software Design I. Automated Banking System Case studies: Outline Requirements Engineering: OO and incremental software development 1. case study: withdraw money a. use cases b. identifying class/object (class diagram)

More information

Javadoc like technical documentation for CAPRI

Javadoc like technical documentation for CAPRI Javadoc like technical documentation for CAPRI Introduction and background - by Wolfgang Britz, July 2008 - Since 1996, CAPRI has grown to a rather complex (bio-)economic modelling system. Its code based

More information

VDM vs. Programming Language Extensions or their Integration

VDM vs. Programming Language Extensions or their Integration VDM vs. Programming Language Extensions or their Integration Alexander A. Koptelov and Alexander K. Petrenko Institute for System Programming of Russian Academy of Sciences (ISPRAS), B. Communisticheskaya,

More information

KS3 Computing Group 1 Programme of Study 2015 2016 2 hours per week

KS3 Computing Group 1 Programme of Study 2015 2016 2 hours per week 1 07/09/15 2 14/09/15 3 21/09/15 4 28/09/15 Communication and Networks esafety Obtains content from the World Wide Web using a web browser. Understands the importance of communicating safely and respectfully

More information

Higher Computing. Software Development. LO1 Software Development process

Higher Computing. Software Development. LO1 Software Development process Software Development LO1 Software Development process Ian Simpson Inverurie Academy 2006 Software Development The candidate must demonstrate knowledge and understanding, practical skills and problem solving

More information

Visual Logic Instructions and Assignments

Visual Logic Instructions and Assignments Visual Logic Instructions and Assignments Visual Logic can be installed from the CD that accompanies our textbook. It is a nifty tool for creating program flowcharts, but that is only half of the story.

More information

Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl

Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl Domain Specific Languages for Business Users Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl Sheet 2 Background Experience Business DSLs Insurance Product Modeling (structure) Pattern

More information

The Role of Knowledge Based Systems to Enhance User Participation in the System Development Process

The Role of Knowledge Based Systems to Enhance User Participation in the System Development Process The Role of Knowledge Based Systems to Enhance User Participation in the System Development Process Gian M Medri, PKBanken, Stockholm Summary: Computers are a fact of life today, even for the public in

More information

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1 The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions

More information

What's new in OneNote 2010

What's new in OneNote 2010 What's new in OneNote 2010 What's new in OneNote 2010 Universal access to all of your information With OneNote 2010, you have virtually uninterrupted access to your notes and information by providing the

More information

Texas Essential Knowledge and Skills Correlation to Video Game Design Foundations 2011 N130.0993. Video Game Design

Texas Essential Knowledge and Skills Correlation to Video Game Design Foundations 2011 N130.0993. Video Game Design Texas Essential Knowledge and Skills Correlation to Video Game Design Foundations 2011 N130.0993. Video Game Design STANDARD CORRELATING PAGES Standard (1) The student demonstrates knowledge and appropriate

More information

Harmless Advice. Daniel S Dantas Princeton University. with David Walker

Harmless Advice. Daniel S Dantas Princeton University. with David Walker Harmless Advice Daniel S Dantas Princeton University with David Walker Aspect Oriented Programming Aspect Oriented Programming IBM - 2004 IBM reports positive results in aspect-oriented programming experiments

More information

Software Engineering. So(ware Evolu1on

Software Engineering. So(ware Evolu1on Software Engineering So(ware Evolu1on 1 Software change Software change is inevitable New requirements emerge when the software is used; The business environment changes; Errors must be repaired; New computers

More information

Manage Software Development in LabVIEW with Professional Tools

Manage Software Development in LabVIEW with Professional Tools Manage Software Development in LabVIEW with Professional Tools Introduction For many years, National Instruments LabVIEW software has been known as an easy-to-use development tool for building data acquisition

More information

A Generic business rules validation system for ORACLE Applications

A Generic business rules validation system for ORACLE Applications A Generic business rules validation system for ORACLE Applications Olivier Francis MARTIN System analyst European Laboratory for Particle Physics - CERN / AS-DB Geneva - SWITZERLAND Jean Francois PERRIN

More information

Ten questions to ask when evaluating SAP change management solutions

Ten questions to ask when evaluating SAP change management solutions Ten questions to ask when evaluating SAP change management solutions Organizations with SAP systems use a variety of different processes and tools to help them address the challenges outlined in this white

More information

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks

More information

This Unit is aimed at candidates who have no previous experience of computer programming.

This Unit is aimed at candidates who have no previous experience of computer programming. National Unit Specification: general information Computing: Programming in a High-level Language Fundamentals CODE F1K0 10 SUMMARY This Unit is designed to introduce the concept of computer programming

More information

Chapter 6. Data-Flow Diagrams

Chapter 6. Data-Flow Diagrams Chapter 6. Data-Flow Diagrams Table of Contents Objectives... 1 Introduction to data-flow diagrams... 2 What are data-flow diagrams?... 2 An example data-flow diagram... 2 The benefits of data-flow diagrams...

More information

Business Success Blueprints Choosing and using a CRM

Business Success Blueprints Choosing and using a CRM Business Success Blueprints Choosing and using a CRM YOUR BLUEPRINT TO SUPER SUCCESS The definitive Entrepreneurs Circle Guide to managing your customer data. Choosing and Using a CRM Still trying to

More information

Preproduction in the Game Development Process

Preproduction in the Game Development Process Preproduction in the Game Development Process From Proposal to Prototype Instructor Sara R. Farr Preproduction At this point, you already have an approved game proposal outlining your game. Preproduction

More information

(Refer Slide Time: 01:52)

(Refer Slide Time: 01:52) Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This

More information

Algorithm & Flowchart & Pseudo code. Staff Incharge: S.Sasirekha

Algorithm & Flowchart & Pseudo code. Staff Incharge: S.Sasirekha Algorithm & Flowchart & Pseudo code Staff Incharge: S.Sasirekha Computer Programming and Languages Computers work on a set of instructions called computer program, which clearly specify the ways to carry

More information

Strategic BPM: The Business Rules Bonus An ACI Worldwide White Paper

Strategic BPM: The Business Rules Bonus An ACI Worldwide White Paper Strategic BPM: The Business Rules Bonus An ACI Worldwide White Paper In today s volatile business climate, agility and flexibility are two requirements for survival. Companies must be able to react to

More information

Terms and Definitions for CMS Administrators, Architects, and Developers

Terms and Definitions for CMS Administrators, Architects, and Developers Sitecore CMS 6 Glossary Rev. 081028 Sitecore CMS 6 Glossary Terms and Definitions for CMS Administrators, Architects, and Developers Table of Contents Chapter 1 Introduction... 3 1.1 Glossary... 4 Page

More information

Human-Readable BPMN Diagrams

Human-Readable BPMN Diagrams Human-Readable BPMN Diagrams Refactoring OMG s E-Mail Voting Example Thomas Allweyer V 1.1 1 The E-Mail Voting Process Model The Object Management Group (OMG) has published a useful non-normative document

More information

æ A collection of interrelated and persistent data èusually referred to as the database èdbèè.

æ A collection of interrelated and persistent data èusually referred to as the database èdbèè. CMPT-354-Han-95.3 Lecture Notes September 10, 1995 Chapter 1 Introduction 1.0 Database Management Systems 1. A database management system èdbmsè, or simply a database system èdbsè, consists of æ A collection

More information

Intelligent Log Analyzer. André Restivo <andre.restivo@portugalmail.pt>

Intelligent Log Analyzer. André Restivo <andre.restivo@portugalmail.pt> Intelligent Log Analyzer André Restivo 9th January 2003 Abstract Server Administrators often have to analyze server logs to find if something is wrong with their machines.

More information

Source Code Translation

Source Code Translation Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven

More information

Software Engineering. What is a system?

Software Engineering. What is a system? What is a system? Software Engineering Software Processes A purposeful collection of inter-related components working together to achieve some common objective. A system may include software, mechanical,

More information

Automated Virtual Cloud Management: The need of future

Automated Virtual Cloud Management: The need of future Automated Virtual Cloud Management: The need of future Prof. (Ms) Manisha Shinde-Pawar Faculty of Management (Information Technology), Bharati Vidyapeeth Univerisity, Pune, IMRDA, SANGLI Abstract: With

More information

Gild: An Integrated Learning and Development plug-in for Eclipse

Gild: An Integrated Learning and Development plug-in for Eclipse Gild: An Integrated Learning and Development plug-in for Eclipse Teaching students how to program can be a challenging task. Unfortunately, there is a lack of tools that provide pedagogical support for

More information

How to Model Aspect-Oriented Web Services

How to Model Aspect-Oriented Web Services How to Model Aspect-Oriented Web Services Guadalupe Ortiz Juan Hernández gobellot@unex.es juanher@unex.es Quercus Software Engineering Group University of Extremadura Computer Science Department Pedro

More information

Introduction to Demand Generation Systems David M. Raab Raab Associates Inc.

Introduction to Demand Generation Systems David M. Raab Raab Associates Inc. Introduction to Demand Generation Systems David M. Raab Raab Associates Inc. What is a demand generation system? The short answer is, it s a system designed to help marketers acquire, nurture and distribute

More information

SPECIFICATION BY EXAMPLE. Gojko Adzic. How successful teams deliver the right software. MANNING Shelter Island

SPECIFICATION BY EXAMPLE. Gojko Adzic. How successful teams deliver the right software. MANNING Shelter Island SPECIFICATION BY EXAMPLE How successful teams deliver the right software Gojko Adzic MANNING Shelter Island Brief Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Preface xiii Acknowledgments xxii

More information

Chapter 6, The Operating System Machine Level

Chapter 6, The Operating System Machine Level Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General

More information

Project Group Applied Functional Programming

Project Group Applied Functional Programming Project Group Applied Functional Programming Web Development with Haskell Meike Grewing, Lukas Heidemann, Fabian Thorand and Fabian Zaiser Informatik, Universität Bonn, Germany Abstract The goal of the

More information

Chapter 5. Regression Testing of Web-Components

Chapter 5. Regression Testing of Web-Components Chapter 5 Regression Testing of Web-Components With emergence of services and information over the internet and intranet, Web sites have become complex. Web components and their underlying parts are evolving

More information

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS In order to ease the burden of application lifecycle management,

More information

Software Design Document (SDD) Template

Software Design Document (SDD) Template (SDD) Template Software design is a process by which the software requirements are translated into a representation of software components, interfaces, and data necessary for the implementation phase.

More information

CHAPTER 11 REQUIREMENTS

CHAPTER 11 REQUIREMENTS Lecture Software Engineering CHAPTER 11 REQUIREMENTS Lecture Software Engineering Topics Determining What the Client Needs Overview of the Requirements Workflow Understanding the Domain The Business Model

More information

101 Basics to Search Engine Optimization. (A Guide on How to Utilize Search Engine Optimization for Your Website)

101 Basics to Search Engine Optimization. (A Guide on How to Utilize Search Engine Optimization for Your Website) 101 Basics to Search Engine Optimization (A Guide on How to Utilize Search Engine Optimization for Your Website) Contents Introduction Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6 Why Use

More information

Agent s Handbook. Your guide to satisfied customers

Agent s Handbook. Your guide to satisfied customers Agent s Handbook Your guide to satisfied customers Introduction LiveChat is a tool that facilitates communication between a company and its customers. Agents who wield that tool use it to make customers

More information

THE DEVELOPMENT OF A WEB BASED MULTIMEDIA INFORMATION SYSTEM FOR BUILDING APPRAISAL

THE DEVELOPMENT OF A WEB BASED MULTIMEDIA INFORMATION SYSTEM FOR BUILDING APPRAISAL THE DEVELOPMENT OF A WEB BASED MULTIMEDIA INFORMATION SYSTEM FOR BUILDING APPRAISAL Dominic O' Sullivan Department of Civil & Environmental Engineering National University of Ireland, Cork. Dr. Marcus

More information

PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY

PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY Andrés Moreno and Niko Myller, University of Joensuu Introduction Jeliot Family is a group of program visualization

More information

Intelledox Designer WCA G 2.0

Intelledox Designer WCA G 2.0 Intelledox Designer WCA G 2.0 Best Practice Guide Intelledox Designer WCAG 2.0 Best Practice Guide Version 1.0 Copyright 2011 Intelledox Pty Ltd All rights reserved. Intelledox Pty Ltd owns the Intelledox

More information

White Paper. Self-Service Business Intelligence and Analytics: The New Competitive Advantage for Midsize Businesses

White Paper. Self-Service Business Intelligence and Analytics: The New Competitive Advantage for Midsize Businesses White Paper Self-Service Business Intelligence and Analytics: The New Competitive Advantage for Midsize Businesses Contents Forward-Looking Decision Support... 1 Self-Service Analytics in Action... 1 Barriers

More information

A Dynamic, Runtime-Extensible, Client-Managed Service Framework

A Dynamic, Runtime-Extensible, Client-Managed Service Framework A Dynamic, Runtime-Extensible, Client-Managed Service Framework D. Parry G. Wells, P. Clayton Computer Science Department Rhodes University Grahamstown, 6140 Email: dom@rucus.ru.ac.za Tel: (046) 603 8640

More information

Matter Management for Legal Departments Essential Features to Maximize Your Return on Investment

Matter Management for Legal Departments Essential Features to Maximize Your Return on Investment White Paper Matter Management for Legal Departments Essential Features to Maximize Your Return on Investment Author: Matt Ryan, Senior Consultant Contents Introduction...1 System Scalability and Reliability...2

More information