At Advanced Higher you will be expected to analyse the purpose and functional requirements of a problem.
Purpose, Scope and Boundaries
Purpose: This is a general overview of what the software should do, what is its purpose?
Scope: This is a list of all the deliverables of the software upon completion. This list includes; proposed design, completed software, testing conducted and the results, and an evaluation report.
Boundaries: This is the used to define the limits of the program; what it can and can not do. It will also detail any assumptions made by the developers on the client's behalf regarding the requirements.
Feasibility Study
Feasibility study is conducted to investigate any issues regarding the development of the project and whether the developer should proceed with the project given the investigations outcome.
The feasibility study will look into the following areas;
Economic
Time
Legal
Technical
Economic Feasibility
Economic feasibility looks into whether the project would be economically viable for the company to proceed with. A Cost-Benefit-Analysis is a systematic process for calculating and comparing benefits and costs of a project.
Ultimately the company/developer will be conducting this analysis to determine whether the project is a sound investment and also to use as a basis to compare future projects.
Time Feasibility
This area looks at whether the project can be developed in a reasonable time and if the desired completion date is also reasonable.
Legal Feasibility
When developing software there are legal implication that can affect whether a project is legally feasible. The proposed software system must comply with current laws relevant to the country the software would operate in.
GDPR
Copyright Designs and Patents Act
Computer Misuse Act
Technical Feasibility
This area looks at whether the current hardware and software capabilities are suitable for the proposed project, and if acceptable performance and implementation be expected.
An example of technical feasibility study would be the rise of mobile phones along with the differing screen sizes/resolutions and hardware.
User Surveys
User surveys are done to establish the likely user base, and how the system is going to be used by that user base. The answers they provide will be used by the design team to assist them in the creation of the system(s).
Project Management
Project management is the process of planning and controlling the activities of a project to ensure that it is delivered on time, with the required features and within the budget available to the required quality.
Projects are different from the day-to-day business of an organisation - a project is a specific piece of work which is defined by what it attempts to achieve.
A project is usually judged to be successful if it achieves the objectives (normally according to some acceptance criteria) within an agreed timescale and budget.
Scheduling
Resourcing
GANTT Charts
Gantt charts are used to plot out the amount of time each stage might take up for a project.
UML
UML, short for Unified Modeling Language, is a standardized modeling language consisting of an integrated set of diagrams, developed to help system and software developers for specifying, visualizing, constructing, and documenting the artifacts of software systems, as well as for business modeling and other non-software systems.
We can use UML for both Software and Database systems.
UML Class Diagrams (Software)
UML Class Diagrams are used to show the classes of objects required for a system. The UML Class notation consists of 3 parts;
Class name
Class instance variables
Class methods
property
- address: String
- town: String
- bedrooms: Integer
- description: String
- houseValue: Integer
+ house()
+ setAddress()
+ getAddress()
+ updateBedrooms()
Looking at the UML diagram above, the class variables have a dash next to them - this indicates that these variables are private and should not be accessed directly. Instead they should only be accessed (retrieved, updated, edited etc) by the methods which are public as denoted by the plus symbol.
So in the example above, if a house in our program had a renovation whereby the owners added an extra bedroom, then to update that house' number of bedrooms we would have to use the method updateBedrooms(). This is called encapsulation.
Inheritance
Inheritance in object oriented programming means to inherit the properties from the super class and pass them into a sub-class. This sub-class is mostly the same as the super class, only it will have a few extra properties and/or methods of its own.
Polymorphism
Just like inheritance, polymorphism is done from a sub-class perspective. However, instead of adding extra properties and/or methods, we are instead making a change to the method inherited from the super class.
In the example above we are overriding the calculateWages() method to calculate the wage of a student differently to that of a regular employee. Since the student won't pay taxes we need a different calculation, but under the same method name.