IBM Rational DOORS: Use case extensions? - requirements

I'm investigating how to implement use case extension points in DOORS requirements. To this end, I wanted to know if a DOORS object in one module can reference or link to a DOORS object in a second module. If so, I figure I can have my use cases with the extension points in a high level module, then I can have extension variations in a separate DOORS module, with each one referencing the DOORS object with the extension point it is instantiating. Any thoughts on that?

You can definitely link an object in one DOORS module to another. That's one of the main features of DOORS so that you can track your requirements between modules. For example systems level statement of work type documents may be your initial source of requirements, kept in a high level module, and then that can be linked bidirectionally with finer grained software requirements, and then can be further linked to software components or lines of code or test cases.
If you right click a requirement you should see the "Link" option I believe it's called. I think you need to have both modules open, or it at least makes it easier.

You can only link from one object to another. The objects can be in different modules.
Sometimes we wanted to link to a whole module. We created a first "title" object in the module we wanted to link to, and we linked to that.
DOORS is really dismal. Glad we ditched it.

Related

Step by step developing AUTOSAR's Software Component

I'm a new learner about the AUTOSAR and already understand about summary of AUTOSAR Architecture. I have read AUTOSAR_TR_Methodology.pdf as my starting point to developing AUTOSAR's sofware components (SWC). For another information, I should get the "system extract" from the main organization and I will add my SWC into it. In that document, the task that I have to do to develop SWC described one by one as a whole process, but not in sequence. So my question is, after I got the system extract what the task that required to do to make SWCs? It will be great if the tools is mentioned.
The system extract usually contains software-components, albeit usually in form of so called compositions (in AUTOSAR lingo: CompositionSwComponentType). These compositions come with defined PortPrototypes which in turn are typed by PortInterfaces.
The task of the designer of an application software-component (technically speaking: an ApplicationSwComponentType) is to connect to the PortPrototypes define on the composition level and then specify the internal behavior (SwcInternalBehavior) that formally defines the internal structure of a software-component. On this basis the function of the software-component can be implemented.
A software-component itself consists of the formal specification (serialized in the ARXML format) and the corresponding C code that implements the actual function of the software-component.
There are tons of tools out there to develop AUTOSAR software-components. Most of these are commercial, and require a license. On top of that, the toolchain to be applied for a given project is in many cases predefined and you may not be able to select your tools freely.
If you seriously want to dive into AUTOSAR I'd strongly advise taking a class offered by the various tool vendors, preferably a class held by the tool vendor selected for a given actual ECU project.

Why Local Classes don't show up in SE38 Classes list?

I'm writing an ABAP program using OO objects. In SE38, under the class folder of my program, some of my local classes do not show up. Some do.
All my classes are stored in an 'include'. As far as I know there's no Class-Builder capability for local classes.
When I rename a class, sometimes it gets renamed in the folder listing mentioned above, sometimes it doesn't.
When I add new classes, sometimes they show up, sometimes they don't.
What am I missing? Is there a particular way to add local classes to an include with other classes and have it show up in the Classes folder? Is there a way to refresh the listings?
Syntax is is being checked, the program finds the classes, so SAP is reading everything and recognizing it just fine. It just doesn't display under the classes folder.
As much as I enjoy OO, I'm starting to get the feeling that although it's the path forward, it's also semi-masochistic. I'm trying to be the leader of our group to encourage OO over classic ABAP. Things like this though, I have to iron out and understand before I could ever convince others. :)
The list of local objects in SE80/SE38 (classes as well as data types, forms and other stuff) isn't refreshed as frequently as one would like. It's not like the Outline view that you might know from Eclipse or similar tools from other IDEs. When in doubt, you might want to right-click the program in the tree view and rebuild the object list. Or you might want to switch to global classes altogether, which gives you a much better tool support.

What's the best approach to incremental compilation when building a DSL using Eclipse?

