Unit 3 - Software development Flashcards
What is analysis?
Before a problem can be solved it must be defined. The requirements of the system that solves the problem must be established. For a website:
the data - its origin, uses, volumes and characteristics
procedures - what is done where when and how
the future - development plans and expected growth rates
problems with any existing system
What is design?
Depending on the type of projects a system designer may consider : processing data structure output input UI Security hardware
What is the waterfall lifecycle model and when is it used? - in addition, mention drawbacks/advantages
In the waterfall model, every step is completed one at a time from beginning to end. Each step has specific outputs that lead into the next step. The user/customer is involved at the start of the process and in the analysis but has little input until the evaluation. It is suitable for small projects - but the absence of user involvement is a serious drawback. It is possible to return to a previous stage but the model shows that the developers then have to work back down the following stages.
What is the Spiral model and when is it used? - in addition, mention drawbacks/advantages
The spiral model uses the same structured steps (analysis design implantation evaluation). However, it introduces the idea of developing the software in iterative stages. Each loop creates a prototype. Advantage: More user involvement and it is much easier to examine a working prototype to figure what needs to be done to turn it in a working system
What is Agile modelling and when is it used? - in addition, mention drawbacks/advantages
Stages of software development may not be completed in a linear sequence. Some parts of the analysis might not be completed while some parts are implemented. This is a NON-LINEAR APPROACH. Prototypes are built to make sure that the project is in line with user requirements. Its success depends on - keeping the model simple
Rapid feedback from the user
Understanding that user requirements may change
Being prepared for incremental changes.
What is extreme programming?
Extreme programming is a software development methodology that is intended to improve software quality and responsiveness to change. It’s the most specific of the agile frameworks regarding appropriate engineering practices for software development.
What kind of problems are solved by algorithms?
Internet-related algorithms
Route finding algorithms
Compression algorithms
Encryption algorithms
What are programming paradigms?
Different programming languages support tracking problems and in different ways and there are four major programming paradigms.
Procedural programming: Have a series of instructions that tell the computer what to do with the input in order to solve the problem. Structured programming is a type of procedural programming that uses the programming constructs of sequence, selection, iteration and recursion. It uses modular techniques to split large programs into manageable chunks
Objected oriented: Make it possible to abstract details of implementation and make code reusable
Declarative: describe the problem being solved.
Functional: are used as the fundamental building blocks of a program. Statements are written as a series of functions that accept input data.
Object-oriented languages
We define a class as the description of what the data looks like and what the data can do. Programming in an objected-oriented language requires thinking in terms of objects that will carry out a task.
Polymorphism
Refers to a programming language’s ability to process objects differently depending on their class.
Advantages of the object-oriented paradigm
The object-oriented methodology forces designers to go through extensive planning.
Encapsulation: the source code for an object can be written, tested and maintained independently of the code for other subjects.
Once an object is created the knowledge of how its methods are implemented is not necessary
An object-oriented program is much easier to maintain than one written in a procedural language
Assembly language
ADD - Addition SUB - Substract STA - Store LDA - Load BRA - Branch Brz - Branch if zero BRP - Branch if positive INP - Input OUT - Output HLT - Halt DAT - Data