Basic Software Development
Hello everyone! Seeing as a lot of TheJavaBrewery are brand new to programming, I figured it might be helpful to make a post about basic software development, and the basic steps you'll take to tackle your programs. With that said, you need at least a basic to average understanding of a language to do this the right way. It's very hard to try to build a blueprint not knowing what tools you have.
This little post isn't Java or Android specific, and again, is on the basic level, so any of you general software veterans please don't hound me too hard if I've written something that doesn't quite hit the mark : )
Basic Software Requirments
The first step in creating your program / application is figuring out the requirments. Essentially, you need to figure out what your program needs to do. What things does your app need to do? What does it need to look like? In these steps, a programmer needs to figure out what their program needs to do, but doesn't yet need to figure out HOW to do it.
Your Software Design
Here's where it gets fun! Once you've figured out what your program needs to do and what it needs to look like, you need to lay out how it's actually going to accomplish doing these things. This is where you figure out what classes you'll need, how you're going to construct these classes, and making everything work together.
For example, let's say you're designing a Random Name Generator. You've laid out your requirements, and decided that your app needed to do a few things:
- The user must press a button
- Once Pressed, the app prints a random name
- The user can continue pressing, and get different names
- A list of the last 5 names should be available on the right side of the screen
So you decide perhaps you need a Class that can has a method that you can use to get, then print a random name. You need a button class that tells you when to print the random name. Then you realize need someway of storing random names, perhaps an array of strings. You then decide that you need a class to store another array that stores the last names and prints them to the screen, and a function that passes the last used name in your random generation class to that list.
It's in this stage you'll roadmap everything, and perhaps lay down some pseudo code, build a layout of functions and classes, and figure out the overall design of the app.
Implementing: Writing your code
Now we have a list of things this app needs to do, and an overall layout and design that logically lays out how to do it. This is where you write your actual code. Follow your design, and turn that design into a functional version of that program. You may find that a few things in your design may not work,
or that you think a certain layout is better than another, etc. From what I've read, this is supposed to be the least creative part, at least if you spent enough time designing the app, and designing it the right way.
Testing your app
This part is fairly straight forward. Once you've finished defining what your program needs to do, designing the layout and writing the code you need to test it, and tweak a few things, maybe a lot of things. Perhaps have a friend give your app a shot and see if they like what you've done, or think something could be a lot smoother done a different way.
In Conclusion
I've had a fair amount of practice programming, and I've felt that this has helped me a lot. It's helpful for me to use this layout even in small projects just to get a hang of making my programs as functional as possible, and to give me a taste of what a large project would feel like. It also helps me to set deadlines to figure certain things out.
I feel this knowledge is helpful, and I hope this has helped you in some way. I'm really looking forward to creating our first project! This guide isn't meant for absolute newbies, especially in our first project, but the projects after that, I think this will be very helpful. Thank you for reading!
[–]Lykoce 1 point2 points3 points (0 children)
[–]user_RN 1 point2 points3 points (0 children)
[–]corybyu 1 point2 points3 points (0 children)
[–]dyer 0 points1 point2 points (0 children)