Software Architecture, Assignments of Software Project Management

It is the reference about the online cab booking system.

Typology: Assignments

2019/2020

Uploaded on 06/13/2020

Wanderer2020
Wanderer2020 🇳🇵

4.5

(2)

1 document

1 / 19

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Birla Institute of Technology and Science, Pilani
SOFTWARE ARCHITECTURE
Assignment
Section: C
Team No: 5
Topic: Online Cab Booking System
SL.No Team Members Bits-email
1Leenu Thomas [email protected]
2Ajeemsha Vn [email protected]
4Filna Rodrigues [email protected]
6Archana Das [email protected]
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Partial preview of the text

Download Software Architecture and more Assignments Software Project Management in PDF only on Docsity!

Birla Institute of Technology and Science, Pilani

SOFTWARE ARCHITECTURE

Assignment

Section: C

Team No: 5

Topic: Online Cab Booking System

SL.No Team Members Bits-email 1 Leenu^ Thomas^ [email protected] 2 Ajeemsha Vn [email protected] 3 Ajith R^ [email protected] 4 Filna Rodrigues^ [email protected] 5 Amal Baby^ [email protected] 6 Archana Das [email protected]

Online Cab Booking System

Architectural Pattern for Online Cab Booking system:

We have chosen the above Architectural pattern, which will help others to understand the working flow of the online cab booking system. This pattern clearly showed how the User will book the cab, how to sign up, how to provide the pickup and drop locations, etc. New User will register his/her number in the application. Then, login to application. Make sure the user provided both pick-up and drop location. The system will estimate the arriving time, destination arrival time and the rate to pay for the cab. If the User is eligible for any offers or promotions, it will apply. Nearby cabs will be searched by the system and if any cabs are available, the system will displays the Cab/drivers details to the User. Payment can be through Paytm or card or cash. The cab will drop you in the destination location and End of the Trip. This is the brief understanding will get from the architectural pattern given above.

2) Modifiability: Modifiability is the degree of ease at which changes can be made to a system, and the flexibility with which the system adapts to such changes. It supports the communication between software architects and software engineers since it captures the earliest and most important design decisions. Modification will happens as per the requirement change and deployments. In Online cab booking system, the modifiability required are Application developers, testers and admins. If the requirements changed and the code changes affects the existing functionality, and the testers couldn’t find it. Then, the application is a fault/failure. Tactics for Modifiability : 3) Performance: Performance is about time and the software system’s ability to meet timing requirements. When events occur – interrupts, messages, requests from users or other systems, or clock events marking the passage of time – the system, or some element of the

system, must respond to them in time. Characterizing the events that can occur (and when they can occur) and the system or element’s time-based response to those events is the essence is discussing performance. The goal of performance tactics is to generate a response to an event arriving at the system within some time constraint. The event can be single or a stream and is the trigger for a request to perform computation. It can be the arrival of a message, the expiration of a time interval, the detection of a significant change of state in the system's environment, and so forth. The system processes the events and generates a response. Performance tactics control the time within which a response is generated. In Online cab booking system, the modifiability required are Customers, network connections and other external systems. When the Customer is available and try to connect to cab booking system, if the network is not available at that time, it can be failure. Tactics for Performance:

drivers/employees to view the shift details, batch details, passenger contact details, cab routes, billing details, working status, etc. This project intends to introduce more user- friendly approach in the various activities such as record updating, maintenance, and searching. This system will works between the passengers and the cab drivers and used for benefiting the passengers and to provide detailed information regarding Cab routes and cab driver details.

Learning goals of the research topic:

Online Cab Booking system is an online portal through which customers can view available cabs, register the cabs, view profile and book cabs. A computer based management system is designed to handle the entire primary Information required to manage the whole data. Separate database is maintained to handle all the details required for the correct statement calculation and generations. This project intends to introduce more user-friendly approach in the various activities such as record updating, maintenance, and searching. Researching on this project, we have gone through Software Architecture, all the Quality attributes, all types of diagrams, tactics, etc. An architecture pattern allows us to define a guide for the ‘architecture’ of a software system, making it scalable, maintainable and testable. Differing from design patterns, these have a major abstraction level. First, you need to understand what’s the meaning of every component of this architecture and this will helpful for getting concepts from the next patterns that are going to be mention on this article.  Model : contains models of business logic, i.e. the classes that will model the solution for the problem and objective of the application. For example, if you are developing an app for a library, the ‘Book’, ‘Author’ and ‘PublishingHouse’ classes should be in this package. All of them should be independent from any Android component.  View : is an interface that is going to be implemented by all the UI views, that’s it. Activities, Fragments, Adapters, Dialogs, etc. All of these are in this package and are responsible on displaying the data to the user.  Controller : is responsible for ‘listening’ user inputs and update the model and the view. Normally, the view and controller are involved in the same java class, I mean, an activity accomplish the functions as a view and controller at the same time because it is listening (for example) user clicks and shows answers for them. The best idea is to have the controller in a separate class. However, this relationship makes the activity hard to test because the Testability best practice is not being used and we have user interactions and view responses at the same class. Moreover, the view and the controller can both access to the Model, which is not a good practice at the end because you have the model relationship with more than one class and this is not (too) scalable.

