Software Development Life Cycle

Print   

02 Nov 2017

Disclaimer:
This essay has been written and submitted by students and is not an example of our work. Please click this link to view samples of our professional work witten by our professional essay writers. Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of EssayCompany.

The software development life cycle (SDLC), is a framework that defines a set of tasks to be performed at each step in the software development process. The SDLC provides a structure to be followed by the organizations development team. This stricture consists of a detailed plan describing how to develop, maintain and replace specific software. The life cycle also defines a methodology for improving the quality of software and the overall development process.

The software development life cycle includes many different processes, for example, Requirement gathering and analysis, Design, Implementation or coding, Testing, Deployment and Maintenance.

C:\Users\Owner\Desktop\courses\system dynamic\ass\waterfallsdlc.gif

Requirement gathering and analysis:

The first step of the SDLC is to gather the business requirements of the project. In order to gather all of these requirements the organization usually uses its most skilled and experienced software engineers to do so. The software engineering team meets with the clients and stack holders of the project to find exactly what are their requirements for the project. To get this information they start by asking them general questions about it such as, who is the targeted market of the project? What the system will be used for? And what are the expected outputs from the system? All these questions must be answered during this step before moving to the next one. After collecting the requirements for the project, the requirements get analyzed and checked for their validity and if it’s possible to achieve these requirements and include them in the system.

http://istqbexamcertification.com/what-are-the-software-development-life-cycle-phases/

Design:

According to the requirements specifications that been studied in the first phase, the software design is prepared in this phase, the system design is very important and it helps in many aspects of the projects such as identifying the hardware needed for the project. The system design produced at this stage serves as an input to the next stage.

Implementation / Coding:

At this stage the developing team uses the system design that was received from the previous phase. The system is divided into models or units and each unit is then implemented. This phase can be described as the longest stage of the development life cycle and it’s carried through by developers.

Testing:

Each one of the developed units in the previous phase is tested here to see if the product meets the requirements gathered in the first phase and does what it’s actually supposed to do. There exist many types of tests that can be performed in this phase that includes, unit testing, integration testing, system testing and acceptance testing.

Deployment:

At this stage, the developed system from the previous phases, that has been successfully tested is delivered to the customer use.

Maintenance:

The maintenance phase is very important, since the system that has been delivered to the customer might face some errors and faults that require to be fixed as soon as possible.

Since testing is an essential step in the simulation process, we will provide a closer look at this part of the software development life cycle.

Testing

There are many types of testing, as follows:

6.1 Unit Test

"A unit test is an automated piece of code that invokes a unit of work in the system and then checks a single assumption about the behavior of that unit of work"(3)and there exist two type of unit testing static and dynamic unit testing ,Static Unit test is a software development process to Examination the code over all possible behaviors that might arise during run time, but the dynamic unit testing is a program unit is actually executed and its outcomes are observed, static unit testing is not an alternative to dynamic unit testing but the static and dynamic unit testing complement in nature and in practice dynamic and static unit testing are performed concurrently ,and JUNIT testing is an example to the unit testing.

6.2 Integration Test

Integration testing detects problems that occur when unit are combined, before are unite combined we have successful testing to these unites, and every error occur when the unit are combined are likely related to the interface between units, integration testing have difference ways to be done but the following are three common ways:

1) to-down: highest-level modules are test and integrated first.

2) bottom-up: lowest –level units be tested and integrated first.

3) Big-bang Approach: all the modules are individually tested and after that all those modules are put together to construct the entire system which is tested as a whole.

4)-Sandwich Approach: In this approach a system is integrated using a mix of top-down, bottom-up, and big-bang approaches.

5)-Incremental: the unit or the parts of the system are tested in continuous way.

In our plan we use the sandwich approach because it has different approaches within it.

6.3 System Testing

System testing: is top level of the software testing process and it done where the system is complete before send it to the market ,the purpose of this test is to evaluate the system’s compliance with specified requirements. System test have many different type of testing and we talk about some of it:

Basic tests: provide evidence that the system can be installed, configured and be brought to an operational state.

