Software Development Life Cycle (SDLC) Assignment
Here is the Full Assignment Report on Software Development Life Cycles
Part: 1
Introduction:
The large insurance company predominantly operating in the United Kingdom is now offering its products and services to many countries in its drive to grow and become a large international company. The system that this company is using to keep track of its customer inquiries about information and purchase of its products and services needs to be updated to reflect the changes in the way it operates. So, to go towards the international market this company needs to update its old system and replace it with the new system, which provides other various services. As customers in other countries will be using a wide range of currencies to purchase the products and the insurance company needs to allow for the fluctuating currency exchange rates in its new system. For this software development task, our business consultancy company won the contract and I was hired as a systems analyst to develop a new system for the insurance company.
My Role as System Analyst
For the development of this project, I have to work with my colleagues as part of a development team. In past, the insurance company has a small development team, which solely developed the old system so while developing this new system in-house team will also work alongside us for a better understanding of their requirements. I am going to manage the project analysis and design stage of the new system. Firstly, I am going to update the in-house team on new methodologies of system development used to analyze systems.
1. Description of predictive and adaptive software development models considering at least two iterative and two sequential models.
Software Development Life Cycle:
The software development life cycle (SDLC) is an outline identifying tasks executed at each stage in the software development procedure. SDLC is a design tracked by a development team within the software organization.
It consists of a comprehensive plan describing how to develop, maintain and replace specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.
The software development life cycle is also known as the software development process. (Techopedia, 2019)
Stages of Software Development Life Cycle (SDLC):
Figure 1: SDLC Phase
-
Requirement Phase:
Requirement gathering and analysis is the most important phase in the software development lifecycle. Business Analyst collects the requirement from the
Customer/Client as per the client’s business needs and documents the requirements in the Business Requirement Specification (document name varies depending upon the Organization. Some examples are Customer Requirement Specification (CRS), Business Specification (BS), etc., and provides the same to Development Team.
-
Analysis Phase:
Once the requirement gathering and analysis are done the next step is to define and document the product requirements and get them approved by the customer. This is done through the SRS (Software Requirement Specification) document. SRS consists of all the product requirements to be designed and developed during the project life cycle. Key people involved in this phase are the Project Manager, Business Analyst, and Senior members of the Team. The outcome of this phase is the Software Requirement Specification.
-
Design Phase:
It has two steps:
HLD – High-Level Design – It gives the architecture of the software product to be developed and is done by architects and senior developers
LLD – Low-Level Design – It is done by senior developers. It describes how each and every feature in the product should work and how every component should work. Here, only the design will be there and not the code
The outcome from this phase is a High-Level Document and Low-Level Document which works as an input to the next phase
-
Development Phase:
Developers of all levels (seniors, juniors, freshers) are involved in this phase. This is the phase where we start building the software and start writing the code for the product. The outcome from this phase is Source Code Document (SCD) and the developed product.
-
Testing and Integration:
When the software is ready, it is sent to the testing department where the Test team tests it thoroughly for different defects. They either test the software manually or use automated testing tools depending on the process defined in STLC (Software Testing Life Cycle) and ensure that each and every component of the software works fine. Once the QA makes sure that the software is error-free, it goes to the next stage, which is
Implementation. The outcome of this phase is the Quality Product and the Testing Artifacts. After the successful test of the application, we need to integrate the various modules like login, signup, upload, claim, and services.
-
Deployment & Maintenance Phase:
After successful testing, the product is delivered/deployed to the customer for their use. Deployment is done by the Deployment/Implementation engineers. Once when the customers start using the developed system then the actual problems will come up and needs to be solved from time to time. Fixing the issues found by the customer comes in the maintenance phase. 100% testing is not possible – because, the way testers test the product is different from the way customers use the product. Maintenance should be done as per SLA (Service Level Agreement)
P1 Describe two iterative and two sequential software lifecycle models
Iterative Models:
The iterative models are particular implementations of a software development lifecycle that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete. In this type of model, enhancements can be recognized quickly with implementation throughout each iteration. The two iterative models which I am going to describe are the prototype and agile models.
Agile model, Please add sprint and scum. Standup meeting, client’s feedback, backlog, sprint backlog. Please include the manifesto of agile.
“Agile SDLC model is a combination of iterative and incremental process models with a focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small incremental builds. These builds are provided in iterations.” (n.d, 2018) In this model, every project is handled differently and existing methods are tailored to best suit the requirements of the project. All tasks are divided into small time frames for delivering specific features in the release. It gives priority to working software and customer collaboration over comprehensive documentation and contract negotiation. This model also allows proper response to change than following the project plan and every iteration includes a cross-functional team working simultaneously.
The agile model is an iterative and team-based way to develop. This model gives importance to the rapid delivery of the system in complete functional components. All time is time boxed in phases known as sprints rather than creating tasks and schedules for system development. While starting each sprint has a defined duration although time may vary according to the project and also the running list of deliveries. Sometimes if planned work for a sprint cannot be completed then work is reprioritized again and information is used for further sprint planning. When the work is completed then it is reviewed and evaluated by the team and customers. This model relies upon a high level of customer involvement throughout the development process and it is more especially during reviewing the system.
There are various phases in the agile model which are illustrated below:
-
Requirements:
The initial step in this model is to gather the system requirements. As this model doesn’t need full documentation to gather software requirements meeting is held and all decisions are implemented.
-
Design:
In this stage with the help of various software designing tools the design of the software is prepared. It can be prepared as the demo version and other important features
can be added further while continuing the project. Here also the clients provide their feedback to the system and the system is altered according to their needs.
-
Development:
Here the designed demo version is brought into implementation for user feedback and in the end of this phase system will almost be ready. Customer collaboration and feedback plays important role in this stage.
-
Testing and feedback:
In this ending phase the overall system wrapping is done with all the testing required. After the customer is satisfied with the developed system it is handed to the client.
Advantages
Disadvantages
It is so easy, realistic approach that provides flexibility to developers. And promotes teamwork and cross-training.
There will be highly individual dependency as minimum documentation is generated.
It provides continuous attention to technical excellence and good design.
As there are strict delivery management adjustments can be dictated to meet deadlines.
Minimum rules and documentation can be easily employed.
It is very difficult to implement this model without an overall plan, an agile leader, and an agile project manager.
It is best suitable for environments where requirements may change during the development process.
If the customer representative is not clear about the outcome of the project then the team can easily get off track.
Resource requirements are minimum and only a little planning is required.
During the development transfer or recruiting of a new member in the project will be quite challenging due to lack of documentation.
Sequential models:
In this type of model, developers have to follow some rules, regulations, and defined orders for completing the project. Here I am going to describe two sequential models of software development which are the waterfall model and the V model.
Waterfall Model:
The waterfall model is one of the most traditional and commonly used software development methodologies for software development. This life cycle model is often considered the classic style of software development. This model clarifies the software development process in a linear sequential flow which means that any phase in the development process begins only if the earlier phase is completed. This development approach does not define the process to go back to the previous phase to handle changes in requirements.
As shown in the above figure there are various sequential phases involved in the waterfall model which are explained below: –
-
Requirement Gathering and analysis: All the requirements of the system which need to be developed are collected and then documented in a specification document. Specifications of the final product are marked and studied here.
-
System Design: Here requirement specifications gathered from the first phase are studied and then system design is prepared. Thus prepared system design helps the developer while specifying the hardware and system requirements and also helps while defining the architecture of the overall system.
-
Implementation: With the input from the system design system is developed in small units that are summed up in the next phase. Each developed unit is tested for functionality which is also known as unit testing.
-
Integration and Testing: The units developed in the previous phase are integrated into the system after each unit testing. The entire system is tested for any faults and failures so that client does not face an error while installing and running the software further.
-
Deployment of System: After completion of functional and non-functional testing product is deployed in the customer environment or market release as required.
-
Maintenance: Even after the system deployment there may come issues in the client environment so to fix such issues patches are released. For further enhancement of the product, further versions are released in the maintenance phase. This phase is done for the entire life of the software till its death.
Advantages
Disadvantages
Waterfall model is very simple and easy to understand and use a method that is why it is really beneficial for the beginner or novice developer
This model can only be used when very precise up-front requirements are available
It is easy to manage, because of the rigidity of the model. Moreover, each phase has specific deliverables and individual review process
This model is not applicable for maintenance type of projects
In this model phases are processed and completed are at once in a time thus it saves a significant amount of time
The main drawback of this method is that once an application is in the testing stage, it is not possible to go back and edit something
This type of development model works more effectively in the smaller projects where requirements are very well understood
There is no possibility to produce any working software until it reaches the last stage of the cycle
In this model, there is no option to know the end result of the entire project
The testing is easier as it can be done by reference to the scenarios defined in the earlier functional specification
This model is good for a small project but not ideally suitable for long and ongoing projects Not ideal for the projects where requirements are very moderates, and there is great scope for modification
Application of Waterfall Model
This is the earliest model of software development and is only applicable when the requirements are very well known, clear and fixed. If there is no proper documentation for user requirements then it can’t be used. This model further can be used when the product definition is stable and technology is understood. Only after proper evaluation and reviewing each stage developer should move to the next step so proper documentation of user requirement should be done. It is also applicable where there is no chance of customer collaboration in the project and whole task is done in contract negotiation. This model can be used in projects where there are no ambiguous requirements. Waterfall model is also suitable for projects that transfer from one platform to another platform i.e. all the requirements remain the same and there is only change in system environment or the programming language. This is best suited for the small projects rather than complex large projects which take more time.
RAD model
The risks involved in each of the models and how the risk can be mitigated /managed in each model by taking a reference of the spiral model.
Risks in Software Development Life Cycle
“Risk is an expectation of loss, a potential problem that may or may not occur in the future. It is generally caused due to lack of information, control or time. A possibility of suffering from loss in software development process is called a software risk. Loss can be anything, increase in production cost, development of poor-quality software, not being able to complete the project on time.” (Hilson, 2011) Those types of risks exist on our project or developing system as the future is uncertain and there are many already unknown and known facts which we cannot incorporate in project plan. While developing system those risks can be of two types first one is internal risks which can be controlled by the project manager and second one is external risks which are beyond the control of project manager. While we use various models for developing software there are also different risks attached with those specific models. Below I have provided those various models with risks involved in them while developing our software: –
-
Risks involved in Prototype Model
Although using prototyping model decreases the probability of software development project failure apart from rewards this model has its own risks. The biggest risk is that anyone who is interested in the project after facing a working prototype will decide that the final product is almost ready or not. Another risk involved using prototype model is that after seeing the early prototype end users demand delivery of actual system and even if he is unsatisfied with the initial built prototype, he may lose interest in the project. While using this model in software development process, without proper management iterative process of prototype refinement can take long durations and while developer hurry to build prototype it may end up to sub-optimal solutions. Practically, using this model might increase the complexity of the system as scope of the system may expand beyond the initial plans on software development. Various risks can be encountered as this model leads to implementing and then repairing the way of creating software.
-
Risks involved in Agile Model
There are various risks involved in the agile model and while developing the software we have to be aware about those risks before starting our project. Among those various risks the very first common risk is lacking details in task descriptions. We have to make sure that all details are present and clear for the team so they know exactly what they are creating and the best way to write these out are in the form of user stories or technical requirements. Another risk usually encountered while going through agile model is priorities or directions change. Sometimes the priorities of the project changes and thus features that were not originally planned take top priority over the others.
When this happens, it’s important to make sure the clients know about the effect of those changes on the developing system and even also the timeline and budget of project as mentioned in earlier meetings. Another risk which many companies faces while adapting agile model in their software development process is lack of documentation which leads to misunderstanding among the developers. Because of poor documentation in this model when the current programmer or any other member of development team leaves then it will be very difficult for the new recruiters to get adapted with development scenario as there will be less documentation and he won’t be able to grab the speed with other members. If the customer representative isn’t clear about the outcome of project then team can easily get off the track so this risk should not be underestimated while developing team and client representative should be well known about the features that clients wants to get in system. So, there would be both Advantage and Disadvantage of The Agile Method.
-
Risks involved in Waterfall model
As there is very less customer interactions involved in software development and product can only be demoed once it is ready therefore once the software is developed and if any failure once then cost of fixing such issues are very high and we have to update everywhere from document till the logic. Another risk is that if the documentation of software development isn’t done well then there is high chance of getting off the track while developing software. There is always lack of project suitability using this model where requirements are at a moderate to high risk of changing. There is high chance of project failure if we use this model for complex and object-oriented projects.
-
Risks involved in V-model
As, it is too simple to accurately reflect the software development process, and can lead managers into a false sense of security. The V-Model reflects a project management view of software development and fits the needs of project managers, accountants and lawyers rather than software developers or users. Although it is easily understood by novices, that early understanding is useful only if the novice goes on to acquire a
deeper understanding of the development process and how the V-Model must be adapted and extended in practice. If practitioners persist with their naive view of the VModel they will have great difficulty applying it successfully. It is inflexible and encourages a rigid and linear view of software development and has no inherent ability to respond to change.
(Anon., n.d.)
Explain how risk is managed in the Spiral lifecycle model.
Spiral model was proposed as a risk driven software development process model by Boehm in 1988 wherein the development process is guided by involved risks. This model aims to identify and evaluate the software project risks and also helps to reduce those risks. In this model the major sources of risk despite of its risk driven nature is due to high reliance on human factor and detailed risk management process. According to Boehm, almost the 25% time in this model is taken in risk analysis and it is mostly designed to known risk in the project. It doesn’t only provide the flexibility in project but also helps us to know about the upcoming risks.
Spiral development supports risk management in software projects in several ways summarized in the following:
-
The initial risk analysis that acts as a look-ahead step and aims at:
-
Identifying most risks threaten the project.
-
Classifying risks into user interface risks and development risks
-
Evaluate these risks to decide upon the risks to handle through each cycle. Moreover, this classification helps developers in implementing risk resolution techniques such as prototyping and benchmarking.
-
-
The evolutionary prototyping spirals that aim at resolving performance and user interface related risks. These spirals help in reducing major risks before proceeding into the development process.
-
The risk analysis stage at each cycle that precedes each phase of the waterfall phases in purpose of:
-
Resolving program development and interface control risks inherent from the start of the project.
-
Evaluating and resolving the new risks that might arise after changing any of the objectives, alternatives, or constraints at the beginning of the cycle.
-
-
The iterative feature of the spiral which allows the development process to go back to the first quadrant at any point in progress which allows:
-
Objectives, alternatives and constraints to change as more attractive alternatives exist.
-
New technology to be incorporated easily during the development process.
-
The maximum optimization of project resources usage.
-
To deal with poorly done activities in the earlier phases.
-
-
The review conducted at the end of each cycle with main stakeholders as a decision point to avoid the lack of commitment risks during the next cycle.
-
Time and cost overrun risks are best managed using spiral development due to the risk analysis stage conducted at each cycle. In this stage, the cost and time required for each cycle are analyzed in advance to give a clear picture about the critical state of the project.
This helps the project manager and the developers get more control over these risks.
-
Risks related to the increased complexity of the project are also managed using spiral.
This is achieved by the partitioning activity conducted at the planning phase.
-
-
Decomposing the project into portions to be developed in parallel spirals obviously reduces time contention related risks, since more work could be achieved during the same interval.
-
Major Sources of Risk in the Spiral Model Despite its risk driven nature, spiral has its own sources of risks which are summarized in the following:
-
High reliance on the human factor
-
All the activities related to identifying, analyzing, and resolving risks rely on the experience of developers and their abilities in identifying and managing risks. If these abilities are unavailable, major risks might remain hidden for several lifecycles and discovered late when it matured into real problems. At that time, the cost of rework to recover from these risks becomes very high.
-
-
Detailed risk management process
-
Cost and schedule risks might increase using spiral due to its iterative feature, especially for low risk projects wherein risk assessment is not required to be at this level of granularity.
-
Once you have prepared the report you are required to produce documentation that
M1 Describe with an example why a particular lifecycle model is selected for a development environment. You may consider a different development environment with different business logics, platform, etc., and the applicability of the particular software development model over the development environment.
Copy from above
Adaptive model
Client’s continuous feedback
Iterative model
Continuous testing
Less documentation
Manifesto of Agile
Daily Standup meeting, Sprint board.
Agile
It is obvious that the task of choosing the best Software Development Life Cycle (SDLC) methodology is very challenging task to every organizations and project managers. Each model isn’t universal and based on the scenario requirement we have to choose the best suitable model. Every project manager has to be aware about their technical capability, technology constraints, scenario requirements and features, pros and cons of chosen model for project. We can use different model relating different scenario and criteria like; RAD model for fast and rapid software development, we can choose waterfall model based on the requirements, being based on the risk and mitigating them we can choose spiral model and so on. In the scenario I was given the task of creating an application for a large insurance company where with various features in it. First it was very difficult for me to choose best model as every model has their pros and cons but after analyzing the given scenario and client requirement, I preferred agile model above others.
Definition
“Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small incremental builds. These builds are provided in iterations.” (n.d, 2018) In this model every project is handled differently and existing methods are tailored to best suit requirements of project. All tasks are divided in small time frames for delivering specific features in release. It gives priorities to working software and customer collaboration over comprehensive documentation and contract negotiation. This model also allows proper response to change than following the project plan and every iteration includes cross functional team working simultaneously. Each of the iteration need cross functional team which works simultaneously on areas like: –
-
Planning
-
Requirement Analysis
-
Design
-
Coding
-
Unit testing
-
Acceptance testing
Justification for Selection:
According to my given scenario I was hired to develop insurance company application which will have various features like storing all clients’ information, sending important notices to clients and other
company members when required, generating documentation, guidance and counselling from expert agent and so on. Therefore, being based on such criteria I selected agile model for software development. There are various reasons for choosing this model rather than other models like RAD, Spiral, Waterfall, Prototype and so on. Company management gave me the clarity on the features that they needed in application therefore there was no detail planning required. Our developer team were in same geographical location usually we used to work in our office so it was also very easy for me to monitor the work. Software can be developed faster using this model as we were also bounded by time given by company.
Using agile model helped us to get feedback from real customers. There was never chance of such situation that we could take all our time to develop such application which client didn’t wanted so with this model administration could give us a feedback on the work which help us to be on track. This model provides us the feature of incremental delivery which helped us to build software in the way client wanted. Whenever the company wanted to know about the ongoing project then we could deliver them in smaller increments which gave them the opportunity to see emerging product and they could even respond to it. So, this model could help us and the client to converge on best possible outcome. Another reason of choosing agile model was because of early risk reduction, by delivering software early to company and getting feedback we could reduce the risk of building wrong software. By continuously integrating and developing bug free software we could reduce risk of building wrong software before delivering final product to client. This model also helped us to fix cost, time and quality while giving us the tools for varying business and technical scope. So, as we developed our software and handed it to company at last, we were sure that we delivered what they needed. This way also agile helped us for delivering better quality software. Along with those reasons another reason for selecting agile model was its principle which focuses on the customer satisfaction with the product we delivered. Implementing this model will help us to build better relationship with customers by updating the software in regular time intervals and adding new features based on their feedback. Creating better relationship with such big company administration would help us in various ways. In this today’s competitive world winning their trust by satisfying them could help us to get our future projects from them. Last reason for choosing this model was also because it is trending in today’s software development time. Mostly of the organizations use this model nowadays because of its suitable features to all the scenarios.
D1 Assess the merits of applying the waterfall model to a large software development project with appropriate evidenced researched work with reference to the current context.
Using Waterfall Model in Large Projects This is the first SDLC approach that was used for software development. It is very simple and easy to use and understand. This works in the basis that each phase must be entirely completed before next phase of development begin and also there is no overlapping in phases. In this approach the entire software development process is divided into separate phases from top-bottom approach and output of one phase acts as input for next phase sequentially. Any phase in development process begins only if it is known that previous phase is completed. Although this model is not used nowadays in large software development project in this task, I am going to describe the merits of applying waterfall lifecycle model to such large projects.
Waterfall model probably was the most popular SDLC methodology. All the teams and company’s all over world used this model to manage their projects. After the introduction of new models like agile, prototype, RAD etc. it was strongly criticized and slowly agile model replaced this model because of its various drawbacks. Though it has drawbacks and is replaced still it can be used in software organizations for large software development because of its peculiar features.
1.Predictive model and already fixed the requirement.
2.Budget has been fixed already.
3.Output of one module will be the input for next module.
Before the development of other models there were always large projects which the water fall model managed. This model provides developer the various advantages in development process. In development phase it prioritizes the task in well-defined and clear steps which makes the task easier to do. This model follows the simple step of development like requirement gathering with proper documentation, system design, implementation, testing, deployment and maintenance. In large projects there are involved various steps and using this model help us to complete each step of development effectively. As this model follows linear sequential way in development we
don’t have to look back after we complete previous stage. This will remove the tension of coming back to the same previous stage and altering the code and design.
Another merits waterfall model provides us is that the requirement is already documented on the project beginning. Therefore, we don’t have to adjust with the changing environment as we can work on specific environment during development. In the beginning of the project all the requirement of customer is gathered and proper documentation of project is prepared. Thus, in such long running projects documentation provides us the better reporting and clear goal can be set rather than changing mind in midway of project. This prepared documentation will also be useful for the future use.
This model prefers initial documentation rather than customer collaboration which also provides benefits to organization. If there was any customer involvement in large project then a lot of time can be spent for understanding between developer and clients. This waste of time would be not once but in regular time intervals so low customer involvement in large projects provides developer their own environment without any scheduled disturbance from customer. In large projects of software development where the time is 1 to 2 years if any of the developer gets transfer this will not disturb the development process. With the proper documentation any of the recruiter can use it for ongoing project works and can cover up the development process quickly.
In large software projects there are many features to be built in software which creates various errors. In such stage developer can use the verification and this way no feature will be missed from software. Moreover, in this model team works together in every step which makes it easier for them to find bugs and errors in system and resolve them. All those efforts from team and developer will lastly help to create a standard flawless software. It is very applicable in large project in term of cost efficient and convenient.
This model allows the project manager and team leader to monitor and handle project easily. After the well understanding of project between team members it can be divided reasonably among the team.
As this model follows linear sequential structure while waiting for their turn they can do their own tasks. For example, in development process coding comes in the last so while waiting for his time programmer can engage in his own work and after his turn comes in he can complete his work. This will also help the team to get their result in structured time and also huge development project can be completed in set out time. In this way using this model various features we can still use it in large projects.
Conclusion:
The SDLC process provides us the purpose to adhere client order in effective and structured manner while ensuring the better time of delivery and efficiency. It also includes plan for how to produce, modify, maintain and replace software system. Spiral model provides us the various steps through which we can eliminate the present and possible risks and complete development process successfully. It provides us the feature like risk assessment which helps in risk identification, analyzing the consequences and effects and prioritizing risk to eliminate them. Another feature was risk control with which we can plan and develop various strategies to resolve the risk and gain our complete control over system. Although agile model has some drawbacks, I preferred to choose this model above all others model. I was given some criteria to develop the software so being based on different criteria like technical capability, technology constraints, and scenario requirements I selected this model. Agile model helped us in various ways like building software faster, getting feedback from customers, better quality, providing satisfaction to customer and so on. Therefore, it is essential to choose model wisely knowing their features, along with its pros and cons so that we don’t get stocked into problem later. Though waterfall model is old model and is replaced by new popular models but still it has some peculiar features which other model don’t have. This model helps to develop a complete client required software in simple and easy way. This model has some very beneficial features for both developer and clients like; preparing the proper documentation and addressing user requirement in initial stage, reducing cost and effort by making change in design phase which overall helps to develop a standard and functional software. So, we have concluded how Systems Analysis and Design are important to analyze.
Part: 2
-
You are required to produce a documentation that explains the purpose of the feasibility report and describe how technical solutions can be compared.
-
Prepare a brief report discussing the components of the feasibility report.
-
Carry out the feasibility study as per the best of your previous research work against the solution to be developed for the given problem and assess the impact of different feasibility criteria on the software investigation.
Report on Feasibility Study
Introduction:
“A feasibility study is an analysis used in measuring the ability and likelihood to complete a project successfully including all relevant factors. It must account for factors that affect it such as economic, technological, legal and scheduling factors. The feasibility study helps to “frame” and “flesh-out” specific business scenarios so they can be studied in-depth. Project managers use feasibility studies to determine potential positive and negative outcomes of a project before investing a considerable amount of time and money into it.” (Don Hofstrand, October, 2009) It tests the viability of opinion, a project or even new business. It is the preliminary study undertaken before the real work of project starts to ascertain the likelihood of the project’s success. The main purpose of feasibility study is to emphasize the problems which could occur if one pursues project and determines if, after considering all significant factors, the project is a good idea. For example, if we are going to develop a web application for our business then we might be looking to perform feasibility study to determine if it should follow through, considering material and budget, opinion from stakeholders and laws that might get affected from it.
A feasibility report is a document that assesses potential solutions to business problem or opportunity and determines which of these are viable for further analysis. The main benefits it provides is that it helps to present the project parameters and define the potential outcomes to the defined problem, need or opportunity. The report is an analysis of possible solutions to a problem and a recommendation on the best solution to use and it contains extensive data related to financial and operational impact including advantages and disadvantages of both the current situation and the proposed plan. The report generated after doing the feasibility study outlines and analyzes several alternatives or ways of achieving success in that project. It helps to narrow the scope of project to identify best scenario while completing it. We have to perform the feasibility study in the planning phase of any project and after the report is generated then it helps to know if the project is worth doing or not. It helps for our confident buildup and it can also be costly sometimes but it is better to know if project will be successful or not by doing feasibility study before. Feasibility report allows companies to determine and organize all the details to make business work. It helps in identifying logistical and business problems and also their solutions. It can also lead to the development of various strategies so that we can invest our time and money in right project.
Purpose of Feasibility Study:
Please write these things in bullets.
The significance of feasibility study is based on organizational desire to “get it right” before implementing resources, budget and time in project. It might uncover new ideas that could completely change a project’s scope. It is always beneficial to make those determinations before rather to jump in and starting the project that won’t work. The outcome of feasibility study gives us and our stakeholders a clear picture of the proposed project and is always beneficial. While doing some project or creating software feasibility study is the second document that is created following business case and this report helps us to determine the factors that will make the business opportunity which was presented in project success.
Another purpose for feasibility report is to explore the different markets where a target audience might be located. For example, if we want to create the online payment system then doing feasibility study helps us to find out where this system can be implemented. It provides us guidance to launch our system in such places where number of our audience is high such as big cities. We can analyze existing competitors to see if our new product will be able to break into the market. If our feasibility study reveal that our company doesn’t have resources to compete then we can focus our mind on other products. In this case feasibility report stops us from making costly mistake and cripple our product before it become establish. It provides us the best response so that we can create the right product for the right customers. Along with the target audience other purpose of feasibility report is to investigate how acceptable the product is to the target audience. While doing the feasibility study we have to be based on certain criteria such as technical, social, law, economical etc. So, the main purpose of feasibility report is to find if our product fits in those criteria. If the outcome of our research doesn’t fit in any of those criteria then there is high chance of encountering problems in future so feasibility report provides us the valuable information for go/no-go decision. It helps us to find out the success or failure chance of any idea. If the feasibility report shows a likely failure then we can save our budget and time for another better opportunity instead of wasting it in developing projects that never had chance of success. A feasibility study is designed to provide an overview of the primary issues related to business idea. The purpose is to identify any “make or break” issues that would prevent your business from being successful in the marketplace. In other words, a feasibility study determines whether the idea makes sense. A thorough feasibility analysis provides a lot of information necessary for project plan.
Recommendation:
In this way doing feasibility study always helps us while doing the project. The main purpose of feasibility report is to find our if it is worth doing and if the report shows negative result then it offers one chance to get it right before we invest our time and money in project. It provides us the various potential risks in that project so that we can mitigate them in initial before they turn into huge problem. Not only it tells us to remove the project ideas but also identifies the reasons not to proceed project so that in future we can be aware about those reasons before. While creating insurance company software it helped our group decide to expand existing services, build or remodel facilities, change methods of operation, add new products etc. In this way using the feasibility study while doing our project for insurance company we are able to understand about our project so I also recommend others to use this while starting their project.
P4 Comparison of Technical Solutions
Technical solutions assess the current resources such as efficiency, performance, legacy system and technology which are required to accomplish user requirements in the system within the allocated time and budget. Similar to the feasibility study of the project the implementation of the technical solution in the project can be wither before the project is started or after the project is been started. Technical solution can be compared with the feasibility study because feasibility study is done for the better decision and technical solution is the solution with the good decision that can make the business/project profitable. We can compare the technical solutions based on such criteria like elimination of human errors, performance, budget, legacy system, performance, efficiency etc. Designing and implementing the solution of the technical problems like financial problem, machinery problems etc. during the lifecycle of the project means Technical solution.
I am going to show the technical solution of cell phone and landlines and compared with the following key drives:
-
Performance and efficiency
-
Legacy systems upgrade
-
Automation
-
Elimination of human errors
-
Budget/ economic
Performance and efficiency:
Cell phones are mobile which means portable and can be taken from one place to another and are operational anywhere the user can get a signal from a wireless network whereas landline phones are not mobile and customers can only use it in a single location where there is a presence of wired connection to telephone network. A cell phone can be very useful during the emergency that arise when you’re away from home. Cell phones have the capacity and advanced technology. Cell phones can also give you a chance to take live pictures or videos camera whereas landline cannot. Cell phones are more fashionable and comfortable than landline.
Legacy system upgrade
One of the clearest benefits you will see is an immediate drop in both service charges as well as call costs. It helps in the business continuity and employees still have access to core communication systems like phones, sending and receiving messages, video-clips conversation etc. it also make able to add features to your lines for easier conferencing and communication.
Automation
The both system typically play a message, then ask the caller to either press a button or speak a response. Depending on the caller’s input the automated phone system may play some information, route the caller to another prompt or connect the caller with a human operator.
Elimination of human errors
Human error is an imbalance between what the situations requires, what the person interacts and what he/she does. It happens when people plan to do the right thing but with the wrong outcome.
Cell phone have GPS technology that can find your exact location or where you trying to go.
Budget / economic
The similarity of landline and cell phone is the fact that they are both used for communication. The most common reason to choose a cell phone is that in most areas, the cost of a cell phone plan is lower than the cost of a landline, especially when you count the cost of a long distance calling plan. Nowadays, we see many people on the streets with their cell phones, as many people know that it’s easier and cheaper.
Components of Feasibility Report:
A feasibility report is a document that assesses potential solutions to business problem or opportunity and determines which of these are viable for further analysis. The main benefits it provides is that it helps to present the project parameters and define the potential outcomes to the defined problem, need or opportunity. The report generated after doing the feasibility study outlines and analyzes several alternatives or ways of achieving success in that project. It helps to narrow the scope of project to identify best scenario while completing it. It is the preliminary study undertaken before the real work of project starts to ascertain the likelihood of the project’s success. The report is an analysis of possible solutions to a problem and a recommendation on the best solution to use and it contains extensive data related to financial and operational impact including advantages and disadvantages of both the current situation and the proposed plan. We have to perform the feasibility study in the planning phase of any project and after the report is generated then it helps to know if the project is worth doing or not.
A feasibility study evaluates the potential success of project so perceived objectives are important factors in credibility of study for potential investors or other clients. While doing the feasibility study there are various criteria based on which we have to perform the task. Below I have described those components of feasibility study:
-
Introduction
Background information of the proposed business or proposed project will be described such as the proposed name and purpose of the business. It also includes the skills and experience of the business investors. When we thought of doing feasibility study we have to whom the results of the analysis, research and evaluation of a proposed project and determine if this project is technically feasible, cost effective and profitable. In the introduction part of the feasibility study we have to show the general overview of the report which we are going to publish. When I performed feasibility study for insurance company in its report, we have to show the background information company, what are its features, in which country it operates etc.
-
Business or Project Description
Information about the business or project as well as the nature of industry or nature of the project is discussed in this section. In this part we have to give the overall overview of project and how we are going to undertake the feasibility study for certain project.
-
Purpose
It is the main component of feasibility study, first of all the researcher should understand the purpose of doing feasibility study to achieve the desired result. The main purpose for the feasibility study can be based on organizational desire to “get it right” before any organization implements resources, budget and time in project. In the purpose of feasibility report it can uncover new ideas which could completely change a project’s scope.
-
Methodologies
Methodologies give the way of performing or conducting feasibility study in a proper manner. It helps to select appropriate method for the data collection, organizing data and way of doing the project. For doing the feasibility study we have to be based on various methods to finds data and facts about the project. The various methodologies for feasibility study can be questionnaire, interview, surveys, meetings with people. By interacting with the people, we can know more about the scope of project in certain location and for certain audience.
-
Background History
Background history is also considered as the component of feasibility study. Gathering background information of any project will leads the project in the successful way. These components of feasibility study show us the background of project what was the need for performing the feasibility study in this project.
-
Intended Audience
These components refer to the audience which will be using the software once it is developed. For that we have to perform feasibility study on them and find out whether the audience needs such type of software or not. If the developed software helps the intended audience to make their task easy then the success rate of software launch will be high.
-
Feasibility Criteria
The feasibility criteria are the points based upon which we have to perform feasibility study. The feasibility criteria include technical, social, legal, operational, economic, schedule etc. While we perform the feasibility study in targeted audience, we have to do research based on those criteria. For example, in schedule criteria we have to find out whether the proposed project will be completed in time or not, and in economic criteria we have to find out whether the allocated budget will be enough for software completion.
-
Outcome
This component is also called the final result of the feasibility study. After we perform the feasibility study in the targeted audience then the report published needs to be analyzed. After the report is analyzed by the system analyst, we can finally come to the conclusion of whether the project should be started or not. These components provide us the final output of feasibility and evaluating this we can decide whether to start project or not.
-
Conclusion and Recommendation
After the outcome of feasibility study is published then system analyst and other project stakeholders have to interact with each other and come to the final conclusion. These components provide overview to the other individuals about the project and feasibility study. After the conclusion is drawn from the report then we also have to recommend it to other projects. We have to recommend it to project managers so that again in another project we get chance to get it right before we start any project.
-
Evaluation Criteria
-
Review
We must remember that a feasibility study is a way of thinking rather than a bureaucratic process. For example, what I just described is basically the same process that we all use when buying a car or a house. As the scope of the project grows, it becomes important to document the feasibility study, especially if it involves large sums of money and/or how important delivery is.
The feasibility study should contain not only sufficient details to continue the next phase of the project, but should also be used to conduct a comparative analysis when preparing a final project review that analyzes what has been delivered against what was proposed in a feasibility study.
Feasibility studies represent a general approach to planning. Frankly, it’s just a good job to implement. However, I have read that some people in the field of information technology, such as proponents of the “agile” methodology, consider that feasibility studies are a huge waste of time. If that’s true, got to have a good used car I want to sell.
About feasibility study in Insurance Company
“A feasibility study is an analysis used in measuring the ability and likelihood to complete a project successfully including all relevant factors. It must account for factors that affect it such as economic, technological, legal and scheduling factors. The feasibility study helps to “frame” and “flesh-out” specific business scenarios so they can be studied in-depth. Project managers use feasibility studies to determine potential positive and negative outcomes of a project before investing a considerable amount of time and money into it.” (Don Hofstrand, October, 2009)It tests the viability of opinion, a project or even new system which insurance company is planning to do. It is the preliminary study undertaken before the real work of project starts to ascertain the likelihood of the project’s success. The main purpose of doing feasibility study in insurance company new system is to emphasize the problems which could occur if we pursue project and determines if, after considering all significant factors, the project is a good idea. A feasibility study evaluates the potential success of our new system so perceived objectives are important factors in credibility of study for insurance company potential investors or other clients of company. There is special purpose of doing feasibility study in insurance company new system as we have to know if the new proposed system will be worth doing or we have to reconsider some of its functions which might affect us further.
Problem Statement of Old System
From the very few years the insurance company was running a system which has less features as compared to the today’s technology so to go through latest system functions company has decided to update it to latest versions. In the previous version there was the system which was only used to keep track of customer enquiries about information and purchase of its products and services and making claims. Previously the system was only being used in United Kingdom thus there weren’t used the range of currencies to purchase the products so there was no need to allow for fluctuating currency exchange rates. In the previous versions customer were only able to read the facts and not allowed to make desired change in the system. Customers weren’t able to communicate to company through online customer care service through email or any other messages. Previously, there was only the documentation of customer information and proper security wasn’t provided to the system as related to today’s technology.
My Feasibility Study’s report for given project
After the project was given to our company and before signing the final agreement document my company told me to do feasibility study in this project. So, based on the various criteria of feasibility study I began my research and reached to final conclusion of project work. While doing the work my feasibility research was based on different criteria which were related to company’s environment such as technical, economic, social, legal, operational, schedule etc. Below I have provided the documentation of my research work on the given scenario project.
Technical Criteria
The technical criteria of feasibility study focus on the available technical resources in the organization. It helps the company to determine whether the technical resources available in organization meet capacity and whether their technical team will be able to convert ideas into the working system. It also involves the evaluation of software, hardware and other various technological requirements for proposed system. This criterion explores if the project feasibility is within the limits of current technology and if it is available with given resource constraints.
While conducting feasibility study here I find out what type of hardware and software’s we will need for making such large software. We have to use high performance server and another device for managing network traffic. If all those features can be provided by us then we can move forward otherwise we have created some solutions to these criteria for moving forward.
Software Requirements
Hardware Requirements
IDE (Java, JavaScript) with MVC and
Hibernate Pattern
Intel i5 or i7 processor, 4th generation or newer (Virtualization must be supported)
Implementation Components (JDK)
Windows 7 or newer operating system and if used Ubuntu version must be higher than 14
Tool for drawing diagrams
1TB or more disk storage, Performance HDD with 32 – 64 MB Cache or SSD recommended
Configuration Builder
Minimum of 1600×900 screen resolution
Word processor for documentation
Minimum 8GB of RAM (16 -32GB RAM recommended)
Tool for drawing diagrams
Windows Server 2008, Server 2012(PC or Mac computers using Boot Camp).
Requirement for Clients
Requirements of Manpower
Operating system (i.e. Windows, or Mac OS
X 10.3.8, Ubuntu)
One Project Manager
Min processor speed (i.e. Pentium 4, 3.2 GHz or Power PC G5, 2.0 GHz)
One System Analyst
Memory i.e. RAM (i.e. min 512 MB)
Programmer-5
Five Programmer
Graphics Card (i.e. ATI Radeon 9800 w/ 256
MB video memory)
Two Designer
I/O Ports (i.e. USB, Fire wire, Serial, Parallel,
SCSI, VGA, DVI ports)
Impact on Software Investigation
The above given facts are only planned while doing the feasibility study and for such large projects if somewhere there is need of extra technical requirements like extra computers, extra features and need of other manpower then such requirements can be added as required. All the above given technical requirements can be fulfilled by our company current manpower and requirements so we can use and manage those technologies which is positive impact for system development.
Alternative Solutions for Problems
While developing the system we can encounter problems anywhere like in the designing phase, development, testing etc. therefore we need to have some alternative solutions if the problems arise during development. If the problem arise for the manpower of the development team then quickly new members will be recruited and development process will go on. If we encounter the problem related to hardware and software then for the hardware backup files will be sent to another computer and if software crashed or any other problem arise then we will renew those software’s.
Legal Criteria
The legal criteria investigate whether any aspect of proposed system conflicts with the legal requirements like zoning laws, data protection acts or social media laws. We have to check our system comply with all the legal requirements like data processing system must comply with local data protection acts etc. Our project might face legal issues after completion if these criteria isn’t considered at this stage and performing these criteria, we can save considerable time and effort by learning that project wasn’t feasible right from the beginning. While doing the research on our insurance company system feasibility we find out if the planned project will affect with some country’s legal act or not. If our project affects any country laws and acts then we have to find out some alternate solutions for those laws. We find out that our proposed system doesn’t affect any country cyber laws or Data Protection Acts so we can move to next step and we are going to follow rules and regulations for each country where company has branch and the proposed system will be implemented which is positive impact on the system investigation.
Economic Criteria
The bottom line for many projects is economic criteria. It involves cost/benefit analysis of project and helps us to determine viability, cost and benefits analysis of project before the financial resources are allocated. In this criteria cost of hardware, software and user training are considered and we also need to determine the budget of the project in advance after analyzing the requirements. We can also use economic analysis for evaluating the effectiveness of the proposed system. As soon as the specific requirements and solutions are identified then the project analyst can find the costs and benefits of each alternative by performing cost-benefit analysis. While conducting feasibility study I figured out if the given budget will be sufficient for the system development or not. The given budget for the system development is 30 lacs so for each phase of software development we have to divide budget as required. Below I have divided the total budget provided by company for various stages of system development.
Impact on System Investigation
In the above table I have provided the budget separation for the system development. I have separated the budget for each phase of system development life cycle with feasibility study, hardware and software. If we make software for budget of 30 lacs the in return the insurance company can get benefits from Nepal, United Kingdom and from other international market then it will provide us the positive impact. In the above table I have only provided the budget figure of 26 lacs so that in case of emergency we can use another 4 lacs.
Alternative Solutions for Problems
While developing the system we can encounter problems anywhere like in the designing phase, development, testing etc. therefore we need to have some alternative solutions for budget if the problems arise during development or any other stages. While doing the feasibility study I have figured the total budget of 26 lacs while the given budget is 30 lacs so that we can use another four lacs in emergency case. Also, for the remaining 4 lacs we can use it for adding programmers or backup hardware and software if we have to finish work quickly or if we encounter problems for hardware and software.
Social Criteria
This criterion determines whether the proposed project will be satisfactory for the people or not. In this stage we have to examine the probability that the system would be accepted by the group of people that are directly affected by the proposed system. If the proposed system affects the people then either we have to solve those issues or if we start project without solving those issues it might create huge problems in future. In this criterion we also determined what skills the target population need to learn on the job and how to learn them if the jobs will meet their needs. It incorporates a participation strategy for involving a wide range of stakeholders and accesses whether the organization is likely to succeed in making the social changes.
We found out that the proposed insurance company system doesn’t affect the people and there was high probability of system being accepted by the society as they are the one directly affected by the proposed system which is positive impact. If somehow, we encountered the problems in society regarding the system then first, we will find out the reasons which are affecting then we will try our best to mitigate those problems.
Schedule Criteria
This criterion is the most important for project success after all a project will fail if not completed on time and organization estimates how much time the project will take to complete. We also have to determine if the project deadlines are reasonable whether constraints place on the project schedule can be reasonably met. Some projects are initiated with specific deadlines and we have to determine whether the deadline of project development are mandatory or desirable and if it is preferable to deliver a properly functioning information system two months late than to deliver error prone useless information system on time. Although the missed schedules are bad but inadequate system are much worse in today’s competitive world. The given time for creating system is five months so we checked through schedule criteria of feasibility study if the given time will be sufficient for or not.
Stage of System Development
Time Taken
Planning
20 days
Feasibility Study
10 days
Designing
30 days
Development
70 days
Testing
10 days
Maintenance & Support
N.A(Agreement of maintenance for 1yr)
Total
4month & 20days
In the above table
I have provided the time schedule for the system development. I have separated the time for each phase of system development life cycle with feasibility study, design and development etc. In the above table I have only provided the time figure of four months and twenty days so that in case of emergency we can use another ten days fixing those errors and complete project within time. As we create this table in feasibility study we can properly use and manage the scheduled time while developing our system which is positive impact on system investigation.
Alternative Solutions for Problems
While developing the system we can encounter some problems anywhere like in designing phase, development, testing etc. therefore we need to have some alternative solutions for schedule if problems arise during development or any other stages. While doing the feasibility study I have only provided the time figure of four months and twenty days so that in case of emergency we can use another ten days fixing those errors and complete project within time.
Also, we are going to negotiate to the company if in given time our task isn’t completed as we believe in delivering quality product to our clients and for this time shouldn’t create any problems.
Operational Criteria
This criterion involves undertaking a study to analyses and determine how well the company need can be met by project completion. It also defines the urgency of problem and acceptability of any solution and also shows if the system is made then how it will be used. This criterion also analyses how system plan satisfy the user requirements identified in the early stage of requirement analysis of system development. The operational criteria include the people oriented and internal issues such as manpower problems. We checked how the designed product i.e. system of insurance company performs in real operational environment and how operation should provide the adequate throughput and response time. In this criterion we can check if there will be resistance from uses that affects the possible application benefits or not and it also provide us the cost-effective information services to the business which is the positive impact for the system investigation.
In this way I have provided the documentation of my feasibility study as per my research work when we were developing system for insurance company. In the above documentation I have also assessed the impact of different feasibility criteria on the software investigation.
Conclusion:
In this part of my assignment I have provided the documentation that explains the purpose of feasibility report and describes how technical solutions can be compared. I have explained how the main purpose of feasibility study is to emphasize the problems which could occur if one pursues project and determines if, after considering all significant factors, the project is a good idea. The feasibility report is an analysis of possible solutions to a problem and a recommendation on the best solution to use and it contains extensive data related to financial and operational impact including advantages and disadvantages of both the current situation and the proposed plan. I have also explained how the technical solutions can be compared based on different criteria such as efficiency, performance, legacy system, elimination of human errors. A feasibility study evaluates the potential success of project so perceived objectives are important factors in credibility of study for potential investors or other clients. While doing the feasibility study there are various criteria based on which we have to perform the task such as economic, technical, schedule, legal, social etc. After the project was given to our company and before signing the final agreement document my company told me to do feasibility study in this project. So, based on the various criteria of feasibility study I began my research and reached to final conclusion of project work. I have also provided the documentation of my feasibility research which was based on different criteria which were related to company’s environment such as technical, economic, social, legal, operational, schedule etc.
PART 3
1. Undertake the software investigation to meet the business need using appropriate software analysis tools/techniques to carry out a software investigation and create a supporting documentation. You may submit this task in the form a report structured with background information, problem statements, data collection process and summary etc.
In order to carry out the systems investigation you are required to identify the stakeholders, identify the requirements of the client, specify the scopes like inputs, outputs, processes and the process descriptors, consideration of alternative solutions and security considerations and the quality assurance applied.
You are also required to identity the constraints like costs, organizational policies, legacy systems, hardware requirements etc.
For software analysis you may use the following tools:
-
Data Flow Diagram up to second level
-
Entity Relationship Diagram
Introduction:
While I am working as the system analyst in the ongoing project identifying the stakeholder and to know the client requirements from the project is important task for me. In this part of my assignment I am going to undertake software investigation to meet the business need using appropriate software analysis tools to carry out a software investigation and create supporting documentation. I am also going to identify the stakeholders, identify the requirements of clients, specify the scopes like inputs, outputs, processes and the process descriptors, consideration of alternative solutions and quality assurance applied.
Identify Stakeholders:
A stakeholder is either an individual, group or organization who is impacted by the outcome of a project. They have an interest in the success of the project and can be within or outside the organization that is sponsoring the project. A stakeholder is a person, like any other member of the project, and some will be easier to manage than others. There are a lot of people involved in getting a project from inception to successful completion. We are going to have to know how to manage each and everyone one of them, even those who don’t work directly under us. One such person is the project stakeholder. Stakeholder and Community Engagement can have a positive or negative influence on the project.
It is very important to identify the stakeholders of our project as the success of project depends upon it. We have to meet up with the requirements of project stakeholders and we have to figure this out as soon as our project starts. We can identify our stakeholders by reviewing our project charter which are the reason for the project and appoints the project manager. We can also discern the stakeholders among the information about objects, budget, assumptions and constraints, project sponsor and top management schedule. In the table below I have provided the stakeholders of our project.
Project Leader
Consultants to Project
Line managers
Clients
Project team members
Senior management
Project User Group
Group impacted after completion
Group impacted in progress
Resource Managers
Subcontractors to project
Product testers
Identify Client Requirements:
Clients have certain needs and requirements for the system and they need to establish the relationship between the organization and the clients. We can’t forward the project without knowing the requirements of clients and project success depends only when the requirements of clients are met so it is very important to know the client’s requirements and fulfill them. Each of the clients might have different requirements for the software they want and identifying the requirements of the client helps us to accomplish the development of the software.
Client Requirements
Software Functions
User Friendly
Separate login for administrator and normal users
Fast in data storage
Stores client information
Retrieval
Proper guidance to new clients
Windows, Mac OS X, or Linux operating system
Online service of organization
Sun Microsystem’s Java, Runtime edition
Direct connection with client’s bank
Proper designing/Attractive
24/7 customer service
Web browser supportive such as Chrome,
Safari, Firefox, Internet Explorer
Online service of Insurance Renew
Software Scope:
“Software scope is a well-defined boundary, which encompasses all the activities that are done to develop and deliver the software product. The software scope clearly defines all functionalities and artifacts to be delivered as a part of the software. The scope identifies what the product will do and what it will not do, what the end product will contain and what it will not contain.” (Bhatia, 2017) It describes the functions and features which are meant to be delivered to end users and this is where we have to list out the tasks which needs to be done given the project goals and estimate how much time will be required to do them. The software which we develop will be used by the insurance company to save data about their clients, stakeholders, employees and it will make their work easier. We have defined the input, process and output of the software which is given in table below: –
Input
Process
Output
Login Module
Verify if Username and
Password is valid
Show the home page
Search
Look for searched name in database
List out clients’ detail
User’s
Profile Search for user name
Show the user profile details
Data entry
Connect to database
Save data in database
Records Module
Verify if user name is in the system
Show the details made by user
Contact us
Look for details in database
Provide company contact details
Reports Module
Verify if user’s transaction is recorded in system
Show the report
Customer Care
Look if company customer care is currently available
Connect to company customer care employee
Process Descriptors:
Our system has various functionality and activities which are performed in the software and it works on many processes. The system which we developed for the company has many features which was developed according to our client’s requirements. When we instruct some input to the system then it shows some specific outcomes of the activity as input are processed and then output is shown. While the user tries to login to the system then first the login panel will appear where user have to provide username and password then system will verify those login credentials and only then user get access to the main page of system. Also, when the user tries to search the client details in the search box then system looks for the searched name in database then only it lists out the client details. Whenever the new user tries to save its details in system then first it will get connected to the database then only the data are stored. When the user tries to generate report of his details the first system has to verify if user’s transaction is recorded in system then only the report is shown to user. We have also provided the feature of customer care and contacting directly to company and for this process first system will look if company’s customer care is currently available and if yes then user can contact to the customer care services.
Consideration of Alternative Solution:
Due to competitiveness in the software industry and also because of today’s online market it is always better to have alternative solution for any software. Creating software for such huge insurance company with all required features isn’t an easy task and it is necessary that it is computationally supported since everyday projects are larger and these should be developed in shortest time and within given budget. Although the insurance company told us to create software but while considering the alternative solution, we can also use web application. Web application also helps the company to work securely and prevents from uncertain and sudden problems for such large company such as system failure, crash of software, system hang due to load; so, in such case web application can be alternative solution. Also, In the current scenario many companies prefer to build web application then software as it is little cheap then creating software, easy and nowadays most of those large company clients are moving to online market.
Software Security:
“Software security is about building secure software: designing software to be secure, making sure that software is secure and educating software developers, architects and users about how to build secure things. On the other hand, application security is about protecting software and the systems that software runs in a post facto way, after development is complete. Issues critical to this subfield include sandboxing code (as the Java virtual machine does), protecting against malicious code, obfuscating code, locking down executables, monitoring programs as they run (especially their input), enforcing the software use policy with technology and dealing with extensible systems.” (gary, 2011) We have to provide integrity, authentication, availability and accountability to the system to protect it fromattacks like buffer overflow, command injection and SQL injections. We can prevent our software from these type of attacks by following good programming techniques while creating the software and then after we can provide the system level security using firewalls, intrusion detection and prevention which might help us in stopping attackers from easy access to our software. Moreover we have also tried to make user password strong, unique and hard to guess by using password policy.
System Quality Assurance
“Software quality assurance (SQA) systematically finds patterns and the actions needed to improve development cycles. Finding and fixing coding errors can carry unintended consequences; it is possible to fix one thing, yet break other features and functionality at the same time. SQA has become important for developers as a means of avoiding errors before they occur, saving development time and expenses. Even with SQA processes in place, an update to software can break other features and cause defects commonly known as bugs.” (Rouse, 2015) For implementing the quality assurance system first we have to set goals for the standard and then we have to consider the advantages and trade-offs of each approach. We can do this by maximizing efficiency, reducing cost or minimizing errors and for this management must be willing to implement process changes and work together to support quality assurance and establish standards for quality. System quality assurance is organized into goals, commitments, measurements, verifications and abilities. For example for the quality assurance of our software we hired highly skilled developers, and skilled testing team so that we can find out bugs in testing phase and it might not create problems further. Testing was done in each phase to ensure that nothing is missed in the development of the software. Proper documentation was done before the developing process where we enlisted everything like things needed to be done in each phase, requirements, etc. We have made sure that the quality of our developed software will meet the requirement of the clients.
Constraints
The constraints in system development are anything that restricts the action of development team which can cover a lot of territory. The main constraints for project or software development are time, resources and quality and most of the projects in IT industry are driven by those triple constraints i.e. time, resources and quality. All the projects are carried out under the certain constraints and it is the budget or cost available to be used toward the development of system. Constraints have direct impact on how the system development is planned and tracked and what can be developed by a specific point in time. Below I have identified the constraints for our project like costs, organizational policies, legacy systems, hardware requirements etc.
Cost: This is the estimation of the amount of money that will be required to complete the project. Cost itself encompasses various things, such as: resources, labor rates for contractors, risk estimates, bills of materials etc. All aspects of the project that have a monetary component are made part of the overall cost structure. We were given the total budget of 30 lacs while developing system and below I have provided my feasibility report which shows total of 26 lacs and remaining 4 lacs we are going to use in case of emergency.
Organizational Policy:
“An organizational policy is a set of guidelines and best practices put in place to protect the company, employees, and customers. Organizational policies may cover employment practices, employee conduct, disciplinary procedures, Internet and e-mail use. Customer policies provide guidelines on working with customers and outline what customers can expect from the organization. In general, organizational policies define what is or is not permitted within the organization. By doing this, they establish expectations and limitations related to behavior.” (Dawson, 2013) The main purpose for our organizational policy is to provide clear definition or boundaries within which to work, define what is acceptable and unacceptable behavior and provide guidelines and set customer expectations. There shouldn’t be inclusion of any other external policy while developing system. Also, while developing the system we are going to pay attention to different countries rules and regulations.
Legacy System:
A legacy system, in the context of computing, refers to outdated computer systems, programming languages or application software that are used instead of available upgraded versions. There might an outdated system which could still be working well. So, the developed software will be made compatible with old system. Older system may require added compatibility layers to facilitate device functionality in incompatible environments. In our development team we have also hired the developers of insurance company development team so that they can tell us about old system and we can make new system compatible with old system.
Hardware Requirements
The system was developed for the hardware like Personal Computers, Laptop, MacBook and Mobile. It can be used in mobile like android, IOS and windows phone. Software can be used in computers. Various hardware was required in building the system Personal computers, Laptop, MacBook, storage disks, etc. Below I have provided the hardware requirements for software.
Hardware Requirement for Clients
Operating system (i.e. Windows, or Mac OS X 10.3.8, Ubuntu)
Min processor speed (i.e. Pentium 4, 3.2 GHz or Power PC G5, 2.0 GHz)
Memory i.e. RAM (i.e. min 512 MB)
Graphics Card (i.e. ATI Radeon 9800 w/ 256 MB video memory)
Hard Disk Space (i.e. 80 GB available)
I/O Ports (i.e. USB, Fire wire, Serial, Parallel, SCSI, VGA, DVI ports)
Background Information:
A large insurance company which is predominantly operating in United Kingdom is going to be offering its products and services to many international countries in its drive to grow and become a large international company. The company has been using a system to keep track of customer enquiries about information and purchase of its products and services and making claims etc. which needs to be updated. As company will be going globally, customers from various countries will be purchasing the products with much wider range of currencies. So, the new system that insurance company needed is according to the currency exchange rate. There should be this system in the newly developed system for the insurance company.
Problem Statement:
From the past few years the system of insurance company was providing user the application facility through general features only like Creating account, Updating the details and Deleting the details. As the technology is slowly directing towards the online the company wants to upgrade old system into new version with all the required functions. Previously, the company was using system only to track its customer enquiries, purchase of its products, services and claims etc. As now the company is going to extend its branch globally and become a leading insurance company it needs to upgrade its old system into new with today’s required features. There will be customers from different countries, different currencies will be given by the customer in order to purchase the products so there should be feature of fluctuating currency exchange rates in system and also Speed, Accuracy and Flexibility should be provided to the application using right technologies which wasn’t available in old system. Therefore to overcome those previous problems company hired us to develop new system which will function properly in all countries with new popular features in online market.
Data Collection Process:
It is the way of gathering and measuring information on variables of interest, in an established systematic process that enables one to answer stated research questions and evaluate outcomes. The data collection component of research is common to all fields of study including physical and social sciences, humanities, business, etc. Before starting to develop a new system for company there were other important things to do like collecting the data about company and its facilities. For the data collection process, we took an interview from the IT team of company and what they want from new system. We also provided the questionnaire to clients and read about the previous system review so that we can find out what they were expecting from the new system. We also identified the stakeholders for the system and distributed questionnaires to know their expectations from the system and organized workshop to provide certain information to group members on the working phases and techniques to be used while developing a new system for insurance company. By this process we were able to know various things about the client’s and user expectations from us and what additional features we can add to system so that it will be easy for new users.
Software Analysis Tools:
For software analysis, we used various tools such as Data flow diagram (DFD) and entity relationship diagram (ERD). The software analysis tools are discussed briefly below:
Data Flow Diagram (DFD)
“A data flow diagram (DFD) maps out the flow of information for any process or system. It uses defined symbols like rectangles, circles and arrows, plus short text labels, to show data inputs, outputs, storage points and the routes between each destination. Data flowcharts can range from simple, even hand-drawn process overviews, to in-depth, multi-level DFDs that dig progressively deeper into how the data is handled. They can be used to analyze an existing system or model a new one.” (Bhagnani, 2017) This diagram shows how the data is processed by a system in terms of inputs and outputs and as its name illustrates DFD mainly focus on the information flow in system, where data comes from, where it goes and how it gets stored in the database. Apart from the data flow in system there is also shown the information flow which is represented by various symbols like rectangle, arrow sign and circle. Although there are various levels in Data Flow Diagram below, I have provided the diagram of level second. In the second level data flow diagram information is extracted and figured out than the previous levels one and zero. Sometimes it becomes complex to design the clear second level data flow diagram but when designed by the skilled person it provides us the clear picture of system data flow and provides a lot of information.
Entity relationship diagram:
“An entity relationship diagram (ERD), also known as an entity relationship model, is a graphical representation of an information system that depicts the relationships among people, objects, places, concepts or events within that system. An ERD is a data modeling technique that can help define business processes and be used as the foundation for a relational database.” (Rouse, 2017) This diagram helps us in the representation of the relationship among the entity and the attributes and helps us in representing how the entity is directly related to the attributes and how they relate with the system. This process is used for the system and project development as it helps us in the identification of the elements and relationship among them. The elements that are used to draw the ER diagram are attribute, entity and relationship among them.
Summary:
Developing the new system for such large company with inclusion of all its features is very difficult project to do. When the project was first given to our company then first of all we decided to perform the feasibility study on this new system development and when the report of study was good then we dived into the software development process. To develop any system first we need to choose the best system development model and be clear about the reasons for choosing that specific model in this project. We analyzed the various system development models like Waterfall, Agile, Prototype, Spiral etc. After knowing the pros and cons of each model we gathered the overview from all the project members and decided to go with Agile model in this project. Then for the initial planning phase we went through the feasibility study report and hired the new required developers, technologies, software etc. As in the agile model we don’t have to do documentation and we can add new requirements from clients whenever we have to so after the proper planning of project, we moved toward the next step which is designing phase. We designed the Data Flow Diagram and ER-Diagram for the system which helped the developer and any other project member to get overview of whole system and how it will work once it is completed. We hired the top designer from our country to design the system layout using various technologies and after the completion of this step we moved toward the development phase. In the development phase we used top technologies and popular language for proper coding to make the software fast, reliable and accurate. We also used various technologies to provide security for the software using firewall and popular web hosting company. Different constraints were listed out such as costs and organizational policy. We also find out the reason behind developing a new system and problem that insurance company had in their old system. We went through a data collection process where we held workshop, formed groups, took an interview and asked questions to the head of the insurance company. We tried our best for the quality assurance of system and for this we used highly skilled developer, testing in each phase, proper documentation although it is not highly required in agile model. We also arranged face to face client interaction so that we can show them the ongoing process in system development and get quick feedback which helped us to increase the software quality.
Software Requirements:
The software requirements are description of features and functionalities of the target system. Requirements convey the expectations of users from the software product. The requirements can be obvious or hidden, known or unknown, expected or unexpected from client’s point of view. They are descriptions of the services that a software system must provide and the constraints under which it must operate. Requirements can range from high-level abstract statements of services or system constraints to detailed mathematical functional specifications. We should try to understand what sort of requirements may arise in the requirement phase and what kinds of requirements are expected from the software system.
Although every development model says that we have to state the software requirements in the initial stage of development stage but we can also trace the software requirements throughout the software lifecycle. In software development models like Agile, Prototype there is no proper client requirements documentation required so we can easily add new requirements whenever we want. After finding out the software requirements we can prioritize those requirements based upon their needs and making work easier by implementing them on system. High prioritized requirements can be done first and then according to the priority of requirements we can implement them on system. After doing this user can easily surf on the system and find out the features which he needed to perform in system. We can also develop the prototype to meet the system requirements. Prototyping is building the user interface without the detail functionality for user to interpret the functions of intended software products. It will help us giving better idea of requirements and if user isn’t aware of its own requirements then we can create the prototype based on the mentioned requirements. Then prototype can be shown to client and feedback can be noted and software requirements can be found out using prototype.
The model used in the software development process also helps us to find requirements. As we were using agile software development model it made us easy to get requirements in each phase of the development process. The lifecycle of software starts from planning phase and ends in maintenance after it no longer requires update and new version replaces it. Therefore, we can trace the software requirements throughout the software lifecycle from the initial planning phase to the last maintenance phase when the system is replaced by new software. The first step of software lifecycle produces high level overview of project relating requirements and scope of software. It is very important for software requirements in software development process. In the next phase of software lifecycle i.e. analysis the development team visits the user and studies their system. They investigate the need for development in the given system. By the end of the feasibility study, the team furnishes a document that holds the different specific recommendations for the candidate system. It also includes the personnel assignments, costs, project schedule and target dates. The requirements-gathering process is intensified and focuses specifically on software. To understand the nature of the programs to be built, the system developer must understand the information area for the software, as well as required function, its behavior, performance and other systems it interfaces with.
The next step in software lifecycle is design phase where we can figure out how the application will function to meet both the needs of the business and the needs of its users. Software design can take on many forms. There may be wireframes that sketch out the web or mobile app screens. There may be a higher fidelity design or prototype where you get to see or use a mockup of the system complete with great graphics, fonts, and images. There may even be very technical specifications that detail logic, workflow, or the data of the system. All of these documents help describe on paper how the system should look and work. We can add new software requirements for the design of software in this phase. In the implementation part of software development requirements can be prioritized. According to level of prioritization, software developments things will be done. High priorities things will be done in the first place of development phase of software. While implementing, we can add more requirements if needed for the software. Used models can also help us to find out the more requirements in this phase.
In the testing phase of software lifecycle requirements testing is done to clarify whether the software requirements are feasible or not in terms of time, resources and budget. This procedure helps improve requirements quality and reduce the number of tests necessary to meet these requirements. When testing the system, we can also find out the new additional requirements which we can add to the system. The maintenance phase is the longest period of software lifecycle and majority of the software requirements are added in this phase. After the new system is launched in the market then after certain period of time, we have to add new features to the system by updating it and we this way we can trace those new software requirements. The used model for system development also helps us to find out the requirements.
In this way we can trace software requirements throughout the software lifecycle and in each phase. We can prioritize our requirements then high prioritized task can be performed first and also we can develop prototype to meet requirements. The used model for development process can also help us to find requirements as agile model helped us to add requirements later after completing one step.
Software Quality
Software quality is the method of assuring if the requirement of the business context and the customers are meet or not. It is the totality of functionality and features of a software product that bear on its ability to satisfy stated or implied needs. The software quality maintenance at the organization is the process of checking if the software is produced in the correct format or not and if it can compete with the similar software in the market or not. Maintaining the quality of
the software is a necessary factor because with this the actual work of the system and the facility to the customers will be provided. Measuring the quality of the software checks the risk, cost and all the factors that can affect on the development of the project. The quality assurance process of the software is the continuous and the ongoing process that is still not completed until the end of the software. Assuring the quality of the software is the set of the things that is necessary to be done for the quality of the products. The software quality approach helps in checking the weaknesses of the project and then with the identification of the weaknesses correcting those weaknesses continually to improve the quality of the software.
The way to provide high-quality software is to implement effective QA management that provides tools and methodologies for building bug-free products. Software quality management is an umbrella term covering three core aspects: quality assurance, quality control, and testing.
Software underpins nearly every business process. Therefore, it’s essential to lower the cost of testing and improve the quality of your software.
Below I have provided some approaches which helps us to improve software quality and improve testing efficiency.
1. Communication
To improve software quality, it is important that all parties to the project have full information through fluid communication channels. The important aspect of fluid communication is that all parties have the opportunity to provide feedback to the team to ensure that all expectations are being met. It is also important to keep all stakeholders in the loop and not isolate team members from the vendors or end user of the software. Isolation can mean that the project is delayed or may not deliver on the goals expected by senior management.
2. Review, revise, and remember
Producing software quality is not a coincidence. This is why we must always do the following three things which are review – Testing often is a pillar of ensuring software quality. It ensures that standards are continuously met and bugs, errors and distractions can be fixed before they spiral out of control. Revise shows what has worked throughout the software process. Utilize what is working and see if innovation can transcend our software quality even further. Remember When we deliver quality remember what worked well and did not work well. We have to keep an updated record of both the positives and negatives of any given project and turn to it frequently when we start the next project from scratch.
3. Extensive Unit Testing
Unit testing is the closest we can come to having peace of mind after deploying new code into our production environment. Unit tests should be written first and then used to ensure that our code satisfies the insurance company requirements, rather than vice versa. This is sometimes difficult for teams that have not worked with unit tests before to grasp, but it is a very important step.
Below I have discussed the two approaches that can be applied to our scenario to improve software quality.
1. Know the requirements
While developing the system for insurance company our software development team needs to be provided with a definition of what a quality outcome looks like and how it fits into the time, resource and budget constraints. If our development knows the requirements then carefully defining each phase of software development will lead to an overall improvement in the ability of the team by not over taxing the various resources with unrealistic expectations. As the system analyst I have to understand the importance and need of providing clear and concise business requirements so that our development team can execute those goals. Although it is difficult for us to go into too much detail here but giving developers poor outline of what’s required and expecting them to fill those gaps will push software development over the deadline and this might result in unhappy users and poor-quality software. As we are using Agile model for software development, we don’t have to do the proper documentation for knowing client’s requirements. We can always have the face to face interaction with clients and show them the ongoing work in development and take the quick feedback from them and change the features according to their requirements.
2. Implement quality controls & encourage innovations from beginning
If we wish to deliver the quality software then we have to start implementing the quality controls from the beginning which is an ongoing process throughout the deliver. Our team testers can monitor quality controls and create awareness in partnership with developers to ensure standards are continuously being met. If there is a good relationship between testers and developers then it can help the project software strategy develop effectively. Also, while developing software a systematic methodology in quality control can ensure that the coding errors and bugs are dealt with effectively, following a structured process. Although it is important in our software development to place testing structures and quality measures in their place, however we should also provide room for innovation. We can place innovation by automating testing where possible to minimize time spent on controls. Innovations are important because they can lead to improvements in software quality that have the capability to transform how projects are delivered also while developing software for insurance company research and development should be encouraged for such large projects. We can also empower teams to explore, experiment and investigate continuously and we can also ensure that advancements in innovation are duly rewarded. The team member have capacity to transcend ongoing software quality and deliver projects with a competitive advantage over today’s IT industry competition.
In this way we can improve the software quality by using above mentioned various approaches. If we are able to follow those approach effectively then surely we can deliver quality system to our clients. Software underpins nearly every business process. Therefore, it’s essential to lower the cost of testing and improve the quality of your software.
Function Design Paradigm
“Functional Design paradigm is a paradigm used to simplify the design of hardware and software devices such as computer software and increasingly, 3D models. A functional design assures that each modular part of a device has only one responsibility and performs that responsibility with the minimum of side effects on other parts. Functionally designed modules tend to have low coupling.” (Smith, 2018) Systems with functionally designed parts are easier to modify because each part does only what it claims to do. Since maintenance is more than 3/4 of a successful system’s life, this feature is a crucial advantage. It also makes the system easier to understand and document, which simplifies training. The result is that the practical lifetime of a functional system is longer. In a system of programs, a functional module will be easier to reuse because it
is less likely to have side effects that appear in other parts of the system.
It is the method that is been used to simplify the design of hardware and software devices such as computer software and graphic designing. It is also known as the formal documentation that is been created so as to describe in details about the software developers connecting the developers and the user interactions. Proper environment of the project along with the setup goals of the organization in an analytic phase of the each iteration, it helps in redefining and improves the characteristic that helps in the development of the quality software.
Previously I have stated how the software quality depends on various factors like reliability, usability, efficiency, security etc. Likewise those different factors software quality can also be increased by the functional design paradigms as it apply to the quality improvement process in the iterative manners. By using the functional design paradigm we were able to use effective methods, process and techniques to develop a quality software which is best suited for the current working environment of insurance company. It helped us to implement the best methodologies from the early stages to prevent the development from bugs and defects in system providing framework to the software. It also helped us to clearly understand the nature of company by examining the previous working system. For example while we were creating the new software for company the working environment of company’s previous system was examined and requirements of company were gathered which helped us in designing new software while maintaining quality and standard. While using functional design paradigm it was also easier to acknowledge the goals of the insurance company which helped us to associate with the reasons for creating quality software which fulfills objectives of the company. The function design paradigm also makes the sound execution of design, methods and techniques possible. It simplify the design of software and assures that each modular part perform their respective task and have low coupling.
The function design paradigm helps us to analyze the result generated from the execution of the designed modules and frameworks. We were able to examine whether the outcomes generated satisfy the needs of insurance company or not and we also evaluated the performance, stability, robustness and some other features of software that maintain the standard of software developed which resulted in development of quality software which our client required. Then after the evaluation of factors which determine quality of software we were also able to generate feedback where modification and improvements were needed. For the improvements in the software we removed all the defects, bugs and weakness to improve the software quality and make it robust.
Recommendation:
In this way we used the function design paradigm while developing the system for insurance company and the outcome was good. Using the function design paradigm in software development lifecycle we were able to improve the software quality. I even also recommend other software development companies and individuals to use this paradigm while developing system. It provides us various benefits like robustness, stability and overall it improves software quality which is ultimate goal of every software company.
Conclusion:
In this way to complete this part of assignment I undertake out the software investigation to meet the business need using appropriate software analysis techniques to carry out a software investigation and created a supporting documentation for this. I identified the stakeholders involved in the development of software and client’s requirements that needed to be addressed in the software. Also, described about the scope of the software and process descriptors on how software will work in output, input and process. Consideration of alternative solutions were developed in case of any emergency. Security and quality of the software defines the success of the software. So, I have described about the security that how we planned the security in the software and quality assurance that are made in the software for the betterment of the software. For the software analysis I developed the data flow diagram upto second level and also created entity relationship diagram which helped us for the clear understanding of the software. Different constraints were listed out such as costs and organizational policy. I also find out the reason behind developing a new system and problem that insurance company had in their old system. I went through a data collection process where me and my team members held workshop, formed groups, took an interview and asked questions to the head of the insurance company. Then I have discussed various approaches to improve the software quality and briefly discussed two approaches which can be applied to the given scenario.
-
Reference to your task above that required some level of intensive research work analyze how software requirements can be traced throughout the software lifecycle.
-
Discuss different approaches to improve the software quality and considering the above context discusses the two approaches that can be applied at this context to improve the software quality.
-
Critically evaluate how the use of the function design paradigm in the software development lifecycle can improve the software quality. Support your ideas with reference to the tasks you have done.
Part: 4
-
Prepare a documentation that explains how user and software requirements have been addressed. You may tabulate this task with the columns that has the expected client requirements and the actual output of the product to be developed after the appropriate analysis.
-
Discuss about the different software specification methods and suggest two software behavioral specification methods and illustrate their use with an example relevant to the project that needs to be constructed for the given context. Some of the software specification techniques include flowcharts, pseudo code and formal specification methods and so on.
Introduction:
“User requirements, often referred to as user needs, describe what the user does with the system, such as what activities that users must be able to perform. User requirements are generally documented in a User Requirements Document (URD) using narrative text. User requirements are generally signed off by the user and used as the primary input for creating system requirements. System requirements are the building blocks developers use to build the system. These are the traditional “shall” statements that describe what the system “shall do.” System requirements are classified as either functional or supplemental requirements. A functional requirement specifies something that a user needs to perform their work.” (Parker, 2012) In our project of developing software for insurance company it was very important for us to address user and software requirements. Without the user and software requirements it was impossible for us to develop the required software for insurance company. The best way to know the user requirements was documentation. As we were using the agile model for software development rather than documentation at first, we arranged face to face interaction and meeting with clients to know their requirements which helped us to include their all requirements and develop quality software.
Developing the new system for such large company with inclusion of all its features and user requirements is very difficult project to do. When the project was first given to our company then first of all we decided to perform the feasibility study on this new system development and when the report of study was good then we dived into the software development process. To develop any system first we need to choose the best system development model and be clear about the reasons for choosing that specific model in this project. We analyzed the various system development models like Waterfall, Agile, Prototype, Spiral etc. After knowing the pros and cons of each model we gathered the overview from all the project members and decided to go with Agile model in this project. Then for the initial planning phase we went through the feasibility study report and hired the new required developers, technologies, software etc. As in the agile model we don’t have to do documentation and we can add new requirements from clients whenever we have to so after the proper planning of project, we moved toward the next step which is designing phase.
We designed the Data Flow Diagram and ER-Diagram for the system which helped the developer and any other project member to get overview of whole system and how it will work once it is completed and what are the user requirements from this system. We hired the top designer from our country to design the system layout using various technologies and after the completion of this step we moved toward the development phase. In the development phase we used top technologies and popular language for proper coding to make the software fast, reliable and accurate. We also used various technologies to provide security for the software using firewall and popular web hosting company. Different constraints were listed out such as costs and organizational policy. We also find out the reason behind developing a new system and problem that insurance company had in their old system. We went through a data collection process where we held workshop, formed groups, took an interview and asked questions to the head of the insurance company. We tried our best for the quality assurance of system and for this we used highly skilled developer, testing in each phase, proper documentation although it is not highly required in agile model. We also arranged face to face client interaction so that we can show them the ongoing process in system development and get quick feedback which helped us to increase the software quality.
After that for knowing the software requirements we prioritize the tasks and according to priority high prioritize tasks were done first and low prioritize later which helped us to trace software requirements. Although every development model says that we have to state the software requirements in the initial stage of development stage but we can also trace the software requirements throughout the software lifecycle. In software development models like Agile there is no proper client requirements documentation required so we can easily add new requirements whenever we want. Used model also helped us to find requirements as in agile model we can add requirements whenever clients ask for new requirements in software. Moreover, below I have tabulated this task with columns with the expected client requirement and actual output of the product: –
Expected Client Requirements
Actual Output
Memory Constraints adaptable with customer’s environment
Made system requirements adaptable with today’s technology i.e. 50 GB available space & Min processor speed (i.e. Pentium
4, 3.2 GHz or Power PC G5, 2.0 GHz)
Backup & Recovery of Clients data
All client’s data will be stored in center server and they can backup when necessary.
Separate accounts according to individual level
System available with 3 administrator account & various normal account for company customer.
Update & Maintenance
Agreement for updating system in 6 months and regular monitor for proper system functioning
Supported in any latest OS
Supports Operating system (i.e. Windows version higher than Windows XP, or Mac
OS X 10.3.8, Ubuntu version higher than
14)
High Security
Implemented strong coding methods, proper firewalls
Online Service
Can contact to company through online messages and customer service
Software Behavior Specification:
“A technique for software system behavior specification appropriate for use in designing systems with concurrency is presented. The technique is based upon a generalized ability to define events, or significant occurrences in a software system, and then indicate whatever constraints the designer might wish to see imposed upon the ordering or simultaneity of those events. The relationship of this technique to other behavior specification techniques is also discussed in software behavior specification. “Any piece of computer software, coded in some programming language, implicitly specifies the behavior which it will produce when run on a given computing system with a given set of input data. Such a program defined behavior specification.” (Wileden, 2015) It is the comprehensive description of the purpose and the environment of the software under the development phases. The software specification helps in meeting the requirement of the clients and makes the project better. The main purpose of software specification is to minimize the time and effort that is required by the developers to achieve the desired goals and also minimizes the cost of the development.
Importance of Software Behavior Specification In SDLC:
A software behavior specification is literally the conversation of a specific point. It’s difficult in this instance to avoid the circular reference. A project’s specifications consist of the body of information that should guide the project developers, engineers, and designers through the work of creating the software. A software behavior specification document describes how something is supposed to be done and describes the step by step working process of the software. A specifications document may list out all of the possible error states for a certain form, along with all of the error messages that should be displayed. The specifications may also describe the steps of any functional interaction, and the order in which they should be followed by the user. A requirements document, on the other hand, would state that the software must handle error states reasonably and effectively, and provide explicit feedback to the users. The specifications show how to meet this requirement. Specifications may take several forms. They can be a straightforward listing of functional attributes, they can be diagrams or schematics of functional relationships or flow logic, or they can occupy some middle ground. Software requirements specifications can also be in the form of prototypes, mockups, and models. Project specifications are much more important for determining the quality of the product. Every rule and functional relationship provide a test point. A disparity between the program and its specification is an error in the program if and only if the software requirement specification exists and is correct. A program that follows a terrible specification perfectly is terrible, not perfect. This is how software behavior specification is important and plays a vital role in the development of the software. Below I have provided two different software specifications methods: –
Flowchart
“A flowchart is a formalized graphic representation of a logic sequence, work or manufacturing process, organization chart, or similar formalized structure. The purpose of a flow chart is to provide people with a common language or reference point when dealing with a project or process. . Each step in the process is represented by a different symbol and contains a short description of the process step.” (nicholas, 2015) They are the methodology used to analyze, improve, document and manage a process or program. Flowcharts are helpful for collecting data about particular process, helping with decision making, measuring the performance of a process, tracking the process flow, highlighting important steps and elimination the unnecessary steps etc.
Flowcharts are commonly used in developing business plans, designing algorithms and determining troubleshooting steps. Many software programs are available to design flowcharts. There are various benefits of using flowcharts in software development. While developing our software for insurance company also we created flowcharts for the better way of communicating the logic of system to all concerned or involved. For example flowchart made the communication easier to all the people involved in system development as compared to actual program code because all of them like project managers, other staff weren’t aware of all programming techniques and languages. It helped us in effective analysis, with the help of flowchart problem can be analyse in more effective way therefore it reduces cost and wastage of time. It helped us in proper documentation as the program flowcharts serve as good program documentation which is needed for various purposes, making things more efficient. It also helped our development team for efficient coding & debugging. The flowchart acted as a guide while we were doing system analysis and program development and also in debugging process. While we have to do the maintenance in future it becomes easy with the help of flowchart and helps programmer to put efforts more efficiently on that part.
Pseudocode:
Pseudocode is an informal way of programming description that does not require any strict programming language syntax or underlying technology considerations. It is used for creating an outline or a rough draft of a program. Pseudocode summarizes a program’s flow, but excludes underlying details. System designers write pseudocode to ensure that programmers understand a software project’s requirements and align code accordingly. Pseudocode makes creating programs easier. Programs can be complex and long; preparation is the key. For years, flowcharts were used to map out programs before writing one line of code in a language. However, they were difficult to modify and with the advancement of programming languages, it was difficult to display all parts of a program with a flowchart. It is challenging to find a mistake without understanding the complete flow of a program. That is where pseudocode becomes more appealing.
Pseudocode is not an actual programming language. So it cannot be compiled into an executable program. It uses short terms or simple English language syntaxes to write code for programs before it is actually converted into a specific programming language. This is done to identify top level flow errors, and understand the programming data flows that the final program is going to use. This definitely helps save time during actual programming as conceptual errors have been already corrected. Firstly, program description and functionality is gathered and then pseudocode is used to create statements to achieve the required results for a program. Detailed pseudocode is inspected and verified by the designer’s team or programmers to match design specifications. Catching errors or wrong program flow at the pseudocode stage is beneficial for development as it is less costly than catching them later. Once the pseudocode is accepted by the team, it is rewritten using the vocabulary and syntax of a programming language. The purpose of using pseudocode is an efficient key principle of an algorithm. It is used in planning an algorithm with sketching out the structure of the program before the actual coding takes place.
Advantages of Pseudocode
-
Pseudocode is understood by the programmers of all types.
-
It enables the programmer to concentrate only on the algorithm part of the code development.
-
It cannot be compiled into an executable program. Example, Java code: if (i < 10) { i
++; } pseudocode :if i is less than 10, increment i by 1.
Below I have provided the pseudocode for the Insurance Company Software: –
•
Fill in forms
• Pay insurance fee
•
Client buys insurance from company
•
Insurance company accepts
-
Issue the receipt
-
Issue the insurance policy
•
The insured object suffers loss
•
The insured claims insurance
•
The insurance company investigates
-
Not covered
-
The insurance company refuse to compensate
•
The insurance company pays compensation
•
Renew Insurance
Finite State Machine:
“In general, a state machine is any device that stores the status of something at a given time and can operate on input to change the status and/or cause an action or output to take place for any given change. A computer is basically a state machine and each machine instruction is input that changes one or more states and may cause other actions to take place. Each computer’s data register stores a state. The read-only memory from which a boot program is loaded stores a state (the boot program itself is an initial state).” (Rouse, 2018) The operating system is itself a state and each application that runs begins with some initial state that may change as it begins to handle input. Thus, at any moment in time, a computer system can be seen as a very complex set of states and each program in it as a state machine. In practice, however, state machines are used to develop and describe specific device or program interactions.
A deterministic finite automaton (DFA) is described by a five-element tuple Q = a finite set of states
∑= a finite, nonempty input alphabet ∂ = a series of transition functions q₀ = the starting state
F= the set of accepting states or final states
Advantages of Finite State Machine
The advantages of Finite State Machine include the following.
-
Finite state machines are flexible
-
Easy to move from a significant abstract to a code execution
-
Low processor overhead
-
Easy determination of reachability of a state
Disadvantages of Finite State Machine
The disadvantages of the finite state machine include the following
-
The expected character of deterministic finite state machines can be not needed in some areas like computer games
-
The implementation of huge systems using FSM is hard for managing without any idea of design.
-
Not applicable for all domains
-
The orders of state conversions are inflexible.
(Anon., n.d.)
Extended Finite State Machine:
“In an extended finite state machine (EFSM) model, the transition can be expressed by an “if statement” consisting of a set of trigger conditions. If trigger conditions are all satisfied, the transition is fired, bringing the machine from the current state to the next state and performing the specified data operations.” (Vyatkin, 2015) Extended Finite State Machines provide a powerful model for the derivation of functional tests for software systems and protocols. Many EFSM based testing problems, such as mutation testing, fault diagnosis, and test derivation involve the derivation of input sequences that distinguish configurations of a given EFSM specification. a method is proposed for the derivation of a distinguishing sequence for two explicitly given or symbolically represented, possibly infinite, sets of EFSM configurations using a corresponding FSM abstraction that is derived based on finite sets of predicates and parameterized inputs. An abstraction function that maps configurations and transitions of the EFSM specification to corresponding abstract states and transitions of the abstraction FSM is proposed. Properties of the abstraction are established along with a discussion on a proper selection of the sets of predicates and parameterized inputs used while deriving an FSM abstraction. If no distinguishing sequence is found for the current FSM abstraction, then a refined abstraction is constructed by extending the sets of predicates and parameterized inputs.
The cycle behavior of an EFSM can be divided into three steps:
-
In E-block, evaluate all trigger conditions.
-
In FSM-block, compute the next state & the signals controlling A-block.
-
In A-block, perform the necessary data operations and data movements.
An EFSM is defined as a 7-tuple where:
-
S is a set of symbolic states
-
I is a set of input symbols
-
O is a set of output symbols
-
D is an n-dimensional linear space D1 *…. * Dn
-
F is a set of enabling functions Fi: D = {0, 1}
-
U is a set of update functions ui: D=D
-
T is a transition relation, T: S * F * I =S * U * O
Differentiate between a finite state machine (FSM) and an extended Finite State providing an application for both.
Extended Finite State Machine
(EFSM)
Finite state machine (FSM)
It is the composition of the model where the transaction of the system is expressed in the if statement consisting the set of the
It is the composition model that is implemented with the hardware or software that is used to simulated sequential logic and some
conditions that trigger the action of the system.
computer programs.
They are widely used in the computer science and software engineering especially in the field of the program analysis and testing.
They are used in the many fields like mathematics, artificial intelligence, games and linguistics.
According to the trigger of the condition, the transaction is fired and then bringing the machine to the next state and perform the operation.
They are simply used in the cases where the particular simple inputs can cause to change the state from one to another.
It is used in various devices and tool such as heater system, metro passageway, alarm, home garage, fax system, air conditioning system and temperature controller.
FSM can be used in a digital circuit that is built using logic device, logic controller and logic gates. They are used in video games and AI.
In software development, an EFSM can be deployed to model an object at a high level of abstraction such as the entire system, or a use case, or at a low level of abstraction, such as a software object
It can also be used to create the software applications like automated-based program, event drive FSM, state design pattern, etc.
Data Driven Software
In computer programming, data-driven programming is a programming paradigm in which the program statements describe the data to be matched and the processing required rather than defining a sequence of steps to be taken. Data driven software is one that automates process, problems and opportunities. In data driven software, data is the centric part of the architecture and all the remaining parts are designed around this (Norm, 2012) The application that is been created by the data driven approach are more user friendly, communicative and allows users to perform various of the tasks. The main application of the data driven software is it helps in the exploring of the data relationships, exporting or importing of the files, browsing and filtering large sets of data and interacting with other systems. The data driven software helps to establish patterns between operational and business activities. The decisions made by the data driven software is suitable and productive. Data driven application are the applications where application flow is governed by data it processes. Input data set can change the behavior of your application. Programming logic will remain same but it will be coded in such a way that input changes the way application behaves. These applications require lots of testing as it produces error when data issues are encountered.
Nowadays the use of data driven software is increasing as this type of software provides us the result based upon the provided facts. Along with the objectoriented design the data driven design has argued to lead to bad object-oriented design especially when dealing with the more abstract data. It is quite easy because the functionality in the data driven simply required to know the abstract data type of the variables it is working with. The traditional software of the insurance company is going to be replaced by the new system that contains a lot of the facilities along with the capturing With the use of data driven software all the difficulties and issues present due to the old traditional system can be eliminated completely and help to make reliable and rational decisions. Similarly, the availability of data driven testing help to enhance the reliability and effectiveness of the software. The data driven testing test methods, describes increased capability in identifying bugs, and can effectively ensure product quality with legitimate inputs that further assures thriving deployment. The data driven software automates processes, problems and opportunities and allows end to end optimization for the software where in necessary steps and process can be eliminated to optimize the performance and efficiency in any process. It also helps in the logistics storage and distribution that excel the performance of the software and ultimately enhance its effectiveness. It operates on diverse data from many multichannel data sources and seamlessly combines operational and analytic capabilities.
We can find out the statistics using the data driven software. For example, if we want to know about the IT industry scope in our country then we can use data driven software for finding results in this. This software relies upon the data and finds out the desired results for us based upon the available data. Another example of data driven software is telecom. When we call someone and talk to him for 1 hour then based upon the talk time data the result i.e. the bill is published. The data driven software only works when there is proper data available if not then this software doesn’t function properly. For the software to be reliable and effective it should always provide us the right decision if any software displays the wrong decisions or wrong message then that software can’t be called reliable. The data driven software relies upon the data and provides us the right decision only so in this way data driven software can improve the reliability and effectiveness of the software.
Conclusion
In this way I have completed the final part of my assignment by preparing the documentation which explains how user and software requirements have been addressed. In our project of developing software for insurance company it was very important for us to address user and software requirements. Without the user and software requirements it was impossible for us to develop the required software for insurance company. The best way to know the user requirements was documentation. Then I discussed about the software specification methods and recommended two software specification methods. A software behavior specification document describes how something is supposed to be done and describes the step by step working process of the software. A specifications document may list out all of the possible error states for a certain form, along with all of the error messages that should be displayed. Project Management Information System,then I differentiated about finite state machine and extended finite state machine and at last I provided justifications with example on how data driven software can improve the reliability and effectiveness of the software.
References
There are no sources in the current document.