How to make a software ?

What is Software ?

The term software refers to the set of electronic program instructions or data a computer processor reads in order to perform a task or operation.

What are the attributes of good software?

Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable.

What are the fundamental software engineering activities?

Software specification, software development,software validation, and software evolution.

What are the costs of software engineering?

Roughly 60% of software costs are development costs; 40% are testing costs. For custom software, evolution costs often exceed development costs.

The coming words let you understand the previous questions and answers:

There are two type of software products:

Software can be categorized according to what it is designed to accomplish. There are two main types of software: systems software and application software.

Systems software includes the programs that are dedicated to managing the computer itself and is responsible for controlling, integrating, and managing the individual hardware components of a computer system, such as the operating system, file management utilities, and disk operating system (or DOS). The operating system manages the computer hardware resources in addition to applications and data. Without systems software installed in our computers we would have to type the instructions for everything we wanted the computer to do!

Application software, or simply applications, are often called productivity programs or end-user programs because they enable the user to complete tasks such as creating documents, spreadsheets, databases, and publications, doing online research, sending email, designing graphics, running businesses, and even playing games! Application software is specific to the task it is designed for and can be as simple as a calculator application or as complex as a word processing application. When you begin creating a document, the word processing software has already set the margins, font style and size, and the line spacing for you. But you can change these settings, and you have many more formatting options available. For example, the word processor application makes it easy to add color, headings, and pictures or delete, copy, move, and change the document’s appearance to suit your needs.

So here we will talk about application software which is two types:

  1. Generic products These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them. Examples of this type of product include software for PCs such as databases, word processors, drawing packages, and project-management tools. It also includes so-called vertical applications designed for some specific purpose such as library information systems, accounting systems, or systems for maintaining dental records.

  1. Customized (or bespoke) products These are systems that are commissioned by a particular customer. A software contractor develops the software especially for that customer. Examples of this type of software include control systems for devices, systems written to support a particular business process, and air traffic control systems.

so why do you want to make a software ?

Perhaps the most significant factor in determining which software engineering methods and techniques are most important is the type of application that is being developed. There are many different types of application including:

  1. Stand-alone applications These are application systems that run on a local computer,such as a PC. They include all necessary functionality and do not need to be connected to a network. Examples of such applications are office applications on a PC, CAD programs, photo manipulation software, etc.

  1. Interactive transaction-based applications These are applications that execute on a remote computer and that are accessed by users from their own PCs or terminals. Obviously, these include web applications such as e-commerce applications where you can interact with a remote system to buy goods and services.This class of application also includes business systems, where a business provides access to its systems through a web browser or special-purpose client program and cloud-based services, such as mail and photo sharing. Interactive applications often incorporate a large data store that is accessed and updated in each transaction.

  1. Embedded control systems These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system. Examples of embedded systems include the software in a mobile (cell) phone, software that controls anti-lock braking in a car, and software in a microwave oven to control the cooking process.

  1. Batch processing systems These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. Examples of batch systems include periodic billing systems, such as phone billing systems, and salary payment systems.

  1. Entertainment systems These are systems that are primarily for personal use and which are intended to entertain the user. Most of these systems are games of one kind or another. The quality of the user interaction offered is the most important distinguishing characteristic of entertainment systems.

  1. Systems for modeling and simulation These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. These are often computationally intensive and require high-performance parallel systems for execution.

  1. Data collection systems These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing.The software has to interact with sensors and often is installed in a hostile environment such as inside an engine or in a remote location.

  1. Systems of systems These are systems that are composed of a number of other software systems. Some of these may be generic software products, such as a spreadsheet program. Other systems in the assembly may be specially written for that environment.

So whats software engineering process ?

The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product. There are four fundamental activities that are common to all software processes:

A software process is a set of related activities that leads to the production of a software product.

There are many different software processes but all must include four activities that are fundamental to software engineering:

  1. Software specification

    where customers and engineers define the software that is to be produced and the constraints on its operation.

    The functionality of the software and constraints on its operation must be defined.

  1. Software design and implementation The software to meet the specification must be produced.

    where the software is designed and programmed

  1. Software validation The software must be validated to ensure that it does what the customer wants.

    where the software is checked to ensure that it is what the customer requires.

  1. Software evolution The software must evolve to meet changing customer needs.

where the software is modified to reflect changing customer and market requirements.Different types of systems need different development processes. For example, real-time software in an aircraft has to be completely specified before development begins. In e-commerce systems, the specification and the program are usually developed together. Consequently, these generic activities may be organized in different ways and described at different levels of detail depending on the type of software being developed.

1-Software specification and requirement

The process of establishing what services are required and the constraints on the system’s operation and development.

Software specification or requirements engineering is the process of understanding and defining what services are required from the system and identifying the constraints on the system’s operation and development.

There are four main activities in the requirements engineering process:

Feasibility study Is it technically and financially feasible to build the system?

An estimate is made of whether the identified user needs may be satisfied using current software and hardware technologies. The study considers whether the proposed system will be cost-effective from a business point of view and if it can be developed within existing budgetary constraints. A feasibility study should be relatively cheap and quick. The result should inform the decision of whether or not to go ahead with a more detailed analysis

Requirements elicitation and analysis What do the system stakeholders require or expect from the system?

This is the process of deriving the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis, and so on. This may involve the development of one or more system models and prototypes. These help you understand the system to be specified.

Requirements specification Defining the requirements in detail

