Short Note for Software & Software Development Practices

Introduction to Software & Software Development Practices - Short Note 

Lesson Overview

  1. What is Software?
  2. Software products
  3. Why Software is Important?
  4. Software costs
  5. Features of Software
  6. Software Applications
  7. Essential attributes of good software
  8. Software Engineering
  9. Software Process
  10. Software Myths

1. What is Software?

The product that software professionals build and then support over the long term.

Software encompasses:

  • Instructions 
  • Data structures 
  • Documentation

2. Software products

Generic products

Stand-alone systems that are marketed and sold to any customer who wishes to buy them.

Customized products

Software that is commissioned by a specific customer to meet their own needs. 
Examples: air traffic control software or traffic monitoring systems for a specific client

3. Why Software is Important?

The economies of all developed nations are dependent on software. More and more systems are software controlled (transportation, medical, telecommunications, military, industrial, entertainment,) Software engineering is concerned with theories, methods, and tools for professional software development. Expenditure on software represents a significant fraction of GNP (Gross National Product) in all developed countries.

4. Software costs

  • The costs of software on a PC are often greater than the hardware cost.
  • Software costs more to maintain than it does to develop. For systems with long life, maintenance costs may be several times development costs.
  • Software engineering is concerned with cost-effective software development.

5. Features of Software

  • Software is developed or engineered, it is not manufactured.
  • The software does not wear out, but it deteriorates.
  • Although the industry is moving toward component-based construction, most software continues to be custom-built.

6. Software Applications

  • System software
  • Application software
  • Engineering/scientific software
  • Embedded software
  • Product-line software 
  • WebApps 
  • AI software

7. Essential attributes of good software

  • Maintainability
  • Dependability and Security
  • Efficiency
  • Acceptability

8. Software Engineering

Definition

[Software engineering is] the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.

Importance
  • More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly.
  • It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems, rather than just write the programs as if it was a personal programming project.
  • For most types of system, the majority of costs are the costs of changing the software after it has gone into use.

9. Software Process

  • A process is a collection of activities, actions, and tasks that are performed when some work product is to be created. 
  • It is not a rigid prescription for how to build computer software. 
  • Rather, it is an adaptable approach that enables the people doing the work to pick and choose the appropriate set of work actions and tasks
  • Purpose of the process is to deliver software in a timely manner and with sufficient quality to satisfy those who have sponsored its creation and those who will use it. 
There are several activities in a generic process framework.
  • Communication
  • Planning
  • Modeling
  • Construction
  • Deployment
Apart from the above activities, there are some other umbrella activities.
  • Software project tracking and control
  • Risk management
  • Software quality assurance
  • Technical reviews
  • Measurement
  • Software configuration management
  • Reusability management

10. Software Myths

There are several erroneous beliefs about software and the process used to build it.

Myth 1: Once we write the program and get it to work, our job is done.
Reality: the sooner you begin writing code, the longer it will take you to get done. 60% to 80% of all efforts are spent after the software is delivered to the customer for the first time.

Myth 2: Until I get the program running, I have no way of assessing its quality.
Reality: technical review are a quality filter that can be used to find certain classes of software defects from the inception of a project.

Myth 3: software engineering will make us to create voluminous and unnecessary documentation and will invariably slow us down.

Reality: it is not about creating documents. It is about creating a quality product. Better quality leads to reduced rework. Reduced work results in faster delivery times.

****

References - Software Engineering  by Ian Sommerville (Ninth Edition)

Comments