Tuesday, April 30, 2013

Incremental Software Development Process (Model)

This is an extent to the evolutionary method. This method a weight is given for the problems identified according to the importance of the delivery. Solution for the most important problem will be analyzed and developed according to the waterfall model. This one solution is called as an increment. Feedback will be used to design and development of the future increments. Therefore this method has characteristics of both waterfall model and evolutionary model.

A complete and detailed explanation about these models can be found in our video tutorials by registering for Information Systems course at www.bcstutor.com website.

Evolutionary Software Development Model

EVO Method (Model) is an extension to the waterfall model. Because of irreversible nature of waterfall model, EVO model introduces with some extent of flexibility. Evolutionary model has all the stages of waterfall model and it has smaller incremental cycles which can be delivered to the customer for testing and get feedback. According to the customer feedback, the software design for the future increments / cycles will be modified. In this way software will be changing from its original design by the time.

Find out more details about EVO model at http://www.hpl.hp.com/hpjournal/96aug/aug96a4.pdf

Phases of Waterfall Model Explained

  1. Concept Formation - This is the first step in the Linear / Waterfall model software development. This is the stage that a company identifies that they need an information system to manage their business or to solve a business problem. This starts after they identifies their problems, so they have a good idea about the problems they want to solve.
    1. Problem Definition - this is the process of documenting their problems. In this stage, the system analyst have to use his experience and knowledge to assist better to help the management to better describe problems.
    2. Feasibility Study - In this stage, the analyst with the support of project manager and engineers will carry out an investigation to identify the best method to solve above identified problems. They need to identify what kind of technology has to be used and whether the technology is available. This is called technology feasibility. Also they need to analyze the cost, human resources, time and other related factors. After analyzing all the factors, if the project is feasible, the project will be moved to the next stage. The outcome of this stage is the feasibility report document.
  2. System analysis and specification - This is the system analysis phase.In this stage the system analyst will study all the aspects of the current system (if any), business process and suggest feasible solutions by considering problem definition and feasibility report. The outcome of this stage is the system specification document.
  3. System Development - In this stage, the system architect will design a model of the new system according to the system specification. He will design databases, flow charts, and various diagrams and pseudo codes (non program language that defines functions and procedures in natural way), etc. Generally there are two kind of system designs;
    1. Broad Design - Scratch design of the system without much details. This will help the system architect to validate the new system with the customer before start the actual development process.
    2. Detailed Design - With clearing any problems with the broad design, the system architect will design a detailed system that will actually use by the programers and software engineers to code the system.
  4. System Development - This is the phase that the new system design will be converted into a software system. Programmers, Software Engineers and Database Administrators will use the detailed system design to develop the system. There are two stages in this phase.
    1. Development - System will be code into a software application.
    2. Implementation - System will be deployed in a test environment.
  5. System Testing - System will be test using test data and strategies to identify any errors (bugs) and to make sure the system is working according to the given constrains.
  6.  Maintenance - Once the system is deployed in the real business environment, time to time it need to upgrade and maintain such as taking backups, troubleshooting, re-installation, etc.
These are the stages of a waterfall model. Now consider pros and cons of this model.

  1. This model is simple and easy to understand because stages are clearly defined.
  2. Information are documented and maintained well. A complete documentation is available for later reference.
  3. The progress of the system can be clearly monitor as milestones for both the software company and the client.
  4. The time wastage and failure rate is minimal because the full system design will be done before writing a single line of code.
  5. The quality of the system will be higher, because the system design by considering the expectations of the customer and after getting approval form  the customer.
  6. Well defined system testing constrains could be applied and test the system for the highest accuracy.
  7. Less human resources are needed. Because of the linear nature, all the stages can be even carried out by a one person.

Those are the advantages of waterfall model software development. Now what are the disadvantages of waterfall model?

  1. Waterfall model start a stage only after finishing it's prior stage. Therefore this model takes comparatively more time to complete.
  2. Stages can not be start in middle, has to wait until the prior stage is completed and documented.
  3. Only suitable for systems that can be clearly defined its all aspects of requirements. In the real world these type of systems are very rare. Customers can't identify their real problems until part of the system is being developed or used.
  4. The feasibility of the system may different in the real world than in the paper. Because of the vast time it requires to analyze and design the system, the feasibility of the system may become outdated.
  5. Waterfall model defines different roles of human resources such as system analyst, system architect, programmer, etc. In the real world software companies, these positions are not affordable or not available.
  6. Making changes during the middle of the process is very difficult and costly.

