• Advertisement
Sign in to follow this  
  • entry
    1
  • comments
    2
  • views
    1311

About this blog

A Deep-Dive Into The Software Development Lifecycle

Entries in this blog

Introduction

Journal Introduction

[font=Helvetica]To fully understand the purpose of this journal, it's important to give my background experience.[/font]

[font=Helvetica][size=2]

For a little under a decade now, I've been writing Enterprise Application Architecture for multiple niche industries. These monolithic software suites often require 24/7 operation and support, with minimal downtime for maintenance - and major updates are planned well ahead of time. Data integrity and performance under high resource strain are of the upmost importance with these pieces of software, and through it all I've learned quite a good deal about writing solid software, and implementing sound infrastructure, from the ground-up.

[/font]

[font=Helvetica][size=2]

While doing this, I've worn many additional hats - adding to the learning experience. Such things as project management, business development, market research on products, agile development/SCRUM, lean process improvement, technical writing, etc.

[/font]

[font=Helvetica][size=2]

I've hit a point in my life where I am both financially sound and have the additional bandwidth to begin working on personal projects of my own accord. Having always had an interest in game development, but never pursuing such, I've taken it upon myself to start a game development project.

[/font]

[font=Helvetica][size=2]

This journal will act as a conversational piece that I'll use to walk step-by-step through the necessary milestones of what it takes to write complex architecture. It is my goal that both the readers of this journal and myself will take pieces of this learning experience to add on to existing knowledge.

[/font]

[font=Helvetica][size=2]

My start to this begins all the way at the beginning, the project idea, and will hopefully lead up to the production release of the product.

[/font]

[font=Helvetica][size=2]

NOTE: Thank you GameDev for creating this incredible journaling platform for developers to voice their experiences. It is for this, that I have decided to subscribe to the website.

[/font]

[font=Helvetica][size=2]

An Expansion on Purpose

[/font]

[font=Helvetica][size=2]

While the explanation on the purpose of this journal was loosely covered in the introductory paragraphs, I want to expand on this a bit.

[/font]

[font=Helvetica][size=2]

My goal is to provide best practices for the entire software development lifecycle, targeted at a game development project. A step-by-step approach that will guide newcomers to software creation in the right direction. I do not profess to be an expert in every field of software development, however, much like the fundamentals of any area of science, core concepts can be applied and even transcend the craziest of projects.

[/font]

[font=Helvetica][size=2]

Below is a draft list of topics, organized first to last, that I will be covering throughout this series, however, this list will likely be expanded upon as the project gets deeper.

[/font]

  • Project Idea


  • Market Research / Competition Breakdown


  • Project Scope and Goals


  • Software Design Document


  • Feature Expansion and Brainstorming


  • User Story Creation


  • Technology and Platform Discovery


  • Architectural Diagramming


  • Budget Creation


  • Programming Language, Database, and Design Style Guidelines


  • Post-Production Support Considerations


  • Maintenance Considerations and Reduced Maintenance Downtime


  • Data Dictionary


  • API Design Documentation


  • Use Case Creation


  • Relational Database Design / Data Integrity Tips


  • Architecture Stand-Up


  • Database Development


  • Database Security


  • API Boilerplate


  • Client-Side Boilerplate
  • Front-End Wireframing
  • Network and Authentication Security
  • Server-Side API and Engine Development
  • Unit and Integration Testing
  • Client-Side Application Development
  • Support and Tooling Development
  • Launcher / Updater Development
  • Final Marketing Considerations
  • Disaster Recovery and Replication
  • Consumer Feedback Review
  • Pre-Release Production Considerations
  • Release and Update Schedules
  • Release

    [font=Helvetica]

    If you're a veteran developer, you'll notice some of these seem to be out of order, I promise you there's a method to this madness.

    [/font]


    [font=Helvetica][size=2]

    Let's take for example Budgeting only after Architectural Diagramming. If you've ever worked in a corporate environment, then you're most likely familiar with their love for budgeting everything up-front, prior to all of the project considerations. This is also the reason why most corporate projects rise above their originally budgeted project goal.

    [/font]

    [font=Helvetica][size=2]

    Or, take for example the consideration of post-production support and maintenance considerations prior to our first line of code being written, this is a necessity.

    [/font]

    [font=Helvetica][size=2]

    You'll also notice the large amount of planning prior to our first line of code being written - which will only start to be presented during the Database Development (or possibly Architecture Stand-Up, if you choose to include server-side scripting). This is also no mistake, as some of you may know that writing the code is the easy part - and the planning in the most important.

    [/font]

    Tidalwave? What's With The Name?

    [font=Helvetica]Nothing, absolutely nothing. It's a placeholder name for the project for two reasons: 1) To hold anonymity to the project I'll be creating and it's Intellectual Property and 2) Because the name of the game is probably the least important thing right up until the Final Marketing Considerations phase (refactoring the namespaces, device names, and any other hardcoded references to the game will be easy based on the process we'll be implementing). [/font]

    [font=Helvetica][size=2]

    Tidalwave won't be the name of my game. You shouldn't get caught up in picking the perfect name at the beginning of your project, produce something worth a name first.

    [/font]

    On Legal and Intellectual Property

    [font=Helvetica]You'll notice I've purposefully left out any legal advice/considerations for my project, and for good reason. I am not a legal expert, I will not profess to be one, and you probably shouldn't act on legal council given in a forum on the Internet. [/font]

    [font=Helvetica][size=2]

    If you're planning to share Intellectual Property, or put a product into the consumer's hands, you should seek the appropriate legal counsel before doing so. Laws vary by country and state/area. Find a counsel that specializes in IP and Corporate Law.

    [/font]

    [font=Helvetica][size=2]

    There will also be portions of the project that I do not go into, to protect my own IP rights.

    [/font]

    [font=Helvetica][size=2]

    The Project Idea

    [/font]

    [font=Helvetica][size=2]

    Since you're reading this, I'm going to make the assumption that you have a project idea (you probably have too many), so I won't go into steps for picking an actual project. This section is more to setup the project for this journal.

    [/font]

    [font=Helvetica][size=2]

    The project I will lay out in this journal will be based around building a commercially-viable, modern Text-Based MUD. This sounds like a huge undertaking (and perhaps it most certainly is), however - breaking apart the architecture into individual components, and using a Microservices Architecture approach, will aid us in removing a good portion of the complexity in this project. That, coupled with the fact that traditionally Text-Based games are nothing more than a complex lexer sitting on top of a CRUD application with some networking sprinkled in, and we have ourself a pretty approachable project.

    [/font]

    [font=Helvetica][size=2]

    Is this a good project idea though? Just naming a project, we won't be able to tell. The next portion of this journal will go into doing market research by compiling a full competition breakdown and gauging the current and short-future tendencies of the consumer base. This will give us a better idea of how profitable the product may be, or how unlikely the product is to succeed.

    [/font]

    Final Thoughts

    [font=Helvetica]If the introduction of this project interests you, please leave a comment so I can better gauge my future audience. [/font]

    [font=Helvetica]If you're interested in a particular section/area mentioned in the Purpose section of this initial post, leave a comment about which section, and I'll personally reach out and let you know when I begin publishing that section of the journal.[/font]

Sign in to follow this  
  • Advertisement