Software Development
The Two Approaches to Software
Development
Agile Approach – The Agile
Approach is a flexible and
collaborative way of working
on projects.
A common feature of this
approach is Iteration; where
when obstacles or problems
are encountered, it’s good to go back to a prior step, and work through the
process again.
✔ A benefit to this is producing working software early in the project, and
getting feedback from users.
✔ Another benefit is that Agile provides frequent and close co-operation
between developers and users.
✘ A drawback from this is that there is a lack of documentation. This is
because it’s less prioritized.
✘ Projects can become everlasting, because there’s no clear end to it.
Waterfall Approach – The Waterfall Approach is a more formal and less
flexible way of working on projects.
Stages should not commence until the previous stage has been reviewed,
and documented.
✔ Requirements are clearly and accurately stated. They remain
unchanged.
✔ It has a clear structure with well-defined goals for each phase.
✘ There are no consideration for error correction.
✘ When design flaws are discovered, the process is started from scratch.
(ouch.)
The Software Development Process
The Software Development Process is important because it:
- Improves software
quality, by increasing
the potential that the
project will meet the
user requirements,
while reducing risk of errors.
- Provides a structured approach, helping to reduce complexity.
Investigate
- Involves identifying and fully analysing the nature of the problem that the
software is expected to solve.
Plan
- Involves planning what to do and how.
- Estimates the amount of time required to do the work is made for each
task.
- Project staffing is considered, and a project management software is
used to create plans, and ensure everything stays on track.
Design
- Involves planning how the software will work and look.
- Methods like Top-Down Design, and Modular Design are used.
o Top-Down Design starts with the main system, and breaks it down
into smaller units. Each unit is broken down until each aspect is
manageable.
o Modular Design sets a ‘module’ for each task, which a certain team
works on. (E.g. for a Car, modules such as Engine, Brakes, Body etc.
are all designed independently of each other!)
- A prototype is created, enabling the developer and members of the
project team to get feedback from users at a very early stage.
What is a prototype? A prototype is an early version or model of a
product. It is built to test a concept or a process in advance and to get
feedback from users.
- Flowcharts are created, allowing to represent the flow of operations of
the system.
At each stage of the design process, the interaction of the system and the
user should be considered, and the user themselves should be involved.
User Centred Design
User Centred Design gives top priority to the needs of the user. Since the
software is used by people, it is important they can use it as effectively as
possible.
User Experience (UX)
The User Experience refers to the experience of users when interfacing with
a product such as software. This can include perception, preferences,
emotions, and other factors, before, during, and after use.
User Interface (UI)
The User Interface is the point at which humans interact with a computer,
website, or an app. The goal is to make the user experience easy, requiring
minimum effort on the user’s part, to receive the maximum desired outcome.
e.g. GUI (Graphical User Interface). The GUI is an environment with windows,
icons, and menus, which is controlled by a pointing device. This is called a GUI
because the user interacts with images through a mouse, keyboard, or
touchscreen.
Universal
Design (UD)
The Universal
Design is the
process of
designing a
product so that
everyone can
understand,
access, and use
it, regarding of
their age, size, or
ability.
Adaptive and Assistive Technology
Assistive Technology refers to any item, system, or product used to improve
the functional capabilities of individuals with disabilities.
Adaptive Technology is a subcategory of assistive technology; it refers to
something specifically designed for people with disabilities.
E.g. Screen Readers, On-Screen Magnifiers, On-Screen Keyboard, Braille
Keyboard.
Create
- Involves the actual writing of the software, to accomplish the task
set-forth in the plan stage.
Evaluate
- Involves testing of the software to make sure that it does what it’s
supposed to do, and that it does this consistently.
o Test Data are inputs that produce a known result and will be used to
test every part of the software. It must be prepared in advance, and
include normal, incorrect, and extreme values, to ensure the
software responds correctly to the types of test data.
o Functional Testing involves testing each of the functions or
features of the system. It tests whether the software meets its
requirements, and the Non-Functional Testing tests how well those
requirements are met, with e.g. performance, usability, and
reliability. (Functional Testing is carried out before Non-Functional
Testing.)
- When the testing is over, a broader evaluation of the system should take
place. This compares the finished system with the specifications of the
requirements.
Document
- Records of all meetings, and phone calls should be kept, noting decisions
made, and issues to be resolved.
- Changes to the initial requirements, plan, or design at any stage need to
be documented properly.
- The whole project is documented, for example, the specifications of
requirements, project plan, the code itself, test plans and test data, results
of testing, evaluation reports, etc.
Working in Teams
Project Manager - Involved in producing feasibility study, and specification of
the requirements.
- Ensures the project is delivered on time, and within budget.
- Ensures that all stages of development process are carried
out efficiently and effectively.
System Analyst - Once the user and business requirements are identified, the
analyst establishes the hardware and software requirements.
- Investigates and documents the technical aspects of the
problem.
Designer - Conceptualizes and designs the software (including its UI, UX)
to meet the specification.
- Produces the design documentation.
Developer - Writes the programs, and maintains backup copies of the
programs.
- Carries out Unit Testing.
Tester - Produces test plans, and test data, and then carry out tests.
- Ensures the results of tests are documented and reported.
What are stakeholders, and stockholders?
A stakeholder is anyone with an interest on the business. They can be from
inside or outside the business. Stakeholders can affect, or be affected by a
business.
e.g. Let’s say I own a factory. I would consider the following stakeholders:
- Community – If I decide to double the production due to increasing
demands, pollution increases, thus affecting the community as they’d
want to have been environmentally friendly.
- Customer – If I increase the price of the product, customers will perceive
it as a high-quality product, but may not purchase it anymore. They get
affected.
- Government – The Government is affected by the business due to the
taxes. If the business ears more, then more taxes are paid to the
government. However, if the business is shut down, the government is
shut down.
A stockholder is someone who owns shares in a company, and therefore gets
part of the company's profits and the right to vote on how the company is
controlled.
e.g. Tesla stockholders.