Some of the quality attributes: Availability, Modifiability, Performance, Security, Testability, Usability. Availability: Availability is concerned with system failure and its associated consequences. A system failure occurs when the system no longer delivers a service consistent with its specification. Such a failure is observable by the system's users—either humans or other systems. A failure occurs when the system no longer delivers a service that is consistent with its specification; this failure is observable by the system's users. A fault (or combination of faults) has the potential to cause a failure. Recall also that recovery or repair is an important aspect of availability. Fundamentally, availability is about minimizing service outage time by mitigating faults. Modifiability: Modifiability is the degree of ease at which changes can be made to a system, and the flexibility with which the system adapts to such changes. It supports the communication between software architects and software engineers since it captures the earliest and most important design decisions. Modification will happens as per the requirement change and deployments. Performance: Performance is about timing. Events (interrupts, messages, requests from users, or the passage of time) occur, and the system must respond to them. One of the things that make performance complicated is the number of event sources and arrival patterns. A performance scenario begins with a request for some service arriving at the system. Satisfying the request requires resources to be consumed. While this is happening the system may be simultaneously servicing other requests. An arrival pattern for events may be characterized as either periodic or stochastic. Performance is to generate a response to an event arriving at the system within some time constraint. The event can be single or a stream and is the trigger for a request to perform computation. It can be the arrival of a message, the expiration of a time interval, the detection of a significant change of state in the system's environment, and so forth. The system processes the events and generates a response. Performance tactics control the time within which a response is generated. Security: Security is a measure of the system's ability to resist unauthorized usage while still providing its services to legitimate users. Security can be characterized as a system providing nonrepudiation, confidentiality, integrity, assurance, availability, and auditing. a) Nonrepudiation is the property that a transaction (access to or modification of data or services) cannot be denied by any of the parties to it.

Summary:

Software Architecture Architecture serves as a blueprint for a system. It provides an abstraction to manage the system complexity and establish a communication and coordination mechanism among components.  It defines a structured solution to meet all the technical and operational requirements, while optimizing the common quality attributes like performance and security.  Further, it involves a set of significant decisions about the organization related to software development and each of these decisions can have a considerable impact on quality, maintainability, performance, and the overall success of the final product. These decisions comprise of − o Selection of structural elements and their interfaces by which the system is composed. o Behaviour as specified in collaborations among those elements. o Composition of these structural and behavioral elements into large subsystem. o Architectural decisions align with business objectives. o Architectural styles guide the organization. The primary goal of the architecture is to identify requirements that affect the structure of the application. A well-laid architecture reduces the business risks associated with building a technical solution and builds a bridge between business and technical requirements. Some of the other goals are as follows −  Expose the structure of the system, but hide its implementation details.  Realize all the use-cases and scenarios.  Try to address the requirements of various stakeholders.  Handle both functional and quality requirements.

 Reduce the goal of ownership and improve the organization’s market position.  Improve quality and functionality offered by the system.  Improve external confidence in either the organization or system. Quality attribute requirements such as those for performance, security, modifiability, reliability, and usability have a significant influence on the software architecture of a system. Architects need to understand their designs in terms of quality attributes. For example, they need to understand whether they will achieve deadlines in real time systems, what kind of modifications are supported by their design and how the system will respond in the event of a failure. There are large and thriving attribute communities that study various quality attributes but they each have their own language and sets of concepts. However, architects tend to think in terms of architectural patterns. What the architect needs is a characterization of architectural patterns in terms of factors that affect the various quality attributes so that a software design can be understood in terms of those quality attributes. Quality is a measure of excellence or the state of being free from deficiencies or defects. Quality attributes are the system properties that are separate from the functionality of the system. Implementing quality attributes makes it easier to differentiate a good system from a bad one. Attributes are overall factors that affect runtime behavior, system design, and user experience. They can be classified as – Static Quality Attributes Reflect the structure of a system and organization, directly related to architecture, design, and source code. They are invisible to end-user, but affect the development and maintenance cost, e.g.: modularity, testability, maintainability, etc. Dynamic Quality Attributes Reflect the behaviour of the system during its execution. They are directly related to system’s architecture, design, source code, configuration, deployment parameters, environment, and platform. They are visible to the end-user and exist at runtime, e.g. throughput, robustness, scalability, etc. Quality attributes types (ISO/IEC FCD 25010 diagram) To consider the types of quality attributes, we can use a diagram from ISO 25010:

communicating and exchanging information with other external systems written and run by external parties. Manageability Defines how easy it is for system administrators to manage the application. Reliability Ability of a system to remain operational over time. Scalability Ability of a system to either handle the load increase without impacting the performance of the system or the ability to be readily enlarged. Security Capability of a system to prevent malicious or accidental actions outside of the designed usages. Performance Indication of the responsiveness of a system to execute any action within a given time interval. Availability Defines the proportion of time that the system is functional and working. It can be measured as a percentage of the total system downtime over a predefined period. System Qualities Supportability Ability of the system to provide information helpful for identifying and resolving issues when it fails to work correctly. Testability Measure of how easy it is to create test criteria for the system and its components. User Qualities Usability Defines how well the application meets

