You are on page 1of 16

Assignment # 2 Project Management

Submitted to:
Sir Zikria Mian

Submitted by:
Asia Maaz Ayub Asima Kanwal Amna Jamil Tehreem Abdul Latif (11123046) (12233003) (11133016) (11133014) (11123022)

Submission date:
09/04/2013

Gift Business School Gujranwala

SDLC Model
The systems development life cycle (SDLC), or software development process in systems engineering, information systems and software engineering, is a process of creating or altering information systems, and the models and methodologies that people use to develop these systems. In software engineering, the SDLC concept underpins many kinds of software development methodologies. These methodologies form the framework for planning and controlling the creation of an information system the software development process.

Objectives of SDLC
Following main objectives of SDLC model are; Ensure the delivery of high quality systems Provide the strong management controls Maximize productivity

Strengths

2

Control on management Monitor large projects Detailed steps Evaluate costs and completion targets Documentation Well defined user input

Ease of maintenance. Development and design standards Tolerates changes in MIS staffing

Weaknesses
Increased development time Increased development cost Systems must be defined up front Rigidity Hard to estimate costs, project overruns User input is sometimes limited

Factors to be considered before choosing SDLC


1. Complexity of the project 2. Nature of the project development whether it is a software maintenance project or an embedded product development 3. Size of your organization, the project and the team 4. Structure of your team whether it is in house or geographically distributed 5. Alignment with your organizations stage of business and its business strategy whether your organization is a startup with a new product launch or an established enterprise that is releasing a new product feature 6. Engineering capabilities of your developers 7. Culture of your organization whether the teams are used to the collaborative work culture or not, as adopting some SDLC methodologies like agile, demands collaborative work culture 8. The industry of your business, as different industries may have very different software development needs and objectives

Software Development Life Cycle (SWDLC)


SWDLC is a component of the SDLC. In systems that require the development of software based on the systems design created by the SDLC, the SWDLC is initiated. The SWDLC provides a reference set of expected phases necessary to develop the software. They contain or describe the tasks and procedures that must be performed in each phase; deliverables produced by each phase; and metrics for setting schedules, estimating costs, and measuring productivity. The SWDLC also provides a standard operating procedure and framework that supports a structured, engineered approach to software development. Building programs follows a 3 phases SWDLC of Design, coding and testing. Design: This phase is where the parts of the detailed systems design that will be converted to an application program are designed at a level that can be used by a programmer to write the code, for example, code the program in C or COBOL. Code: The coding phase maps the design into program procedures. Test: All modules of code are subject to a variety of tests to detect and remove errors. After thorough testing, the program is converted to operations. Requirement analysis--> Design-->Coding-->Module level testing--> Integration and system testing-->Delivery, Implementation and maintenance

Design

Coding

Module level testing

Implementation and maintenance

Delivery

1. Requirement analysis: This step is the first and primary step of software development life cycle which analyzes the requirement of the software. It is performed after the feasibility study has been done. The requirement term in this concern can be understood as : A condition or capability needed by a customer to solve a problem,and. A condition or capability that must be met by a system, software, document, manual, report etc.

Design:
This step is divided into two level designing named as, preliminary design high level design and detailed design or low level design. Preliminary design concern the brief overview of the software architecture and structure rather than goes into the details of the modules in detail in the detailed design. As the result of this step, it produces the software design specification (SDS) SDS is built to have. A software architecture in the layered sequential layout Data structure, algorithums, control structure The interfaces required for the software and The satisfaction that requirements have been met in the design

Coding:
This is the phase that produces the actual code that will be delivered to the customer as the operational product. To develop the code, a specific programming language is chosen either through its features or directly specified by the customer.

Module level Testing:


Individual developed modules are tested here. It is also called as the unit testing. The testing is performed for each of the module separately.

Integration and system designing:


All the modules are collected and integrated appropriately with each other. Interface is provided among them, and then the whole system is tested fully.

Delivery, implementation and maintenance


Once the complete system is tested then that system is delivered to the customer who will implement it on its organization site. After delivery, any modification or changes can be made to help in maintenance. This is the complete software development life cycle. This is the basic general process which is followed to develop each software product. The 40-20-40 rule emphasizes strong front-end design (40%) and back-end testing (40%), whereas the mechanical programming (coding) task is de-emphasized (20%).

Difference of SDLC and SDWLC


SDLC is an acronym for Software Development Life Cycle. The SLDC is a phased methodology for managing software development projects. The SDLC is a generic, macro level, summary of all software development project activities ranging from concept through commercialization (or delivery). SWDLC is an acronym for Software Development Life Cycle. However, the SWDLC acronym is used in a different context as compared to SDLC. SWDLC is a subset of phases integrated into the overall SDLC. SWDLC specifically refers to the project management framework, or methodology, of standard phases to help a firm better

managing the activities, deliverables, timing, and resources for software development projects. SWDLC's are often governed by standard policy and procedure (templates where applicable.