is the activity of translating the information gathered during the analysis activity into a document that defines a set of requirements. Two types of requirements may be included in this document. User requirements are abstract statements of the system requirements for the customer and end-user of the system; system requirements are a more detailed description of the functionality to be provided.

Requirements validation Checking the validity of the requirements

This activity checks the requirements for realism, consistency,and completeness. During this process, errors in the requirements document are inevitably discovered. It must then be modified to correct these problems.

2-Software design and implementation

The implementation stage of software development is the process of converting a system specification into an executable system. It always involves processes of software design and programming but, if an incremental approach to development is used, may also involve refinement of the software specification.

A software design is a description of the structure of the software to be implemented,the data models and structures used by the system, the interfaces between system components and, sometimes, the algorithms used. Designers do not arrive at a finished design immediately but develop the design iteratively. They add formality and detail as they develop their design with constant backtracking to correct earlier designs.

Figure below is an abstract model of this process showing the inputs to the design process, process activities, and the documents produced as outputs from this process.

The process of converting the system specification into an executable system.

Software design Design a software structure that realises the specification;

Implementation Translate this structure into an executable program;

The activities of design and implementation are closely related and may be inter-leaved


Design activities:

The activities in the design process vary, depending on the type of system being developed. For example, real-time systems require timing design but may not include a database so there is no database design involved. the figure above shows four activities that may be part of the design process for information systems:

Architectural design,where you identify the overall structure of the system, the principal components (sometimes called sub-systems or modules), their relationships and how they are distributed.

where you identify the overall structure of the system, the principal components (sometimes called sub-systems or modules), their relationships,and how they are distributed

Interface design,where you define the interfaces between system components.

This interface specification must be unambiguous. With a precise interface, a component can be used without other components having to know how it is implemented. Once interface specifications are agreed, the components can be designed and developed concurrently.

Component design,where you take each system component and design how it will operate.

 This may be a simple statement of the expected functionality to be implemented, with the specific design left to the programmer. Alternatively, it may be a list of changes to be made to a reusable component or a detailed design model.

The design model may be used to automatically generate an implementation

Database design,where you design the system data structures and how these are to be represented in a database.

 Again, the work here depends on whether an existing database is to be reused or a new database is to be created.

3-Software validation

Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.

Software validation or, more generally, verification and validation (V&V) is intended to show that a system both conforms to its specification and that it meets

the expectations of the system customer. Program testing, where the system is executed using simulated test data, is the principal validation technique. Validation may also involve checking processes, such as inspections and reviews, at each stage of the software process from user requirements definition to program development. Because of the predominance of testing, the majority of validation costs are incurred during and after implementation.

Except for small programs, systems should not be tested as a single, monolithic unit. Figure below shows a three-stage testing process in which system components are tested then the integrated system is tested and, finally, the system is tested with the customer’s data. Ideally, component defects are discovered early in the process, and interface problems are found when the system is integrated.

The stages in the testing process are:

Development or component testing

Individual components are tested independently,Components may be functions or objects or coherent groupings of these entities.

System testing

making up the system are tested by the people developing the system,System components are integrated to create a complete system.

This process is concerned with finding errors that result from unanticipated interactions between components and component interface problems. It is also concerned with showing that the system meets its functional and non-functional requirements, and testing the emergent system properties. For large systems, this may be a multi-stage process where components are integrated to form subsystems that are individually tested before these sub-systems are themselves integrated to form the final system.

Acceptance testing

Testing with customer data to check that the system meets the customer’s needs.

This is the final stage in the testing process before the system is accepted for operational use. The system is tested with data supplied by the system customer rather than with simulated test data. Acceptance testing may reveal errors and omissions in the system requirements definition, because the real data exercise the system in different ways from the test data. Acceptance testing may also reveal requirements problems where the system’s facilities do not really meet the user’s needs or the system performance is unacceptable.

4-Software evolution

As requirements change through changing business circumstances, the software that supports the business must also evolve and change.

Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.

The flexibility of software systems is one of the main reasons why more and more software is being incorporated in large, complex systems. Once a decision has been made to manufacture hardware, it is very expensive to make changes to the hardware design. However, changes can be made to software at any time during or after the system development. Even extensive changes are still much cheaper than corresponding changes to system hardware.

Historically, there has always been a split between the process of software development and the process of software evolution (software maintenance). People think of software development as a creative activity in which a software system is developed from an initial concept through to a working system. However, they sometimes think of software maintenance as dull and uninteresting. Although the costs of maintenance are often several times the initial development costs, maintenance processes are sometimes considered to be less challenging than original software development.

Hardly any software systems are completely new systems and it makes much more sense to see development and maintenance as a continuum. Rather than two separate processes, it is more realistic to think of software engineering as an evolutionary process (Figure below) where software is continually changed over its lifetime in response to changing requirements and customer needs.


Ok now there are many models for software engineering process ,you have to choose which one you will use in your program as :

  • The waterfall model

        Plan-driven model. Separate and distinct phases of specification and development.

       This takes the fundamental process activities of specification,development, validation, and evolution and represents

       them as separate process phases such as requirements specification, software design, implementation,testing,and

       so on.

  • Incremental development

         Specification, development and validation are interleaved. May be plan-driven or agile.

  • Reuse-oriented software engineering

        The system is assembled from existing components. May be plan-driven or agile.

In practice, most large systems are developed using a process that incorporates elements from all of these models


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>