What is software crisis and its influence on software engineering

The term “Software Engineering” was introduced in the late sixties when of a conference held to discuss what was then called the software crisis. And as the software development was in crisis, the costs of hardware fell while that of software soared. It was necessary to new techniques and new methods to control the inherent complexity to large software systems. 

The software crisis was seen through these symptoms:

§ The quality of the software delivered was often poor: The product did not meet user needs, it was consuming more resources than expected and was the origin of breakdowns.

§ The performances were very often poor (response times too slow).

§ Failure to meet deadlines for software development that does not meet not their specifications.

§ Software development costs were almost impossible to predict and were generally prohibitive (excessive)

§ The invisibility of the software, which means that we often noticed that the developed software did not match demand (we could not observe it than using it “too late”).

§ Software maintenance was difficult, expensive and often the cause of new errors.

But in practice, it is essential to adapt the software because their usage environments change and user needs change. It is rare that you can reuse existing software or one of its components to build  a new system, even if it has similar functions. All these problems then led to the emergence of a discipline called “Software engineering”. 

So, software engineering tools and environments programming could help deal with these problems provided they were themselves used within a well-defined methodological framework. Everyone is aware that software plans are known for their bloated budgets, and their specifications not respected. In general, the development of software is a complex activity, which is far from being reduced to programming. 

The software development, especially when the programs have a certain size, requires to adopt a development method, which allows to assist a or more stages of the software life cycle.

Introduction to software engineering

So, how can we define software engineering? All methods, techniques and tools dedicated to the design, development and maintenance of computer systems. To learn software engineering is to have systematic procedures for large software so that:

● the specification corresponds to the real needs of the client

● the software respects its specification

● the deadlines and costs allocated to the implementation are respected

Set of entities necessary for the operation of an automatic information processing process, that are programs, data and documentation, are a set of programs that allow a computer system to perform a specific task or function. 

Specific software difficulties:

● Invisible and intangible product

● Difficult to measure quality

● Critical consequences caused by minute changes

● Updates and maintenance due to the rapid evolution of technology

● Difficult to reason about programs

● Mainly human software failures

In software and web development, it is necessary to pay attention to the importance of software quality, i.e. its reliability, safety and security of software. Mind that software used in the following spheres should be even more reliable:

  •  Automobile, rail, aeronautical transport
  •  Control of industrial, nuclear, armament processes
  •  Medical: imagery, equipment, remote surveillance
  •  E-commerce, contactless bank card, electronic passports

Software quality criteria:

● Validity: response to user needs

● Ease of use: grip and robustness

● Performance: response time, flow, fluidity …

● Reliability: fault tolerance

● Security: data integrity and access protection

● Maintainability: easy to correct or transform the software

● Portability: change of hardware or software environment

Web development in the field of multimedia 

By holding this certificate of college studies you will be called upon to do the development of user-friendly, interactive applications and in the field of multimedia. Tasks affect several stages of the application development cycle: user needs, design and development of various tools or coordination aspects concerning interactive multimedia software. You can also create and optimize the content of a website using graphics, databases data, animations and software. You can also play the role of resource person with users.

By learning web development you will achieve the following goals:

■ become creative and have a marked interest in new technologies;

■ achieve methodical and have good analytical skills;

■ discover imagination and create from a specific need;

■ designing using new technologies;

■ achieve resourcefulness.

The web development console

Let us discover tools associated with the main browsers and which will greatly facilitate programming tasks in web development, in particular, debugging. When testing an animation in development in a browser, it does not always the first time the desired behavior. A bug may have occurred and we ask ourselves the question of how to solve it.

We can distinguish two types of bugs: syntax errors and logical errors in a algorithm. For these two types of bugs, we can use a set of development tools integrated into the Navigator. We will not detail all these tools here, but those that will be immediately available to you the most useful:

• the error console,

• the debugger,

• the inspector.