Flashcards in Software Design Methodologies And Notations Deck (42):
What is design?
Before any code is written, a design is created using a top down approach, breaking the problem down into smaller and smaller problems.
Involves systems analyst and project manager.
Examples include Pseudocode, Structure Diagrams and Wire Frames.
What is implementation?
Design is implemented by writing the program. The programming language that is used is determined by the problem, type of user interface and programmer experience.
Project manager allocates individual tasks to different programmers according to their skill set.
What is Analysis?
Defining a problem, and the boundaries of solution to that problem.
Involves conversation between the client and a systems analyst from the software company.
What is testing?
Testing occurs in distinct phases throughout the software development process. Each small part of code is tested to ensure it executes without crashing. Alpha testing takes places in house before beta testing by contracted specialists not involved in the creation of the software. The software is then tested on the customers own hardware through acceptance testing.
What is Documentation?
To produce documentation that will be distributed with the program? Two common documents are the user guide and technical guide.
This relies on input from the client, systems analyst and the programmers.
What is contained inside the user guide?
An explanation of how to use the features of the program
What is contained inside the technical guide?
Includes the minimum hardware specification required to use the program and details of how to install/set up the software.
What is evaluation?
The software company evaluates the success of a project. The identification of mistakes made may ensure that the next project is completed faster and with fewer errors, increasing the company's profits. Evaluation of the software can identify efficiency savings that could have been made in coding or resource allocation such as memory usage.
What is maintenance?
Once software is complete it is common to return at a later date to change or update the software. There are three types of maintenance carried out by software companies.
Maintenance has become a commonplace with updates to games and apps appearing regularly due to increased download speeds thanks to the introduction of 3G, 4G and broadband telecommunications.
What are the three types of maintenance carried out by software companies?
Perfective - New features are added to the software to improve (perfect) it
Corrective - Bugs or errors discovered after completion of the software are fixed (corrected)
Adaptive - The software must be altered (adapted) due to an external influence, such as a change to the operating system on which the software runs.
What is rapid application development?
RAD takes advantage of the knowledge gained during the production in order to change the solution for the better.
RAD projects involve the development of small, quickly built prototypes to identify potential problems.
The client is shown working components of the software allowing them to give feedback and suggest changes before a complete working version is implemented later.
Once a prototype is accepted it can be used to build the finished component.
What is an agile methodology?
Influenced by the introduction of RAD in the 1980s.
Aims to improve customer satisfaction by delivering software in weeks instead of months - project success is measured on speed.
Small project teams are formed in single locations, nicknamed 'bullpens'.
These teams contain a variety of skills, relying on conversation to make quick decisions and improve the developers ability to react should the clients requirements change.
What are the Disadvantages of agile methodologies?
1. The types of decisions made by the project groups require experience.
2. Lack of emphasis on design and documentation causes problems.
3. Lack of proper design at the beginning of the project may make project timescale hard to predict.
4. Client must be clear about group requirements so that project will be taken the right way.
Why is readability of source code important?
So that multiple programmers could come to it at any time and understand what is going on
Who is responsible for checking that source code is to an acceptable standard?
What is a software specification?
A legally binding document which describes exactly what the software will be able to do, not how it does it
How is readability of code achieved?
Using meaningful identifiers (variable and procedure names)
White space and indentation to make code logic clear
Use of local variables and creating modular code - this makes the modules re-usable in other parts of the program
What is alpha testing?
By programmers responsible for the application in parts
Who performs beta testing?
Users encouraged to report any errors during program usage
Developers will cover all costs of this kind of maintenance which is of use to them as they can then replicate errors and provide a solution
Used when a programs environment/design changes - OS, Computer system etc.
Depending on predictability of the change in circumstances, negotiations may be made but ultimately the client will cover the cost of this kind of maintenance
When the client requests changes which were not in the original software specification, perhaps due to changes in requirements or legislation.
This involves revision of the entire system and ultimately is very expensive - the client covers the cost.
What is meant by stating "software development is an iterative process"
What is reliability?
How well a program operates without stopping due to design faults
What is not an advantage of RAD?
Reduced time spent on analysis
Describe the term Pseudocode
A high level description of how a computer program functions
Who is responsible for writing out the software specification?
The systems analyst
What are the few known disadvantages of agile methodologies?
Types of decisions made by the project groups require experience
Lack of emphasis on design and documentation may cause problems
Lack of stringent design at the beginning of a project may make it difficult to predict time scale of a project
If client representative is unclear on requirements then project may be easily taken in wrong direction
Follows a clear set of seven steps in sequence with the possibility of iteration between and within stages
Iteration between stages
Revisiting previous steps in light of new information
Legally binding document which is often generated at the design stage of the waterfall method
Contains the scope, boundaries, test data and budget information
Step wise refinement
The aspect of evaluation which allows for easier maintenance through the use of meaningful identifiers, internal commentary and indentation
Maintenance which is carried out free of charge due to flaws within the development company
Rapid Application Development Design Feature
Places a great deal of emphasis on creation of prototypes during design phase
Allows user to get a better idea of how their software could be implemented
Stage within RAD development where the team will work with the client post release
Step Wise Refinement
Takes main steps and breaks these down until they are easily converted from pseudocode to source code - one line at a time
Software is tested by in-house programmers not involved with the creation of the source code
They can identify any errors which their colleagues may have missed
Agile Methodology emphasis
On communication and planning during the design phase
Focus on face to face communication and strong team work
Represents all different elements present in the software as hierarchical blocks
Formalised sketches of screen layouts
Used for interface screens