Learning RUP: How to start? [closed] - rational-unified-process

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I would like to learn RUP...
what are your suggestions? How to start? which resources? .....

Curiosity is enough reason to learn something new ...
First start with those articles : How people misunderstand RUP, what may wrong with it...
Larman,Kruchten,Bittner, How to Fail with the Rational Unified Process Read Online
Ivar Jacobson,Yes, RUP is my baby [“the baby needs correction"] Read Online
Then to understand a light-weight version of RUP read the following(s)
Kruchten, "A Software Development Process for a Team of One Read Online
Now you are ready to get more insight....RUP is iterative development process...Sou have to undestand iterative development first...For those read/watch followings:
Larman, Basili, Iterative and Incremental Development: A Brief History Read Online
Larman [Sample chapter from Applying UML & Patterns Chapter 2: Agile Iterative and Evolutionary ] Read Online
IJI Consulting, "Why Iterate? Understanding the Essentials of Iterative Development" Watch at Youtube
IJI Consulting, "Are you ready for Iterative Development" Watch at youtube
RUP is generally use-case driven development process [ it must not be "use case" driven,but generally it is ]...So learn about use cases...For those read followings:
Larman [Sample chapter from Applying UML & Patterns Chapter 2: Chapter 6: Use Cases ] Read Online
Ellen Gottesdiener, Top Ten Ways Project Teams Misuse Use Cases [I] Read Online
Ellen Gottesdiener, Top Ten Ways Project Teams Misuse Use Cases [II] [Read Online]10
Ellen Gottesdiener, "Use Cases: Best Practices", Read Online
Generally UML[Unified Modeling Language] is used in RUP based projects...[ you do not have to use it ]... So get some insight with UML...
Alex E. Bell, Death by UML Fever Read Online
Any process should be customized for your "situations". If you want to apply it you should create your own-adapted version such as OUP where O stands for "Odiseh" Unified Process :-)
Take a look this:
Stefan Bergström [ Adopting the Rational Unified Process: Success with the RUP Chapter 1:How to Adopt RUP in Your Project ] Read Online
To get more information, you can download online-published version of OpenUP [which is a modifed version of RUP] from http://www.eclipse.org/epf/downloads/configurations/pubconfig_downloads.php
But those are "static info"...Actually we can NOT learn a proccess from books...We have to apply something see what works what does not...We should also able to understand how people behave in teams, what motivates them...etc...
"Process is only a second-order effect" ...[ should not forget]
That is all!

A few introducing words you find in Rational Unified Process Best Practices
A good starting point is IBM Rational

RUP is not compiling with nowadays business and development environment due to complexion of documentation and time consumption I suggest you take a look at Agile software development method.

Related

