SophonNexus: Extreme Programming

SophonNexus 团队账号 2023-11-19 22:27:06
Which course does this assignment belong toSoftware Engineering
Where are the requirements for this assignment?https://bbs.csdn.net/topics/617593156
Team NameSophonNexus
Project NamePixel Bank
The objective of this assignmentExtreme Programming

Catalog

  • I. About Project
  • Project Address
  • Commits Log
  • II. Functional Implementation
  • (1) User Login and Registration
  • (2) Scientific Calculator
  • (3) Interest Operations
  • III. Result
  • Welcome Interface
  • Login Interface
  • Registration Interface
  • Calculator Interface
  • Interest Rate Calculation Interface
  • Interest Rate Modify Interface
  • DEMO VIDEO
  • Frontend and Backend Integration Testing Video
  • Explanatory Video
  • IV. Project Division of Labor
  • V. Difficulties and Solutions
  • Team Issues
  • Personal Issues
  • Backend Issues
  • Frontend Issues
  • VI. PSP Table
  • Du Jiacheng 832102106
  • Peng Bo 832102128
  • Wu Gaoyuan 832102113
  • Chen Zhengyi 832102117
  • Li YuJie 832102107
  • Chen Yao 832102118
  • Chen Zhen 832102119
  • Zhang Hanlin 832102127
  • Xie Yanzhe 832102129
  • Cai Siyuan 832102130
  • Lin Zehui 832102121
  • Li Heng 832102108
  • Bu Chengyu 832102201
  • Li Zijun 832102110
  • Wang Ningfei 832102202

I. About Project

Project Address

Frontend Address: https://github.com/Warpshlczy/pixel-bank
Backend Adderss: https://github.com/473244238/pixel-bank

Commits Log

Frontend

img

Backend

img

II. Functional Implementation

(1) User Login and Registration

Registration Functionality: For the registration functionality, use a separate class to fetch information returned from the frontend registration. Check if the class is empty and if its fields are empty. Then, implement a secondary check in the Service layer to ensure data compliance, such as checking account length, password length, and the absence of special characters in the account. Encrypt the password using MD5 before saving it in the database. Deploy a monitoring system to track registration activities in real-time for prompt anomaly detection. Utilize analytical tools to understand user registration process dropout points and optimize accordingly.

Login Functionality: Perform basic validation, then search for the corresponding user in the database. Desensitize the user's information for security purposes. Record user logins using the request and generate a random UUID as the frontend token. This implementation allows for simultaneous multiple user logins and establishes a foundation for subsequent functionalities. If a user is not logged in, subsequent operations are restricted.

(2) Scientific Calculator

Save Calculation Results: Check for a logged-in user by verifying the presence of a token in the frontend request. If a token is present, use it to find the corresponding user and retrieve their ID. Check if the calculation content is not empty, and if not, save it based on the user ID, assigning a creation time.

Query Historical Records: Check for a logged-in user, retrieve the user ID using the request header and token, and then fetch the historical records associated with that ID.

(3) Interest Operations

Interest Calculation: Check for a logged-in state, use the 'type' to determine deposit/loan, map the received year to the corresponding double type, retrieve the corresponding interest rate from the database, and use a calculation utility class for computation.

Modify Interest Rate: Check for a logged-in state, use the returned 'type' to determine current deposit/fixed deposit/loan. For current deposits, modify the corresponding data using the 'type'; for others, modify based on the corresponding year and type.

Utility Classes:

  • Interest calculation utility
  • UUID generation utility

Configuration Classes:

  • Global exception configuration class
  • Custom exception configuration class
  • Unified Data Type for Responses{code:
    data:
    msg:
    description:
    }And used enumerations to create several status codes for errors in business functionalities.

Swagger Configuration:

  • Used for displaying API interfaces in the documentation.

III. Result

Welcome Interface

img

Login Interface

This interface is used for user login

img

Registration Interface

This interface is used for user registration

img

Calculator Interface

This interface is used for making calculation and it can read the calculation history

img

Interest Rate Calculation Interface

This interface is used for calculating the interest.

img

Interest Rate Modify Interface

This interface is used for modifying the interest.

img

DEMO VIDEO

Frontend and Backend Integration Testing Video

Explanatory Video

IV. Project Division of Labor

