New Generation of Software Development
|
|
- Patience Caldwell
- 8 years ago
- Views:
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 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 informationDecomposition 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 informationUnification 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 informationProgress 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 informationA 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 informationGenerating 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 informationCRANFIELD 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 informationCommercial 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 informationWHITE 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 informationAdvanced 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 informationIntegration 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 informationEfficient 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 information5Get 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 informationThe 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 informationGCE 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 informationInstructional 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 informationEngineering 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 informationYouTrack 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 informationExperiences 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 informationHypercosm. 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 informationThe 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)
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 informationBase 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 informationVoice 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 informationChapter 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 informationHow 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 informationWhite 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 information5 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 informationWaterfall 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 informationFoundation 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 informationFirewall 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 informationSoftware 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 informationChapter 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 informationTop 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 informationChapter 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 informationProgramming 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 informationD6 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 informationPypad. 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 information2. 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 information2. 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 informationVISUALIZATION. 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 informationFourth 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 informationMcGraw-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 informationIntegration 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 informationFunctional 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 informationEvaluating 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 informationCustom 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 informationBentley 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 informationSpreadsheet 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 informationCoordinated 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 informationJournal 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 informationCase 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 informationJavadoc 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 informationVDM 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 informationKS3 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 informationHigher 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 informationVisual 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 informationJos 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 informationThe 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 informationStructure 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 informationWhat'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 informationTexas 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 informationHarmless 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 informationSoftware 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 informationManage 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 informationA 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 informationTen 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 informationParsing 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 informationThis 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 informationChapter 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 informationBusiness 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 informationPreproduction 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)
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 informationAlgorithm & 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 informationStrategic 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 informationTerms 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 informationHuman-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èè.
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 informationIntelligent 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 informationSource 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 informationSoftware 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 informationAutomated 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 informationGild: 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 informationHow 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 informationIntroduction 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 informationSPECIFICATION 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 informationChapter 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 informationProject 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 informationChapter 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 informationAgile 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 informationSoftware 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 informationCHAPTER 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 information101 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 informationAgent 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 informationTHE 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 informationPRODUCING 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 informationIntelledox 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 informationWhite 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 informationA 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 informationMatter 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