Figure 1: Software Development Methodologies |
"Walking on water and developing software from a specification are easy if both are frozen".
Software development methodologies are promoted as a means of improving the management and control of the software development process, structuring and simplifying the process, and standardizing the development process and product by specifying activities to be done and techniques to be used. Methodologies aim to place a degree of control over a software project, enabling it to be steered toward a successful conclusion through a proven series of steps and actions. It is often tacitly assumed that the use of a software development methodology will improve system development productivity and quality. A successful software development methodology defines how all of our tools, techniques, and practices combine into a winning formula.
Learning from class:
Today the lecture conducted by Ms. Manisha Peiris. Lecturer started off the lecture by stating that Methodology were not for the systems since there is no any methodology specialized on CRM development, MIS development or PPS development but methodologies were design to cater more projects.
Then lecturer discussed what a methodology Is. According lecturer its a framework that used structure, plan and controlling the process of developing an Information System. In software development main goal is to make sure output that produce should have quality. If the final product in low quality client definitely will not satisfy with the product and they will simply reject the product. To overcome above consequences development teams needs to organize their work appropriately. In as general to over come above problems people studied this software development process and realized even though software differs from company to company from user to user or context to context but when looked into process of development there are common things that applies to every project such a plan, gather requirements, design the system, developing and testing. Basically the software development methodology is an arrangement of common steps to follow in order to make sure the output is quality and best align to client needs.
After that lecturer stated all the methodologies that people identified were not accurate. As example in Chaos Report the success rate of software development project is just below 20% that means more than 80% projects were fail to accommodate the project in Budget, Schedule and the Degree that met the requirements. The bottom line is that people need to come up with a way that try to reduce the impact on those areas. This is where methodologies comes into action but just following methodology does not resulting a project success according to Chaos Report almost all the projects were followed some sort of methodology which was not succeed at the end.
Then lecturer stated the methodology that use should be appropriate for the project scope and it should align to project deliverable. The project is define based on various characteristic they are,
- What is up Against
- The uncontrollable Constrains
- Time Limits
- Milestones to Achieve
- Progress to Achieve
- Availability of Resources
- Knowledge
- Skill Availability
Then lecture pointed out that students make a mistake when selecting a methodology for their final year project since students need to define what kind of project that they looking at, what are the constrains and limits that unique to project. After that only they should define a methodology that more align in to overcome those problems or challenges to produce a quality output at the end.
After stating above artifacts lecturer specially noted that Structured Methodology or Structured Techniques are not Structured Methods.
Structured Methods/Tools/Diagrams - DFDs, ERDs, ELH and State Chart (To analyze a problem)
Structured Methodology - The phases of methodology are structured. Example:- SDLC (Systems development life cycle). Ideally SDLC contains a Planing Stage, Feasibility Study, Analysis, Design, Implementation and Operations, Support, Security and Maintenance. Every single Methodology is based on SDLC because SDLC one of the rare or the only methodology which covers the entire spectrum of software development process. This act as basic more or less act as a guide for other development methodologies.
Structured Methods/Tools/Diagrams - DFDs, ERDs, ELH and State Chart (To analyze a problem)
Structured Methodology - The phases of methodology are structured. Example:- SDLC (Systems development life cycle). Ideally SDLC contains a Planing Stage, Feasibility Study, Analysis, Design, Implementation and Operations, Support, Security and Maintenance. Every single Methodology is based on SDLC because SDLC one of the rare or the only methodology which covers the entire spectrum of software development process. This act as basic more or less act as a guide for other development methodologies.
SSADM Methodology - An old methodology. Focus more on the client requirements that meaning its consider more on the analysis. SSADM does not focus on planing at all. Giving more weight on the Feasibility analysis and design.
SSADM Phases are,
- Feasibility Study - Try to assists whether the project is practical. There certain tools to assists feasibility not just focus on the Technical feasibility, Schedule feasibility and Economical feasibility. First define the scope and evaluates. Can the solution actually solve the problem and look at the domain of the problem. Can it solve by using IT system.
- Requirements Analysis - Conduct a very thorough analysis. Look at what the problem is and what are client requirements and focus on every single user of the system basically what they expect.
- Requirements Specification -
Functional Requirements - Is a requirement of the system which must be implemented if the functionality is not their the proposed system not solving the problem. Helping students to achieve the objectives of the project.
Non-Functional Requirements - Functions that deals with the quality of the software system. If these functions contains in the system its better if its not there that doesn't mean the system is a complete failure its just an improvement to the system. This functions rangers to usability, security, backup and recovery. The non-functional requirements define based on the each system specifications.
- Logical Systems Specification - Basically defines the logic of the solution. How the functional requirements logical been implemented in the system. This used methods of mapping the Data Flows and Behavior of the data.
- Physical Design - Describes the infrastructure basically the hardware required to implement the system. As examples network diagram, physical interface layout.
The problem in this methodology is that it doesn't mention how to test the system, how to implement or how to program it and how to deploy it.
This method best suite if the students project's key aspect is to analyze and design the solution (conceptuality of the design/solution). But students need to be more critical because this methods owns lot of weaknesses since it doesn't cover some aspects. Due to above consequences students can use this methodology by aligning with another methodology which covers the other aspects of project development process.
Main Techniques/Methods used in SSADM
Logical Data Modeling - Describers how the Data logically retain. For this can be used an ERD to normalization.
Data Flow Modeling - Describes the data flows in the system. For this normally used an DFD.
Entity Behavioral Model - Identify entities that store data and map it with events in DFD when manipulate data in Data Stores. All three together give developer an idea how data should handle within the system. Use an ELH (Entity Life History Diagram)
And Lecturer stated that SSADM starts with DFDs, Context Diagrams and first need to logically map the flow of data in current system as well as based on that improve and map DFDs to the proposed solution.
RUP (Rational Unified Process) Methodology
RUP consist of 4 main phases. They are,
- Inception
- Elaboration
- Construction
- Transition
According to lecturer this Methodology is made for UML because people realized that UML has certain benefits since UML diagrams allows to do quite a good analysis and the requirements are nicely mapped out that enable developer to produce system that more align to customer requirements.
Then lecture told that hidden side of the RUP is all the activities are happening in form as stated below although there are phases these activities happens across the phases. Those activities/disciplines are,
- Business Rule Modeling
- Requirements
- Analysis Design
- Implementation
- Test
- Deployment
- Configuration and Change Management
- Project Management
- Environmental Analysis
All those activities need to happen in the software development process.
Figure 2: RUP Diagram |
As shown in Figure 2 those activities are like heat packs that represent at what point that activity most significant and what phases those activities not performed at all. According to above diagram there were to iterations under Elaboration (Elab#1 and Elab#2). Elaborations happens basically in prototyping.
Then lecturer stated that there are two types of prototyping, They are,
Then lecturer stated that there are two types of prototyping, They are,
- Evolutionary Prototyping - Where prototype evolve to the final product
- Throwaway Prototyping - Prototype is build just for the sake of getting requirements right and get approval. Final version build on scratch.
Then lecturer highlighted that Prototyping used to be an methodology but now its just an tool. All the methodologies currently available used prototyping as an activity within it.
Agile Methodology
According to lecturer Agile is not a Methodology its just an guideline. There are 16 guidelines available and all those guidelines talked about the usage of this concept agile in software development process there are certain things to have infuse into it. The Agile consortium states that individuals and interactions over processors and tools. Basically its says don't restrict or constrain the project to processors and tools that need to perform focus more on the people or team and the interaction between them that result in better development. Working software over comprehensive documentation. The bottom line is that Agile Alliance feels that the output should be more focus since its the product that client actually get and client assess the success of the project based on what they sees. Because of that no point of focusing more on documentation. Beside above sequences there are other aspects such as,
Customer collaboration over contract negotiation - This is commonly done where the Software development team get requirements and sign off. Develop only client sign off. Agile eliminating this aspect by enhancing the customer involvement and make sure the output product meet the requirement when the product implementing.
Responding to change over following a plan - Most project development teams come up with a project plan and stick to it. But Agile says response to changes in in more priority rather than ignoring it.
Then lecturer said that Agile manifesto is really long since it contains many rules to follow. Some of the main points are,
Customer collaboration over contract negotiation - This is commonly done where the Software development team get requirements and sign off. Develop only client sign off. Agile eliminating this aspect by enhancing the customer involvement and make sure the output product meet the requirement when the product implementing.
Responding to change over following a plan - Most project development teams come up with a project plan and stick to it. But Agile says response to changes in in more priority rather than ignoring it.
Then lecturer said that Agile manifesto is really long since it contains many rules to follow. Some of the main points are,
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change forth customer's competitive advantage.
After that lecturer driven the lecture into by explaining some Agile Methodologies.
SCRUM Methodology:
SCRUM is Methodology that originated from the concept in Rugby. The concept that taken from rugby is the fact that it needs lot of team effort involvement and this SCRUM methodology design around that. The fact that if project team needs to produce a good output, the entire team need to be close net or have to work together. In SCRUM there are waggly define phases but it talks about certain essential rules that needs to within the project along with some tools.
Figure 3: SCRUM Methodology |
According lecture as shown in above diagram it describes that ones the project team started off gathering requirements they develop a Product Backlog basically requirements which as been assess and prioritize. After that Product Backlog transfer in to Sprint Backlog. Sprint is basically an iteration where one iteration takes 2 to 4 weeks and there is timeline. The backlog break it down to manageable components. Basically transfer backlog into to smaller sprints and go through a sprint. Then lecturer noted that every 24 hours there is an SCRUM meeting which held by Scrum Master. The Scrum Masters responsibility is to make sure is there any project progress, Identify challengers, Make sure those challengers are overcome. Ones the above processes done project team go into developing the system, testing and deploying.
DSDM Methodology:
Lecturer stated that DSDM is a heavy methodology because it more specific compare to the other Agile methodologies like XP or Cristal since those are very wage since those methodologies doesn't exactly explain what phases to carry out. The specialty of DSDM is it does that.
Lecturer discussed the DSDM phases by using Figure 4 diagram. As stated by lecturer it starts off with sequential manner. Basically it needs to do a Feasibility Study after that to have a very good understanding about the Business Study. After that it goes in sequence of iterations. In those iterations there are sub phases/tasks as shown in Figure 4. The specialty of this methodology is at any time can go back and can do necessary changes. Theses processes repeats until the client happy with and till the software align to its identified specifications. This entire methodology is a big iteration.
Before concluding lecture for the day lecturer stated before selecting a methodology there are certain things to consider.
What to Consider?
DSDM Methodology:
Lecturer stated that DSDM is a heavy methodology because it more specific compare to the other Agile methodologies like XP or Cristal since those are very wage since those methodologies doesn't exactly explain what phases to carry out. The specialty of DSDM is it does that.
Figure 4: DSDM Methodology |
Before concluding lecture for the day lecturer stated before selecting a methodology there are certain things to consider.
What to Consider?
- Scope - What are the things that planning to do in a project. Check whether there is sufficient time. Arrange the phases in a way that can do in parallel or iteration to maximize the time.
- Deliverable - What need to be output according to client requirements. And those deliverable needs to be align with a methodology where it can facilitate that.
- Constrains - Requirement gathering level and probability to identifying them.
- User Involvement - Enable users to interact with the project team in certain points in order to get their feedback and review on the progress.
- Nature of the Project - What kind of a project is focus on. Identify the things to in order to complete the project successfully.
From this lecture I understood that there are various methodologies available to align with project process. How ever some methodologies does not suits for every project. Selecting a proper methodology is really important since it results in failure or the success of the project. If the project need to consider more on the client requirements since requirements unable to identify at a stretch methodological such as SSADM can be use. In order to have better analysis and software development process methodologies like RUP can be used in large projects since it deliver well balanced phases. Agile Methodologies such as SCRUM and DSDM comes into action since in the real world project requirements were dynamically changes from time to time during project process. To deliver timely applicable project to client by overcoming and replying requirement changes project teams prefer Agile Methodologies since there is great flexibility and freedom by using them. After considering above consequences I gain a better knowledge on Software Development Methodologies than I had previously as well as this lecture enabled me to structure the theory content of the methodologies in a way that enables me to apply them depend on the project scope been selected for my final year project. I'm sure further research on these Methodologies will enable me to gain an Industrial level knowledge that will help me to perform tasks smoothly in my future career.
Fantastic Summary !
ReplyDeleteSoftware Development in Dubai
ReplyDeletehttps://www.nsreem.com/ourservices/software-development/
NSREEM develop amazing desktop and web applications that are tailored to your specific requirements.
NSREEM is #1 in Software Development in Dubai
1634284668860-11