Requirements Specification

PSP-HUT

http://www.hut.fi/~llauren/76115/documents/vm.html
Version 2.0
Last updated 31.10.1999

Revision History

Version 1.0 13.10.1999 Juha Itkonen New document
Version 2.0 3.11.1999 Juha Itkonen Updated and a lot of introductory text added to chapters 1 and 2.


Index

1. Introduction
2. Overview
3. Functions
4. External Interfaces
5. Non-functional Requirements
6. Quality Criteria

Glossary


1. Introduction

When will the software be ready? Though a common question, few software developers seem to know an answer to this, bearing notable correlation with reality. Early British computer scientist Douglas Hartree once said: "The time from now until the completion of the project tends to become constant." This answer however, is not satisfactory in the software industry these days, where workload and personnel asset management is critical.

The Personal Software Process (PSP) is a method for the software developer to estimate and keep track on the time, resources and efforts needed to develop a software. It is not a method for effectivating the software development, but rather a tool for the developer to estimate the required effort to plan and realize the software, to improve the estimating skills and to focus on the programmer's own bottlenecks, problems and issues, and perhaps through this improve on his/her programming skills.

A lot of the PSP effort goes into documenting the whole software development process, which can be a rather exhaustive job. The PSP-HUT system aims to ease some of the documenting load and lower the threshold for a software developer to use, begin to use or continue to use the PSP process as a tool for his or her development.  It is not a tool to keep track of the hours sat at work or for the management to monitor the programmers' activities. The PSP-HUT system is a tool for the individual to monitor his or her software development progress.

The PSP-HUT system is also a collaborative tool for users to work in groups, both in a working and educational environment. The user may compare his or her "PSP scoring" to the group's statistics (but never to any other individual) both in numerical and graphical terms. The groups have tools for communicating within the group, both real-time and asynchronously (i.e. chat and newsgroups) to share their thoughts, exchange ideas or discuss the group's tasks, the PSP or any other issues.

The PSP-HUT system is being developed by the PSP Hang-around Group (PSP-HAG) as a project for the one-year Software Project course (Tik-76.115) at the Helsinki University of Technology. The goal of the project is to build a PSP community server using Internet technology. One of the main goals of the system is to make learning and practicing the PSP as simple, easy and enjoyable as possible. Emphasis will be placed more on the usability of the core functions of the system than on the amount of features implemented.
 

2. Overview

The Personal Software Process (PSP) is a disciplined approach for teaching software engineers basic principles of software engineering, such as planning, time management, defect prevention, tracking, and removal. The PSP is a staged approach, in which new, more advanced practices are introduced only when the earlier ones have been applied for some time. The PSP has been shown to lead to drastic improvements in the engineer's ability to estimate and plan his own software development work, as well as produce higher quality products.

The PSP demands the practitioner to do quite a lot of measurements and data analysis, a process which is cumbersome to do manually. The PSP-HUT community server system is designed to allow the PSP student or practitioner to easily and efficiently input his data, and help him to get the necessary feedback with a minimum of overhead on his part.

The system is designed for professional software developers who will use it to collect their personal PSP data and analyze it. The system also provides a possibility to organize and maintain PSP courses in which students can learn by reading lessons and instructions and doing assignments following the PSP process and inputting their metrics data to the server.

There are several different ways to use the PSP-HUT system. For instance, the system could be used as an internal intranet service in some organization. Another scenario could be a PSP Service Provider using the PSP-HUT system to provide a public or restricted service for other organizations or individual professionals. In this scenario, the billing becomes an issue that must be taken into consideration. The third scenario could involve some educational use for example at universities.

2.1 The System Architecture

The system consists of a www server, a MESS metrics server and several client applications. The users use the system over public Internet, an extranet or an intranet. Standard Internet technologies are used and the system does not set any exceptional requirements for the network. The basic functionality for the user is provided using html and possibly Java applets. This means that a standard WWW browser is enough to use the system. However, to use the more advanced data collector components the user has to download and install these separately.

A picture of the high level architecture of the system

Picture 1: The high level architecture of the PSP-HUT system


The system specifies a well-defined data collection and retrieving interface. This interface is utilized by developing advanced tools for data collection. These tools can be stand-alone Java applications or plug-in components for development tools, for example. These data collector tools also allow off-line data collecting. The data collection interface can later (after this project) be used to extend and develop this system.

The Lucos research project at TAI Research Centre has developed a system for metrics visualization on the Web. This system is to be used for the graphical representation of the PSP data.
 

3. Functions

The system supports using of PSP both for studying it and for applying it in own SW engineering activities. Anyone interested in using PSP and having access to the system can register to be a PSP user. The system supports PSP user in practicing the original PSP (levels, practices and metrics) defined by SEI. In addition to the PSP defined by SEI, the system enables server, user and group specific tailoring of the PSP.