Functionality tests: provide comprehensive testing over the full range of the requirements, within the capabilities of the system.

Robustness tests: determine how well the system recovers from various input errors and other failure situations.

Inter-operability tests: determine whether the system can inter-operate with other third party products

Performance tests: measure the performance characteristics of the system, e.g., throughput and response time, under various conditions

Scalability tests: determine the scaling limits of the system, in terms of user scaling, geographic scaling, and resource scaling.(car maximum speed, telephone switch maximum calls)

Stress tests: put a system under stress in order to determine the limitations of a system and, when it fails, to determine the manner in which the failure occurs

Load and Stability tests: provide evidence that the system remains stable for a long period of time under full load.

Reliability tests: measure the ability of the system to keep operating for a long time without developing failures

Regression tests: determine that the system remains stable as it cycles through the integration of other subsystems and through maintenance tasks

Documentation tests: ensure that the system’s user guides are accurate and usable

Verification is Evaluation of software system that help in determining whether the product of a given development phase satisfy the requirements established before the start of that phase (Build product correctly) but Validation is Evaluation of software system that help in determining whether the product meets its intended use (Building the correct product).

[SQA Plan Template Rev 2.0] http://www.google.ps/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CDgQFjAD&url=http%3A%2F%2Fspiral.kaist.ac.kr%2Fcourses%2F2010%2Fspring%2FCS350%2Fpdf%2Fsoftware_quality_assurance_plan.doc&ei=rMK4UNbZLNDCswbfvIDICQ&usg=AFQjCNGMDwfY0cceTT06LxiLXgK13ylXGw

http://artofunittesting.com/definition-of-a-unit-test/

The testing phase as we mentioned earlier is a very important part of system simulation. Many benefits can be gained from this phase including:

Reducing the time needed to market the system.

Providing a high quality product.

Access to state of the art testing resources.

Lowering the cost of maintenance.

Flexible resourcing.

Shifting the focus to the strategic priorities in the development process.

http://www.offshoretestingservices.com/blog/how-important-is-software-quality-assurance/

The importance of the testing phase is that everybody makes mistakes; some of our mistakes can be ignored and doesn’t have that much of an impact, but some can be very dangerous and costing a huge amount of money. So, it’s vital to check everything and anything that is produced before releasing it to the public. Since we are assuming that we have errors, it’s very important to check our work for any errors or mistakes. However, some of these errors are caused by bad assumptions and blind spots, so the same mistake might be done twice, and some of the errors will be overlooked. Ideally, the best solution is to get someone from outside the developing team to perform the testing proves.

http://istqbexamcertification.com/what-is-a-software-testing/

Types of Software developing life cycles (SDLC)

The software development process make use of many models that are used by widely by various organizations, some of these models are:

Waterfall Model

V-Shaped Model

Spiral Method (SDM)

Iterative and Incremental Method

Waterfall Model

Description

The waterfall model can be viewed as a sequential flow, where the phases are processed steadily downwards throughout all the stages of the software development cycle. In this model each phase can only starts after the previous phase has completely finished. However, the waterfall model does not provide a method to go back to the previous stage to handle any requirement change in the system. This model is considered to be one of the earliest approaches used in the software development process.

C:\Users\Owner\Desktop\courses\system dynamic\ass\images.jpg

The usage

This model is best used with projects that do not focus on any changes in requirements, for example, the responses for request for proposals (RFPs).

Advantages and Disadvantages

Advantages

Disadvantages

· Easy to explain to the user· Structures approach.· Stages and activities are well defined· Helps to plan and schedule the project

· Verification at each stage ensures early detection of errors / misunderstanding

· Each phase has specific deliverables

· Assumes that the requirements of a system can be frozen· Very difficult to go back to any stage after it finished.· Little flexibility and adjusting scope is difficult and expensive.· Costly and required more time, in addition to detailed plan

V-Shaped Model

Description

The V-Shaped model is very similar to the waterfall model and it’s considered to be an extension to it. However, in this model instead of moving downward in a linear manner, the model bents the processes flow after the implementation phase, forming a V shape model. The main difference between the waterfall model and the v-shaped model is that the v-shaped model places a larger priority on the verification and early test planning step.

