📘 CodingMarble Learn

Software Development: From Idea to Working App

Good software is built in stages: analyse the problem and write requirements, design the solution, code it in small parts, test it with normal, boundary and erroneous data, deploy it to users and maintain it. Waterfall does each stage once in order; agile repeats short cycles. Robust programs validate input, and teams use version control, clear roles and feedback from users.

🎬 Step-by-step story

  1. A school wants a club sign-up app. Stage 1, analyse: ask users what they need and write clear requirements, like 'age must be 11 to 18'.
  2. Stage 2, design: plan before coding. Break the problem into parts and draw a flowchart or write pseudocode.
  3. Stage 3, code: turn each part into a small function. Save each working step in version control.
  4. Stage 4, test: try normal, boundary and wrong data. A red result shows a bug; fix it and test again until all pass.
  5. Stages 5 and 6: deploy the app, then maintain it with fixes and new features. The loop repeats, and small loops are called agile.
  6. Free play: you are the tester. Type ages, especially 10, 11, 18 and 19, and some wrong data. Does the app behave?

Tip: drag the 3D scene to turn it. Use two fingers to zoom.

🤔 Common doubts, cleared

Why not just start coding?

Without clear requirements you may build the wrong thing. Analysis sets the rules (like age 11 to 18) that testing later checks.

What is the use of a flowchart if I can code?

Design splits the job into parts and finds logic mistakes on paper, where they are cheap to fix.

Why save so many versions?

Each commit is a checkpoint; if a change breaks things you can go back.

Why test 11 and 18 separately when 15 already works?

Bugs hide at the edges. In step 4 the value 11 fails because of > instead of >=.

Is the app finished after release?

No. Users find bugs and ask for features, so the cycle repeats.

What is the difference between boundary and erroneous data?

Boundary data is at or just past the edge (10, 11, 18, 19). Erroneous data is the wrong kind (−3, 'abc'). Try both in free play.

The software development life cycle

The software development life cycle (SDLC) is the set of stages used to build a program:

  1. Analysis: understand the problem, talk to users, write requirements (what the program must do) and success criteria.
  2. Design: plan the solution: break it into parts (decomposition), draw flowcharts or pseudocode, plan the data and the screens.
  3. Implementation (coding): write the code, one part at a time.
  4. Testing: check it works and meets the requirements.
  5. Deployment: give it to users.
  6. Maintenance: fix bugs, add features, keep it working.

Waterfall and agile

Waterfall goes through the stages once, in order; good when requirements are fixed. Agile (iterative) builds a small working version, gets feedback, and repeats in short cycles called sprints; good when needs change.

Designing a program: purpose, users and structure

Start with the purpose: what problem does it solve, and for whom? Think about all users, including people with poor eyesight or slow internet (accessibility, big buttons, clear language).

Use procedural design: split the program into subroutines (functions/procedures) that each do one job, e.g. get_age(), check_age(), save_member(). Pass data through parameters and return values instead of using many global variables. Small parts are easier to write, test, reuse and share among a team.

Write comments, use meaningful names and consistent indentation so others can maintain the code.

Testing: test data and test cases

A test case lists the input, the expected output and the actual output. For a rule 'age 11 to 18':

Iterative testing happens while you code; final testing checks the finished program against every requirement. Users can do acceptance testing.

Errors, debugging and robust programs

Debugging: reproduce the bug, trace the code (print values or use a debugger with breakpoints), fix, and test again.

A robust program does not crash on bad input: it uses input validation (range, type, length, presence and format checks), exception handling, and for security checks passwords (authentication) and never trusts user input.

Teamwork, tools and the project

An IDE (integrated development environment) gives an editor, error highlighting, a debugger and a run button in one place.

Version control (e.g. Git) saves snapshots called commits. You can see who changed what, go back to an older version, and let many people work on branches and then merge.

