Download presentation
Presentation is loading. Please wait.
1
Thinking about Information Systems -II
IT Projects from Conception to Delivery – SDLC Project Management Approaches- Waterfall to Agile Methodology
2
Software Development Lifecycle (SDLC)
SDLC : A term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system Describes the different stages involved in the project from the drawing board, through the completion of the project. Requirement gathering and analysis Design Implementation/Coding Testing Deployment Maintenance Used during the software development process and are also called software development models Each of these development models follows a life cycle to ensure the success of a software development process.
3
The User Designer Communication Gap
User Concerns Designer Concerns Will the system deliver the information I need for my work ? How much disk space will the master file consume? How quickly can I add the data ? How many lines of product code will it take to perform this function ? How easily can I retrieve the data ? What is the most efficient way of storing the data ? How much clerical support will I need to enter the data ? What database management system should we use ? How will the operation of my system fit into my daily business schedule ? How to cut down on CPU time when we run the system ?
4
Stages in SDLC Preliminary analysis:
Find out the organization's objectives and the nature and scope of the problem under study. Systems analysis, requirements definition: It is the process of gathering and interpreting facts, diagnosing problems and recommending improvements to the system Systems design: Describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudocode and other documentation Development: The real code is written here Integration and testing: Brings all the pieces together into a special testing environment, then checks for errors, bugs and interoperability Acceptance, installation, deployment: The final stage of initial development, where the software is put into production and runs actual business Maintenance: Phase that ensures system does not become obsolete. It involves continuous evaluation of the system in terms of its performance Evaluation: This is where the system that was developed, as well as the entire process, is evaluated. Some of the questions that need to be answered include: does the newly implemented system meet the initial business requirements and objectives? Is the system reliable and fault-tolerant? Does the system function according to the approved functional requirements? In addition to evaluating the software that was released, it is important to assess the effectiveness of the development process. If there are any aspects of the entire process, or certain stages, that management is not satisfied with, this is the time to improve. Evaluation and assessment is a difficult issue. However, the company must reflect on the process and address weaknesses.
5
Benefits of Software Development Lifecycle
Improves the quality of a product by making it cost-efficient, effective and productivity At the end of each stage a proper review is created that allows maximum management control Helps in creating detailed system documentation called Software Requirement Specification (SRS) SRS helps in assuring that system requirements can be traced back to specified needs of organization The products can be reviewed to check whether they conform to user’s requirements of not. Further changes can be made to suit the clients needs Two popular ways to implement SDLC is using two types of SDLC – Waterfall and Agile The main difference between these two models is that the waterfall model is a sequential process model and comes with a well detailed plan and requirements. The agile model does not have strict guidelines like the waterfall model; adjustments can be made throughout the process. Agile software development gives advantages that a waterfall model does not address.
6
Software Development Models
A framework that describes the activities performed at each stage of a software development project. Comprise work practices, tools and techniques that are required to develop software. Very efficient and enable software developers to build cost effective and reliable software to satisfy maximum number of customer requirements. Software development models are used for organizing and creating documentation of the structure and flow of the data through a systematic process Software development process has changed with the time by incorporating additional definitions, process models, structures and approaches to software development activity.
7
Waterfall Model Each phase must be completed before moving to the next phase. Used in small projects with no indeterminate requirements After every phase a review is done to determine the accuracy of the product. When to use the Waterfall Model : Requirements are very well known Product definition is stable Technology is understood New version of an existing product Porting an existing product to a new platform.
8
Waterfall Model Strengths and Weaknesses
Easy to understand, easy to use Schedules can be set with deadlines for each stage Milestones are well understood Good for management control (plan, staff, track) Works well when quality is more important than cost or schedule All requirements must be known upfront Little opportunity for customer to preview the system Difficult for customers to state all the requirements explicitly Blunders / problems that are faced can’t be rectified until very late Advantages : Require business needs and requirements in beginning Defines definite starting and ending points of a project Early detection of errors As all the stages are clearly defined so, this process ensures early detection of errors and misunderstanding in its each stage Require Documentation , to support future enhancements in the project Requirement specification document serve as the guideline for the development and testing phase Each phase is discrete and team members involved in a stage ensures the perfection of the stage before delivering to next stage This approach can be very efficient when team members are dispersed in different locations The amount of resources required to implement waterfall model is lower than other methods Disadvantages : The greater disadvantage of this approach is that there is no way to go back. Once a stage is complete means it is locked Sometimes it’s really tough to estimate time required for different phases and incorrect assumption can fail the project to meet its deadline Waterfall model does not allow changes as per client’s requirement, so it is less flexible If changes are to be made in waterfall process, the project has to be started all over again. This can be expensive for some organization. Increase software development time and expense since client keep adding requirement on the list Team members of rest of the phase sits idle except the team member who are under the current working phase.
9
Prototype Model Waterfall model does not deliver a working model until a late stage. Therefore, you cannot detect any severe error at an early stage. The solution to this problem is to develop a working prototype with the available requirement details. When to Use Prototyping Model ? Requirements are unstable or have to be clarified As the requirements clarification stage of a waterfall model Develop user interfaces Short-lived demonstrations New, original development With the analysis and design portions of object-oriented development.
10
Prototype Model Advantages Limitations
Improved , increased user involvement Errors rectified at each stage User confusion of prototype and finished system Developer misunderstanding of user objectives Expense and time of implementing prototyping Advantages : When prototype Model is shown to the user, he gets a proper clarity about his requirements. And feel the functionality of the software, so can suggest the changes and modifications. When client is not confident about the developer’s capabilities, he asks for a small prototype to be built It helps to demonstrate the concept to the investors to get funding for project. It reduces risk of failure, as potential risks can be identified early and steps can be taken to remove that risk. Constant interaction between development team and client provides a very good and co-operative environment during project. Time required to complete the project after getting final SRS is reduces as the developers has a better idea about how he should approach the project The customer does not need to wait long for working software Feedbacks from customer are received periodically and the changes don’t come as a last minute surprise. Disadvantages : Sometimes the start-up cost of building the development team, focused on making prototype is high. And usually in starting Prototype is done at the cost of the developer. So it is done using minimal resources It is a slow process Once we get proper requirements from client after showing prototype model, it may be of no use Too much involvement of client is not always preferred by the developer. Too many changes can disturb the development team. Customer could believe the prototype as the working version Developer also could make the implementation compromises where he could make the quick fixes to the prototype and make is as a working version. Often clients expect that a few minor changes to the prototype will more than suffice their needs They fail to realise that no consideration was given to the overall quality of the software in the rush to develop the prototype
11
Iterative Model Design
Divide the requirements in various versions or build. In this model we follow multiple development life cycles such as multi-waterfall cycle. These cycles are divided into various smaller modules. During the first module, a working version of the software is produced.
12
Advantages Limitations
Iterative Model Advantages Limitations Generates working software quickly and early Easier to test and debug during a smaller iteration Customer can respond to each build Easier to manage risk Needs good planning and design 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 Advantages of the Iterative Model The versions are provided after iteration of the incremental model. After using first iterated model, user can give their suggestion and demand for changes It is flexible to the customer’s requirements and easy to manage model Better risk management is there in this model because one can confirm the outcome by the customer after every version because every version is prepared according to the plan Easy to test as testing is done in iteration as per requirement This model is used when requirements are clear to some extend but project scope requires pure linear approach Complete implementation by decided dead line Sometimes early increments can be implemented with fewer people. Lover risk of project failure compared to other approaches. Results are obtained early and periodically. Parallel development can be planned. Progress can be measured by setting milestone. Testing and debugging during smaller iteration is easy Limitations of the Iterative Model Each phase of an iteration is very rigid and do not overlap each other. Problems may arise related to system architecture because not all requirements are gather in initial stage of the development process Each increment needs to be relatively small. Mapping requirements to increments may not be easy so managing documents are very difficult. Common features of the software are difficult to identify. During development process changes are being done at first iteration. As if it continues to change and it never finished. More resources may be required More management attention is required due to frequent changes in requirements Does not allow iterations within an increment.
13
Spiral Model The spiral model can be described as the combination of linear sequential and iterative approach used for the software development process. In the spiral model, software development is done in a series of developed builds. Advantages: Spiral life cycle model is one of the most flexible SDLC models. Development phases can be determined by the project manager, according to the complexity of the project. Project monitoring is very easy and effective as it is done in each phase of each iteration. This monitoring is done by experts or by concerned people. This makes the model more transparent. Risk management is key feature of this model, which makes it more attractive compared to other models. If changes are introduced at later stage in life cycle, coping with these changes isn’t a very big problem for the project manager It is suitable for high risk projects, where business needs may be unstable. A highly customized product can be developed using this model. Since the prototype building is done in small fragments or bits, cost estimation becomes easy and the customer can gain control on administration of the new system As the model continues towards final phase, the customer's expertise on new system grows, enabling smooth development of the product meeting client's needs Disadvantages : Cost involved in this model is usually very high It is a complicated approach especially for the project with a clear SRS (System Requirement Specification) Rules and protocols should be followed properly to effectively implement this model. Through-out the project life cycle development, it is very hard to follow rules and protocols It is not suitable for low risk projects Meeting budgetary and scheduling requirements is very tough with this software development process Due to various customizations allowed from the client, it is very hard to use same prototype in other projects It needs extensive skill in evaluating uncertainties or risks associated with the project and their abatement. 8. The models work best for large projects only, where the costs involved are much higher and system pre requisites involves higher level of complexity. 9. Risk assessment expertises are required. 10. Spiral may continue indefinitely.
15
Agile Software Development
Requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams Advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change Agile Methods Extreme programming (XP) Scrum Crystal methodologies Dynamic software development method (DSDM) Feature-driven development Lean software development
16
Scrum Features are known as user stories as they are built from the end users perspective Product Backlog : Collection of the user stories / wish list of all the items that will make the product look great Helps to decide which user stories one will add to the final product Team Roles : Product owner (sets the direction of the product , selects the right stories to go into the product) Scrum Master/ Project Manager : the job continues smoothly, sets up meetings and monitors the work done Developers, Testers, Customers, Executives, Release Planning : identify the stories to be a part of the release backlog, estimates are needed here Sprints short duration milestones that allow teams to tackle manageable amount of work Helps to identify whether the project is going to be ready shipped Burn down Charts : day by day check on how much work is left to be done Advantages of Scrum Agile scrum helps the company in saving time and money. 2) Scrum methodology enables projects where the business requirements documentation is hard to measure to be successfully developed. 3) Fast moving developments can be quickly coded and tested using this method, as a mistake can be easily rectified. 4) It is a lightly controlled method which insists on frequent updating of the progress in work through regular meetings. Thus there is clear visibility of the project development. 5) Like any other agile methodology, this is also iterative in nature. It requires continuous feedback from the user. 6) Due to short sprints and constant feedback, it becomes easier to cope with the changes. 7) Daily meetings make it possible to measure individual productivity. This leads to the improvement in the productivity of each of the team members. 8) Issues are identified well in advance through the daily meetings and hence can be resolved in speedily. 9) It is easier to deliver a quality product in a scheduled time. 10) Scrum can work with any technology/ programming language but is particularly useful for fast moving web technology or new media projects. 11) The overhead cost in terms of process and management is minimal thus leading to a quicker result. Limitations of Scrum Agile Scrum is one of the leading software development model because if there is not a definite end date, the project management stakeholders will be used to keep demanding new functionality to be delivered. 2) If a task is not well defined, estimating project costs and time will not be accurate. In such a case, the task can be spread over several sprints. 3) If the team members are not committed, the project will either never complete or fail. 4) It is good for small, fast moving projects as it works well only with small team. 5) This methodology needs experienced team members only. If the team consists of people who are new to this technology, the project cannot be completed in time. 6) Scrum works well when the Scrum Master trusts the team they are managing. If they practice too strict control over the team members, it can be extremely frustrating for them, leading to demoralisation and the failure of the project. 7) If any of the team members leave during a development it can have a huge inverse effect on the project development 8) Project quality management is hard to implement and measure if the test team are not able to conduct failure testing after each sprint
17
Extreme Programming - XP
For small-to-medium-sized teams developing software with vague or rapidly changing requirements Coding is the key activity throughout a software project Communication among teammates is done with code Life cycle and behavior of complex objects defined in test cases – again in code
18
XP Practices (1-6) Planning game – determine scope of the next release by combining business priorities and technical estimates Small releases – put a simple system into production, then release new versions in very short cycle Metaphor – all development is guided by a simple shared story of how the whole system works Simple design – system is designed as simply as possible (extra complexity removed as soon as found) Testing – programmers continuously write unit tests; customers write tests for features Refactoring – programmers continuously restructure the system without changing its behavior to remove duplication and simplify
19
40-hour week – work no more than 40 hours a week as a rule
XP Practices (7 – 12) Pair-programming -- all production code is written with two programmers at one machine Collective ownership – anyone can change any code anywhere in the system at any time. Continuous integration – integrate and build the system many times a day – every time a task is completed. 40-hour week – work no more than 40 hours a week as a rule On-site customer – a user is on the team and available full-time to answer questions Coding standards – programmers write all code in accordance with rules emphasizing communication through the code Advantages of XP Constant feedback from customer Developer gets constant feedback from customer which helps them to add new features to the system being developed Customers are available onsite Customers are constantly available on site. So, when developer team required asking anything it would be very easy Pair programming gives better coding As programming is done in a team of two to three people, it would be beneficial to the coding. Because all the people in a team have different way of thinking relates to see a particular programming aspect. So better coding would be outcome of these aspects. Refactoring is also beneficial Changes to the coding are admirable in XP. Instead of designing the entire system up front, design as you go, making improvements as needed. So the interface would not change. Continuous Integration As new code is developed, it is tested and integrated with the old code. The entire code base is constantly being rebuilt, and retested in an automated fashion Silly mistakes are quickly caught Simple mistakes such as syntax errors or repeated variable names can be easily caught and fixed right then and there. Limitations of XP ) Skill disparity This is the number one potential problem. If the partners are of completely different skill levels, you might have one programmer doing all the work or constantly tutoring the other. This is ok if one wants to set up a teacher-student relationship or are introducing a new programmer to your system, but if not, it can defeat the entire purpose of XP. 2) Not actually getting the work done For some people pair programming sessions can easily generate in socializing sessions. There are some people who don’t work when there is someone next to them examining their work, these people will not benefit much either. 3) Developer egos This is something that is not likely to happen in a classroom setting, but in more experienced teams, each programmer might try to push their own ideas of how things should be done, both of which may be perfectly valid. These sorts of conflicts can be totally unsuccessful. 4) Could not release in time As members are working in teams, they might not be able to reach the target in time or complete the iteration in defined timebox. It might lead to late delivery of final product. 5) Required very good management If management is not done properly then it would be very tough to get work done form the all team members
20
Traditional development v/s agile development
Fundamental assumption Systems are fully specifiable, predictable, and are built through meticulous and extensive planning High-quality adaptive software is developed by small teams using the principles of continuous design improvement and testing based on rapid feedback and change Management style Command and control Leadership and collaboration Knowledge management Explicit Tacit Communication Formal Informal Development model Life-cycle model (waterfall, spiral or some variation) The evolutionary-delivery model Desired organizational form/structure Mechanistic (bureaucratic with high formalization), aimed at large organizations Organic (flexible and participative encouraging cooperative social action), aimed at small and medium sized organizations Quality control Heavy planning and strict control. Late, heavy testing Continuous control of requirements, design and solutions. Continuous testing Compared to traditional software engineering, agile software development mainly targets complex systems and product development with dynamic, non-deterministic and non-linear characteristics, where accurate estimates, stable plans, and predictions are often hard to get in early stages—and big up-front designs and arrangements would probably cause a lot of waste, i.e., are not economically sound. These basic arguments and previous industry experiences, learned from years of successes and failures, have helped shape agile development's favor of adaptive, iterative and evolutionary development
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.