the requirements of the user and consumer by being intuitive. Architecture Quality Correctness Accountability for satisfying all the requirements of the system. Non-runtime Quality Portability Ability of the system to run under different computing environment. Integrality Ability to make separately developed components of the system work correctly together. Modifiability Ease with which each software system can accommodate changes to its software. Business quality attributes Cost and schedule Cost of the system with respect to time to market, expected project lifetime & utilization of legacy. Marketability Use of system with respect to market competition. Performance shows the response of the system to performing certain actions for a certain period. There are two ways how to measure performance:  Latency: Time spent on responding to an event  Channel capacity. The number of events that occur at a certain point in time. In practice, the possible performance indicators include, for example:  Average/maximum number of system users per time unit.  Average page load time.  Average method execution time.

 Availability.  Planned downtime.  The time needed to update the software, and so on.  Availability is often expressed in the number of nines after the comma that is nines of availability (hours / minutes / seconds):  2 9’s (99%) = up to 87.6h / 5256.0m / 315360.0 seconds of downtime per year.  3 9’s (99.9%) = up to 8.76h / 525.6m / 31536.0 seconds of downtime per year.  4 9’s (99.99%) = up to 0.876h / 52.559999999999995m / 3153.6 seconds of downtime per year.  5 9’s (99.999%) = up to 0.0876h / 5.256m / 315.36 seconds of downtime per year.  6 9’s (99.9999%) = up to 0.00876h / 0.5256000000000001m / 31.536 seconds of downtime per year.  7 9’s (99.99999%) = up to 8.76E-4h / 0.05256m / 3.1536 seconds of downtime per year. Security is responsible for the ability of the system to reduce the likelihood of malicious or accidental actions as well as the possibility of theft or loss of information. Several measures are used to protect systems: authentication, encryption, audit, and others. Examples of this attribute in the work of the system are:  The ability of the system to detect DDoS attacks and respond to them.  Restrictions of user access by authentication/authorization.  Prevention of SQL injection.  Encryption of passwords and content.  Secure connection. Maintainability is the ability of the system to support changes. Changes can be related to new business requirements or the correction of old errors and affect system components or separate methods. Also, maintainability affects the time needed to restore the system after a failure. Excessive dependencies between components have a very negative effect on maintainability. In programming, there is a notion of anti-pattern spaghetti code, which means excessive coherence in the code. In architecture, there is no such thing, but architecture is very close to programming in this sense. It is because of the maintainability attribute that such concepts as separation of responsibility, microservice architectures, and modularity have appeared. At the same time, this attribute affects not only development processes but also management processes (for example, splitting teams into product-related parts). Modifiability determines how many common changes need to be made to the system to make changes to each item. The ideal is the case where each change affects only one element.

Testability shows how well the system allows performing tests, according to predefined criteria. In addition to testing performance, testability makes it possible to effectively divide the system into subsystems. The main indicators for this attribute are:  Percentage of coverage with modular, integration, or unit tests.  The final list of required test environments as well as the final list of used approaches to testing (manual/automatic, regression, integration, etc.). Scalability is the ability of the system to handle load increases without decreasing performance, or the possibility to rapidly increase the load. There are two ways to improve scalability:  Vertical : To increase, we add more resources, such as memory, disks, or processors into one system.  Horizontal : We increase the number of computing units and divide the load. The key indicators for measuring this attribute are:  If the system allows for horizontal scaling.  The time needed to increase scaling, in seconds.  Scaling limitations: the number of servers or the network capacity.  Possibility to scale: the increase in the number of transactions or the amount of content. And this is only a small part of the indicators which you need to follow when designing. Scalability is one of the most essential attributes, no matter what is the project’s stage. Reusability is a chance of using a component or system in other components/systems with small or no change. Segregation of responsibilities, modularization, decreasing of copy-paste are all about reusability. Copying code, or worse, using different components for the same result in different modules, is one of the biggest problems of reusability. Supportability is the ability of the system to provide useful information for identifying and solving problems. The main issues in ensuring supportability can be addressed with the following means:  No diagnosis: How the activity and performance of the system are controlled. It includes various types of logging.  No tools for troubleshooting: This includes backups, various systems for creating snapshots of the system, and tools for auditing the system. When the system fails, it is always more pleasant to wait for an automatic restart than to solve the issue manually.  No health checking: This includes a variety of systems for measuring compilation time, deployment time, database size, or mobile application size.

Conclusion

The development of this project took efforts to understand how Cab Booking systems work in order to facilitate their daily businesses. Information Technology plays a vital role not only in a particular field, it provides various kinds of solutions and services to the various problems prevailing in many fields. Cabs exploits information technology at the maximum extent. It uses the information technology in an efficient way for providing better passenger services. Moreover it helped us to understand more on software architecture and its various quality attributes and related tactics on it. Also it reminded us, how Software Architecture plays a vital role in day to day life.