Writing a Requirement Specification Document for a Software Project

Writing a Requirement Specification Document for a Software Project

A Quick and Easy guide to a Minimal Software Requirement Specification Document

When a problem or solution requiring software is conceived it is essential that the software project is properly conveyed to the software house, agency or project staff creating the software. When constructing the document there are defined standards that the SRS may be structured to follow, such as IEEE Std 830-1998 which has been superseded by IEEE Std 29148-2011.

The document may also be written by the customer should the client choose to do so as it may provide more control of the specifications required in the project. Simply a Software Requirements Specification (SRS) could be titled ;

This is what the customer wants the software to do.

Introduction

The introduction should indicate the expected behaviors of the software as clearly as possible detailing the processes, activities, interfaces, and tasks required by the software. The introduction can be muddied if the software is not already clearly conceptualized or thought out or is to be built onto existing software if the requirements are not understood by all parties. It may also be necessary to indicate the expected life cycle, phase-out period and maintenance required to maintain the performance and usability of the software. Users may also be considered.

Purpose

An SRS document may state the purpose of the software which could be considered an ultimate end-goal of the resulting project and consider the project a failure if not met. It should conclude with affirming that this document specifies how the software should be designed, developed, tested and implemented where applicable. If the purpose is to improve the speed of current business processes then make it appear in the purpose section, if the purpose is to improve the usability of the current software used by staff then include it in the purpose section as well. If the software is also supposed to do something not included in the purpose or easily justified by this section, then it can be hard to justify why such a feature should exist in the project.

Scope

The scope of the document is to provide a description of what the document specification includes, such as use cases and requirements. Some of the program may be in multiple documents so the scope is necessary to reduce overlap between projects.

System Overview

System Overview provides a description of the context, function and requirements of the software project.

References

References should indicate if the software is somewhat pre-existing, any references made in the document and references to appendixes should also be included too.

Overall Description

The overall description is the second section of the SRS document.

Product Perspective

A product perspective is a detailed outlook of what the program should appear like to the users of the system, some software projects may be completely transparent to users, if so then the product perspective should outline the interfacing between other software components that make it so.

  • The overall description should not be vague, it should provide justification as to why the functions of the program are required.
  • The overall description should detail crucial cornerstones of the program and interfaces that exist with the hardware or software.
  • Some of the programs may be pre-existing which will require the project interface detailed and easily readable to be understood.

The Description should have six sections,

  • System Interfaces which the user may interact with the system or the system may interact with other systems.
  • User Interfaces which the users may interact with which may include the frequency of their usage and the intuitiveness of the design.
  • Hardware. Including the frequency of use of the hardware, considerations to the longevity of the hardware and ability to update or dispose of the hardware.
  • Software. Including external interfaces, naming conventions.
  • Communication and Telecom both in interfaces software to software and to the user.
  • Memory. Including minimum requirements.
  • Operations and processes that the program may perform real-time or batch, transaction or otherwise.
  • Adaptations and the ability to configure the system. For open source or high-security systems, this section may be larger than private or closed source software due to the need to ensure that it is secure or can be maintained or made depreciated quickly.

Design Constraints

  • What are the limitations of the software?
  • What might the software fail to perform at?
  • What are the limitations of the programming language if selected?
  • How might this delay the project if risks arise?
  • What are the limitations of the users’ ability?
  • What training will need to take place in order to use the software effectively?
  • What does the software not do?
  • What happens if a user does not use the software as intended?

In most aspects of software engineering, there are simply parts of human nature and failure modes or edge cases that simply cannot always be mitigated, in such scenarios it is important to outline what steps your software has taken to make these issues not slow the productivity of the software and ensure that the system runs as intended part of this may be detailed in test cases written in the appropriate section.

Product Functions

Product Functions should as best as possible describe the function of the program and how the modules of the program if any will work together with the interfaces of the system to produce the software’s desired functions.