C:\Users\Owner\Desktop\courses\system dynamic\ass\images (1).jpg

The usage

This model is used with the systems that their software requirements are clearly defined and known. Also, with systems that has their software development technologies and tools are well known.

Advantages and Disadvantages

Advantages

Disadvantages

Simple and easy to use.· Each phase has specific deliverables.· Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.· Works well for where requirements are easily understood.

· Very inflexible, like the waterfall model.· Little flexibility and adjusting scope is difficult and expensive.· Software is developed during the implementation phase, so no early prototypes of the software are produced.· Model doesn’t provide a clear path for problems found during testing phases.

· Costly and required more time, in addition to detailed plan

Spiral Method (SDM)

Description

The Spiral model combines the elements from both the design and prototyping-in- stages, in order to try and combine the advantages from both the top-down and the bottom-up concepts. Since this model of development combines features from both the waterfall model and the prototyping model, the spiral model is favored for the large, complicated, and expensive projects. This model uses most of the phases of the waterfall model in the same order, but separated by the planning, risk assessment, and building prototypes to simulate.

C:\Users\Owner\Desktop\courses\system dynamic\ass\image002.png

The usage

The Spiral method is best used with large systems built in small phases and segments and in shrink-wrap applications.

Advantages and Disadvantages

Advantages

Disadvantages

· Estimates (i.e. budget, schedule, etc.) become more realistic as work progresses, because important issues are discovered earlier.· Early involvement of developers· Manages risks and develops system into phases

· High cost and time to reach the final product.· Needs special skills to evaluate the risks and assumptions· Highly customized limiting re-usability

Iterative and Incremental Method

Description

The Iterative and Incremental model was initially developed to overcome the weaknesses in the waterfall model. The model starts by making an initial plan and ends with deployment with cyclic interactions in between them. The main idea behind developing this model is to create a system through repeated cycles (iterative) and with smaller portions at a time (incremental). Thus allowing the software developers to take advantage of what they learned while developing earlier parts or versions of the software.

C:\Users\Owner\Desktop\courses\system dynamic\ass\01kal01.jpg

The usage

This model is mainly used with shrink-wrap applications and large systems that are built in smaller phases and segments. Also, it can be used with systems that have separated components, for example, the ERP systems. In this system we can starts with budgeting as a first segment and then we can move to work with the inventory module and so on.

Advantages and Disadvantages

Advantages

Disadvantages

· Produces business value early in the development life cycle· Better use of scarce resources through proper increment definition· Can accommodate some change requests between increments· More focused on customer value than the linear approaches

· Problems can be detected earlier

· Requires heavy documentation· Follows a defined set of processes· Defines increments based on function and feature dependencies· Requires more customer involvement than the linear approaches

· Partitioning the functions and features might be problematic

· Integration between iteration can be an issue if this is not considered during the development.

Extreme programming (Agile development)

Description

This model is based on the iterative and incremental development model. In this model, the requirements and the solutions emerge through the collaboration between the cross-functional teams in the organization.

http://t0.gstatic.com/images?q=tbn:ANd9GcQybqw459Txbk-QLIZtzwi4KcjMJQmWpzYakPupfel8ZRv7yzR8

The usage

This model can be used with all types of projects, the only things is that it requires a bigger involvement from the customer and for it to be interactive. It also can be used when the customer needs some of the functional requirements to be ready in less than three weeks.

Advantages and Disadvantages

Advantages

Disadvantages

· Decrease the time required to avail some system features.· Face to face communication and continuous inputs from customer representative leaves no space for guesswork.· The end result is the high quality software in least possible time duration and satisfied customer

· Scalability· Skill of the software developers· Ability of customer to express user needs· Documentation is done at later stages

· Reduce the usability of components.

· Needs special skills for the team.

Quality Assurance (QA):

