.NETMicrosoft .NET is a rich platform for the development of modern web-based and standalone computer systems. The term “.NET” encompasses a wide range of tools and technologies, all of which aim to make development faster and the final systems more reliable. Microsoft created .NET to address the serious limitations of previous development tools, such as Visual Basic 6 and C++. Blueberry realised the importance of .NET very quickly – our first .NET project was implemented using the pre-release version – and .NET has since become our preferred development platform for most projects. Our reason for adopting .NET is simple: it makes our job easier. A number of programming languages can be used to implement .NET applications, but Blueberry prefers to use the C# language. C# is an object-oriented programming language developed by Microsoft specifically for the .NET framework and offers several advantages over languages such as Visual Basic. An internal Blueberry study concluded that development in C# can be up to three times faster than C++ development. We do, however, retain strong skills with other development platforms, and there are situations where .NET may not be appropriate. For example, if a product must be portable to Linux and Macintosh, or it needs to run on non-PC hardware platforms. PythonPython is a relatively new, cross-platform, object oriented scripting language that has significant advantages over Perl (and, inevitably, over VBScript). In particular, Python combines a very rich data model with a clean syntax. Python is Blueberry's preferred scripting language. JavaJava is a powerful cross-platform language, created by Sun Microsystems. It pre-dates .NET and Microsoft’s C# language (many people would say C# borrowed quite extensively from Java). The goal of Java was “write once, run anywhere” - and to some extent this is true: a Java program can be run on a huge range of computers. But Java didn’t achieve the wide-spread success that its creators had hoped for, particularly on the PC, although it is more popular on Linux and Unix. Java’s failure to be widely adopted by developers for PC applications is down to a number of factors. Firstly, there’s the reality of run-anywhere: Modern PC applications frequently need to integrate with other software on the PC and with local hardware. Java, particularly in the earlier versions, didn’t make this easy enough. Secondly, there was the performance issue - as an interpreted language, Java was always seen to be slower than C++, even when this wasn’t completely true. Thirdly, Microsoft’s .NET arrived, providing an alternative that was more compatible with Windows. Relatively few mainstream applications are now written in Java. Instead, Java has colonised a number of specialist areas: it's widely used as a server platform for implementing very large web sites, and it’s also popular as a way to deliver programs to mobile phones. C++Until the advent of Microsoft .NET in 2001, almost all our programs were written in C++ - and we still retain a strong base level of expertise in this language. C++ is the programming language used to implement Windows itself, and most major applications are written in C++. .NET arguably has major benefits, but shrink-wrap software companies often have many man-years invested in their product, and switching to a new platform is simply too expensive. Blueberry’s sister company, BB Software, still uses Borland C++ to develop our FlashBack range of products, and we’re developing our new FileX system using portable C++ precisely because we can run the code on Mac and Linux systems. All of Blueberry’s managers have at least 5 years commercial C++ experience, and about 75% of our developers used C++ before moving to .NET. Object Oriented Design (OOD)Object Oriented Design comprises System Design followed by Object Design. All of Blueberry's developers are experienced C++ programmers, so they already have a good understanding of Object Design; and System Design in OOD is exactly the same as System Design in a traditional, non-OO design methodology, with which all well-trained developers are familiar. So why would Blueberry go to the trouble of training its developers in OOD? The advantage of using an OOD methodology only becomes obvious when it is used with the “matching” OOA methodology (see below). When programmers and application designers can use the same terminology and notation to communicate their ideas, the processes of analysis, design and implementation can blend together seamlessly. Object Oriented Analysis (OOA)The Object Oriented Analysis methodologies originally proposed by Rumbaugh, Booch, and Coad and Yourdon were all very similar. Blueberry tends to prefer the former, but any OOA methodology gives the same principal advantage over traditional, non-OO analysis: an analysis that is more stable with respect to any changes in the original problem statement. When a business’s problems change, a solution that was engineered using OOA is easier to adapt. Other Design and Analysis MethodologiesBlueberry believes that both OO and non-OO design methodologies are rarely successful at producing usable and intuitive Graphical User Interfaces. The best methodology for GUI design is actually the least formal: prototyping. We usually use Borland C++ Builder (see below) to put together quickly a prototype interface, which is then “alpha tested” by our testing team. The final design is done much more carefully, but is largely shaped by the testers’ feedback and that of the client. Blueberry's application designers are all experienced in data modelling and relational database design. The methodologies for data modelling (Entity-Relationship Analysis) and relational database design (progressive normalisation of database tables) are equally appropriate as part of OO or non-OO Analysis and Design. |