The aim of the section is to break down the large characteristics of the program into more readable and manageable sections that can be delegated out to a team or read to an individual clearly without much overlap to avoid confusing what the program is designed to accomplish and what each function does.

  • The functions should be organized and listed so that they may be read for the first time and understood effectively.
  • The section may include graphical sections or UML detailing how the program may operate.
  • The validity of the input.
  • Sequence diagrams or how the program may pass data between functions.
  • How the program accounts for abnormality.
  • Common input examples may be a good way of explaining the function to the reader and providing a sample of what the programmer should accomplish on each function.
  • Sequencing.

User Characteristics

When a user may use the system either from time to time (i.e. infrequently), once or many many times it is important to detail this information in the user characteristics section and account for this in the software, if the methods used to do something are contrived or confusing it could lead to increased mistakes or data mismanagement further down the line and increase the need for normalization or reconciliation of information.

  • User Characteristics should detail the factors that affect each user and provide use cases for each user, it may also be ideal to detail overlapping functions that each user may use and diagram where appropriate.
  • It also may be applicable to detail why each user may need a function of the program.

Specific Requirements

The specific requirements should detail all of the requirements of the clients, the user and the software itself. It should provide suitable detail to enable the software to be written clearly and tested effectively. It should be stated for each requirement which user the requirement is for and if applicable that the test case corresponding to the requirement should be satisfied through cross-referencing other parts of the document.

  • The requirements should be clearly stated to prevent later mistakes or edge cases, poorly written requirements or poorly designed functions may cause the program to be unstable or possibly unsuitable for use. Proper error handling should be given to most aspects of the programs requirement and how it operates to meet the requirement.
  • Vagueness or Failings in test cases may allow for requirements to be deliberately misinterpreted, such as “The program must be fast and easy to use” may be considered easy to use for the programmer or tester, and therefore a suitable statement that the requirement is met, but not for the user who may not understand the inner workings of the software and therefore lack the knowledge to use the software effectively as much as the programmer testing the requirement, it may be a good idea to allow the users to try the functions using agile development and adapting the program accordingly.

The final part of the document should include the appendices and the index.

Exporting GnuCash Data to PowerBi

Some things are better if you do them yourself. I mainly did this project to keep a running ledger of the changes that I would need to keep track of the account balance data.

GnuCash is great, but when I export my accounts data the CSV file isn’t easily translated with power-query automatically. I decided that because I need to keep track of my transactions, this problem was best suited with a little program to calculate my net inflows and outflows using a python program, I also decided halfway through the project that I wanted to hook it up to my graphing backend, a silly idea – but a fun one to see my spends go up and down. I decided that I’d publish it here so that in the future I would find it a lot easier.

Traditionally if you wanted to export GnuCash data from CSV to PowerBi, you’d be better off using their inbuilt power query, however, I wanted to implement a ledger system, something that I don’t think can be accomplished directly in PowerBi without some scripting, and in the future I want to be able to change platforms if I need to because I no longer have a licence for PowerBi or want to use something else like excel or free equivalents like Google Sheets. I reckon that if done properly Google Scripts could make everything run automagically from an upload, but I don’t have my reports ready yet for that to happen.

# Extracted from here https://github.com/aidancrane/GnuCash-CSV2CSV-for-PowerBi/blob/master/convert_to_powerBI.py

import csv
from re import sub
from decimal import Decimal
import time


# If we only want the transactions values, set this to true and they will print to console, they do not save to accounts_out.csv!
numbersOnly = False

# Anyone thats not me will want this to be false, this is used to show the transaction data on a live graph I use for scratching around with.
smoothieChartEmulation = False
sessionCookie = "39494goodluckguessingthispartlololol213232expiresanyway"

# Leave this here so that Notepad++ and Atom auto-suggest it.
# Date,Account Name,Number,Description,Notes,Memo,Category,Type,Action,Reconcile,To With Sym,From With Sym,To Num.,From Num.,To Rate/Price,From Rate/Price