As suggested by the Eclipse documentation, I have an org.eclipse.core.resources.IncrementalProjectBuilder that compiles each source file and separately I also have a org.eclipse.ui.editors.text.TextEditor that can edit each source file. Each source file is compiled into its own compilation unit, but it can reference types from other (already compiled) source files.
Two tasks for which this is important are:
Compiling (to make sure the types we're using actually exist)
Autocomplete (to look up the type so we can see what properties/methods are present on it)
To accomplish this, I want to store a representation of all the compiled types in memory (referred to below as my "type store").
My question is two fold:
Task one above is performed by the builder and task two by the editor. So that they both have access to this type store, should I create a static store somewhere that they both can have access to, or does Eclipse provide a neater way to deal with this problem? Note that it is eclipse, not me, that instantiates the builders and editors when they are needed.
When opening eclipse, I don't want to have to rebuild the whole project just so I can re-populate my type store. My best solution so far is to persist this data somewhere and then repopulate my store from that (perhaps upon project open). Is this how other incremental compilers typically do this? I believe Java's approach is to use a special parser that efficiently extracts this data from the class files.
Any insights would be really appreciated. This is my first DSL.
This is an interesting question and one that doesn't have a simple solution. I'll try to describe a potential solution and also describe in a little bit more detail how JDT accomplishes incremental compilation.
First, a bit about JDT:
Yes, JDT does read class files for some of its information, but only for libraries that don't have source code. And this information is really only used for editing assistance (content assist, navigation, etc).
JDT computes incremental compilation by keeping track of dependencies between compilation units as they are compiled. This state information is stored on disk and retrieved and updated after each compile.
As a more complete example, let's say that after a full build, JDT determines that A.java depends on B.java, which depends on C.java.
If there is a structural change in C.java (a structural change is a change that can affect outside files (e.g., adding/removing a non-private field or method)), then B.java will be recompiled. A.java will not be recompiled since there was no structural change in B.java.
After this bit of clarification on how JDT works, here are some possible answers to your questions:
Yes. This must be done through statically accessible global objects. JDT does this through the JavaCore and JavaModelManager objects. If you don't want to use global singletons, then you can access to your type store available through your plugin's Bundle activator instance. The e4 project does allow dependency injection, which is probably even better (but is not really a part of the core Eclipse APIs).
I think persisting the information on the file system is your best bet. The only real way to determine incremental compile dependencies is to do a full build, so you need to persist the information somewhere. Again, this is how JDT does it. The information is stored in your workspaces' .metadata directory somewhere in the org.eclipse.core.resources plugin. You can have a look at the org.eclipse.jdt.internal.core.builder.State class to see the implementation.
So, this may not be the answer you are looking for, but I think this is the most promising way to approach your problem.

Organizing VBA Project

I am maintaining a large MS Access Project. Over time the number of modules and classes has grown, at this moment it contains 90 modules. More and more time do I spend searching for a specific class in the list. (I know about Shift+F2 :))
Is there any way to organize the list of modules in the VBA editor, i.e. some kind of Addin? My idea would be subfolders in the tree or a filter-as-you-type textbox.
Best regards,
Torben
First of all try: MZ-Tools. It has free version for MS Access. HomePage
It's a toolkit that help maintain access project in many aspects: create automatic documentation; create, modify and maintain procedures, functions and properties etc.
Develop a logical naming system. You can't get a tree per-se, but you can name things in a way that they are easier to find.
Module 1: A_systemtools
module 2: __systemtools_a
module 3: B_programitems
etc...

How to determine where, or if, a variable is used in an SSIS package

I've inherited a collection of largely undocumented ssis packages. The entry point package (ie: the one that forks off in a variety of directions to call other packages) defines a number of variables. I would like to know how these variables are being used, but there doesn't seem to be an equivalent of "right click/Find All References"
Is there a reliable way to determine where these variables are being used?
A hackish way would be to open the dtsx file in a text editor/xml viewer and search for the variable name.
If it's being used in expressions, it should show it and you can trace the xml tree back up until you find the object it's being used on.
You can use the bids helper add-in thats gives you visual feedback on where variables are used in your package. Thats makes it very fast and easy to detect them.Besides that, it offers several other valueable features.
Check out: http://bidshelper.codeplex.com/