You are on page 1of 27

Event Driven Programming

Chapter 1
Introduction
BY Simachew M(MSc in Information Technology).
Introduction to software development
• What is software development?
• Software development is the practice of organizing the design and construction of software,
the beating heart of much technology fundamental to our personal and professional life.
• Software development refers to a set of computer science activities dedicated to the process
of creating, designing, deploying and supporting software
• The software itself is the set of instructions or programs that tell a computer what to do
• There are three basic types:
• System software to provide core functions such as operating systems, disk management,
utilities, hardware management, and other operational necessities.
• Programming software to give programmers tools such as text editors, compilers, linkers,
debuggers, and other tools to create code.
• Application software (applications or apps) to help users perform tasks.
Cont.
• A possible fourth type is embedded software. Embedded systems software is used to
control machines and devices not typically considered computers.
• Software development is primarily conducted by programmers, software engineers,
and software developers.
• There are roles in software development process.
i. Programmers, or coders, write source code to program computers for specific
tasks like merging databases, processing online orders etc.
ii. Software engineers apply engineering principles to build software and systems to
solve problems. They use modeling language and other tools to devise solutions
that can often be applied to problems
Cont.

iii. Software developers have a less formal role than engineers and can
be closely involved with specific project areas — including writing code.
And at the same time, they drive the overall software development
lifecycle.
Steps in software development
• Developing software typically involves the following steps:

 Selecting a methodology to establish a framework in which the steps of software development are applied.

 Gathering requirements to understand and document what is required by users and other stakeholders.

 Choosing or building an architecture as the underlying structure within which the software will operate.

 Developing a design around solutions to the problems presented by requirements, often involving process

models and storyboards.

 Building a model with a modeling tool that uses a modeling language like SysML or UML to conduct early

validation, prototyping and simulation of the design.


Cont.

Constructing code in the appropriate programming language.

Testing with pre-planned scenarios as part of software design and coding

Deploying the software for use and responding to and resolving user problems.

Migrating data to the new or updated software from existing applications or


data sources if necessary.

Maintenance and support


Software development approaches

• Several approaches can be used, including waterfall, spiral, Agile, and


incremental development.

• These different approaches will focus the testing effort at different points in the
development process.

• However, each approach is composed of the same basic steps of development.

• The incremental development approach typically forms the basis for software
development within the larger systems.
Types of Software Development
Approaches
• There are four main types of software development approaches which are:
1. Waterfall Approach
• Development activities are performed in order, with possibly minor
overlap, but with little or no iteration between activities.
• The waterfall model is often also referred to as the linear and sequential
model
• In this model, the software development activities move to the next phase
only after the activities in the current phase are over.
• However, as is the case with a waterfall, one cannot return to the previous
stage.
Cont.
2. Incremental Approach

• Determines user needs and defines the overall architecture, but then
delivers the system in a series of increments
3. Spiral Approach

• A risk-driven controlled prototyping approach that develops


prototypes early in the development process to specifically address
risk areas
• Areas that are prototyped frequently include user requirements and
algorithm performance.
4. Agile and Scrum Approach

• The Agile software development process and its most popular method, Scrum,
use a dynamic and iterative way to build software.

• Agile is all about moving quickly, putting out new versions often, and responding
to what your users really need, even if that goes against what you had planned.

• In contrast to the strict, sequential flow of the Waterfall process, cross-functional


teams in Agile work in “Sprints” of a week or a few months to build and release
software that customers can use and give feedback on.
Rapid application Development
• What is RAD?
• Rapid Application Development or RAD means an adaptive software
development model based on prototyping and quick feedback with less
emphasis on specific planning.
• In general, the RAD approach prioritizes development and building a
prototype, rather than planning.
• With rapid application development, developers can quickly make multiple
iterations and updates to the software without starting from scratch.
• This helps ensure that the final outcome is more quality-focused and aligns
with the end users’ requirements.
Cont.
Why do you use Rapid Application Development?

• RAD is the best approach to develop prototypes swiftly for testing software functionalities
without worrying about any effects on the end product.

• Rapid Application Development (RAD) is a software development methodology that prioritizes


rapid prototyping and quick feedback over long, drawn-out development and testing cycles.

• Faster Time-to-Market: RAD uses iterative development and prototyping, which means that
usable parts of the software can be delivered quickly.

• This allows businesses to bring their products to market faster, which can provide a significant
competitive advantage.
Software development principles

• There are many different software development principles that can help in
creating an application by maintaining clean codes which can result in its
success.

• These principles of software development should be constantly implied by


software developers from time to time for the seamless evolvement of projects.

• To develop a proper software one should follow the following 10 Principles of


software development:
1. Architecture first approach:
• In this approach over the main aim is to build a strong architecture for
our software.
• All the ambiguities and flaws are being identified during the very
trivial phase.
• Also, we can take all the decisions regarding the design of the
software which will enhance the productivity of our software.
2. Iterative life cycle process
• An iterative life cycle process we repeated the process again and again
to eliminate the risk factors.
• An iterative life cycle we mainly have four steps requirement
gathering, design, implementation, and testing.
• All these steps are repeated again and again until we mitigate the risk
factor.
• Iterative life cycle process is important to alleviate risk at an early
stage by repeating the above-mentioned steps again and again.
3. Component Based Approach:

• In component-based approach is a widely used and successful


approach in which we reuse the previously defined functions for the
software development.
• We reuse the part of code in the form of components.
• Component-based UI Development Optimizes the Requirements &
Design Process and thus is one of the important modern software
principle.
4. Change Management system:
• Change Management is the process responsible for managing all
changes.
• The main aim of change management is to improve the quality of
software by performing necessary changes.
• All changes implemented are then tested and certified.
5. Round Trip Engineering:

• In round trip engineering code generation and reverse engineering take


place at the same time in a dynamic environment.
• Both components are integrated so that developers can easily work on
both of them.
• In round trip engineering, the main characteristic is automatic update
of artifacts.
6. Model Based Evolution:

• Model-based evolution is an important principle of software


development.
• A model-based approach supports the evolution of graphics and
textual notions.
7. Objective Quality Control:
• The objective of quality control is to improve the quality of our
software.
• It involves Quality management plan, Quality metrics, Quality
checklist, Quality baseline, and Quality Improvement measures.
8. Evolving levels of details:

• Plan intermediate releases in groups of usage scenarios with evolving


levels of details.
• We must plan an incremental realize in which we have an evolving
level of use case, architecture, and details.
9. Establish a configurable process:

• Establish a configurable process that is economically scalable.

• One single process is not suitable for all the development so we must
use a configurable process which can deal with various applications.
10. Demonstration Based approach:

• In this approach, we mainly focus on demonstration.

• It helps in the increase of productivity and quality of our software by


representing a clear description about problem domain, approaches
used and the solution.
.

Thank You!!!

You might also like