if (smoothieChartEmulation):
     import requests

# Negative Numbers are bracketed when exported from GNUCash so we need to fix that for the float data type.
def convert_if_negative(number):
    returnNumber = str(number)
    if ("," in returnNumber):
        if ("(" in returnNumber):
            returnNumber = returnNumber[1:]
            returnNumber = returnNumber[:-1]
            returnNumber = returnNumber.replace(",", "")
            returnNumber = 0 - round(float(returnNumber), 2)
        returnNumber = str(returnNumber).replace(",", "")
    if ("(" in returnNumber):
        returnNumber = Decimal(sub(r'[^\d.]', '', returnNumber))
        return (0 - round(float(returnNumber), 2))
    return returnNumber

# open accounts.cvs, our exported file.
with open("accounts.csv", "r") as csvIn:
    reader = csv.DictReader(csvIn)
    entries = []

    runningTotal = float(0)
    
	# Save
    for row in reader:
        if (row["Account Name"] == ""):
            pass
        else:
            runningTotal = runningTotal + float(convert_if_negative(row["To Num."]))
            if (numbersOnly):
                print(str(round(runningTotal, 2)))
            else:
                if (smoothieChartEmulation):
                    payload = {'random_graph': runningTotal}
                    r = requests.get('https://dash.infinityflame.co.uk/dash/flex.php', params=payload, cookies={'PHPSESSID': sessionCookie})
                print(str(convert_if_negative(row["To Num."])) + " Description: "+ row["Description"] + " Account Balance: " + str(round(runningTotal, 2)))
                entries.append([row["Date"],row["Description"],row["Category"],str(convert_if_negative(row["To Num."])),str(round(runningTotal, 2))])

