Software
The programs used to direct the operation of a computer, as well as documentation giving instructions on how to use them.This is divided in to two major categories: system software that provides the basic non-task-specific functions of the computer, and application software which is used by users to accomplish specific tasks.
Types of Software
Ø System Software :
System software is responsible for controlling, integrating, and managing the individual hardware components of a computer system so that other software and the users of the system use this as a functional unit without having to be concerned with the low-level details such as transferring data from memory to disk, or rendering text onto a display. System software consists of an operating system and some fundamental utilities such as disk formatters, file managers, display managers, text editors, user authentication (login) and management tools, and networking and device control software.
Ø Application software:
This is used to accomplish specific tasks other than just running the computer system. Application software may consist of a single program, such as an image viewer; a small collection of programs that work closely together to accomplish a task, such as a spreadsheet or text processing system; a larger collection of related but independent programs and packages that have a common user interface or shared data format, such as Microsoft Office, which consists of closely integrated word processor, spreadsheet, database, such as a database management system, which is a collection of fundamental programs that may provide some service to a variety of other independent applications.
Types of Application Software
Ø Productivity software
Ø Presentation software
Ø Graphics software
Ø CAD/CAM software
Stages of Software Development LifeCycle(SDLC)
The programs used to direct the operation of a computer, as well as documentation giving instructions on how to use them.This is divided in to two major categories: system software that provides the basic non-task-specific functions of the computer, and application software which is used by users to accomplish specific tasks.
Types of Software
Ø System Software :
System software is responsible for controlling, integrating, and managing the individual hardware components of a computer system so that other software and the users of the system use this as a functional unit without having to be concerned with the low-level details such as transferring data from memory to disk, or rendering text onto a display. System software consists of an operating system and some fundamental utilities such as disk formatters, file managers, display managers, text editors, user authentication (login) and management tools, and networking and device control software.
Ø Application software:
This is used to accomplish specific tasks other than just running the computer system. Application software may consist of a single program, such as an image viewer; a small collection of programs that work closely together to accomplish a task, such as a spreadsheet or text processing system; a larger collection of related but independent programs and packages that have a common user interface or shared data format, such as Microsoft Office, which consists of closely integrated word processor, spreadsheet, database, such as a database management system, which is a collection of fundamental programs that may provide some service to a variety of other independent applications.
Types of Application Software
Ø Productivity software
Ø Presentation software
Ø Graphics software
Ø CAD/CAM software
Stages of Software Development LifeCycle(SDLC)
The process of software development goes through a series of stages in step wise fashion that almost every developing company follows. Known as the ‘software development life cycle,
Ø Planning
Without a perfect plan development of software is meaningless. Planning kicks off a project flawlessly and affects its progress positively.
Ø Analysis
Analysis is very important step in software development process.This is to analyze the performance of a software at various stages and making notes on additional requirements.
Ø Design
Once the analysis is complete, the step of designing takes over, which is basically building the architecture of the project. This step helps remove possible flaws by setting a standard and attempting to stick to it.
Ø Coding
This is the major step in SDLC.Here the code to implement the design of SDLC is written.The code is written in a high-level language and then it is passed to a compiler which translates this high-level language in to assembly code and converts into machine code.
Ø Testing
Here we can check for errors, bugs and interoperability.
Ø Implementation
This includes implementation of the system into a production environment,and resolution of problems identified in the integration and test phases.
Ø Maintanence
This is the last phase in SDLC,here it will be maintained and upgraded from time to time to adapt to changes.
Software Life Cycle Models
The major types of Software life cycle models are as follows:
Water Fall Model
This model has the planning, analysis, implementation and testing phase.This is different from traditional model.In this model the testing phase comes after Implementation phase.
Ø Planning
Without a perfect plan development of software is meaningless. Planning kicks off a project flawlessly and affects its progress positively.
Ø Analysis
Analysis is very important step in software development process.This is to analyze the performance of a software at various stages and making notes on additional requirements.
Ø Design
Once the analysis is complete, the step of designing takes over, which is basically building the architecture of the project. This step helps remove possible flaws by setting a standard and attempting to stick to it.
Ø Coding
This is the major step in SDLC.Here the code to implement the design of SDLC is written.The code is written in a high-level language and then it is passed to a compiler which translates this high-level language in to assembly code and converts into machine code.
Ø Testing
Here we can check for errors, bugs and interoperability.
Ø Implementation
This includes implementation of the system into a production environment,and resolution of problems identified in the integration and test phases.
Ø Maintanence
This is the last phase in SDLC,here it will be maintained and upgraded from time to time to adapt to changes.
Software Life Cycle Models
The major types of Software life cycle models are as follows:
Water Fall Model
This model has the planning, analysis, implementation and testing phase.This is different from traditional model.In this model the testing phase comes after Implementation phase.
Ø Requirements – defines needed information, function, behavior, performance and interfaces.
Ø Design – data structures, software architecture, interface representations, algorithmic details.
Ø Implementation – source code, database, user documentation, testing.
Advantages:
Ø Good for small project.
Ø All phases are completed at one time.
Ø It has a rigid structure which is easy to use and each phase has review process.
Ø Sets requirements stability.
Ø Good for management control (plan, staff, track)
Ø Easy to understand, easy to use.
Disadvantages:
Ø Future Modifications are not possible.
Ø No prototypes are produced.
Ø Not suitable for projects with moderate requirements, long projects, and for the projects which may undergo future change.
Ø Does not reflect problem-solving nature of software development – iterations of phases
Ø Deliverables created for each phase are considered frozen – inhibits flexibility.
Spiral Model:
This model has four phases.
Ø Planning
Ø Analysis
Ø Engineering
Ø Evaluation
Ø This emphasis more on risk analysis.The project undergoes each phases repeatedly called Spirals. The planning phase is the baseline spiral and each subsequent spiral is build on spiral model.These type of model is used in risk analyzing projects for eg in space crafts. Each cycle involves the same sequence of steps as the waterfall process model.
Typical activites:
Ø Create a design
Ø Review design
Ø Develop code
Ø Inspect code
Ø Test product
Ø Design – data structures, software architecture, interface representations, algorithmic details.
Ø Implementation – source code, database, user documentation, testing.
Advantages:
Ø Good for small project.
Ø All phases are completed at one time.
Ø It has a rigid structure which is easy to use and each phase has review process.
Ø Sets requirements stability.
Ø Good for management control (plan, staff, track)
Ø Easy to understand, easy to use.
Disadvantages:
Ø Future Modifications are not possible.
Ø No prototypes are produced.
Ø Not suitable for projects with moderate requirements, long projects, and for the projects which may undergo future change.
Ø Does not reflect problem-solving nature of software development – iterations of phases
Ø Deliverables created for each phase are considered frozen – inhibits flexibility.
Spiral Model:
This model has four phases.
Ø Planning
Ø Analysis
Ø Engineering
Ø Evaluation
Ø This emphasis more on risk analysis.The project undergoes each phases repeatedly called Spirals. The planning phase is the baseline spiral and each subsequent spiral is build on spiral model.These type of model is used in risk analyzing projects for eg in space crafts. Each cycle involves the same sequence of steps as the waterfall process model.
Typical activites:
Ø Create a design
Ø Review design
Ø Develop code
Ø Inspect code
Ø Test product
Advantages:
Ø Software is produced in the early stage.
Ø Importance is placed more on risk analysis.
Ø Critical high-risk functions are developed first.
Ø Cumulative costs assessed frequently .
Ø Provides early indication of insurmountable risks, without much cost.
Ø Users see the system early because of rapid prototyping tools.
Disadvantages:
Ø It is very costly.
Ø Not suitable for small projects.
Ø Needs expertise for such model.
Ø The model is complex .
Ø Developers must be reassigned during non-development phase activities.
Ø Risk assessment expertise is required.
Ø Time spent for evaluating risks too large for small or low-risk projects.
V-Model
In this Model each phase a test deign is created and testing is carried on the corresponding designs and undergoes coding phase if defect is determined. Since it does not follow a linear path and bends after coding phase this model is termed as V-model. This model explains the relationship between each phase and the associated testing phase.
Ø Software is produced in the early stage.
Ø Importance is placed more on risk analysis.
Ø Critical high-risk functions are developed first.
Ø Cumulative costs assessed frequently .
Ø Provides early indication of insurmountable risks, without much cost.
Ø Users see the system early because of rapid prototyping tools.
Disadvantages:
Ø It is very costly.
Ø Not suitable for small projects.
Ø Needs expertise for such model.
Ø The model is complex .
Ø Developers must be reassigned during non-development phase activities.
Ø Risk assessment expertise is required.
Ø Time spent for evaluating risks too large for small or low-risk projects.
V-Model
In this Model each phase a test deign is created and testing is carried on the corresponding designs and undergoes coding phase if defect is determined. Since it does not follow a linear path and bends after coding phase this model is termed as V-model. This model explains the relationship between each phase and the associated testing phase.
Ø Project and Requirements Planning – allocate resources.
Ø Product Requirements and Specification Analysis – complete specification of the software system.
Ø Architecture or High-Level Design – defines how software functions fulfill the design.
Ø Detailed Design – develop algorithms for each architectural component.
Ø Production, operation and maintenance – provide for enhancement and corrections.
Ø System and acceptance testing – check the entire software system in its environment.
Ø Integration and Testing – check that modules interconnect correctly.
Ø Unit testing – check that each module acts as expected.
Ø Coding – transform algorithms into software.
Advantages:
Ø Simple and easy to use.
Ø This can be used for small projects and the requirements are clearly understood.
Ø It can produce good results because each phase has its own test design.
Ø Emphasize planning for verification and validation of the product in early stages of product development.
Disadvantages
Ø No prototypes are produced.
Ø Modification in future is less or not possible.
Ø Do not have the clear path the problems found after each testing phase.
Ø Does not easily handle concurrent events
Rapid Application Model (RAD)
Ø Requirements planning phase -a workshop utilizing structured discussion of business problems.
Ø User description phase – automated tools capture information from users
Ø Construction phase – productivity tools, such as code generators, screen generators, etc. inside a time-box. (“Do until done”)
Ø Cutover phase -- installation of the system, user acceptance testing and user training
Advantages
Ø Uses modeling concepts to capture information about business, data, and processes.
Ø Time-box approach mitigates cost and schedule risk.
Ø Reduced cycle time and improved productivity with fewer people means lower costs.
Disadvantages
Ø Hard to use with legacy systems.
Ø Requires a system that can be modularized.
Ø Developers and customers must be committed to rapid-fire activities in an abbreviated time frame.
Ø Accelerated development process must give quick responses to the user.
Incremental SDLC Model
This can be used when Risk, funding, schedule, program complexity, or need for early realization of benefits. Most of the requirements are known up-front but are expected to evolve over time.
Ø Construct a partial implementation of a total system.
Ø Then slowly add increased functionality.
Ø The incremental model prioritizes requirements of the system and then implements them in groups.
Ø Each subsequent release of the system adds function to the previous release, until all designed functionality has been implemented.
Ø Product Requirements and Specification Analysis – complete specification of the software system.
Ø Architecture or High-Level Design – defines how software functions fulfill the design.
Ø Detailed Design – develop algorithms for each architectural component.
Ø Production, operation and maintenance – provide for enhancement and corrections.
Ø System and acceptance testing – check the entire software system in its environment.
Ø Integration and Testing – check that modules interconnect correctly.
Ø Unit testing – check that each module acts as expected.
Ø Coding – transform algorithms into software.
Advantages:
Ø Simple and easy to use.
Ø This can be used for small projects and the requirements are clearly understood.
Ø It can produce good results because each phase has its own test design.
Ø Emphasize planning for verification and validation of the product in early stages of product development.
Disadvantages
Ø No prototypes are produced.
Ø Modification in future is less or not possible.
Ø Do not have the clear path the problems found after each testing phase.
Ø Does not easily handle concurrent events
Rapid Application Model (RAD)
Ø Requirements planning phase -a workshop utilizing structured discussion of business problems.
Ø User description phase – automated tools capture information from users
Ø Construction phase – productivity tools, such as code generators, screen generators, etc. inside a time-box. (“Do until done”)
Ø Cutover phase -- installation of the system, user acceptance testing and user training
Advantages
Ø Uses modeling concepts to capture information about business, data, and processes.
Ø Time-box approach mitigates cost and schedule risk.
Ø Reduced cycle time and improved productivity with fewer people means lower costs.
Disadvantages
Ø Hard to use with legacy systems.
Ø Requires a system that can be modularized.
Ø Developers and customers must be committed to rapid-fire activities in an abbreviated time frame.
Ø Accelerated development process must give quick responses to the user.
Incremental SDLC Model
This can be used when Risk, funding, schedule, program complexity, or need for early realization of benefits. Most of the requirements are known up-front but are expected to evolve over time.
Ø Construct a partial implementation of a total system.
Ø Then slowly add increased functionality.
Ø The incremental model prioritizes requirements of the system and then implements them in groups.
Ø Each subsequent release of the system adds function to the previous release, until all designed functionality has been implemented.
Advantages
Ø Develop high-risk .
Ø Each release delivers an operational product.
Ø Lowers initial delivery cost.
Ø Initial product delivery is faster.
Ø Uses “divide and conquer” breakdown of tasks.
Ø Customers get important functionality early.
Ø Risk of changing requirements is reduced.
Disadvantages
Ø Requires good planning and design.
Ø Total cost of the complete system is not lower.
Ø Requires early definition of a complete and fully functional system to allow for the definition of increments.
Quality Assurance Plan
Ø The plan for quality assurance activities should be in writing
Ø Decide if a separate group should perform the quality assurance activities
Ø Some elements that should be considered by the plan are: defect tracking, unit testing, source-code tracking, technical reviews, integration testing and system testing.
Ø Defect tracing – keeps track of each defect found, its source, when it was detected, when it was resolved, how it was resolved, etc
Ø Unit testing – each individual module is tested
Ø Source code tracing – step through source code line by line
Ø Technical reviews – completed work is reviewed by peers
Ø Integration testing -- exercise new code in combination with code that already has been integrated
Ø System testing – execution of the software for the purpose of finding defects
Dynamic Systems Development Method
It applies a framework for RAD and short time frames.
DSDM Principles
Ø Focus on frequent product delivery.
Ø Iterative and incremental development - to converge on a solution.
Ø Requirements initially agreed at a high level.
Ø Testing is integrated throughout the life cycle.
DSDM Lifecycle
Ø Feasibility study.
Ø Business study – prioritized requirements.
Ø Functional model iteration.
– risk analysis.
– Time-box plan.
Ø Design and build iteration.
Ø Implementation.
Ø Develop high-risk .
Ø Each release delivers an operational product.
Ø Lowers initial delivery cost.
Ø Initial product delivery is faster.
Ø Uses “divide and conquer” breakdown of tasks.
Ø Customers get important functionality early.
Ø Risk of changing requirements is reduced.
Disadvantages
Ø Requires good planning and design.
Ø Total cost of the complete system is not lower.
Ø Requires early definition of a complete and fully functional system to allow for the definition of increments.
Quality Assurance Plan
Ø The plan for quality assurance activities should be in writing
Ø Decide if a separate group should perform the quality assurance activities
Ø Some elements that should be considered by the plan are: defect tracking, unit testing, source-code tracking, technical reviews, integration testing and system testing.
Ø Defect tracing – keeps track of each defect found, its source, when it was detected, when it was resolved, how it was resolved, etc
Ø Unit testing – each individual module is tested
Ø Source code tracing – step through source code line by line
Ø Technical reviews – completed work is reviewed by peers
Ø Integration testing -- exercise new code in combination with code that already has been integrated
Ø System testing – execution of the software for the purpose of finding defects
Dynamic Systems Development Method
It applies a framework for RAD and short time frames.
DSDM Principles
Ø Focus on frequent product delivery.
Ø Iterative and incremental development - to converge on a solution.
Ø Requirements initially agreed at a high level.
Ø Testing is integrated throughout the life cycle.
DSDM Lifecycle
Ø Feasibility study.
Ø Business study – prioritized requirements.
Ø Functional model iteration.
– risk analysis.
– Time-box plan.
Ø Design and build iteration.
Ø Implementation.