1.2.3 - Software Development

Cards (35)

  • When developing a solution to a problem for a computer system programmers work through phases. Collectively they are called the software development lifecycle or SDLC.
  •  There are 5 methodologies. The SDLC can be split up into sections. There are 8 of these.
  • The first section is feasibility which simply means is the problem solvable or can it be completed with the resources given.
  • Second section is requirements which are the things the final solution needs to do
  • The third section is analysis and design which is how we should go about solving the problem
  •  The fourth section implementation where we begin to code our solution. We then have to test it to see if it works.
  • The sixth section we have to go through is deployment where we install it into to the target environment.
  • The seventh section is evaluation where we check if the code meets all the users needs
  • Eighth there is maintenance where we check to see if the code is still running and whether it needs updating. 
  • One of the 5 methodologies is the waterfall methodology. It derives it name from a cascading effect of one phase to another in this methodology each phase has a well defined start and end point.
  • Another methodology is RAD where successive prototypes are produced. It works by creating a prototype getting feedback from the user and then updating it until the user is happy with it. 
  • Another methodology is the spiral model. This model is called a risk-driven development methodology. This methodology allows development teams to adopt other methodologies like the ones previously mentioned. This methodology is entirely based on the problem at hand. It is focusing on the risks to try and develop improved prototypes
  • Another is the agile methodology. Which is actually a group of methodologies. They are a more refined form of the concepts behind RAD as they focus on using an iterative method. The iterations in this methodology are called sprints. Where a team will work on a section for about 1-4 weeks and then move onto another.
  • Extreme programming is not necessarily a methodology it is part of agile and it aims to produce very high quality code and promote programmers quality of life. It focuses on the values of : simplicity, communication, feedback, courage and respect. It is considered an agile framework.
  • Waterfall methodology 
    ADV: 
    • Simple methodology so easy to manage. 
    • Everyone on project clear on responsibilities 
    • Easy to check if project is on schedule 
    DIS: 
    • Carries lots of risk 
    • User doesn’t see the project until at the very end 
    • If requirements are misunderstood it can be hard to fix 
  • RAD methodology 
    ADV: 
    • Requirements don’t need to be entirely clear from the start. 
    • Continuous feedback throughout the process so unlikely for it to not meet requirements. 
    DIS: 
    • Regular contact with client has to be maintained 
    • Scales poorly for large projects with big teams 
  • Spiral methodology 
    ADV: 
    • Risk management focused on  
    DIS: 
    • If risk analysis is done badly the project suffers a lot 
    • Risk analysis is a highly specialised skill
  • Agile and extreme programming methodology 
    ADV: 
    • Emphasizes programming so the final product will be high quality 
    • Promotes quality of life for programmers 
    DIS: 
    • Requires lots of collaboration for it to function properly 
    • Can be quite costly to afford extreme programming methods 
  • An algorithm is a set or sequence of instructions to perform a task. There are many different ways they can be represented however we only need to know pseudocode, flowcharts and high level languages.
  • Pseudocode is a halfway between English and code. It is used as all programmers can understand it and then replicate it in other languages. 
  •  Flowcharts are a diagrammatic representation of an algorithm. They use symbols to represent different functions. There is : Terminal, Process, Decision, Input/Output, Subroutine and arrows. 
  • Every program needs to be tested to make sure it works as intended. There are 4 main testing strategies that are : black-box, white-box, alpha and beta.
  • Black-box is not concerned with how the program works it just tests if a given input gives the expected output. With this method the codes efficiency is not important. With this method ideally you check every possible input and if they all give the right output we can say the program is working. However there is a problem with this as in some cases there are an infinite umber of valid inputs. So instead we have to choose appropriate test data.
  • White-box testing involves testing the algorithms in the code and making sure each one functions as intended. It focuses on testing all the possible pathways though a program and this method does focus on the efficiency of the code
  • Alpha and beta testing are carried out when the software is nearly ready to be released like a video game or a piece of software. Alpha testing usually occurs first and is limited to employees and friends and family. Beta testing usually then occurs after and is open to a wider community. A this point the developers are looking to improve things like load balancing and multiple hardware compatibility. 
  • The order of testing phases is white box, black box, alpha and beta
  • The suitable test data is categorised into four sections : No data, Erroneous, Normal and Boundary.
  •  No data is when no data is inputted into the program and this should usually be rejected. 
  • Erroneous data is data that should definitely not be allowed to be entered 
  • Normal data is the complete opposite as it is data that should definitely be accepted by the system.
  • Boundary data is one that is right on the edge of being excepted for example the maximum and minimum in the range of expected inputs it could also be on the other side of the boundary where it is very close to being an accepted value. 
  • When testing an algorithm we can run through it step by step. This is called tracing execution or a dry run and it forms a trace table. 
  •  A trace table works by monitoring the value of the variables in the code at every line executed. 
  • The fifth section is testing to see if it works.
  • Stages of SDLC:
    1. Feasibility
    2. Requirements
    3. Analysis and design
    4. Implementation
    5. Testing
    6. Deployment
    7. Evaluation
    8. Maintenance