NameStudent IDWork DescriptionContribution
杜嘉铖 Du Jiacheng832102106Project management + Back-end development9%
彭博 Peng Bo832102128Back-end development11%
吴高源 Wu Gaoyuan832102113Back-end development9%
陈正一 Chen Zhengyi832102117Front-end development20%
李宇杰 Li YuJie832102107Back-end development20%
陈尧 Chen Yao832102118Back-end development3%
陈震 Chen Zhen832102119Back-end development3%
章汉林 Zhang Hanlin832102127Back-end development3%
谢彦喆 Xie Yanzhe832102129Testing and quality control3%
蔡思源 Cai Siyuan832102130Back-end development3%
林泽晖 Lin Zehui832102121Back-end development3%
李恒 Li Heng832102108Front-end development3%
卜承禹 Bu Chengyu832102201UI/UX design4%
李梓莙 Li Zijun832102110Front-end development3%
王宁菲 Wang Ningfei832102202Front-end development3%

V. Difficulties and Solutions

Team Issues

Team Collaboration and Communication Problems:

  • Challenge: Communication among team members is not smooth, which may lead to delayed information transmission.
  • Solution: Maintain good communication within the team by holding regular meetings and using communication tools for instant exchange. Foster an open communication culture, encouraging team members to share problems and solutions.

Version Control Conflicts:

  • Challenge: When multiple people collaborate, version control conflicts may occur frequently.
  • Solution: Use version control systems like Git, properly divide tasks to avoid simultaneous modifications to the same file. Perform frequent code merging and pulling to promptly resolve conflicts.

Branch Merge Conflicts Caused by Parallel Development:

  • Challenge: Multiple team members developing different modules simultaneously result in frequent conflicts during code merging.
  • Solution: Implement Git branch strategies, logically divide modules, use issue tracking to specify development requirements, and submit code through fork repositories and pull requests to reduce the likelihood of merge conflicts.

Personal Issues

Backend Issues

Du Jiacheng 832102106

Design front-end and back-end interfaces, use Swagger for interface interaction.

  • Challenge: 1. During the development process, there is ambiguity in the understanding of interface definitions between the front-end and back-end, leading to mismatched data transmission formats.
  1. Swagger depends on backend code and can only be generated after the backend code is finalized, making it difficult for the front-end and back-end to develop in sync.
  • Solution: Use ApiFox to explicitly define interfaces, create detailed API documentation, and ensure a consistent understanding of interfaces between the front-end and back-end. Conduct interface discussion meetings to resolve any unclear issues.

Peng Bo 832102128

Addressing cross-origin configuration and unauthorized request interception between the front-end and back-end.

  • Challenge: The front-end and back-end are deployed on different domains, leading to cross-origin request issues during interaction.
  • Solution: Configure CORS on the back-end to allow requests from the front-end domain, or use reverse proxy to deploy the front-end and back-end under the same domain.

Wu Gaoyuan 832102113

Function computing utility class writing.

  • Challenge: The methods lack sufficient validation of input parameters, which may result in invalid or illegal inputs.
  • Solution: Add parameter validation logic in the methods to ensure the legality of input parameters. Throw exceptions in case of invalid inputs.

Li YuJie 832102107

Write the core logic for the Controller, define request handling methods, and create methods in the Controller class to handle HTTP requests.

  • Challenge: Lack of familiarity with Spring Boot framework annotations leading to annotation misuse and frequent backend errors.
  • Solution: Learn Spring Boot annotations through blogs, online video platforms like Bilibili, and use annotations such as @RequestMapping, @GetMapping, @PostMapping to map HTTP requests to corresponding methods. These annotations allow you to specify URL paths, HTTP methods, and other information.

Chen Yao 832102118

Front-end and back-end state synchronization issue.

  • Challenge: Synchronization issues may arise between the front-end and back-end states, such as inconsistency in user login status.
  • Solution: Use tokens for user authentication to ensure synchronization of user states between the front-end and back-end. Implement route guards in the front-end to ensure that users are logged in when accessing pages that require authentication.

Chen Zhen 832102119

Login and registration, sensitive data exchange between front-end and back-end.

  • Challenge: Security issues related to user authentication and password encryption may be overlooked, leading to potential vulnerabilities.
  • Solution: Use JWT (JSON Web Token) to encrypt tokens, ensuring the security of user authentication and password storage.

Zhang Hanlin 832102127

Database table design

  • Challenge: The initial design of the interest rate table and loan interest rate table is not reasonable, and frequent changes in field types require manual coding for type conversion in the backend.
  • Solution: Conduct a careful database design at the beginning of the project, taking into account future data processing and changes.

Xie Yanzhe 832102129

Write test classes.

  • Challenge: Lack of experience in writing test classes, numerous bugs appear when manually conducting HTTP request tests.
  • Solution: Use mock technology to simulate requests and complete the writing of HTTP request test classes.