Best IDE for PLC ladder programming [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Recently I trying to learn Ladder Logic programming for PLCs, but I want to know if there is any IDE to create Ladder programs better that Step7 or cx-programmer? Is there any plugin for Visual Studio or Netbeans that I can use? Finally, is it better to work with PLCs under Linux or Microsoft Windows?
UPDATE 1 : After googling about this, I found out that Ladder programming is not depend on the PLC brand or its model, so I did not mentioned any brand in my question.
What is your goal? In almost all cases, your IDE is dictated by the PLC manufacturer, and your PLC brand is spec'd by the customer when they buy the machine. They spec the PLC because they need to have something that they can go online with for maintenance and troubleshooting. Since the software is proprietary and absurdly expensive, they don't want to get a new software license for every machine in the plant and have to relearn new software, while they are bleeding money of manufacturing downtime.
So if your goal is to enter the industry, you want to find out what plants in country tend to use. In North America it's usually Allen-Bradley a.k.a Rockwell Automation, which is programmed with RSLogix 5000 (edit: the recent versions of RSLogix 5000 have been rebranded as Studio 5000). In Europe, it's typically Seimens, but I have no experience with them.
PLC IDEs are almost always picked hardware first. With some obscure exceptions, you pick the hardware you want to run, and this determines the IDE. The IDEs are all proprietary and unique to each hardware platform. Rockwell Automation alone has three different IDEs to support their hardware lines, all licensed individually and very expensive.
If Omron is the most common in your area, it's a good idea to start with them. Once you get used to one type of PLC, learning more is really easy.
If you don't mind which PLC platform you're using, I really enjoyed my time with RSLogix. They have a free, training-level suite available here:
http://www.ab.com/linked/programmablecontrol/plc/micrologix/downloads.html
I prefer RSLogix 5000. It's one of the easiest to work with and has User Defined Types and Add On Instructions to help with reusability.
ABB has Control Builder (which is the product that I work on), AFAIK when somebody buys our AC800 controller they get the CB for free, at least the so called "Compact version" which is file based. The CB has ladder diagrams as well as all other 1131 languages plus some extensions like Function Diagrams.
Disclaimer Sorry if it sounded like an ad, just very passionate with what I work on.
I am primarily a high level language programmer, but have also done development on various PLC /PAC platforms, including Rockwell, Siemens, and Beckhoff.
If your goal is to merely get an introduction to ladder, nearly anything will due. You can download Beckhoffs TwinCAT software for free. It is only a 30-day license, but you can just continually reinstall every 30 days without issue. The great part of TwinCAT is that it runs on a Windows PC, so you can develop and test code directly on the PC and don't need actual Beckhoff hardware to play with. The ladder is a bit quirky, but the statement list portion is by far one of the more powerful. If you are a C-programmer you will feel very comfortable with Beckhoff, because they have duplicated a lot of C-like functions (e.g. memcpy and setcpy) into their libraries.
The Beckhoff platform is not all that widespread, but it would allow you to learn the principals of ladder and PLC/PAC programming.

Which Workflow Engine do you recommend? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am kicking around the idea of using a workflow engine on this upcoming project. We know that there is a lot of caveats with using a workflow engine and we have a lot of development experience in many platforms so we would be willing to let the choice of workflow engine take precedence over our favorite toolset or developer IDE.
We are more interested in internal workflow (i.e. petri net for easily changeable ERP purposes without involving additional coder time) than external workflow (i.e. aggregating SOAP calls into a transaction aware, higher level SOA). Which workflow engine would you recommend? We have superficially looked at offerings by Oracle, Microsoft, and some open source stuff too. It's all very overwhelming so please respond only if you have real life experience with implementing internal workflow.
If you can use a state machine, then I'd recommend an open source project called StateLess by Nicholas Blumhardt (Autofaq creator). His approach avoids the issue of long running workflows being held by a runtime engine, as the state is defined by a simple variable such as a string or int.
Here is a sample state machine:
var phoneCall = new StateMachine<State, Trigger>(State.OffHook);
phoneCall.Configure(State.OffHook)
.Permit(Trigger.CallDialed, State.Ringing);
phoneCall.Configure(State.Ringing)
.Permit(Trigger.HungUp, State.OffHook)
.Permit(Trigger.CallConnected, State.Connected);
phoneCall.Configure(State.Connected)
.OnEntry(() => StartCallTimer())
.OnExit(() => StopCallTimer())
.Permit(Trigger.LeftMessage, State.OffHook)
.Permit(Trigger.HungUp, State.OffHook)
.Permit(Trigger.PlacedOnHold, State.OnHold);
// ...
phoneCall.Fire(Trigger.CallDialled);
Assert.AreEqual(State.Ringing, phoneCall.State);
Your state can be an integer which will allow you to feed it the current state from a database. This can be set on the constructor of the state machine as follows:
var stateMachine = new StateMachine<State, Trigger>(
() => myState.Value,
s => myState.Value = s);
You can implement this in just one assembly, compared to the multiple projects you need to run Windows Workflow. Maintenance is extremely low, there is no "designer" that generates code for your, etc. Again, it is simple, and there lies the beauty.
I've deployed both K2 and WF systems in the past. K2 is quite strong, but spendy. WF is an underdog, but improving quickly. Both integrate with the .NET stack (MOSS specifically) quite well and both have very good tool integration. Both are relatively easy to develop for once you understand the workflow model.
You can get solutions support from many different MS partners for both, although my guess is WF is a bit easier to get solutions support for (i.e. more partners have more consultants who know WF than K2).
Unfortunately, I don't have any experience with the Oracle product or the open source alternatives you mentioned, so I can't comment on those.
If you are overwhelmed, I recommend you take a look at the WF Virtual Labs (bottom of the page). They will let you get your hands on the technology, get the lingo down, go through a few scenarios. Once you have that, understanding how WF can fit into what you trying to do should be substantially easier. Also, I can recommend Essential Windows Workflow -- very good book. Here's a good intro on WF 4.0 from PDC.

Alice and Scratch ages 8+, how about under 8yrs old? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I just found out about Alice and Scratch. I will be implementing those pretty soon. But, I wonder, what would be good material for kids from 1st grade thru 4th/5th?
Toontalk is something to look at. I used it successfully with group of ten- to eleven-year-old children, and it's been used with much younger kids. Of course, I think Scratch has too. But Toontalk is specifically built to feel more like a game. It's essentially a 3D world that kids can explore and interact with, and in which they create programs by training robots. Highly recommended.
http://www.toontalk.com
http://playground.ioe.ac.uk/ABOUT.HTM
http://playground.ioe.ac.uk/games.htm
The Toontalk 3d environment ingeniously operates as a metaphor for sophisticated programming concepts. There are quite a few academic papers linked on Toontalk site about the educational theory behind Toontalk. Here's one interesting paper that describes how the Toontalk 3d objects map onto abstract programmming concepts.
I'll admit, I'm not a professional educator. And my info on kid's programming education may be too obsolete, but my mom was as close as they came to a computer educator in the 1980s, and here's some tricks from her book.
When I was 8, she had no problem teaching me logo
I would think that before reading skills are somewhat developed, it would be hard to teach the semantics of any programming language - however simple. And the first "aha!" for programming (to me) would be realizing that if you give really simple commands to the computer, it will do neat stuff for you.
If I had to teach kids that were still working on reading fundamentals, I'd probably focus it on games that are not directly connected to a programming language, but which do involve logic development. Things like:
Assigning letters to codes and translating from letter to code
Games where you follow simple rules to move things around, emulating data structures.
Puzzle games making use of computer science concepts - like shortest path algorithms. Not in analyzing the algorithm, but in developing it in the first place.
I'm afraid I don't know of a pre-built set of material for this sort of stuff. But I think that you might be able to create your own.
The limits would be the cognitive abilities of the kids -- I know that there are certain points where the theories say that kids can't do certain types of abstract concepts. For example, I was just listening to an example that mentioned that pre-schoolers can't handle the idea that something may have more than one name. Not quite knowing where those points of cognitive growth typically occur, I'm not 100% certain of what game would be right for what age group -- it might be trial and error.
I use Alice to teach children ages 11-14. It works well for them, but I would not use it for children much younger than that unless it was a one-on-one situation. I can't speak for Scratch.
One thing I can speak for though, is Lego Mindstorm programming. There is a cost to it, unlike Alice and Scratch, but it is very approachable for 1st through 4th grade. See if the First Lego League has a group near you so you can join up with others to help with costs.
Scratch is the simplest programming language I have found for kids. You can use it like logo, but it is much nicer.
I think Alice is too hard for kids of age 8 years.
Microsoft has also Small Basic and shipped v0.2 recently.
This version also includes a cool new
feature that allows students to easily
graduate from Small Basic to Visual
Basic with the touch of a button.
Check out the full release notes in
the Small Basic blog.
Small Basic is a project that's aimed
at bringing "fun" back to programming.
By providing a small and easy to learn
programming language in a friendly and
inviting development environment,
Small Basic makes programming a
breeze. Ideal for kids and adults
alike, Small Basic helps beginners
take the first step into the wonderful
world of programming.
Download and for more information : MS Small Basic v 0.2
When I was really small we were taught things that have similarities to programming but aren't quite programming, games with puzzles to solve, tangrams, and even choose-your-own-adventure writing programs. Later we learned LOGO.
There are some systems like toontalk, but to do anything like programming, you need to cope with sequence - this follows that, follows that, follows that - and basic arithmetic. Which is why 8+.
Younger, you want the children you work with to either have a good sense of what sequence might be - say from following instructions - and to be supported by a good interface, where drag and drop isn't as fiddly as scratch.
RoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot.
In addition to introducing common programming techniques, it also aims at offering insights in robotics and artificial intelligence. RoboMind is available as stand-alone application for Windows, Linux and Mac OSX. It is free and open source.
Worth to give a try!
www.robomind.net

Design patterns for Agent / Actor based concurrent design [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
Recently i have been getting into alternative languages that support an actor/agent/shared nothing architecture - ie. scala, clojure etc (clojure also supports shared state).
So far most of the documentation that I have read focus around the intro level. What I am looking for is more advanced documentation along the gang of four but instead shared nothing based.
Why ? It helps to grok the change in design thinking. Simple examples are easy, but in a real world java application (single threaded) you can have object graphs with 1000's of members with complex relationships. But with agent based concurrency development it introduces a whole new set of ideas to comprehend when designing large systems. ie. Agent granularity - how much state should one agent manage - implications on performance etc or are their good patterns for mapping shared state object graphs to agent based system. tips on mapping domain models to design. Discussions not on the technology but more on how to BEST use the technology in design (real world "complex" examples would be great).
Even if I cannot come up with any good real world examples that provide you with design
patterns straight up, there are a few places to start.
The first is getting your head wrapped properly round the concepts. One book helping
you do this is Making reliable distributed systems in the presence of software errors
written by an Erlang Guru Joe Armstrong where explains Concurrency Oriented Programming
in a very accessible way. It is in fact a Ph.D. thesis, but do not let that scare you.
It is by far easier to read, and pleasant into the bargain, than most common text books.
Looking at actual systems normally means that you have to learn too much about the actual
language for it too make sense just to evaluate things. For Erlang the documentation
provides design methodology and behaviours(Erlang speek for design pattern libraries).
This will illustrate the design patterns most commonly used in this setting. And these
have proved to be effective in building large scale systems, i.e. millions of lines of code (comparable to a factor 4 to 10 of other languages such as Java) and milloins of concurrent processes running on one machine in distributed clusters of machines.
A recent example of a real live system is Facebook Chat.
For the other frameworks I cannot really help you I am afraid.
An "actor" is itself the unifying pattern for concurrent programming (an asynchronous message queue plus an execution context for processing it), but there are many design patterns which assist in specifying aspects or elements of agent-based systems. Many of the most common can be found in Wikipedia's article on Concurrency Patterns. Some highlights:
Reactor Pattern
Mediator Pattern
Scheduler Pattern
Observer Pattern
If you haven't come across it already, Akka may be of interest to you -- it is a "purely" event-driven actor framework running on the JVM.
I asked a similar question here which had some reasonable answers that may help. I'm watching yours carefully. I haven't yet found something which has really helped me, but I am very actively looking.
I think the mind-shift is the single largest barrier to stepping to concurrent architectures and languages and until that is cracked developers are going to stick with easy to learn MS style paradigms. For it to really become mainstream it needs to find its way into schools and be taught alongside C# and VB.
My answer to the 2080 programmers question is "concurrently".

Developing addins for World of Warcraft - Getting started? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
As a long time World of Warcraft player, and a passionate developer I have decided that I would like to combine the two and set about developing some addins. Not only to improve my gameplay experience but as a great opportunity to learn something new.
Does anyone have any advice on how to go about starting out?
Is there an IDE one can use? How does one go about testing? Are there any ready made libraries available? Or would I get a better learning experience by ignoring the libraries and building from scratch? How do I oneshot Hogger?
Would love to hear your advice, experiences and views.
This article explains how to start pretty well.
Your first bookmark is possibly the US Interface Forum, especially the Stickies for that:
http://us.battle.net/wow/en/forum/1011693/
Then, grab some simple addons to learn how XML and LUA interacts. The WoWWiki HOWTO List is a good point here as well.
One important thing to keep in mind: World of Warcraft is available in many languages. If you have a EU Account, you got an excellent testing bed by simply downloading the language Packs for Spanish, German and French. If you're an US Guy, check if you can get the Latin America version. That way, you can test it against another language version.
Once you made 1 or 2 really small and simple addons just to learn how to use it, have a look at the various frameworks. WowAce is a popular one, but there are others.
Just keep one thing in mind: Making an Addon is work. Maintaining one is even more work. With each new Patch, there may be breaking changes, and the next Addon will surely cause a big Exodus of Addons, just like Patch 2.0.1 did.
Another useful tools you might like is WarcraftAddOnStudio which lets you make plugins in the visual studio environment.
I learned the art of add-ons primarily by looking at the code of Blizzard's UI. You can see that code by extracting the default UI or finding a copy of the default UI online. Add-on developers sometimes like to over-engineer their pet projects (who doesn't?), while Blizzard's code is usually pretty no-nonsense and straightforward. In addition, Programming in Lua is a pretty useful (if slightly out-of-date) reference for the actual Lua language.
The best way to start is with the book World of Warcraft Programming. It covers LUA, XML, WarcraftAddOnStudio and the WoW API. The book also has sections on best practices and avoiding common mistakes.