Software Design Flashcards
State the names of the two types of design methodologies that we can use for Software design?
- The iterative model
- The agile model
Explain the stages of development in the iterative model?
- Analysis, where the clients will be consulted about the functional and end user requirements of the software being produced, often carried out by a person called a systems manager
- Design, where a team of programmers will begin to plan out how this program will be developed.
- Implementation, teams of programmers will work together to produce the program required
- Testing, several methods will be used to test the program and ensure that it does not break down
- Evaluation, the software developers will ensure that the product that they have produced meets all of the functional and end user requirements that were asked of it.
- Documentation
- Iteration will be required in most development processes as this step requires revisiting previous steps to fix any errors that arise.
Write some notes of how the agile and iterative models compare?
- The agile model is more flexible that the iterative model, this is because the agile model breaks down the production of the software into several smaller chunks that we call sprints.
- There is no testing stage in the agile development methodology as testing is completed as you go through the production of your program
- In agile development methodologies teams would be closely integrated, meaning that people with different skill sets would work together. In the iterative model teams of people with similar skill sets would be placed in a team and tasked with completing a stage of the process. Whereas on the other hand an agile model would place people with different skills in the same team and expect them to work closely together with rapid communication to finish a sprint.
- The iterative model depends heavily on the analysis stage, the iterative model does not have as much client involvement in the development of the software, the client will only really be involved in the analysis and the evaluation stages, whereas in the agile development methodologies the client is involved throughout the production of the entire software. This frequent client feedback from the agile methodology can help shape the project and help to ensure that the client is more satisfied with the end product that is given to them. This frequent communication can also help to prevent misunderstandings about the software which would otherwise be costly to fix.
- Iterative model relies entirely on one large document produced as a part of the model whereas the agile development methodology has a strong focus on reducing the amount of documentation that needs to be done surrounding the software’s production.
- Agile methodologies prioritise the completion of the software as individual features of the software are tested, evaluated and reviewed by the client. Compared to the iterative model that prefers to not hand over the software for evaluation until it has been completed.
State what is meant by a sprint in reference to the agile development methodology?
Sprints are a way of producing a program step by step by rapidly undergoing stages of design, implementation, and testing as the program is produced.
State the three things that are outlined in the analysis stage of the iterative model?
- Functional requirements
- Boundaries
- Scope
State what is meant by the functional requirements of the website?
The functional requirements cover in inputs, processes, and outputs that the software must be able to produce
Explain what is meant by the purpose of a program?
The SQA says that purpose is a general description of a program, it can be helpful if you are asked this to go through the inputs processes and outputs (functional requirements) of the program and summarise briefly how the program would work
State what is meant by the scope of a program?
The scope of a program is a list of deliverables that the programmers must be able to hand over to the clients
- Design documents
- Completed program
- Test planning
- Testing results
- Evaluation report of the program
State what is meant by boundaries?
Boundaries are the limits of what a program does and does not do, these include assumptions that you have made about what the program involves.
Explain some of the benefits of using modular programing?
- Modular programing allows multiple programmers to be working on the same section of code without causing errors
- Modular programing also allows programmers to produce the program in segments where modules can contain individual features of the larger program. This allows modules to be tested independently allowing for errors to be identified more easily
- Areas in one module of the program do not cause errors in other modules in the program with modular programing.
- Modular programing uses local variables which are preferred as they are said to be modular meaning that they help to prevent values of variables changing that have been given the same name since they can only be used in that module.
State what is meant by Data flow?
data flow is what occurs when data is passed between modules
Explain what are some of the rules about what is and isn’t data flow?
Data flow includes data that has been passed into or out of a module, this can be individual variables or entire arrays.
- Inputs and outputs of a program are not data flow
- Reading from or writing to a file is not considered data flow unless the data is being passed from one module to another.
Describe how you would answer a describe the user interface question?
To do this you would draw a sketch of any reasonable program that would meet the functional requirements outlined in the question, meaning that the design would need to feature the appropriate inputs and outputs required of it.
State the names of the different data types that you will need to know about?
- Character
- String
- Integer
- Real
- Boolean
State the names of the two data structures that you need to know at higher?
- Parallel arrays
- array of Records
State the names of the four different standard algorithms that you need to know about for higher?
- Find Min
- Find Max
- Count occurrences
- Linear search
Give two examples of programing constructs?
- File handling
- Modular programming
Describe how you would set up parallel arrays using variables of temperature and time?
Temperature = []
Time = []
Data would be entered in order so that the temperature array corresponds with the time array. Parallel arrays are simply arrays that store related information.
Describe how you would create a record that would store the name, age and house of a pupil?
DECLARE pupil as RECORD (STRING: name, REAL: age, STRING: house)
Describe how you would create an array of records for a pre existing record called pupil?
DECLARE pupils AS ARRAY of pupil * (number of pupils)
What are we able to do with the programing construct of file handling?
- Read data from a file
- Write data to a file from a variable or list
- Open a file
- Close a file when we have handled the file.
Describe the process by which you should go about handling files?
- Open the file
- Read from or write to the file that you have opened
- Close the file
Describe how you would go about writing to a file called highscores.txt?
highscores = open(“highscores.txt”, “w”)
highscores.write(“…………………………………”)
highscores.close()
What errors can occur when handling flies and how are these errors caused?
EOF -end of file errors can be caused when file handling, they occur when you attempt to read from or write to the file for more lines than are in the file. These types of errors are also caused if we forget to close the files after handling them.
Describe how you would create a record by reading from a file?
Array = []
File = open(“filename.csv”, “r”)
For line in file():
fields = line.split(“,”)
Info1 = fields[0]
Info2 = fields[1]
Info3 = float(fields[2])
File.append(“name”: info1, “club”: info2, “time”: info3)
File.close()