Quality assurance is the way to see if the process used do its purpose to produce quality product, the aim of the QA is to see if the product meet the expectation of the customer, it tries to get rid of the errors that can shown in the product and to deal with them," QA is associated with activities like measuring the quality of process used to develop a product, process improvement and defect prevention." [4], the activities in the QA is to measure quality of a process, defect prevention and to improve development

Software Quality Assurance (SQA):

"Monitoring the software engineering processes and methods used to ensure quality", the aim of the SQA is to see if the product meets the standards,

SQA engineers’ responsibility is to create processes and methods to improve development process, SQA is a function for monitoring the processes and methods are implemented correctly.

(4)http://www.ehow.com/list_6892494_quality-assurance-plan-checklist.html Accessed (7/12/2012)

http://en.wikipedia.org/wiki/Software_testing#Software_quality_assurance_.28SQA.29 Accessed (12/7/2012)

Software Quality Assurance (SQA) is a level of confidence that software is free from unwanted results, it inserts at anytime during software lifecycle and it makes software functions walk through intended manner. In order to get quality control Software Quality Team (SQT) must follow a specific plan at work; this plan is called Software Quality Assurance Plan (SQAP). [1]

Software Quality Assurance Plan (SQAP) is a document, constructed by the project team, aims to give the final product high quality. It contains a set of documented activities to ensure that customers are persuaded with the goods or services. There are four steps of the quality assurance process: Plan, Do, Check, and Act. The quality assurance plan should define goals, functions responsibilities and roles and define tasks and the schedule. [2] Of the most important things that should be the focus during the development of the plan is software testing.

Software testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results. Although crucial to software quality and widely deployed by programmers and testers, software testing still remains an art, due to limited understanding of the principles of software. The difficulty in software testing stems from the complexity of software: we cannot completely test a program with moderate complexity. Testing is more than just debugging. The purpose of testing can be quality assurance, verification and validation, or reliability estimation. Testing can be used as a generic metric as well. Correctness testing and reliability testing are two major areas of testing. Software testing is a trade-off between budget, time and quality. [3]

[1] Wikipedia (2012), ‘Software Quality Assurance’, Available at: http://en.wikipedia.org/wiki/Software_quality_assurance (Accessed: 29 Nov. 2012).

[2] Smith, C. (2010), ‘SAPHIRE 8 software quality assurance plan’, available at: http://www.osti.gov/energycitations/product.biblio.jsp?osti_id=975157 (Accessed: 29 Nov. 2012).

[3] Pan, J. (1999), ‘SAPHIRE 8 software Testing’, available at: http://www.ece.cmu.edu/~koopman/des_s99/sw_testing/#conclusions (Accessed: 29 Nov. 2012).

Why Software Quality Assurance (SQA)?

Improved customer satisfaction.

Reduced cost of development

Reduced cost of maintenance

http://www.offshoretestingservices.com/blog/how-important-is-software-quality-assurance/

Key aspects of quality for the customer include:

Good design – looks and style

Good functionality – it does the job well

Reliable – acceptable level of breakdowns or failure

Consistency

Durable – lasts as long as it should

Good after sales service

Value for money

http://istqbexamcertification.com/what-is-software-quality/

Methodology:

As for our methodology, we’ll be making use of both system thinking and system dynamic concepts.

The systems thinking originally originated in 1956, when Professor Jay Forrester founded the System dynamics Group at the MIT’s Sloan School of Management.

System dynamics is defined as a methodology used for studying and managing complex feedback received from the developed system, such as the feedback one finds in a business or other social systems.

http://www.albany.edu/cpr/sds/

The system dynamics approach involves: 

Defining problems dynamically, in terms of graphs over time.

Striving for an endogenous, behavioral view of the significant dynamics of a system, a focus inward on the characteristics of a system that themselves generate or exacerbate the perceived problem.

Thinking of all concepts in the real system as continuous quantities interconnected in loops of information feedback and circular causality.

Identifying independent stocks or accumulations (levels) in the system and their inflows and outflows (rates).  

Formulating a behavioral model capable of reproducing, by itself, the dynamic problem of concern.  The model is usually a computer simulation model expressed in nonlinear equations, but is occasionally left unquantified as a diagram capturing the stock-and-flow/causal feedback structure of the system.

