Sie sind auf Seite 1von 5

 Discuss functional and non-functional requirements of the system

Functional requirements

For student
1. Student is able to register for a course
2. Student is able to withdraw from a course
3. Student is able to enrol for a program
4. Student is able to log in and out of the course registration system

For system
1. System is able to display availability of course in a particular semester
2. System is able to check if student has enrolled in a program
3. System is able to display available program in the University
4. System is able to display availability of course based on regulations
5. System is able to display availability of course based on student program
6. System is able to check if student has registered to any course or program
7. System is able to alert administrator if student has fail to register to a course within the
specified duration
8. System must be able to display course schedule to student

Non-functional requirements

Availability
1. The system should be accessible all the time regardless of time
2. The system should not have unexpected downtime
3. The system should only have maintenance during low-intensity hours
4. The system should announce maintenance duration at least 48 hours in advance

User friendliness
1. The system user interface (UI) should be easy to understand
2. The system UI should be easy to use (not overly complex design)
3. The system should have a single login to access all functions
4. The system should have a consistent UI (design and layout of buttons should be same)
5. The system should have a descriptive UI (buttons and functions should have a descriptive
text)
6. The system should have a maximum of 3 clicks to reach any content

Accessibility
1. The system should be accessible by blind users
2. The system should be accessible by deaf users
3. They system should have large icons and text for the visually impaired

Security
1. The system should only allow students to change their own information and not others
2. The system should protect user’s privacy
3. The system shall prevent students from viewing other student information
4. The system should be able to detect and stop attacks that will compromise the system and
its data
 Suggest appropriate system development approach to be implemented for a similar
system to be developed in your company

An appropriate system development approach to be implemented in this scenario is Rapid


Application Development (RAD). This approach is based on an interactive framework type. It has few
key principles that would suit my company. For instance, having a fast development and delivery at a
relatively low cost. This would be beneficial for any small to medium size software development
organization. Additionally, it also attempts to break a project into smaller segments hence providing
more ease of change during the development lifecycle. This means that the approach foreshadows
that the system might change from its initial design and is prepared for it. This is crucial as most
system goes through changes in its lifecycle and is even more so for a small company as it provides
the ability to rapidly change the system design as demanded by clients. In a setting where the
project scope is focused, such that the objectives are well defined and narrow, this approach is
perfect.

Furthermore, the RAD approach also put a lot of emphasis on prototyping and active user
involvement throughout the system development. This would help smaller companies as their client
might not necessarily understand how the development process works so its best heavily involve
them in the process and periodically listen to their thoughts when testing the prototype. In many
circumstances such as these, a Joint Application Development (JAD) is usually included. This is where
clients are intensely involved in the system design whether through workshops or meetings. This
creates a more engaging relationship between the developers and clients as clients are seen gaining
more ownership of the system, whereas developers gain more satisfaction from delivering a system
that satisfies the client needs. However, it is worth noting that for such approach to work, the
developers or team members must be skilled in communicating in terms of business with the client.
It is useless to have the client join in every meeting or give their opinion in the prototypes if the
developers do not listen in the first place.

Next, this approach also put a lot of precedence on fulfilling business needs and less on
technological or engineering excellence. This is beneficial because in a small or medium size
company, the client typically care less about how the system is produce and more on when the
system is released or completed. Hence, this approach directly aligned with what client expects. In
short, it concentrates on essential system elements from a user perspective.

Finally, this methodology makes an operational version of the system available much faster than
other methods such as Waterfall, Incremental, or Spiral framework. Hence, to be able to deliver the
system faster means a more satisfied client and good for the business. Since it produces the system
much faster and the development is more business focus, usually this approach tends to produce
systems at lower costs and is a huge benefit for a small company.

https://www.cms.gov/Research-Statistics-Data-and-Systems/CMS-Information-
Technology/XLC/Downloads/SelectingDevelopmentApproach.pdf

 Discuss best practices of system development project

One of the best practices of system development project is choosing the appropriate development
lifecycle. This means using most modern based development methodology such as the spiral-based
model and avoiding traditional ones like the waterfall process. Other recommended methodologies
include eXtreme Programming (XP), IBM Global Services Method, and Rational Unified Process.
Documentation is also another important practice of system development. For developers, a reliable
documentation is always a must. The main goals of this are to achieve better development,
maintenance, and knowledge transfer to other developers. It means that developers do not need to
look through tens of thousands of lines of codes to figure out the framework of the system or chase
previous developers to question them about system designs that they may have already forgotten.
Successful documentation would make information easily accessible, help new users learn quickly,
and simplify the troubleshooting and support costs. Additionally, another form of code
documentation is leaving comment blocks in the source code of the system. Examples include
comments explaining the function of classes, how a specific algorithm works, or even possible errors
in the code.

Next, it is important to form clear and concise system requirements before the actual development
starts. This does not mean that the requirements need to be fixed or static throughout the
development lifecycle, but rather it is important for the team to understand what are the core
functionalities that need to be built and what the end goals are supposed to be. Quality
requirements are broken down into functional and non-functional requirements. Functional
requirements describe the various features that the final system would possess whereas non-
functional requirement describes the performance and characteristics of the final system. A good
way to document these requirements is by using Use Cases. It is crucial to gather these requirements
because they affect the system design, architecture, complexity, and performance.

System design is also crucial for the development cycle. One good principle is keeping the system
simple meaning not over designing to avoid unnecessary complexity problems in the future and ease
or maintenance or upgrade. A good practice is to perform Object-Oriented Analysis and designing
the system framework using Unified Modeling Language (UML). An object oriented focused design
would ensure good reusability of assets hence better productivity gains during the development
lifecycle or future. Designing the architecture with UML ensures better documentation and
understanding of how the system would operate. This is important for developers especially when
the system that is developed is massive.

Testing is an integral part of software development that is often overlooked or cutback when the
schedule gets too tight. However, this is crucial as it weeds out bugs or errors that could potentially
be a financial nightmare for organization or in some cases put people lives in danger. Testing should
be done proactively, meaning that the test cases are planned before coding starts and test cases are
developed while the application is designed and coded. Among the many different types of software
testing are acceptance testing, agile testing, API testing, automated testing, beta testing, black box
testing, big bang integration testing, graphical user interface (GUI) testing, and many more.

Quality and defects management is also often overlooked in a software development process but
critical for a system lifecycle. It is crucial to establish quality priorities and criteria for the system so
that the end product is quality software. For instance, the team must decide on what constitutes an
unacceptable system defect that would hinder the system deployment and what is simply a minor
bug that can be overlooked if time is not in favor. Usually, a defect tracking system is used that is
linked to the source control management for easier management of software quality.

https://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html
DFD level 0
Context sequence diagram

Das könnte Ihnen auch gefallen