Spiral Model
The spiral development model is normally associated with the one set forth by Dean Muench (Sybase, 1994). His model uses the spiral to describe successive process loops resulting in a single software deliverable. I view the spiral model differently; representing successive, iterative deliverables. This is view borrows from the Rapid Application Development approach. As represented by the fairly narrow banding, the initial deliverable is relative small. Each successive deliverable, building on the prior one, contains more. Each deliverable goes through the entire lifecycle.

This model supports both short burst deliverables where frequent small deliverables are released, and more extensive content deliverables taking a longer period of time per release. This diagram does not show the potential for parallelism; the ability under the spiral development model to create parallel development tracks whereby work progresses on both immediate deliverables and longer range deliverables. I have found that having a single team working on both longer range and short term deliverables is extraordinarily difficult. It is, I believe, far better to have separate teams that scrum together periodically to keep in synch. Another approach to parallel development is for each successive version's requirements, specifications,, and even design can be worked on in advance. This works for shops that are able to separate those functions from the actual development. With smaller teams, where lead developers are needed for interpretation of requirements and specifications, and for creation of design (architecture), this approach again becomes a real challenge. In summary, the benefits of this approach to development are a function of the size and structure of the development organization, and of the development culture.

Advantages of Spiral Model


Spiral Life Cycle Model is one of the most flexible SDLC models in place. Development phases can be determined by the project manager, according to the complexity of the project. Project monitoring is very easy and effective. Each phase, as well as each loop, requires a review from concerned people. This makes the model more transparent. Risk management is one of the in-built features of the model, which makes it extra attractive compared to other models. Changes can be introduced later in the life cycle as well. And coping with these changes isnt a very big headache for the project manager. Project estimates in terms of schedule, cost etc become more and more realistic as the project moves forward and loops in spiral get completed. It is suitable for high risk projects, where business needs may be unstable.

A highly customized product can be developed using this.

Disadvantages of spiral Model


Cost involved in this model is usually high. It is a complicated approach especially for projects with a clear SRS. Skills required, evaluating and reviewing project from time to time, need expertise. Rules and protocols should be followed properly to effectively implement this model. Doing so, through-out the span of project is tough. Due to various customizations allowed from the client, using the same prototype in other projects, in future, is difficult. It is not suitable for low risk projects. Meeting budgetary and scheduling requirements is tough if this development process is followed. Amount of documentation required in intermediate stages makes management of project very complex affair. I hope after reading the benefits (pros) and drawbacks (cons) of Spiral model, it will be better judge to which model suits our requirements best.

Spiral Approach Phases


1. Customer Communication: Includes understanding the system requirements by continuous communication between the customer and the system analyst. 2. Planning: Includes estimating Schedule, cost, and resource for the iteration. 3. Risk Analysis: includes identifying, estimating, and monitoring technical and management risks, such as schedule slippage and cost overrun. 4. Engineering: Includes requirement gathering and design of the software system. 5. Construction and release: Includes coding, testing and deploying software at the customer site and providing user-support documents. 6. Customer Evaluation: Includes evaluation of software by the customer and implementing feedback in the next iteration of the software development.

Rapid Model
Rapid application development Model
RAD stands for rapid application development. (RAD) is a development lifecycle designed to give much faster development and higher-quality results than those achieved with the traditional Lifecycle. It is designed to take the maximum advantage of powerful development software that has evolved recently. RAD is an approach to building computer Systems which combine Computer-Assisted Software Engineering (CASE) tools and Techniques, user-driven prototyping, and stringent project delivery time limits into a potent, tested reliable formula for top quality and productivity. RAD drastically raises the quality of finished systems while reducing the time it takes to build them. In short, Rapid Application Development is exactly that. It is a process through which the development cycle of an application is expedited. Rapid Application Development thus enables quality products to be developed faster, saving valuable resources. The magnitude of such savings is truly RAD. RAD takes advantage of automated tools and techniques to restructure the process of building information systems. RAD replaces hand-design and coding processes, which are dependent upon the skills of isolated individuals, with automated design and coding, which is an inherently more stable process. RAD may thus give an IS organization its first real basis for continuous improvement. In addition to being more stable, Rapid Application Development is a more capable process, as it is much faster and less error prone than hand coding. Organizations faced a lot of problems such as upgrading their aging systems or building new applications. Traditional development lifecycles, however, are too slow and rigid to meet the business demands of todays economy. A new methodology must be implemented, one that allows organizations to build software applications faster, better, and cheaper. RAD enables such development.

10

It is a methodology for compressing the feasibility analysis, planning, design, build, and test phases into a series of short, iterative development cycles.

Objectives of RAD
These are following the objectives of RAD, which are as under;

To develop quality applications in a specific and rapid timeframedays or weeks, rather than the months and years typically experienced using conventional techniques. To provide an environment where end-user involvement is paramount. RAD will not be successful without total end-user involvement. To achieve rapid development using highly trained and motivated resources in a structured team environment.

