Developing an Operating System using TDD/BDD - operating-system

I just wonder. Is there anybody in the world, using TDD or BDD to write an OS? And is this even posible? I've tried to google it, but didn't find any kind of information.
So, guys. Is it possible to build an entire OS using TDD? And BDD?

It is possible to use TDD for most of OS development and for most of the code. It may get tricky at certain times/places due to limited testability of low-level, especially CPU/hardware-specific, code. These parts either may receive less direct test coverage (if that's OK) or can be tested in virtual machines or CPU/PC simulators.

It is definitely possible. I don't know anyone who is doing it.
As a proof point, I would point out what people are doing with test driven infrastructure with Chef and unit and behavioral testing there. For more info, see TestKitchen for Chef.

Related

How to connect SystemC model with SystemVerilog?

Say we have a SystemC model of decade counter and I want to verify SystemVerilog Counter RTL using SystemC model. How can we connect these two in SV/UVM based testbench so as to communicate between them.
Mentor developed a free package called UVMConnect that was developed specifically for the application you are asking about. See https://verificationacademy.com/topics/verification-methodology/uvm-connect. You will need a simulator that supports SystemVerilog and SystemC simulating together, like Questa.
If you're using QuestaSim I think UVM-connect from Mentor is the way to go. When I first used it(4 years ago) it was very buggy and gave the most cryptic segfault errors I've ever seen. But, with help from the Mentor support I managed to overcome them and get stuff done. It should be more stable now, but if you have problems with it don't hesitate to contact Mentor support. They are very responsive.
However, if you're using Cadence tools and/or the e language I think that UVM-ML from Cadence is a much more comprehensive solution. It allows you to connect components written in any combination of languages(SV-SC, SV-e, SC-e) and it has nicer documentation and examples. I understand it's also compatible with all simulators now. You can find it here : http://forums.accellera.org/files/file/65-uvm-ml-open-architecture/
Not sure what Synopsis folks recommend for their tool suite. Maybe someone who used them can offer more information on this. But I'm guessing that both UVM-ML and UVM-Connect could work since their makers claim that they are portable.
And lastly, if you're planning to use SystemC as a verification language(very unlikely but just for the sake of diversity) there is something called UVM-SystemC which is basically a clone of SV-UVM written in C++/SystemC. It's currently in its alpha release and it lacks many features(register modeling, constrained randomization, coverage collection, etc.). It feels a lot like SV-UVM and I think it's a nice toy to play with in your spare time if you can't afford a commercial simulator license. You can find it here http://accellera.org/images/downloads/drafts-review/uvm-systemc-1.0-alpha1.tar.gz

Deploy Erlang Application

I would like to run Erlang application on a centOS server for stress testing. I would like to know what I must accomplish to deploy a Erlang application before I send it to the server admin to install and run.
What will I need to tell my admin to properly run an Erlang app on a server? (Basically how can I send him a file and give him an really stupid easy instructions to install it?)
Is their a way to send my app in a executable format that the admin can easily install with? Kinda like PyPy?
How can I perform code swapping? Will the app need to be in it's code state still in order to do this?
I would appreciate any help to make this process easy. Thank you!
For anyone just passing by: Even though this is my first Erlang app, I highly recommend anyone wanting to build a easy to scale server user Erlang. The benefits are amazing, if you know how to use Erlang properly.
Cheers!
The usual way of deploying an Erlang program (I'm avoiding the word application here, as it's somewhat ambiguous in an Erlang context) involves building a release (see this for some background). A release is essentially a packaging of your Erlang code (which often consists of multiple applications - hence the ambiguity) and the parts of the runtime system required to run it. The Erlang release system was designed with code upgrades in mind.
If you are using Rebar to build your program, you may find this article helpful. In addition to describing how to build a release (the process is a bit tricky) it also explains how you can deploy an upgrade.
A similar guide is also available for users of erlang.mk. If you're not using one of them already, or a comparable build tool, I strongly encourage you to do so as it makes release handling much less painful.
You may also find the answers to this question helpful. They list some additional options.

What application can I build to stress-test real-time communication in a multi-user environment?

As a main project in 5th semester of CS degree I am doing a research on technologies for realizing real-time server2client communication in a multi-user environment. The deciding factors are:
1. Performance
2. Scalability
3. Ease of implementation
4. Portability
5. Architectural flexibility
6. Community support
7. Licensing fees
Now, I could build a chat application with each technology, which I analyze, and get it over with. The problem is that I don't think that such an app would even remotely reach the boundaries of what a certain technology can do.
So my question is: what kind of prototype application could I build to make a good test for Performance and Scalability?
If it's any help, the technologies which I am going to test are: SignalR, Pusher, Pubnub, LightStreamer.
Thank you in advance!
Not a "popular" answer, although:
My experience shows me that each and every case is special.
There is not prototype application for that, except for generic tools like ab (generic to some degree, uh).
For each test you simply have to get the right "ingredients".

Nintendo DS using PAlib

I've been looking in to Nintendo DS development on behalf of my agency and begun using the devkitPro/libnds and PAlib, it seems ideal for our needs until we decide if it's a viable route for us and hopefully invest/apply for a development kit and licence.
My main concern is that, while developing and learning PAlib style is it possible to eventually take a project built in this fashion and have it licensed and published? I don't really want to invest a lot of time learning this to have to learn a completely different setup. Essentially I suppose is PAlib just for Homebrew? What do I need to learn for Retail development of DS games?
Many thanks,
Anton
No, PAlib based projects cannot be licensed and published. See also http://wiki.devkitpro.org/index.php/PAlib
Don't waste your time learning or using PAlib.
Unfortunately even just using properly supported homebrew libraries you'll still have a fair bit of work to do moving to commercial development.
To do retail development (i.e. to get paid for your product), you'll need to get a real dev kit from Nintendo. The homebrew dev kits do not necessarily work in the same way as the real one, and (most importantly) they don't have access to the real dev kit's libraries.
Thus, if you develop against the homebrew dev kit, you're going to have to learn an entirely new library (which probably works very differently) when you move to the real thing.
Now, that's not to say that the homebrew dev kits can't be useful - they are a way to get code running on a real DS. As long as everyone realizes that it's a throwaway prototype, perhaps that could be enough to convince someone to spring for a real dev kit. If you go this route, you'll at least have something of a spec (it should work like the prototype!).
I also would advise not mentioning to Nintendo that you did this. I'm not in the industry, but they are obviously antagonistic toward the homebrew scene - I'm unclear how they'll feel about developers who started out on homebrew.

Any good library or software for queue networks simulation?

I have been trying to make work EZSIM with no luck, which is a software to build discrete event simulators in a graphical DOS environment. In this software, my simulator and many others (of the other people in the course I'm taking) don't work, but teacher's simulator (and examples of the downloaded files) does work.
So, I began to distrust of the software.
Do you know any software that resolves the same kind of problems but really works? It will be good if it is free, or I can download an evaluation copy or something like that.
If you don't know any software, do you know any library which might work? Preferably in C#, Ansi C, Java or Delphi.
This may be more than what you're looking for, but check out NS2. It's the standard for open source network simulations, and will allow you to simulate all kinds of network layer behavior.
I've also used JUNG in the past. It's very flexible, although it also doesn't offer much out of the box.
I used Möbius in my computer systems analysis class. It is free for educational use (which sounds like what you're doing). It's a Java GUI which generates C++ code.
The R package queuecomputer. queuecomputer is a computationally efficient method for simulating queues with arbitrary arrival and service times. There is a submitted paper on arXiv describing the algorithm used in the package. Examples can be found within the arXiv paper and the vignette. A web app based on the package is available at https://ace-ebert.shinyapps.io/queue_simulator_mmk/ .