Pluralsight Logo
Author avatar

Sri Sanketh Uppalapati

Author badge Author

A beginner's guide to be a better software developer

Sri Sanketh Uppalapati

Author BadgeAuthor
  • Sep 7, 2016
  • 4 Min read
  • 2,562 Views
  • Sep 7, 2016
  • 4 Min read
  • 2,562 Views
Software Engineering Best Practices

Introduction

Before we jump into the topic let me introduce who a software developer really is?

A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work.

But what are the principles of software engineering?

  • Focus on producing high quality work
  • Determine the problem
  • Evaluate design alternatives
  • Use an appropriate process model
  • Minimize the intellectual distance between the developer and use
  • Good management is better than good technology
  • People are the key to success
  • Follow with care
  • Give products to customer

Before we jump in to see How a software developer can apply these basic principles to build a better software?, let's understand what a Software Development Life Cycle is?

Software Development Life Cycle (SDLC)

Software Development cycle is a well defined, structured sequence of stages intended to develop a software product

The stages of SDLC include:

  • Feasible study
  • Requirements analysis and specification
  • Design
  • Implementation
  • Testing
  • Maintenance

How to apply these skills

We won't get into much detail but you will get a fair understanding. We will dicuss the aim of each of the stages and the activities/work that needs to be done.

Feasible study

The aim of this stage is to determine whelther the product is financially worthwhile and technically feasible.

ACTIVITIES:
  • Understand the problem
  • Plan out different solutions
  • Perform a financial analysis(cost & benefit)

Requirement analysis and specification

The aim of this stage is to understand the exact requirements of the customer and document them properly.

ACTIVITIES:
  • Collect all the related data from the customer through interviews and discussions to clearly understand what the customer really wants. Ensure correctness, consistency and unambiguity in the requirements.
  • Organise the requirements in a Software Requirements Specification document.

Design

The aim of design phase is to transform requirements specification in a form suitable for implementation in some programming language.

ACTIVITIES:
  • Decompose the system into modules
  • Represent invocation relationships between modules
  • Different modules are designed in greater detail. For example, data structures and algorithms for each module are designed.

Implementation

The aim of this stage is to code and test the modules designed in the previous stage. The end product of implementation phase is a set of program modules that have been tested individually.

ACTIVITIES:
  • Each module of design is coded and each module is unit tested. The purpose of unit testing is to test if individual modules work correctly.

Testing

The aim of this stage is to integrate different modules in a planned manner.

ACTIVITIES:
  • Each integration step the partially integrated system is tested.
  • After all the modules have been successfully integrated and tested, system testing is carried out. The goal of system testing is to ensure that the developed system functions according to its requirements specified in the SRS document.

Maintenance

The aim of this stage is to enhance or maintain the provided service through the product. The maintenance of any software product requires more effort than to develop the product itself. Typically, development effort to maintenance effort ratio is 2:3.

ACTIVITIES:
  • Making appropriate changes to prevent the occurence of errors
  • Correct errors which were not discovered during the product development phase.
  • Improve implementation of the system
  • Enchance functionalities of the system
  • Port software to new environment

Conclusion

Each of the stages in the Software Development Life Cycle are too vast to be dicussed in a begineer's guide. I have focused mainly on Software Development Life Cycle because it gives you a workflow to develop a software product. Following a SDLC would be the first step into becoming a better software developer . It makes a great difference in terms of time, cost and effort and that's what separates the beginner and the experienced.

5