Visual Basic .NET 2010 Express - About Programming
This is a free tutorial to help beginning programmers get up to speed using Microsoft Visual Basic 2010 Express. To get the most from this tutorial, you might want to start at the beginning. A complete index to the course is also in the front of the first lesson.
Part 1 - A "From the Ground Up" Tutorial - An introduction to the course.
About Programming
Although this is a tutorial on programming in Visual Basic .NET, it's important for beginners and students to understand the Big Picture: How software systems are created in the real world.
Most of Part 3 introduces the Systems Development Life Cycle. Multi-million dollar software projects use these same concepts, but in the real world, they're much more elaborate and sophisticated. The most expensive versions of Visual Studio 2010 are mainly different from the cheaper ones because they have software to automate these planning, management, and analysis tasks
A professional developer must have a thorough knowledge of systems development and this lesson is just a start. But even if you only put your recipe file on a computer, it's helpful to understand the purpose and scope of analysis and design tools. The full scope of systems development methodology only applies to large scale projects but you can start out right by applying a few basic concepts.
The Systems Development Life Cycle
It's amazing how many programmers seem to think that programming is just "writing code".
Imagine a customer who wants a system to keep a constantly updated report of widget production? A lot of programmers say, "Sure!
I'll sit down and start writing the code to do that immediately!"
A week later, those programmers might ask, "What's a widget?" The real question is, "If you didn't know what a widget was, what did you spend all last week doing?"
Actually, most programmers do understand why analysis and design are necessary. The bigger problem is that many managers think that writing code is all there is to the job too. I've heard this described as the "Why isn't anybody coding?" syndrome. Here's an example of the problem.
The Vice President wanders through the programming shop between golf dates and doesn't see anybody actually writing any program code. Instead, they're drawing diagrams and writing use cases. At the next project review meeting, the big question from the VP is, "Why isn't anybody coding?" So, to keep the VP happy, they all start writing code. When that happens, the code usually needs to get rewritten, often over and over, because it didn't really fit together; or it solves the wrong problem; or it doesn't solve the complete problem.
Most consultants will tell you that in a well run software development project, actually writing the program code should take less time and effort than any other phase of the project. These consultants say that if you have really analyzed and designed the system correctly, writing the code will be almost automatic and the testing and implementation will take much less time too. The end result is a big net savings overall. The idea is often expressed, "measure twice, cut once."
Analysis Paralysis
Too much analysis can be a problem too! I've been the project manager of a multi-million dollar software project. I've also seen too much time used up on analysis and design. But I will say that if you don't have a very clear idea about what the program you're trying to write is supposed to do, you're wasting your time. And as a programmer, I've had a lot of my time wasted by customers who didn't know what they wanted.
In the programming industry, this whole topic can become very controversial and complicated with many competing "methodologies" for doing the various steps involved in creating a software system. For our purposes, simply understand that, in general, software development is normally done in steps and the steps for a whole project are usually called the System Development Life Cycle. It's such a tradition in software development that the acronym SDLC is often used instead.
This kind of methodology is far from being universally accepted in programming circles. Some programmers call it "the waterfall method" because a diagram of the phases look a little like a series of waterfalls. Others say that the name means that whatever doesn't get done in one phase just spills over into the next. Here's Wikipedia's diagram of the "waterfall method".
--------
Click Here to display the illustration
--------
The programmers who think that a traditional SDLC phased approach to project development is wrong generally like one based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The most popular idea right now is called Agile development. During the Visual Studio 2010 launch event, there were lots of presentations about it. There is no question that there have been some spectacular successes based on this kind of development, but I think that the people involved were so passionately committed that they could have used punched cards for programming and jungle drums for communication and their projects still would have been successful simply through the sheer will to succeed. In most organizations, you don't have the freedom select your team and organize any way you like. But if you do, and you have the unconditional support of your management, by all means, give Agile development a try.
If you decide that traditional methods are the safer alternative, I recommend this slightly more detailed SDLC methodology:
Requirements
Some person or group has to be "the owner" of the new system.
Analysis
A description of what the new system will do must be completed.
Design
This step creates a detailed plan to build the new system.
Programming
The coding step. This is the one most people understand.
Acceptance Testing
The "owner" of the system "signs off" and agrees that the system does what it should do.
Implementation
The system is placed into production.
Maintenance
Nothing works forever. Times change and so do software systems.
On the next page, we go through the steps in detail.