The system also supports group work, benchmarking and communicating between PSP users. For these purposes the system offers the possibility to form PSP user groups. The purpose of the groups can be, e.g., arranging PSP courses, discussing with similar kind of PSP users, working in a SW project applying PSP or having the possibility to create benchmarking data among similar types of PSP users. Each group has a group leader who is responsible for the administration of the group.

In addition, the system must have a root who is responsible for the administration of the whole system.

Related to benchmarking, the system must offer the possibility to deny the use of own PSP data for benchmarking purposes. To guarantee that PSP users can take the most out of PSP, i.e., can be totally honest with the data they input to the system, they have to be confident that the data is for their personal use only. That means that system must take care that nobody except the PSP user him/herself is able to see personal PSP data.

In this chapter, each of these functions is described as a more detailed individual requirement. The used format is described below.

  1. Priority
    Priority can be: MUST, USEFUL or NICE TO HAVE. All the functions that are defined to be must, belong to core functionality which proper implementation and usability are the most important quality criteria of the system. (See also chapter 6. Quality Criteria).
     
  2. Required permission level
    There are three (3) user roles: PSP user, group leader and root. These roles also define the permissions related to the user. Required permission level describes what kind of role the user must at least have to be able to perform the operation. This basically means that a group leader can do everything that a PSP user can and the root can do everything that group leaders and PSP users can.
     
  3. Additional information
    This part can give some more detailed information about the functionality

3.1. Register to the system as a PSP user

Priority: MUST
Required permission level: none
Additional information: When person registers to the system as a PSP user, certain basic user information is attached to the user. This basic user information enables:

  1. identification of the user
  2. using the system for studying PSP
  3. using the system for implementing PSP in own software engineering activities
  4. profiling the collected PSP data for benchmarking and statistical purposes by user information
  5. user specific default values for PSP activities and collected data

Based on these requirements the basic user information can include:

  1. name
  2. user ID
  3. password
  4. PSP capability (e.g. not used PSP, PSP level 0..3, capability to teach PSP)
  5. user specific defaults for PSP activities and collected data. These kind of defaults can include:
    1. desired PSP level or desired PSP practices of each PSP level
    2. PSP data scale (e.g. hour, minutes)
    3. PSP data usage for benchmarking and statistical purposes: accepted / declined (MUST REQUIREMENT!)
    The PSP user can change these defaults when creating own PSP work. Joining a group may require using group specific settings instead of user specific defaults at least in all those PSP works that belong to the group. See also group specific settings in Requirement 3.4.

3.2. Update and delete own basic PSP user data

Priority: MUST
Required permission level: PSP user
Additional information: none

3.3. Create new, update & delete basic PSP user data

Priority: MUST
Required permission level: Root
Additional information: none

3.4. Request the creation of new group and group leadership

Priority: USEFUL
Required permission level: PSP user
Additional information: Request for new group requires certain basic group information. This information enables:

  1. creation of the new group by the Root
  2. identification of the group
  3. profiling the collected PSP data for benchmarking and statistical purposes by group information
  4. group specific default values for PSP activities and collected data

Based on these requirements the basic group information can include:

  1. Name
  2. Group ID
  3. Type of the group:
  4. Openness of the group:
  5. Group Leader
  6. Group specific settings for PSP activities and collected data. These kind of settings can include:

3.5. Create new group and group leadership

Priority: USEFUL
Required permission level: Root
Additional information: none

3.6. Update basic group information

Priority: USEFUL
Required permission level: Group Leader
Additional information: Updating includes permission to add additional group leaders and remove group leaders. Removing of group leader is possible only if there is more than one group leader in the group.

3.7. Update and delete basic group information

Priority: USEFUL
Required permission level: Root
Additional information: none

3.8. Register to an open group

Priority: USEFUL
Required permission level: PSP user
Additional information: none

3.9. Request the group membership of a closed group

Priority: USEFUL
Required permission level: PSP user
Additional information: none

3.10. Register PSP user to be a member of the group

Priority: USEFUL
Required permission level: Group Leader
Additional information: none

3.11. Resign from a group

Priority: USEFUL
Required permission level: PSP user
Additional information: none

3.12. Resign PSP user from a group

Priority: USEFUL
Required permission level: Group Leader
Additional information: none

3.13. Create course structure and contents (including exercises and instructions)

Priority: MUST
Required permission level: PSP user, with capability to teach PSP
Additional information: Idea is that there is group of PSP teachers that are allowed to create official PSP courses and exercises which group leaders can use in course type groups.

3.14. Communicate by message board

Priority: USEFUL
Required permission level: PSP user
Additional information: none

3.15. Communicate by mail

Priority: USEFUL
Required permission level: PSP user
Additional information: none

3.16. Communicate by chat