Deriving understandings and applicable policy insights from the resulting model.

Implementing changes resulting from model-based understandings and insights.

http://www.systemdynamics.org/what_is_system_dynamics.html#approach

On the hand, system thinking is a comprehensive approach of analysis that focuses on the way a system’s basic parts interrelate and how systems work together over time and within the framework of the larger systems. The systems thinking approach contradicts the traditional analysis of systems, which studies them by breaking these systems down into their separate parts or elements. Systems thinking take part of many areas of research and it has been adapted to the study of medical, human resources, educational, political, environmental, economical systems, alongside many other fields.

According to systems thinking, the system behavior is a result of the reinforcing and balancing processes. The reinforcing process leads to increasing some of the systems component. If the reinforcement process is unrestrained by a balancing process, the system will eventually collapse, since maintaining the equilibrium in any particular system is done by the balancing process.

One of the essential parts of system thinking is paying attention to the feedback of any model used. For example, in a project management model, the logic might suggest addition of workers to a project that is falling behind. However, using this method in practice might have actually slowed the development process in the past. Paying attention to the relevant feedback will allow the management to look for other solutions to this problem rather than wasting the resources on a method that showed to be damaging and counterproductive.

Systems thinking make use of computer simulations and a variety of graphs and diagrams to illustrate, model and predict the behavior of the system. Among the tools the system thinking uses are: the behavior over time (BOT) graph, this graph indicates the actions of one or more of the variables over a period of time; the causal loop diagram (CLD), the CLD illustrates the relationships between the system different elements; the management flight simulator, this tool uses an interactive program to simulate the management decisions effects; and finally the simulation model that works by simulating the interactions between the system elements over time.

http://searchcio.techtarget.com/definition/systems-thinking

The system dynamics filed emphasizes and serves as the ground basis for the systems thinking filed. With the system dynamics emphasizing on the simulation modeling, it’s generally have been seen as the more accurate, academic field. While systems thinking takes the principles of systemic behavior discovered by the system dynamics, applying them in practical methods to the common problems in the organizational life. Matter of a fact, simulation modeling, microworlds, and management flight simulators are slightly some of the tools used by the system thinking developers in order to understand the world from all around them and addressing the problems.

Both these fields together can turn into a powerful ally as one is navigating through the most of the times rocky landscape of organizational life.

http://www.pegasuscom.com/aboutsd.html

Simulation

Advantages with Simulation

Understanding the systems behavior and the parameters affecting the performance is essential to the company’s management. During the simulation study many of the systems’ inner mechanisms are revealed. All of the studies applied and performed before the modeling phase often leads to a detailed understanding of the system. Also, visualizing the model adds an additional understanding of the system behavior. Furthermore, it can results in a simulation that can be shown are explained to the rest of the organization. [9]

Some of the advantages that we get from the simulation are:

- Simulation helps to understand the complex nature of dynamic systems and can be used for training.

- Mathematical models, by themselves, cannot describe most complex systems, with stochastic elements.

A System Dynamics Simulation Study of a Software Development Process

20

- experimenting with a system itself is often too expensive, lengthy or impossible.

- Simulation allows studies of a system over a long time period since time is compressed.

Lars Randell, A Methodology to Reduce Time Consumption in

Discrete-Event Simulation Projects, Lund University, 2000



rev

Our Service Portfolio

jb

Want To Place An Order Quickly?

Then shoot us a message on Whatsapp, WeChat or Gmail. We are available 24/7 to assist you.

whatsapp

Do not panic, you are at the right place

jb

Visit Our essay writting help page to get all the details and guidence on availing our assiatance service.

Get 20% Discount, Now
£19 £14/ Per Page
14 days delivery time

Our writting assistance service is undoubtedly one of the most affordable writting assistance services and we have highly qualified professionls to help you with your work. So what are you waiting for, click below to order now.

Get An Instant Quote

ORDER TODAY!

Our experts are ready to assist you, call us to get a free quote or order now to get succeed in your academics writing.

Get a Free Quote Order Now