Teams have roles: product owner or client, developers, testers, designer, project manager. A simple plan uses a task board (to do / doing / done), a timeline and regular short meetings.

A school software project usually needs: problem statement, requirements, design (flowcharts, screen sketches, data tables), code with comments, a test table with evidence, user feedback and an evaluation of what to improve.

Key formulas and definitions

Worked examples

1. Write test data for a field that accepts marks from 0 to 100.

Normal: 45, 78. Boundary: 0, 100 (accept) and −1, 101 (reject). Erroneous: 'fifty', blank, 12.5 if only whole numbers are allowed.

2. The code is: if age > 11 and age <= 18: accept. The input 11 is rejected. What kind of error is it and how do you fix it?

A logic error: the program runs but gives the wrong result. Change > to >= so 11 is included.

3. A library app will change often as students ask for features. Waterfall or agile?

Agile: short cycles let the team release a small version, collect feedback and adapt.

4. Decompose 'an online quiz app' into subroutines.

show_question(), get_answer(), check_answer(), update_score(), show_result(), save_high_score().

5. Why commit to version control after each working change?

If a later change breaks the program you can go back to the last working commit, and teammates can see and merge your change.

6. A program crashes when the user types letters instead of a number. Make it robust.

Validate input: check the text is a whole number before converting (or catch the exception), then show 'Please enter a number' and ask again instead of crashing.

Common mistakes

Practice quiz

1. Which stage comes first in the SDLC?
2. For a range 1 to 10, which is boundary data?
3. A program runs but gives a wrong total. This is a:
4. Short repeated cycles with user feedback describe:
5. A saved snapshot in version control is called a:

Practice: answer these yourself

Type or choose your answer, then press Check. Use a hint if you are stuck; the full solution appears after you answer.

Frequently asked questions

What are the stages of the software development life cycle?

Analysis, design, implementation (coding), testing, deployment and maintenance.

What are normal, boundary and erroneous test data?

Normal: typical valid values. Boundary: values at the edges of the allowed range (and just outside). Erroneous: invalid values of the wrong type or impossible.

What is the difference between waterfall and agile?

Waterfall completes each stage once in order. Agile builds and improves the software in short repeated cycles with user feedback.

Where this is taught

Canada (Ontario)Grade 11B. Software Development
Canada (Ontario)Grade 11C. Computer Environments and Systems
Canada (Ontario)Grade 11B. Software Development
Canada (Ontario)Grade 11C. Computer Environments and Systems
Canada (Ontario)Grade 11A. Technological Design Fundamentals
Canada (Ontario)Grade 11B. Technological Design Skills
Canada (Ontario)Grade 11A. Technological Design Fundamentals
Canada (Ontario)Grade 11B. Technological Design Skills
Canada (Ontario)Grade 12C. Programming Environment
Canada (Ontario)Grade 12A. Technological Design Fundamentals
Canada (Ontario)Grade 12B. Technological Design Skills
Canada (Ontario)Grade 12A. Technological Design Fundamentals
Canada (Ontario)Grade 12B. Technological Design Skills
Spain1º BachilleratoComputer systems and programming
Ukraine11 класProgramming paradigms and technologies
England (GCSE, A level)Year 103.2 Programming
England (GCSE, A level)Year 124.1 Fundamentals of programming
England (GCSE, A level)Year 124.13 Systematic approach to problem solving
USA (Common Core, NGSS, AP)Grade 8Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 9Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 10Big Idea 1: Creative Development
USA (Common Core, NGSS, AP)Grade 11Algorithms and Programming
Japan高校(専門学科)1〜3年Programming
Japan高校(専門学科)1〜3年Software Technology
Japan高校(専門学科)1〜3年Programming for Information Systems
South Korea고등학교 2학년Software that creates value
Germany (Bavaria)Jahrgangsstufe 10Project
Germany (Bavaria)Jahrgangsstufe 12Practical software development project

Learn first

Learn next

Related lessons

All Computer Science lessons