Project management in IT
| Posted: October 31st, 2009 | ozz
Tags: Quality Assurance, software development, software testing, Web development
Application testing is a process involved in all life cycles of software development. It implies review and planning of the product requirements, preparation and performance of changes. As a result testers reveal inadequacies and errors. And trying to get a systematic view, every person in software development company actually plays the role of tester. If you look at IT-project as at a person, then roles of different specialists can be described in the following way:
• Project Manager is a backbone and the autonomic nervous system
• Programmers are a skeleton and motor nerves
• Analysts are organs of sense
• Testers is conscience
Software Quality Assurance is often considered as a synonym of testing, but this method actually was called upon to prevent errors beforehand, rather than finding and fixing them. Quality in this sense should be considered as a characteristic of finished product (software or web-application).


So, testers have to verify even requirements specifications, project plans and analysis, not just program code and interface. Software testing is particularly important in critical systems. For example, the Therac Radiotherapy apparatus (1985) irradiated 6 people with lethal dose of radiation due to the lack of code verification and validation. Or Mars exploration rover (1999) brought the loss of 125 million dollars because of crude common measurement system between developers. And even during the electronic elections in Estonia there were some problems because of poor high-load testing. These examples and practice of software and web development companies shows that all testers should follow basic principles from ISTQB test documentation and other sources.
Project management in IT, Software development methodologies
| Posted: March 26th, 2009 | ozz
Tags: flexible, large software project, project management, software development
I’ve started this topic in the previous 2 posts (part 1 and part 2). Here are some more thought regarding the project management for large software projects.
Usually software development doesn’t imply the use of any version control system. All other approaches could be applied or not to individual projects. It dependents on the specifics of developed system, on many other factors, the most important of which, in our opinion, ability to control all the approaches, availability of necessary skills and resources and quality of the developed system.
There is a separate discipline of software engineering, which deals with this kind of organizational objectives without any reference to methodology — it is a configuration management. Configuration Management is a core discipline that helps to manage and control requirements specification, the process of software project development and information on the status of individual tasks and the entire project as a unit. The project success largely depends on how the process of configuration management was streamlined. On the one hand it can save the project, but on the other hand it can bury it.
Glossary of IEEE 610 describes configuration management as “a discipline applying technical and administrative direction and surveillance to: identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements”.
But it’s a rather formal definition. The following software and tools that programmers face on duty every day will allow you to understand how this definition works in practice:
* Subversion; CVS; Git; Mercurial; Bazaar; Microsoft Visual SourceSafe; ClearCase; Perforce.
* Ant; Nant; Maven; Phing; make; nmake; Cmake; MSBuild; Rake.
* JUnit; NUnit; CPPUnit; DUnit; PHPUnit; PyUnit; Test:: Unit; vbUnit; JsUnit.
* PMD; FxCop; PHP_CodeSniffer; PyChecker, lint.
* JavaDoc; phpDocumentor; CppDoc; RDoc; PyDoc; NDoc; Doxygen.
* CruiseControl; CruiseControl.NET; TeamCity; xinc; Atlassian Bamboo; Hudson.
* Jira, Trac, Mantis, Bugzilla, TrackStudio.
I hope this information was useful for at least some of you and will highly appreciate comments and any other kind of feedback.
Project management in IT, Software development methodologies
| Posted: March 19th, 2009 | ozz
Tags: flexible, software development
Beginning of the article read here.
Programmers look at the same project from the different position (in comparison with managers) and they focus their attention on other issues: architectural design, database, UML-diagrams and all these stuff. In theory it means “to spend the whole day in order to fly in 5 minutes”. If you take these steps as number “0” in software development process, in practice the project will begin with the step number “1” – with the development. It is not quite correct approach, but it’s the only possible approach when developers can’t give the exact answers to the questions put at the very beginning of software development. (Tell us about the other possible way out, if you know it 
Agile methodologies are known as attempt to solve these problems (and we like this approach, we even used it in our corporate brand – Oxagile). But agile methodologies work mainly on organizational level. Programming level is connected with other issues.
Read more
.Net programming
| Posted: October 30th, 2008 | ozz
Tags: .NET platform, ASP.NET, C#, software development, Web development
Visualstudio2008 and language C# on the .NET platform is often used for software development. The .NET absorbed all advantages that were available in the market of software development. The .Net platform uses the opportunities of XML and Web in full. It can be called one of the best platforms for development, especially when web-services are concerned.
The sight into web development is completely revised in .NET programming, powerful and suitable in use is given to our attention technology of ASP.NET, that noticeably avoids developments of rivals. To write code on ASP.NET is simpler , much quicker, and decision is got excellent on productivity.
C# is an object oriented language of programming for the .NET platform. It was developed by a group of developers under the aegis of Microsoft Research (SCIENTIFIC RESEARCH INSTITUTE at the Microsoft company).
Read more
Software development methodologies
| Posted: June 15th, 2008 | ozz
Tags: agile, agile development, Extreme Programming, RUP, Scrum, software development
The Heads of all IT outsourcing enterprises understand that to be competitive in the computer programming market one has to deal with software development methodologies. Here comes the question:
- What is a software development methodology?
- What for do we need to use software development methodologies?
A software development methodology is a complex of processes, rules and procedures executed by a development team and the whole outsourcing enterprise employees to achieve the main goal of web development: high-quality software.
Here are the benefits of using software development methodologies:
- Number of defects is reduced;
- The project is ready in less time;
- Improves created software quality.
And now it’s time to tell what software development methodologies exist. I guess the best way not to waste time of the web developers (and all other readers of the following article) and list only up to date methodologies. They can be divided into two groups:
- Engineering methodologies (plan-driven methodologies is another name of the group)
- Agile methodologies
Engineering methodologies
The core of these methodologies is software production based on non changing specification. Rational Unified Process (RUP) is the most often used engineering methodology .
Agile methodologies
The main core of the agile software development is in adapting the process of product construction throughout its life cycle. During agile software development the project can be easily adjusted to custom changes throughout its development.
Extreme Programming (XP programming) and Scrum are the most often used methods of agile development.
As a conclusion I have to admit that that it’s up to you to decide whether invent a new software development methodology or use an existing one. But there is no doubt that a software development methodology should be used.
Software development methodologies
| Posted: October 2nd, 2007 | ozz
Tags: agile, software development, Software development methodologies, Web development
Agile web development is a model for developing web applications. Its concept is similar to Agile software development, but is limited to web applications. It is more efficient and powerful within a short timeline than other models; it incorporates face-to-face communication and includes technical personnel as well as customers as part of the team. Agile web development is used by project managers, business analysts, it is based on clear goals, planning, and iterative delivery. Agile web development ensures the successful completion of the product at the end of each iteration.

The agile web development model follows the stages of planning, requirement analysis, designing, coding, testing, and documentation developing parallel. Successful interaction reaches toward to successful completion of application because of customer involvement hence we never met with the condition where we have to change the product due to changes in requirements, correct decision has to be taken by keeping customers confidence and informed choice, minimizing delays of the product. All the tasks are performed within the given period, with just enough documentation to be effective.
• Small time line.
• Refined Team.
• Clear planning.
• Short Documentation.
Due to the regular involvement and feedback from the customer, the software tends to be more error free, more requirement oriented, and more user friendly. Also, such tasks as planning, development, design, coding, testing, etc. are performed simultaneously, driven by the customer’s demands. It also reduces the development cycle time. The application documentation is less formal, to reduce the time taken and to be more human friendly.
Agile methodology is similar to the iterative, RAD Prototype model, but it has its own principles of developing a web application and it has introduced the concepts that overcome the problems associated with the existing models.
For instance, the waterfall model frequently changes the requirements during the development life cycle, which means it fails whenever the requirements are changed at the end or not properly understood or implemented according to the customer’s current feedback. In the iterative incremental model, the development process moves according to the iterations. Requirements and business process analysis, designing, and functional modification must be added to each version or iteration of the system to satisfy the customer’s feedback, and at last it is integrated into the system. Agile development adopted the key points from an iterative model but differs from the iterative one in relation to the timeboxes. An agile development life cycle pays attention to a shorter time duration for completing the IT project. With the help of timeboxes, developers can easily estimate the problem and correct it within the given time, so that at the end of each iteration, it is modified.
Companies are moving towards Agile as it results in more Customer Satisfaction and hence there business.