# Save what we care about to our new csv for power BI   
with open('accounts_out.csv', mode='w', newline='') as csvOut:
    titles = ["Date","Description","Destination","Transaction","Account Balance"]
    writer = csv.writer(csvOut, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(titles)
    for transaction in entries:
        writer.writerow(transaction)

I used python because it’s quick to debug in Atom and I know it well. The way this snippet is used is to export an account from GnuCash, then use this program to output the final CSV to be taken in by PowerBi, I’ve chained these steps together. The final result is stored in accounts_out.csv.

Thanks!

Business Processes Re-engineering

When a business grows and adapts it often requires a lot of overhauls, both physically and digitally. Processes that previously worked or were effective for purpose are no longer so. Because of this a business will re-engineer part of its business processes to adapt.

Reasons Why a Business May Adapt its Processes

A business may change the way it functions for many reasons,

  • The business is expanding and it’s old process needs to handle the additional capacity or machinery.
  • The function the old system used to serve has been superseded or removed from the business process as it is no longer required.
  • The business is being merged or acquired by another and duplicate processes need to be removed or increased and vice versa.
  • The process currently being used is not dynamic enough to be useful anymore or is causing issues.
  • A process is failing or is not always effective.
  • The current process has too many avoidable errors.

Reasons Why a Process May Need Changing

A business may change it’s processes for many reasons, such as ; –

  • Improve the speed of operation.
  • Improve the customization or dynamic of a process.
  • Improve the continuity or compatibility to connect the process to other processes.
  • As a reaction to changing legislation, laws or consumer complaints.
  • Improve the efficiency of a process.
  • Improve the operating cost of a process.
  • Improve the output or capacity of a process.
  • Improve the working capital investment in a process.
  • Improve quality of a product.
  • Change the product.

Re-engineering a process not only requires identifying a change but enacting that change can take a lot of steps to complete, especially for products in areas that are heavily reliant on compliance and conformity, such as electrical appliances or medial tools.

Improving Efficiency Caveats

Changing a business process can be risky and should have appropriate risk analysis in place where processes are crucial to the business process or jobs.

Many businesses re-engineer their processes simply to ensure that their product or products match demand. Overhauling business processes may not be financially viable if the number of defects or failing products outweighs the cost of replacing the machinery or software process.

Improving the speed of a process may make the process faster but the business may also want to change the system implemented, such as using a batch process system where the job can be completed as part of a ‘batch’. Having many batches however can lead to greater working capital on complex components or products and can mean that if there is a problem with one then it is likely that the whole batch is also going to fail. Batch processing can also make quality control and quality assurance much harder and more expensive to enact.

Gigabit and More on my Home Network

In a recent pursuit to have the fastest speeds possible at home, I have started to upgrade and replace a large section of my home network.

Ensuring That My Network Runs Fast at its Core

Barring the routing technologies at home the most crucial part of my network is my server, an old Dell Optiplex 780 salvaged from an office clear-out it now spends its days hosting my media, files and applications. One of the first things I did was replace all of the cabling around my network. Most being CAT5 the fastest speeds possible were only 100Mbps, this was a noticeable bottleneck when I checked iPerf3 as the switch its connected to, the router and my PC were all gigabit connected and clearly an oversight on my part. Replacing the cable from it to the switch instantly jumped the speed to gigabit. Yay!

Getting Rid of Old Hardware

Another decision I made was to remove some of my old hardware that was no longer up to the task of Gigabit+ speed. That for me meant swapping out a dumb switch capable of 100Mbps max for a new 8 port gigabit one, oddly I bought the 100Mbps one for £10 and sold it for £14 on Ebay so I guess theres money in old switches.

I then replaced its cables too and viola, 1 Gbps throughput on the whole wired network!

What does the future hold?

After looking at transfer speeds between my server and PC, I think the next step is to replace the Optiplex and my PC, as they are now at the point where their age is starting to be a performance problem, although they remain somewhat performant at their daily duties they are both starting to age poorly with the increasing demand from myself for hosting my projects.

I also want to try SFTP+ but I don’t yet have the SSDs or Hard-drives to necessitate it.

Woodmansy, Beverley UK Weather Current Temperature and Humidity

Hey Thanks for checking out my project, or discovering it organically!

Whats the weather?

This page shows the output of my outdoor box DHT22 Temperature sensor, powered by two 100w solar panels it can sometimes run out of power, especially late at night on miserable days. The data is updated in 15-minute intervals based on three samples. The data is monitored and transmitted from an esp8266 to my web-server, which is then logged in a google spreadsheet and then published here, only the last 500 entries are kept in the chart, which makes the whole chart 15 hours long.

The data on this chart can be better viewed here -> Link

The data on this chart can be better viewed here -> Link

If you would like historical data, please contact me.

Hull University Timetable to Google Calendar

Getting your iCal Link for your Timetable

To add your Hull University Timetable iCal feed to Google Calendar, or equivalent calendar to use on your phone or other devices copy the link below,

webcal://calendars.hull.ac.uk/tcs/Stucal.asp?p1=201700500

replacing the 201700500 with your student ID found on your lanyard.

Adding your Scientia Timetable to Google Calendar

Then open Google Calendar and click the plus symbol highlighted in red like below.

Google Calendar add timetable calendar

Then click From URL and paste your link in. It should appear almost instantly. You should then see the new calendar appear that you can then set up notifications and colors to suit your needs.

Adding your Canvas Calendar

You can also add your canvas calendar which has your deadlines on by going to this link and then adding the link in the bottom right the same way we did above, you should now have all of your calendars in one place!


Note that this does not synchronize your mail.hull.ac.uk calendar which you may receive emails with invitations through, and you can’t because you will see this message that prevents you.

outlook cant share calendar out of network

 

 

I am not associated with Hull University, they’re good guys.

Aspects a business should consider in corporate strategy

Corporate Strategy

 

The way a company’s managers should manage a company should largely be down to the business plan. However there are often external factors limiting a companies business, they may choose to solely benefit shareholders, but practically and legally they must provide some benefit to their employees and their customers to remain socially responsible and have a strong positive public relationship to remain profitable. An umbrella corporation may often have to make strategic decisions to combat potential problems well in the future. In the show Silicon Valley (external) the senior venture capitalist spends a lot of his time studying sesame seed markets in Myanmar and Brazil in order to profit in the future, this example (although fictional and a little overplayed) is a small look into the world of ensuring that profits are maintained and some of the crucial detail that must be taken into account.

The ability to assess the viability of consolidating corporate strategy is not only about turning a profit, but is also about financial and shareholder relations, the capability and flexibility of dynamic and slow moving markets, the technical ability of the employees and manufacturing capabilities as well as cost, the people and manpower involved and the risks undertaken at every stage.

Ensuring that a business has a strategic plan ensures that the company has direction and vision, companies that fail to innovate or differentiate could get left behind or never reach their true potential. A business must define the scope of its operations, how it defines its goals, then how it plans to achieve them, and finally, evaluate. Companies that fail to find a suitable corporate strategy could be left behind and not identify important challenges ahead of time and their current states failings such as their branding or vision.

Aspects a business should consider in corporate strategy.

  • Brand appearance, awareness.
  • Internal Culture
  • Market Segmentation
  • Product, Pricing, Placing, Promotion
  • After sales
  • Research and Development
  • Growth Strategy
  • Human Resources
  • Product and Market Innovation
  • Technology

There are many techniques that businesses use to maintain a strategic advantage, such as Porters strategic matrix (external) and Ansoff’s matrix.

Factors Influencing Demand

A Demand and Supply Graph

Demand and Supply Graph

Factors Influencing Demand

This article serves to supplement the article Influences for Supply and Demand, that I wrote a while ago. For a more general overview of supply and demand, I suggest visiting there first.

Demand has many factors that influence a market, such as;-

  • Changes to the prices to substitute products, such as cheaper products available online or at discount stores could reduce the sales of a premium product or product range.
  • Changes to the availability of complementary goods or changes in the price of complementary goods, such as two large luxury opposing ice cream companies.
  • Disruptions to the supply chain of competitors, such that their prices or other aspects change.
  • The incomes of customers could rise, causing customers to choose superior or premium products, similarly, they could fall and choose less or inferior products, Especially prominent for Elastic products or Luxury Items.
  • Advertising could increase consumer interest or make the product more noticeable to customers or potential customers.
  • Branding or PR could be used more prominently or advertised.
    • Recently companies have opted for using social marketing or guerilla marketing, as it can be more successful or noticeable since ad-blockers and the fall of cable TV and TV Advertising have made it harder to reach consumers.
  • Advertising or Branding of other competitors products could also potentially boost your own profits, especially if the product is generic or seasonal.
  • Changes to consumer incomes.

The demand for a product or service may also depend on the demographics of the product, if it is aimed at older people and the area is a student town, finding customers may be more difficult than other locations.

External Shocks, such as the economy or new technologies that make the product or service obsolete could also negatively affect the products demand if a business fails to innovate or adapt to change.

Corporate Social Responsibility’s Advantages and Disadvantages

Corporate Social Responsibility (CSR) is a companies attitude toward respecting the effects that the company may have on things like, the environment, their workers, and the political landscape. Companies may opt to be socially responsible in order to remain positive in the eyes of their customers, this can be difficult for businesses that are fundamentally bad for aspects of society, such as oil or paper companies for the environment.

Corporate Social Responsibility

Some companies may take some strategic steps to ensure that they are to some effect, marketable or otherwise… socially responsible.

  • Some companies may simply take the philanthropic approach, and sponsor a charity or fundraise a cause. According to the Directory of Social Change‘s ‘The Guide to UK Company Giving’, in 2013, £658 million was given to charity and £369 million was given in 2014. However, the top 25 charitable companies donated 68% of this figure, companies such as Lloyd’s Banking Group, Tesco, and Shell.
  • Some companies use more sustainable resources, such as changing packaging, Switching their resource procurement to more sustainable or conflict free markets.
  • Some companies have co-operatives with their suppliers to ensure that their products’ profits are spread evenly among each chain of the products manufacture, distribution, and retail. Or may simply distribute shares of its company to its employees.

Advantages of Corporate Social Responsibility

  • Having a socially responsible company is marketable and attractive to consumers and buyers.
  • Positive Publicity for positive behavior.
  • Companies are less likely to be singled out or face action from pressure groups or disgruntled consumers.
  • Products are seen as high quality from consumers, even if the product may be inferior from other means.
  • Retention of current employees is more likely if the company treats them well.
  • The brand of the company appears stronger and more attractive to consumers.
  • Regulation and Authoritative Bodies are less likely to take interest in controversial practices.

Disadvantages of Corporate Social Responsibility

  • There is a greater expense in the manufacture of products if they need to be replaced.
  • There is, therefore, an increase in cost and a decrease in contribution from products.
  • If there is a mistake or products are made without renewable sources, for example, they may need to recall some of their products to ensure consistent quality and credibility in their own CSR program.

Companies that are more socially responsible are most likely going to benefit from it, however, if the cost of doing so takes a big hit on productivity, then it may be difficult to convince shareholders.

Branding and Promotion in Business

 

Branding and Promotion allows a business to present itself in an identifiable way to the consumer that allows them to leave a slight lasting impression of their existence that should aide repeat purchase or identification of their qualities.

Types of Business Promotion

  • Advertising – The most common way of increasing brand coverage is through advertising, because of the potential reach and scale of platforms advertising is available on it is very easy to meet the metric a business desires, this also has become more easy to segment further by having online advertising to deliver ads on a uniquely measurable and quantifiable scale, whereas before the amount of impressions and effectiveness of the adverts was not individually classifiable in the real world, using online advertising changes the game as advertisers are able to segment the market down to the age, location and interest.
  • Promotions – Offering promotions allow a business to make itself more noticeable to the consumer as they will see the promotion as a deal, and then associate the product and brand. Promotion may also increase brand awareness by sponsoring a stadium or event, that allows them to receive some of the publicity that the stadium has with it.
  • Direct Marketing – Marketing to the customer directly through more orthodox methods, such as telemarketing or shopping channels, typically requires a lot of sales cost and sometimes isn’t always effective expenditure, whereas advertising or promotion is more effective at reaching consumers as they are able to form their own opinions, rather than have one forced upon them.

Benefits of Strong Branding

Having a strong brand enables a business to sell to their consumers consistently as consumers will actively recognize and seek out their brand. A strong brand is identifiable, recognizable, aspirational and flexible.

Having a strong brand should enable a business to sell its added value effectively to customers, provide the brand with the ability to charge for the brand at a premium rate and have a reduced price elasticity of demand; enabling them to sell to customers even though there are competitors.

Branding and Promotion Word Cloud

Building a Strong Brand

Building a strong brand can be hard to get right.

  • Having a Unique Selling Point allows the customer to differentiate their brand from the others, having something other than a generic product allows the business to market on that principal and build their brand on its effectiveness to the consumer.
  • Using Advertising should increase coverage of their brand and make it recognizable to potential customers.
  • Sponsorship enables businesses to build a positive relationship with their customers, sponsoring a racing event, for example, presents a positive relationship for customers who watch the race, and need one of the sponsor’s products.
  • Social Media and Online presence allow a business to be seen from the internet.
    • Viral Marketing and Guerrilla Marketing allow a business to sell its products, often without the need for expensive advertising budgets. However, this tactic can often be hit and miss.
    • Emotional Marketing can be used to target the emotions of a customer, by playing on the nostalgic or romantic side of individuals for example.
  • Seasonal Marketing can be used to reach customers during festivities and events.