Priority: NICE TO HAVE
Required permission level: PSP user
Additional information: none

3.17. Create own PSP work

Priority: MUST
Required permission level: PSP user
Additional information: PSP work is either a course exercise or an own SW engineering job (i.e. not related to any particular group) or a SW engineering job implemented in a group. PSP work is created by identification that attaches the work at least to the PSP user and possibly also to a certain group. For profiling and statistical purposes the PSP work can also be identified as exercise or actual job.

3.18. Find own PSP work

Priority: MUST
Required permission level: PSP user
Additional information: PSP user must be able to find the PSP work with the existing PSP data that she/he has already recorded for the job to enable the data to be recorded either in small pieces or all at once.

3.19. Update and delete the basic information of own PSP work

Priority: MUST
Required permission level: PSP user
Additional information: none

3.20. Insert, update and delete PSP data related to a PSP work

Priority: MUST
Required permission level: PSP user
Additional information: none

3.21. View PSP data (based on own permissions)

Priority: MUST
Required permission level: PSP user
Additional information: PSP user's basic right is permission to view his/her own personal PSP data both in raw data form and in visual form. In addition PSP user can view profiled statistical PSP data from those groups that he/she participates. Similar profiled statistic type data can be viewed also about all PSP users and groups that have accepted the use of their PSP data in benchmarking and statistical purposes. Group leader of a course type group has also right to see personal PSP data of group members including only the PSP data that has been produced in the course.

3.22. Print PSP data (based on own permissions)

Priority: MUST
Required permission level: PSP user
Additional information: Permissions are same that of viewing the PSP data, see Requirement 3.21.

3.23. Print PSP data template

Priority: MUST
Required permission level: PSP user
Additional information: This possibility is available to enable manual data gathering.

3.24. Return PSP course exercise

Priority: MUST
Required permission level: PSP user
Additional information: none

3.25. System dumps PSP data

Priority: MUST
Required permission level: not applicable
Additional information: none

3.26. System makes needed calculations to produce metrics defined by PSP

Priority: MUST
Required permission level: not applicable
Additional information: none

4. External Interfaces

The main user interface is a WWW browser. The browser interface is used for registration and for keeping the user and group properties up to date. All the actual PSP functionality is available through the browser as well, but the browser interface supports only form-based insertion of data. The preferred way to collect data is to use separate data collector programs.

The interface used to submit the data collected by the data collectors is implemented using XML (Extensible Markup Language) files. The specification of the contents of the XML file is designed in a way that makes it possible for various data sources to submit data to the system. This approach hides the details of different data sources from the receiver and on the other hand makes it easy to use the collected data for some other purposes as well. It also makes it very convenient to add new data collectors to the system later without making any changes to the already implemented parts of the system. The XML files are transferred to the server over an HTTP connection. It is easy and relatively simple to implement also other, alternative ways to transfer the data, for example FTP, e-mail, or Java RMI.

The interface to the database is based on LUCOS Server Protocol Specification version 1.14. If a need arises, some features may be added to the protocol with help from the LUCOS development team.
 

5. Non-functional Requirements

5.1 Usability

See also the chapter 6. Quality Criteria.

5.1.1 Usability

Good usability is one of the most important requirements of the system. The main objectives of usability are:

  1. to provide good support for implementing PSP in everyday work
  2. to make using of PSP simple, easy and enjoyable
  3. to support different types of users: inexperienced and professionals

5.1.2 Quality of the User Documentation

The system is provided with good quality user documentation which is complete, correct, unambiguous, consistent, modifiable and written in English.

5.2 Maintainability / Expandability

See also the chapter 6. Quality Criteria.

5.2.1 Quality of the Technical Documentation

The system is provided with good quality technical documentation which is complete, correct, unambiguous, consistent, modifiable and written in English.

5.2.2 Well Defined Interfaces

The system interfaces support the adding of new components and features. Interfaces are carefully defined and clearly documented. If and only if there is time, some specification work could be done to define the alternatives for charging interface.

5.2.3 Clear Architecture

System architecture is clearly structured and forms a core which is easy to expand in future versions.

5.3 Scalability

5.3.1 The system is scalable.

5.4 Performance / Response time

See also the chapter 6. Quality Criteria.

5.4.1 Short Response Time

Response time of data input and calculation operations is less than 1.0 s in undisturbed 100 Mbit/s local area network with unloaded server. (The delay caused by the components provided by customer (Visualization applet ViCa and measurement database Mess) is excluded.)

5.4.2 Performance Under Load

Response time must not increase exponentially in relation to the increase of the amount of the users when amount of users stays under 1000. (The delay caused by the components provided by customer (Visualization applet ViCa and measurement database Mess) is excluded.)

5.3 Environment

5.3.1 Client Software

