---
title: Hill ⛰️ System Requirements (Functions and Features)
tags: Documents
---
Hill ⛰️ System Requirements
===
| Members | ID | Name |
| -------- | -------- | -------- |
||M10705336|吳佳欣|
||M10805822|David Pratama Lays|
||M10805506|謝政廷|
---
[TOC]
# Purposes of Hill ⛰️
The 2-tier desktop application is an offline software which is made specifically for our staffs. The purpose of this application is:
- Provide help for customers who want to use our service without the internet or via telephone call. This will help users who do not have access to internet and are not familiar enough with using internet to still be able trade their used electronics.
- Help our staffs to deal with users who have some problems with using our service.
- Maintaining our database and applications so we can give convenient buy and sell service for used electronics.
Meanwhile, the 3-tier web application is an online software that users can access through the internet. The purpose of this application is:
- Providing online platform which is free to use and can be accessed easily that allows users to trade their used electronics.
- By connecting through the internet, users can have wider market, from anywhere all over the world, to trade their used electronics. Sellers could sell their items faster and buyers could find many available options for their desired items.
- Not only abundant options and fast, this software will also provide a safe and secure trading experience for our users. We also care about our user's privacy and we ensure that we never sells our users data!
- Giving opportunities for users to interact each other through discussion and sharing news about technology products by using our Forum Feature. Users can also can share their experience of using our website in this feature.
Nevertheless, both 2-tier and 3-tier application are made for providing an excellent platform and service for users so they can trade used electronic products. By making both applications, we hope to achieve our vision which is “Extending Life Cycle of Electronics”.
---
# Definition of Roles
In this project, we have made several roles where each roles has its own responsibilities and benefits. This is to ensure clear division of responsibilities so that the applications can provide a great service.
## Administrator
By being Administrators, they have permission to change all items (delete items), USER (besides Privacy information), NEWS, and add or delete another staff to be Administrator or regular staff.
## Staff
Our staffs is just like Administrator, but they cannot change other staff's information. Other than that, they have the same permission as Administrator which let them to be the right arm of Administrators to maintain the applications.
## USER
USER can just use our website, add item to earn money, or just explore items as usual for free! USER can also using Forum Feature if they want to share some news of electronics. Creating account is the most beneficial thing to do so you could use our website more conveniently!
| Roles Permission | Administrator | Staff | USER |
| :---------------------: | :-----------: | :---: | :--: |
| Add/change/delete Staff | ✔ | ✘ | ✘ |
| Add/change/delete USER | ✔ | ✔ | ✘ |
| Add/change/delete Items | ✔ | ✔ | ✔ |
| Add/change/delete NEWS | ✔ | ✔ | ✔ |
---
# All Hill ⛰️'s Functions and Priorities
## Function Points Analysis
The first thing that should be done in Function Point Analysis is calculating the total Unjusted Function Points (UFP). To calculate UFP, we must determine whether the components of the functions are:
* External Input (EI)
* External Output (EO)
* External Inquiries (EQ)
* Internal Logic Files (ILF)
* External Interface Files (EIF)
After determining the functions component, UFP can be calculated with the help of these tables below:
| EI(File Types Referenced) | 1-4 (DET) | 5-15 (DET) | 15~ (DET) |
| :------: | :--------: | :--------: | :--------: |
| ~2 | Low(3) | Low(3) | Average(4) |
| 2 | Low(3) | Average(4) | High(6) |
| 2~ | Average(4) | High(6) | High(6) |
| EO(File Types Referenced) | 1-5 (DET) | 6-19 (DET) | 19~ (DET) |
| :------: | :--------: | :--------: | :--------: |
| ~2 | Low(4) | Low(4) | Average(5) |
| 2 or 3 | Low(4) | Average(5) | High(7) |
| 3~ | Average(5) | High(7) | High(7) |
| EQ(File Types Referenced) | 1-5 (DET) | 6-19 (DET) | 19~ (DET) |
| :------: | :--------: | :--------: | :--------: |
| ~2 | Low(3) | Low(3) | Average(4) |
| 2 or 3 | Low(3) | Average(4) | High(6) |
| 3~ | Average(4) | High(6) | High(6) |
| ILF(Record Element Types) | 1-19 (DET) | 20-50 (DET) | 51~ (DET) |
| :------: | :--------: | :--------: | :--------: |
| 1 | Low(7) | Low(7) | Average(10) |
| 2~5 | Low(7) | Average(10) | High(15) |
| 6~ | Average(10) | High(15) | High(15) |
| EIF(Record Element Types) | 1-19 (DET) | 20-50 (DET) | 51~ (DET)|
| :------: | :--------: | :--------: | :--------: |
| 1 | Low(5) | Low(5) | Average(7) |
| 2~5 | Low(5) | Average(7) | High(10) |
| 6~ | Average(7) | High(10) | High(10) |
---
**Below are our list of functions with their UFP and priority for all of our applications.**
### 2-Tier Application with "Core Functions"
| Role | Process | Type | DET | FTR | RET | Complexity | UFP | Priority |
| :---: | :-------: | :--: | :-: | :-: | :-: | :--------: | :-: | :------: |
| Application | Storing staff | ILF | 12 | | 1 | Low | 7 | 1 |
| Admin | Review staff | EQ | 13 | 1 | | Low | 3 | 1 |
| Admin | Add staff | EI | 13 | 1 | | Low | 3 | 1 |
| Admin | Change staff | EI | 13 | 1 | | Low | 3 | 1 |
| Admin | Delete staff | EI | 13 | 1 | | Low | 3 | 1 |
| Staff | Login | EQ | 4 | 1 | | Low | 3 | 1 |
| Staff | Logout | EI | 1 | 1 | | Low | 3 | 1 |
| Staff | Search | EQ | 27 | 2 | | High | 6 | 1 |
| Application | Storing USER information | ILF | 4 | | 1 | Low | 7 | 1 |
| Staff | Review USER information | EQ | 5 | 1 | | Low | 3 | 1 |
| Staff | Add USER information | EI | 5 | 1 | | Low | 3 | 1 |
| Staff | Change USER information | EI | 5 | 1 | | Low | 3 | 1 |
| Staff | Delete USER information | EI | 5 | 1 | | Low | 3 | 1 |
| Application | Storing Payment information | EIF | 4 | | 2 | Low | 5 | 1 |
| Staff | Review Payment information | EQ | 5 | 1 | | Low | 3 | 1 |
| Staff | Change Payment information | EI | 5 | 1 | | Low | 3 | 1 |
| Staff | Delete Payment information | EI | 5 | 1 | | Low | 3 | 1 |
| Staff | Review Delivery information | EQ | 7 | 1 | | Low | 3 | 1 |
| | | | | | | | | |
### 2-Tier Application with "All Functions"
For 2-Tier Application with all functions, it includes all the core functions above and there are some additional features like:
| Role | Process | Type | DET | FTR | RET | Complexity | UFP | Priority |
| :--: | :-------: | :--: | :-: | :-: | :-: | :--------: | :-: | :------: |
| Staff | Review item | EQ | 24 | 1 | | Low | 3 | 2 |
| Staff | Delete item | EI | 24 | 2 | | High | 6 | 2 |
| Staff | Review USER | EQ | 10 | 1 | | Low | 3 | 2 |
| Staff | Delete USER | EI | 10 | 1 | | Low | 3 | 2 |
| Application | Storing NEWS | EIF | 5 | | 3 | Low | 3 | 3 |
| Staff | Add NEWS | EI | 6 | 1 | | Low | 3 | 3 |
| Staff | Review NEWS | EQ | 6 | 1 | | Low | 3 | 3 |
| Staff | Delete NEWS | EI | 6 | 1 | | High | 6 | 3 |
| Application | Storing Reported Bugs | ILF | 3 | | 1 | Low | 7 | 4 |
| Staff | Review Reported Bugs | EQ | 4 | 1 | | Low | 3 | 4 |
| Staff | Delete Reported Bugs | EI | 4 | 1 | | Low | 3 | 4 |
| | | | | | | | | |
### 3-Tier Application with "Core Functions"
| Role | Process | Type | DET | FTR | RET | Complexity | UFP | Priority |
| :--: | :-------: | :--: | :-: | :-: | :-: | :--------: | :-: | :------: |
| Application | Storing USER | ILF | 6 | | 1 | Low | 7 | 1 |
| USER | Review USER | EQ | 7 | 1 | | Low | 3 | 1 |
| USER | Sign in | EI | 7 | 1 | | Low | 3 | 1 |
| USER | Delete USER | EI | 7 | 1 | | Low | 3 | 1 |
| USER | Login | EQ | 4 | 1 | | Low | 3 | 1 |
| USER | Logout | EQ | 4 | 1 | | Low | 3 | 1 |
| Application | Storing item | ILF | 23 | | 1 | Low | 7 | 1 |
| USER | Review item | EQ | 24 | 1 | | Average | 4 | 1 |
| USER | Add items | EI | 24 | 1 | | Average | 4 | 1 |
| USER | Change items | EI | 24 | 1 | | Average | 4 | 1 |
| USER | Delete item | EI | 24 | 1 | | Average | 4 | 1 |
| Application | Storing Payment information | EIF | 4 | | 2 | Low | 5 | 1 |
| USER | Review Payment information | EQ | 5 | 1 | | Low | 3 | 1 |
| USER | Add Payment information | EI | 5 | 1 | | Low | 3 | 1 |
| USER | Change Payment information | EI | 5 | 1 | | Low | 3 | 1 |
| USER | Delete Payment information | EI | 5 | 1 | | Low | 3 | 1 |
| USER | Review Delivery information | EQ | 7 | 1 | | Low | 3 | 1 |
### 3-Tier Application with "All Functions"
For 3-Tier Application with all functions, it includes all the core functions above and there are some additional features like:
| Role | Process | Type | DET | FTR | RET | Complexity | UFP | Priority |
| :--: | :-------: | :--: | :-: | :-: | :-: | :--------: | :-: | :------: |
| Application | Storing Cart | EIF | 25 | | 2 | Average | 7 | 2 |
| USER | Review Cart | EQ | 26 | 1 | | High | 6 | 2 |
| USER | Add Cart | EI | 26 | 1 | | Average | 4 | 2 |
| USER | Delete Cart | EI | 25 | 1 | | Average | 4 | 2 |
| Application | Storing Trend | EIF | 3 | | 2 | Low | 5 | 2 |
| Application | Review Trend | EQ | 3 | 1 | | Low | 3 | 2 |
| Application | Drawing Trend | EO | 3 | 1 | | Low | 3 | 2 |
| Application | Storing USER Score | EIF | 2 | | 1 | Low | 5 | 2 |
| USER | Review USER Score | EQ | 3 | 1 | | Low | 3 | 2 |
| USER | Add USER Score | EI | 3 | 1 | | Low | 3 | 2 |
| USER | Change USER Score | EI | 3 | 1 | | Low | 3 | 2 |
| USER | Delete USER Score | EI | 3 | 1 | | Low | 3 | 2 |
| Application | Storing Chat | EIF | 3 | | 1 | Low | 5 | 2 |
| Application | Display Chat Notify | EO | 2 | 1 | | Low | 4 | 2 |
| USER | Chat Review | EQ | 4 | 1 | | Low | 3 | 2 |
| USER | Chat to USER | EI | 4 | 1 | | Low | 4 | 2 |
| Application | Storing NEWS | EIF | 5 | | 3 | Low | 3 | 3 |
| USER | Review NEWS | EQ | 6 | 1 | | Low | 3 | 3 |
| USER | Add NEWS | EI | 6 | 1 | | Low | 3 | 3 |
| USER | Change NEWS | EI | 6 | 1 | | Low | 3 | 3 |
| USER | Delete NEWS | EI | 6 | 1 | | Low | 3 | 3 |
| Application | Storing Reported Bugs | ILF | 3 | | 1 | Low | 7 | 4 |
| USER | Review Reported Bugs | EQ | 4 | 1 | | Low | 3 | 4 |
| USER | Add Report Bugs | EI | 4 | 1 | | Low | 3 | 4 |
| USER | Change Report Bugs | EI | 4 | 1 | | Low | 3 | 4 |
| USER | Delete Report Bugs | Ei | 4 | 1 | | Low | 3 | 4 |
---
### General System Characteristics (GSC) Components
After finished calculating the UFP, the next step is calculating the Value Adjustment Factors (VAF) for both 2-tier and 3-tier applications. VAF is calculated based on the system's characteristics. Below are the characteristics that influence the value of VAF. For each charatecristics, we put a score between 0 - 5.
| | General System Characteristic |
| :-: | :------: |
| 1 | Data communications |
| 2 | Distributed data processing |
| 3 | Performance |
| 4 | Heavily used configuration |
| 5 | Transaction rate |
| 6 | On-Line data entry |
| 7 | End-user efficiency |
| 8 | On-Line update |
| 9 | Complex processing |
| 10 | Reusability |
| 11 | Installation ease |
| 12 | Operational ease |
| 13 | Multiple sites |
| 14 | Facilitate change |
After scoring our software characteristics, VAF is simply calculated using this formula:
$$VAF=[0.65 + (\sum_{n=1}^{14} GSC Score/ 100)]$$
Below are our applications VAF and final Total Functions Points
### VAF for 2-Tier Application
| GSC Number | Scoring |
| :-----------: | :--------: |
| 1 | 3 |
| 2 | 3 |
| 3 | 3 |
| 4 | 1 |
| 5 | 4 |
| 6 | 0 |
| 7 | 4 |
| 8 | 2 |
| 9 | 2 |
| 10 | 3 |
| 11 | 0 |
| 12 | 4 |
| 13 | 3 |
| 14 | 3 |
##### 2-Tier "Core Functions"
$$FP=VAF\times UFP$$
$$67=(0.65+0.35)\times 67$$
##### 2-Tier "All Functions"
$$FP=VAF\times UFP$$
$$110=(0.65+0.35)\times 110$$
### VAF for 3-Tier Application
| GSC Number | Scoring |
| :-----------: | :--------: |
| 1 | 3 |
| 2 | 3 |
| 3 | 1 |
| 4 | 1 |
| 5 | 5 |
| 6 | 2 |
| 7 | 4 |
| 8 | 4 |
| 9 | 2 |
| 10 | 3 |
| 11 | 1 |
| 12 | 4 |
| 13 | 3 |
| 14 | 3 |
##### 3-Tier "Core Functions"
$$FP=VAF\times UFP$$
$$64.5=(0.65+0.39)\times 62$$
##### 3-Tier "All Functions"
$$FP=VAF\times UFP$$
$$167.4=(0.65+0.39)\times 162$$
---
# Input and Output of functions
Below is the more detailed functions list for both 2-tier and 3-tier applications. For each functions, we defined its input and output so the purpose for those functions becoming clear and it will make us easier to make those functions later on.
## For 2-Tier Application
### ROLE: Application
| Function | Input | Output |
| :------: | :---: | :----: |
| Storing staff | Staff profile/ Enter button | Success/fail |
| Storing USER information | USER profile/ Enter button | Success/fail |
| Storing Payment information | Payment information/ Enter button | Success/fail |
| Storing NEWS | Title/ Name/ Date/ Content/ Source/ Enter button | Success/fail |
| Storing Reported Bugs | Title/ Bugs detail/ Enter button | Success/fail |
### ROLE: Admin
| Function | Input | Output |
| :------: | :---: | :----: |
| Review staff | Account ID/ Enter button | Staff information |
| Add staff | Staff information/ Add button | Success/fail |
| Change staff | Staff information/ Change button | Success/fail |
| Delete staff | Staff information/ Delete button | Success/fail |
### ROLE: Staff
| Function | Input | Output |
| :------: | :---: | :----: |
| Login | Account ID/ Password / Verification code/ Enter button | Account status |
| Logout | Logout button | Account status |
| Search | Price/ Category/ Distance/ Enter button | Product detail/ Comment window |
| Review USER information | Account ID/ Enter button | USER information |
| Add USER information | Name/ Account ID/ Address/ Phone number/ Add button | Success/fail |
| Change USER information | Name/ Account ID/ Address/ Phone number/ Change button | Success/fail |
| Delete USER information | Name/ Account ID/ Address/ Phone number/ Delete button | Success/fail |
| Review Payment information | Payment information button | Payment information |
| Add Payment information | Bank account/ Credit card/ Address/ Phone number/ Enter button | Success/fail |
| Change Payment information | Bank account/ Credit card/ Address/ Phone number/ Change button | Success/fail |
| Delete Payment information | Bank account/ Credit card/ Address/ Phone number/ Delete button | Success/fail |
| Review Delivery information | Order number/ Enter button | Delivery information |
| Review item | Item ID/ Enter button | Item detail |
| Delete item | Item detail/ Delete button | Success/fail |
| Review USER | Account ID/ Enter button | USER profile |
| Delete USER | USER profile/ Delete button | Success/fail |
| Add NEWS | Title/ Name/ Date/ Content/ Source/ Add button | Success/fail |
| Review NEWS | Title/ Enter button | NEWS information |
| Delete NEWS | NEWS information/ Delete button | Success/fail |
| Review Reported Bugs | Title/ Bugs detail/ Enter button | Bugs information |
| Delete Reported Bugs | Bugs information/ Delete button | Success/fail |
## For 3-Tier Application
### ROLE: Application
| Function | Input | Output |
| :------: | :---: | :----: |
| Storing USER | USER profile/ Enter button | Success/fail |
| Storing item | Item information/ Enter button | Success/fail |
| Storing Payment information | Payment information/ Enter button | Success/fail |
| Storing Cart | Cart information/ Enter button | Success/fail |
| Storing Trend | Trend information/ Enter button | Success/fail |
| Review Trend | Trend title/ Enter button | Trend information |
| Drawing Trend | Trend information/ Enter button | Trend |
| Storing USER Score | Score/ Comment/ Enter button | Success/fail |
| Storing Chat | Account ID/Dialogue/ Enter button | Success/fail |
| Display Chat Notify | | Account ID/ Dialogue |
| Storing NEWS | Title/ Name/ Date/ Content/ Source/ Enter button | Success/fail |
| Storing Reported Bugs | Title/ Bugs detail/ Enter button | Success/fail |
### ROLE: USER
| Function | Input | Output |
| :------: | :---: | :----: |
| Review USER | Account ID/ Enter button | USER profile |
| Add USER | USER profile/ Add button | Success/fail |
| Delete USER | USER profile/ Delete button | Success/fail |
| Login | Account ID/ Password / Verification code/ Enter button | Account status |
| Logout | Logout button | Account status |
| Review item | Item ID/ Enter button | Item detail |
| Add items | Item detail/ Add button | Success/fail |
| Change items | Item detail/ Change button | Success/fail |
| Delete item | Item ID/ Delete button | Success/fail |
| Review Payment information | Payment information button | Payment information |
| Add Payment information | Bank account/ Credit card/ Address/ Phone number/ Enter button | Success/fail |
| Change Payment information | Bank account/ Credit card/ Address/ Phone number/ Change button | Success/fail |
| Delete Payment information | Bank account/ Credit card/ Address/ Phone number/ Delete button | Success/fail |
| Review Delivery information | Order number/ Enter button | Delivery information |
| Review Cart | Cart button | Cart information |
| Add Cart | Item ID/ Add button | Success/fail |
| Delete Cart | Item ID/ Delete button | Success/fail |
| Review USER Score | Score button | USER score |
| Add USER Score | Score/ Comment/ Add button | Success/fail |
| Change USER Score | Score/ Comment/ Change button | Success/fail |
| Delete USER Score | Score/ Comment/ Delete button | Success/fail |
| Chat Review | Account ID/Chat button | Chat window |
| Chat to USER | Account ID/Dialogue/ Enter button | Success/fail |
| Review NEWS | Title/ Enter button | NEWS information |
| Add NEWS | Title/ Name/ Date/ Content/ Source/ Add button | Success/fail |
| Change NEWS | NEWS information/ Change button | NEWS information |
| Delete NEWS | NEWS information/ Delete button | Success/fail |
| Review Reported Bugs | Title/ Bugs detail/ Enter button | Bugs information |
| Add Report Bugs | Title/ Bugs detail/ Add button | Bugs information |
| Change Report Bugs | Bugs information/ Change button | Success/fail |
| Delete Report Bugs | Bugs information/ Delete button | Success/fail |
---
# Effort and Schedule
After doing Function Point Analysis for all the software, the next step is to do estimation for effort and schedule. There are 2 methods that are being used: Schedule Tables and Jones's First Order Formula and Schedule-Effort Equation
## 1. Schedule Tables
This method uses the number of lines of code for estimating both effort and schedule for a project. First thing that we should do is calculation the lines of code of our software. This can be done by using Table below:

In this project, we are using C++ language. Number lines of code then can be obtained by multiplying the Function Points with 50. Table below shows lines of code for our software:
| Software | Function Points | Lines of Code |
| :--------: | :--------: | :--------: |
| 2-tier core functions | 67 | 3350 |
| 2-tier all functions | 110 | 5500 |
| 3-tier core functions | 64.5 | 3225 |
| 3-tier all functions | 167.4 | 8370 |
After we finished calculating the lines of code, we can estimate how many efforts and how much time we need to finish our project. There are 3 schedule tables which are inside Lesson 4 (Scheduling): Shortest Possible, Efficient, and Nominal Table.
The estimation from those table is shown below:
| Software | Shortest Schedule (month) | Shortest Effort (man-month)| Efficient Schedule (month) |
| :--------: | :--------: | :--------: |:------:|
| 2-tier core functions | 4 | 5 | 5 |
| 2-tier all functions | 4 | 5 | 5 |
| 3-tier core functions | 4 | 5 | 5 |
| 3-tier all functions | 4 | 5 | 5 |
| Software | Efficient Effort (man-month) | Nominal Schedule (month) | Nominal Effort (man-month) |
| :--------: | :--------: | :--------: |:------:|
| 2-tier core functions | 5 | 6 | 9 |
| 2-tier all functions | 5 | 6 | 9 |
| 3-tier core functions | 5 | 6 | 9 |
| 3-tier all functions | 5 | 6 | 9 |
For all software, the estimated schedule and effort are the same because the lines of code of all software are less than 10,000 lines of code. Although there are 3 kinds of different estimation, in our opinion, the Nominal one is the accurate estimation for our project. The reason is because our team do not have any experience in making business software before and there may be some slight changes in our requirements. According to those conditions, Nominal Table will present more accurate data than the other tables.
---
## 2. Jones's First Order Formula and Schedule-Effort Equation
This method uses Function Points to estimate schedule and effort needed for the project. First, we estimate the schedule using Jones's First Order Formula.
$$Schedule(months) = [Function Points]^{power}$$

