TCA 1 - Software Engineering and Fundamentals Flashcards
What is software engineering?
Can be thought of as a program (or set of instructions) that ca computer uses to perform a particular action
Software is written in a programming language that a computer understands. The instructions in the language are often called ‘code’.
Software Lifecycle
Problem Identification
Problem domain characteristic elicitation
Requirements Specification
System Analysis
System Design
System Build
Testing
Evaluation
Implementation
Maintenance
Problem identification
Fully understanding and gaining a good comprehension of the problem through gaining information from the company in order to provide an accurate and successful solution
Problem characteristics
Typically we would talk to customers and competitors about the company, the product and where they think the problems lie
As well as speaking to the company about business processes, problems they experience, and investigating similar solution, and checking the feasibility of the development.
Analysis
A breakdown of what the system will be made up of and how each different required aspects will be built separately
Specification
4:
Functionality (what it needs to do)
Performance (What performance levels should the software have - speed, storage, platforms)
Client Constraints (what have they requested that the software needs to include
Commercial Constraints (cost and time to build)
Design
How will all the components fit together for performance and physcially, basically a blueprint of the software before it is implemented
Build
Using all the previous steps to build the software itself
Testing and evaluate the solution
Test the software to see if it does everything it should do (according to the specification. Usually by supplying the software with example data, Evaluate performance with the user group
Implementation
Install the software for the client within the business
Allow them to use the software and evaluate the performance of the software
Has it solved the original problem?
Maintenance
As the business adapts to the change, we may need to add some new features to the software
We may also identify some errors or faults within the software and will need to put them right.
Requirements Engineering
Alan Davis - ‘All activities up to but not including the decomposition of software into its actual architectural components’ - 1988
- Bray - An investigation and description of the problem domain and requirements. Followed by the design and documentation of the characteristics for a solution system that will meet those requirements’.
- Why is it so important?
- Is fundamental to the success of any software engineering project because it provides the foundation upon which the rest of the project is built.
- Inaccuracies, errors and omissions during this stage can result in problems which may increase cost and duration of the project.
Problem Domain
- The problem domain - The problem domain can be defined as the apart of the universe within which the problem exists (The area of the project by which we gather information in order to fully comprehend the tasks or problem at hand)
- A problem domain can sometimes be regarded as a set of subsystems, known as terminators, which will eventually interface with the new proposed solution system.
Solution System
Is the system that will eventually be built to solve the problems within the problem domain. (Also called the application or product)
- The problem domain and solution system are interfaced by the system specification.