Client software works both with Netscape and MS Internet Explorer (version 4.0 or bigger) browsers.

5.3.2 Server Software

Server works both in Linux and Windows NT 4.0 SP5 environments.

6. Quality Criteria

Most important things the customer wants from the system are:

It is clearly indicated by the customer that it is far more important to develop good architectural basis for the system with well functioning core features than try to implement all possible nice to have functionalities with only partial solutions. This is always considered carefully in case new functionalities are required by the customer after this requirement specification has been approved.

From these expectations following issues have been prioritized to form the quality criteria of the project success.

6.1. Priority 1

Well functioning core features: All the requirements prioritized as MUST from the chapter 3. Functions.

6.1.1. How is it achieved

The SW development process and practices are carefully planned before starting the work in each phase of the project. Features are developed based on principles of incremental SW development to ensure that the most critical ones get implemented first. Quality of design and implementation is assured by reviews and careful testing of each increment. For more information about SW development practices see Project Plan.

6.1.2. How is it verified

The correct functioning of the core features is verified and results reported with properly planned and executed functional testing.
 

6.2. Priority 2

Good usability (including the requirements related to response time): Requirement 5.1.1  Requirement 5.4.

6.2.1. How is it achieved

Usability is achieved by putting effort on designing the user interface, prototyping and producing clear user instructions. In inspections there is always one inspector which has assigned role to check the material from the usability point of view.

6.2.2. How is it verified

Usability is verified and results reported with properly planned and executed usability testing, heuristic evaluation and cognitive inspection.
 

6.3. Priority 3

Clear Architecture: Requirement 5.2.3

6.3.1. How is it achieved

This is achieved by putting effort on thorough architectural design based on KISS (Keep It Simple, Stupid) heuristic and producing clear technical documentation. Close co-operation with the instructors is needed. In inspections there is always one inspector which has assigned role to check the material from the KISS point of view.

6.3.2. How is it verified

The architectural structure of the system is verified subjectively by the customer/instructors already during the early architectural design phases. Architecture is reviewed together with the customer to get acceptance and verification that selected architectural solutions fulfill the quality criteria.
 

6.4. Priority 4

Well Defined Interfaces and expandability (makes the adding of new features easy): Requirement 5.2.2

6.4.1. How is it achieved

This is achieved by putting effort on thorough interface design and well defined interface documentation. Close co-operation with the instructors is needed. In inspections there is always one inspector which has assigned role to check the material from the interface point of view.

6.4.2. How is it verified

The interfaces of the system are verified subjectively by the customer/instructors already during the early interface design phases. Interface design is reviewed together with the customer to get acceptance and verification that interface design fulfills the quality criteria.
 

6.5. Priority 5

Quality of the Technical Documentation: Requirement 5.2.1

6.5.1. How is it achieved

This is achieved by putting effort on technical documentation, coding standards and proper commenting of the code. A style guide for programming and technical documentation for this project is created before the design phase starts. In inspections there is always one inspector which has assigned role to check the material from the mentioned documentation criteria point of view (complete, correct, unambiguous, consistent, modifiable and written in English. Consistency with parent document(s) is always inspected.

6.5.2. How is it verified

The style guide and the technical documentation is reviewed together with the customer/instructors to get acceptance and verification that technical documentation fulfills the quality criteria.
 

6.6 Priority 6

Quality of the User Documentation: Requirement 5.1.2

The reason for quality of user instructions being only in priority 6 is to tackle the usability challenge rather with appropriate and simple user interface than with documentation.

6.6.1. How is it achieved

This is achieved by putting effort on technical documentation. In inspections there is always one inspector which has assigned role to check the material from the mentioned documentation criteria point of view.

6.6.2. How is the requirement verified

The quality of user instructions is verified and reported with functional and usability testing.
 

6.7. Priority 7

Well functioning useful features: All the requirements prioritized as USEFUL from the chapter 3. Functions.

6.7.1. How is it achieved

The SW development process and practices are carefully planned before starting the work in each phase of the project. Features are developed based on principles of incremental SW development to ensure that the most critical ones get implemented first. Quality of design and implementation is assured by reviews and careful testing of each increment. For more information about SW development practices see Project Plan.

6.7.2. How is it verified

The correct functioning of the features is verified and results reported with properly planned and executed functional testing.
 

6.8. Priority 8

Well functioning nice to have features: All the requirements prioritized as NICE TO HAVE from the chapter 3. Functions.

6.8.1. How is it achieved

The SW development process and practices are carefully planned before starting the work in each phase of the project. Features are developed based on principles of incremental SW development to ensure that the most critical ones get implemented first. Quality of design and implementation is assured by reviews and careful testing of each increment. For more information about SW development practices see Project Plan.

6.8.2. How is it verified

The correct functioning of the features is verified and results reported with properly planned and executed functional testing.