Since our product is a business software and we do not have any experience about software (Worst in Class), the power value in that formula will be 0.46.
After finish calculating the schedule, we use Schedule-Effort Equation to calculate the effort needed. The equation can be seen as below:
$$Optimal Schedule = 3\times Effort^\frac13$$
After using both equations above, we obtained the estimation for our software as:
| Software | Function Points| Schedule (Months)|Effort (man-month) |
| :--------: | :--------: | :--------: |:--------:|
| 2-tier core functions |67 | 6.918| 12.264 |
| 2-tier all functions | 110 |8.690 | 24.308 |
| 3-tier core functions | 64.5 | 6.798 | 11.637 |
| 3-tier all functions | 167.4 | 10.542 | 43.393 |
To increase accuracy of the estimation, the estimation above need to be multiplied by optimistic and pessimistic range multiplier. The multiplier can be seen in Table below:

For this project, we are already in "Requirements Spesification Phase". After multiplying with those factors, the final estimation is shown on Table below:
| Software | Optimistic Schedule (month)| Pessimistic Schedule (month)|Optimistic Effort (man-month) |Pessimistic Effort (man-month) |
| :--------: | :--------: | :--------: |:--------:|:--------:|
| 2-tier core functions | 5.880 | 7.956 | 8.217 |18.395 |
| 2-tier all functions | 7.387 | 9.994|16.287 |36.463 |
| 3-tier core functions | 5.779 | 7.818 | 7.797 |17.455|
| 3-tier all functions | 8.961 | 12.123 | 29.073 |65.089|
---
## Conclusion
We can see that the results from those 2 methods are quite different. In our opinion, the second method (Jones's First Order and Schedule-Effort Equation) is more accurate than the first method because our project conditions is not fully the same with the conditions of using Nominal Table for estimation. For using Nominal Table, the programmers still have to have some experience and familiarities of developing software. It is also said that the worker is from top 50%. In our project, we do not have any kind of programming big software before thus the Table is not quite accurate. So, the **final estimation** of our software is:
* For 2-tier core functios:
* Schedule: between 5.88 - 5.648 months
* Effort : between 8.217 - 18.395 man-month
* For 2-tier all functios:
* Schedule: between 7.387 - 10.863 months
* Effort : between 16.287 - 36.463 man-month
* For 3-tier core functios:
* Schedule: between 5.779 - 8.498 months
* Effort : between 7.797 - 17.455 man-month
* For 3-tier all functios:
* Schedule: between 8.961 - 13.178 months
* Effort : between 29.073 - 65.089 man-month
---
# Life-Cycle of Hill ⛰️
After estimating how much effort and time needed for our project, we will now identify the life cycle that are suitable to be used for our project.
There are 2 possible life cycle models that suitable to be used in this project: Evolutionary Delivery and Design to Schedule
### Evolutionary Delivery
Figure below shows the life cycle of our project if we use this model:

We think that this models is suitable for our project because of several reasons:
- Since the time for this project is limited, delivering the core functions of our project is the most important thing to do first. Based on that reasoning, we choose this model since it emphasis on delivering the core functions first. After that, we can deliver other version which include new features or feedback from users until the time is running out. Since we already separating our system's core functions from all functions list (as mentioned above), we think that this model is suitable for our project.
- Another advantage for this model is it allows a degree of midcourse change. After deliver a version, if we think that the software still need to be improved, we could deliver newer version of the software. We think that this advantage will really beneficial for our projects. That is because we did not have much time in making the software concept / proposal. We predict that the functions list above may be incompleted or wrong so they need to be improved later on in the middle of this project
### Design to Schedule
This is another model that we think is suitable for our project. Figure below shows the life cycle of our project if we use this model:

The reason we choose this model is similar with the previous model. This model prioritizes finishing the highest priority features first. If we still have time, we can start finishing the less important features of our software.
---
## Conclusion
In conclusion, we use the combination of those 2 life cycle models as our project life cycle. Figure below shows our project life cycle:

The main basis of this hybrid life cycle model is Design to Schedule life cycle model. The main reason is because Design to Schedule model is an excellent model to be used when time is main constrain of the project. But, since our requirements is slightly unclear, we combine that model with Evolutionary Delivery Model since it is excellent for software which requirement is not really clear (because this model accomodates changes in the middle of work).
---
# Appendix
https://alvinalexander.com/FunctionPoints/FunctionPoints.shtml
http://www.syscom.com.tw/ePaper_Content_EPArticledetail.aspx?id=62&EPID=156&j=3&HeaderName=CMMI%E8%88%87%E8%BB%9F%E9%AB%94%E5%B7%A5&fbclid=IwAR0dvavsUXIUlsxT5J_i2Ub23gjGvPVgBaEGMxCRCfhotbSdAPckGXplasU