Advantages and disadvantages of RAD Model


These are following the advantages and disadvantages of RAD model, which are as under;

Advantages
The advantages of Rapid Application Development (RAD) are:
11

It is flexible and adaptable to changes. The time required to develop the software is drastically reduced due to a reduced requirement analysis and planning stage. Prototyping applications helps to judge whether the critical system requirements are being met by system or not. The report output can be compared with existing reports. It helps to accurately estimate project costs. The software prototypes are reusable so it enhances speediness and reduces cost and time. It has short development cycle thus users see the RAD product quickly. It involves user participation. It reduces overall reduction in project risk. It promotes better documentation through written test cases.

Disadvantages
The disadvantages of Rapid Application Development (RAD) are: It may not be useful for large, unique or highly complex projects. It cannot be success if the team is not sufficiently motivated nor is unable to work cohesively together. It may be difficult for many important users to commit the time required for success of the RAD process. Sometimes the team may ignore necessary quality parameters such as consistency, reliability and standardization.

Strengths and weaknesses of RAD Model


These are following the strength and weaknesses of the Model, which are as under;

Strength
The operational version of an application is available much earlier than with Waterfall, Incremental, or Spiral frameworks.

12

Because RAD produces systems more quickly and to a business focus, this approach tends to produce systems at a lower cost. Engenders a greater level of commitment from stakeholders, both business and technical, than Waterfall, Incremental, or Spiral frameworks. Users are seen as gaining more of a sense of ownership of a system, while developers are seen as gaining more satisfaction from producing successful systems quickly. Concentrates on essential system elements from user viewpoint. Provides the ability to rapidly change system design as demanded by users. Produces a tighter fit between user requirements and system specifications. Generally produces a dramatic savings in time, money, and human effort.

Weaknesses
More speed and lower cost may lead to lower overall system quality. Danger of misalignment of developed system with the business due to missing information. Project may end up with more requirements than needed (gold-plating). Potential for feature creep where more and more features are added to the system over the course of development. Potential for inconsistent designs within and across systems. Potential for violation of programming standards related to inconsistent naming conventions and inconsistent documentation. Difficulty with module reuse for future systems. Potential for designed system to lack scalability. Potential for lack of attention to later system administration needs built into system. High cost of commitment on the part of key user personnel. Formal reviews and audits are more difficult to implement than for a complete system. Tendency for difficult problems to be pushed to the future to demonstrate early success to management. Since some modules will be completed much earlier than others, well-defined interfaces are required.
13

Incremental Model
The incremental build model is a method of software development where the model is designed, implemented and tested incrementally until the product is finished. It involves both development and maintenance. The product is defined as finished when it satisfies all of its requirements. The product is decomposed into a number of components, each of which are designed and built separately (termed as builds). Each component is delivered to the client when it is complete. This allows partial utilization of product and avoids a long development time. It also creates a large initial capital outlay with the subsequent long wait avoided. There are some problems with this model. One is that each new build must be integrated with previous builds and any existing systems. In incremental model the whole requirement is divided into various builds. Multiple development cycles take place here, making the life cycle a multi-waterfall cycle. Cycles are divided up into smaller, more easily managed modules. Each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle. Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved. Incremental model is the best model to be used for both large and small project rather than any other models. This is because incremental model composes of the Waterfall and Prototyping model. Waterfall model is mainly targeting the small project. The other weakness of the waterfall model is that it does not require the designer to step back for correcting errors. Therefore the incremental model combines of the two models hence it will tackle both small and big projects. Incremental model also handle errors pretty well as they can be easily identified due to the requirements being broken down into smaller units.

14

Advantages of Incremental Model


It handles large projects Less costly to change the scope/requirements It has the functionality of the water fall and the prototyping model Easier to manage the project as it is broken down into smaller pieces Changes can be done through the development stages Errors are easy to be identified Results are obtained early and periodically Progress can be measured Easier to manage risk, high risk part is done first

Lowers initial delivery cost

Disadvantages of Incremental Model


When rectifying a problem in a functional unit, then all the functional units will have to be corrected thus taking a lot of time Requires good planning designing More resources may be required
15

More management attention is required Needs a clear and complete definition of the whole system before it can be broken down and built incrementally Total cost is higher than waterfall

When to use the Incremental Model


Requirements of the complete system are clearly defined and understood. Major requirements must be defined; however, some details can evolve with time. There is a need to get a product to the market early. A new technology is being used Resources with needed skill set are not available There are some high risk features and goals

It is concluding that the incremental model is the best model in commercial projects because it accumulates all sorts of software development whether small or large. The model satisfy the clients and benefit both parties i.e. developers and clients because the product will be developed and delivered well in time compared to a situation where a programmer will be coding to solve a problem without analyzing, designing, and testing.

16

You might also like