Cai Siyuan 832102130

Write global exception handling classes.

  • Challenge: During development, some interfaces may encounter errors, but it's challenging to locate the error position and the corresponding status of the request.
  • Solution: Use a global exception handler to intercept error messages. Also, encapsulate an exception information class, define codes and descriptions to provide clear error information, making it easy for the front-end and back-end to locate error positions.

Lin Zehui 832102121

Encapsulate the parameter passing between the front-end and back-end.

  • Challenge: The form of parameter passing between the front-end and back-end is uncertain, and the parameter validation logic is complex, with low encapsulation.
  • Solution: Encapsulate requests and response handling. When writing business logic in the processing methods, retrieve the request data through method parameters, such as path variables, request parameters, request bodies, etc. Then, execute the corresponding business logic and return the appropriate response. You can use the @ResponseBody annotation to automatically serialize the returned object into JSON format.

Frontend Issues

Chen Zhengyi 832102117

  • Challenge: Transforming a calculator implemented in native frontend HTML+CSS+JS into a Vue component and integrating it into a responsive single-page application.
  • Solution: Keep the basic JavaScript code unchanged. The key idea is to leverage Vue's two-way data binding for dynamic rendering. Place HTML tags, CSS, and JavaScript in their respective positions within a single Vue component, effectively reducing the overall code length.

Li Heng 832102108

  • Challenge: Addressing cross-origin issues and configuring a global URL using the Vue CLI.
  • Solution: Modify the vue.config.js configuration file and use proxy settings to handle cross-origin information for the base target path address and the global URL (i.e., '/api').

Bu Chengyu 832102201

  • Challenge: Achieving dynamic responsive interface design.
  • Solution: Introduce the Vuetify component library and utilize its grid system and size breakpoints to quickly adjust HTML elements to the browser interface based on screen size dynamically.

Li Zijun 832102110

  • Challenge: Determining user login status, handling route navigation, and managing request parameters (token).
  • Solution: Configure Axios to retrieve the token sent by the backend in the response header. Store the token in the browser's local storage for subsequent requests. This allows the backend to verify the login status. Upon successful user login, the route will automatically navigate to the relevant page. Requests without a token will be intercepted by route guards.

Wang Ningfei 832102202

  • Challenge: Unified management of frontend API requests.
  • Solution: Create a folder named "apis" to uniformly store API interfaces as functions. Register these functions within the global Vue object for convenient use in subsequent API calls.

VI. PSP Table

Du Jiacheng 832102106

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)450470
• Analysis6070
• Design Spec1020
• Design Review1020
• Coding Standard1020
• Design4050
• Coding170150
• Code Review5040
• Test100100
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum550570

Peng Bo 832102128

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)450470
• Analysis6070
• Design Spec1020
• Design Review1020
• Coding Standard1020
• Design4050
• Coding170150
• Code Review5040
• Test100100
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum550570

Wu Gaoyuan 832102113

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)450470
• Analysis6070
• Design Spec1020
• Design Review1020
• Coding Standard1020
• Design4050
• Coding170150
• Code Review5040
• Test100100
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum550570

Chen Zhengyi 832102117

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)800900
• Analysis6070
• Design Spec1020
• Design Review1020
• Coding Standard1020
• Design4050
• Coding270280
• Code Review100110
• Test300330
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum9001000

Li YuJie 832102107

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)800900
• Analysis6070
• Design Spec1020
• Design Review1020
• Coding Standard1020
• Design4050
• Coding270280
• Code Review100110
• Test300330
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum9001000

Chen Yao 832102118

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Chen Zhen 832102119

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Zhang Hanlin 832102127

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Xie Yanzhe 832102129

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Cai Siyuan 832102130

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Lin Zehui 832102121

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Li Heng 832102108

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Bu Chengyu 832102201

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Li Zijun 832102110

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280

Wang Ningfei 832102202

Personal Software Process StagesEstimated Time(minutes)Actual Time(minutes)
Planning(total)6060
• Estimate6060
Development(total)180180
• Analysis1010
• Design Spec1010
• Design Review1010
• Coding Standard1010
• Design4040
• Coding6060
• Code Review2020
• Test2020
Reporting(total)4040
• Test Repor1010
• Size Measurement1010
• Postmortem & Process Improvement Plan2020
Sum280280
...全文
60 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

172

社区成员

发帖
与我相关
我的任务
社区描述
梅努斯软件工程
软件工程 高校 福建省·福州市
社区管理员
  • LinQF39
  • Jcandc
  • 助教-陈锦辉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