Now you have a good idea about the waterfall model. This model is almost outdated and not used as it is in the practical world. These stages most of the time collapse in the practical situations. But if you are an individual software engineer and want to manage a small scale project, this will be the ideal model to follow. For large projects we need more practical models such as RAD or Prototype Models.

Software Development Process

Software development process is also known as system development life cycle. There are four fundamental stages in any software development process.

  1. Software Specification - This is a detailed document that describes all the aspects of intended system. This document is prepared after the system analysis and design phase. We can say that this is the blue print of the system.
  2. Software Development - In this phase we actually start development of the system such as coding, database creation, etc. We use the software specification for develop the system.
  3. Software validation / Testing - Once we develop the system or part of the system or while developing the system we test it with the system specification to validate that all the functions are working as expected. Software testing is an specialized area that involves lots of techniques and require expertise.
  4. Software evolution - Once we test and deploy the system / software, it may time to time need changes according to customer requirements and changing nature of the environment. This is called software evolution. Think about how Windows operating system evolve over the time.

System Analysis and Design - Infromation Systems

System analysis and designing is a broad subject in software engineering field. This area is specially practiced by software / system architects. This refers to the process of analyzing of an existing manual or computational system and designing a new system.

So first of all we have to understand what is a system? Systems are all around us. In our body itself there are many systems such as digestive system, reproductive system, etc. System is a collection of inter-related functions that work towards a common goal.

The main thing when you studying IT subjects is that you need to understand special terms in your own way. As an example, you should now able to give a different explanation in your own terms for a system.

In here we are talking about software / IT system. Think about a book seller. In his business, he follows a system to do his business operations correctly. A book seller business is a system. This system could be a mental, manual or computational.

A system is work in an environment. This is called system environment. The environment is divided into two parts.

  • Internal environment
  • External environment
Internal environment has factors that directly influence the process of the system. As an example books in a bookstore is belong to the internal environment and the whole premises is internal environment. External environment means the factors or entities that not directly influence the process of the system. People working on the road are belongs to the external environment. The external environment has some extent of power to influence the system. For an example, a man walking on the road could enter the business premises and now he is belong to the internal environment,because he is a customer for the bookstore. He is directly involve in the process of buying a book.

The border which differentiate the internal and external environment is called the system boundary.

we also need to talk about sub-systems. Sub systems is also systems when isolated from its parent system. Large systems are constructed with a collection of smaller sub-systems and together these forms a bigger system that would look like a one system.

For an example, think about an engine. We could think an engine as a one system which perform a single task. But we know that engine is constructed with many sub-systems such as cooling system, electrical system, gear system, etc. This concept is also true for information systems.

What are the key entities of a system?

When we consider an information system, we can identify few basic entities or things that need to operate the system.

  1. People - people are the main entity that need to operate a system. This include system developers to end users. Without people an information system would be useless.
     
  2. Process - there should be a process, a way or a theory that how the system should work or execute its functions. These are the instructions telling the system to do the right thing or operate to achieve its goals.
     
  3. Data - Data refers to the fragment of information or raw data. An information system is all about processing data to provide information as output. Without data, there is nothing to process or do.
     
  4. Database - In modern systems, database is the central element to process data. But database is not always necessary to operate a system. There could be sub-systems operate without databases, just processing data provided though input devices, etc.
     
  5. Hardware - This refers to the computer hardware such as processors, input devices, etc.
     
  6. Software - This is itself is the system, but sometimes we need to have platform software to run the system. For an example, we need to have an operating system to run an application software.

Now, by considering all the facts above, can you define what is an information system in your own terms?

Information system is a collection of functions and procedures that involves people, process, data, hardware and software that is inter-related and working together to execute intended operations to achieve defined goals. There may be many goals of an information system such as decision making, transaction processing, problem solving, etc.

Important Notice!

Dear students and friends. When you commenting please do not mention your email address. Because your email address will be publicly available and visible to all. Soon, it will start sending tons of spams because email crawlers can extract your email from feed text.

To contact me directly regarding any inquiry you may send an email to info@bcslectures.website and I will reply accordingly.