| Normally we apply the following
sequential steps, to manage our software engineering
processes.
Requirements
Analysis
Extracting the requirements of a desired software
product is the first task in creating it. While
customers probably believe they know what the
software is to do, it may require skill and experience
in software engineering to recognize incomplete,
ambiguous or contradictory requirements.
We will define the requirements by creating
Use Cases. Also a general schedule for delivery
will be produced.
Specification
Specification is the task of precisely describing
the software to be written, in a mathematically
rigorous way. In practice, most successful specifications
are written to understand and fine-tune applications
that were already well-developed, although safety-critical
software systems are often carefully specified
prior to application development. Specifications
are most important for external interfaces that
must remain stable.
During this phase
the team prepares the functional specifications,
works the design process through, and prepares
work plans, cost estimates and schedules for the
various deliverables.
This work can be carried out by us for a separate
fee. If the customer also assigns Cadena to develop
the application after the Specification phase
a development contract will be signed at this
point .
In complicated cases a screen prototype of a new
system can also be developed. This allows the
customer to review the future system and to give
their feedback at an early stage of the development.
Software architecture
The architecture of a software system refers to
an abstract representation of that system. Architecture
is concerned with making sure the software system
will meet the requirements of the product, as
well as ensuring that future requirements can
be addressed. The architecture step also addresses
interfaces between the software system and other
software products, as well as the underlying hardware
or the host operating system.
Coding
Translating a design to code may be the most obvious
part of the software engineering job, but it is
not necessarily the largest portion.
Interim status reports will inform customer
about the progress of the project.
Testing
We apply the following testing methods:
- Test Case derived Use Case
Deriving test cases from use cases ensures that
the required functionality of the system is both
developed in the software and reflected in the
test plan. By working from the same specification,
the use cases, development and test are more likely
to arrive at test time with the same expectations
of the system. Coordination between development
and test is further ensured by having the test
organization take ownership of the use cases.
In our organization, this method has been used
successfully on multiple projects.
- Testing during development (test individual
functions)
- Production parallel run (2 or more programmers
working on different functions that can be tested
separately)
- Performance testing (large volume testing)
After rigorous testing, we launch the
application.
Documentation
An important (and often overlooked) task
is documenting the internal design of software
for the purpose of future maintenance and enhancement.
Documentation is most important for external interfaces.
Delivery and Support
Cadena’s team deploys the core technology and
site components, stabilizes the deployment, transitions
the project to operations and support, and obtains
final customer approval for the project.
Usually a typical software package includes:
- Software product
- Technical requirements documentation and design
documentation
- User's Guide
- Installation program and instructions
- Documented source code
- Maintenance instructions
The development team keeps supporting the
system after installation, and we also provide
a warranty.
|