(Csc. 351 Software Engineering) : Lecturer: Hiranya Bastakoti
(Csc. 351 Software Engineering) : Lecturer: Hiranya Bastakoti
These activities may involve the development of software from a standard programming
language like C, C++or Java. Increasingly, however, new software is developed by extending and
modifying existing systems and by configuring and integrating off-the-shelf software or system
components.
Software processes are complex and, like all intellectual and creative processes, rely on people
making decisions and judgements. Because of the need for judgement and creativity, attempts
to automatic processes have met with limited success. CASE tools can support some process
activities.
• Software Specification: The functionality of software and constraints on its operation must be
defined
• Software Design and Implementation: The software to meet the specifications must be
produced.
• Software Validation: The software must be validated to ensure that it does what the
customer wants
• Software Evolution: The software must evolve to meet changing customer needs.
To solve actual problems in an industry setting, a software engineer or a team of engineers must
incorporate a development strategy that encompasses the process, methods, and tools and the
generic phases. This strategy is often referred to as a process model or a software engineering
paradigm.
A process model for software engineering is chosen based on the nature of the project and
application, the methods and tools to be used, and the controls and deliverables that are
required.
The waterfall(Linear) model: Separate and distinct phases of specification and development
Because of the cascade from one phase to another, this model is known as waterfall/software
life cycle.
This model takes the fundamental process activities of specification, development, validation
and evolution and represents them as separate phases such as requirements specification,
software design, implementation, testing and maintenance.
Requirements analysis and definition: The system’s service, constraints and goals are
established by consultation with system users. They are often defined in detail and serve as a
system specification.
System and software design: The system design process partitions the requirements to either
hardware or software systems. It establishes overall system architecture. Software design
involves identifying and describing the fundamental software system abstractions and their
relationship
Implementation and unit testing: During this stage, the software design is realised as asset of
programs and program units. Unit testing involves verifying that each unit meets its
specification.
Integration and system testing: The individual program units or programs are integrated and
tested as a complete system to ensure that the software requirements have been met. After
testing, the software system is delivered to the customer.
Advantages:
The drawback of the waterfall model is the difficulty of accommodating change after the
process is underway because of sequential nature
Refine
Requirements
Often, a customer defines a set of general objectives for software but does not identify detailed
input, processing, or output requirements. In other cases, the developer may be unsure of the
efficiency of an algorithm, the adaptability of an operating system, or the form that human/machine
interaction should take. In these, and many other situations, a prototyping model may offer the best
approach.
The prototyping model begins with requirements gathering. Developer and customer meet and
define the overall objectives for the software, identify whatever requirements are known, and
outline areas where further definition is mandatory. A "quick design" then occurs. The quick design
focuses on a representation of those aspects of the software that will be visible to the
Prototyping model should be used when requirements of the system are not clearly understood or
are unstable. It can also be used if requirements are changing quickly. This model can be successfully
used for developing user interfaces, high technology software intensive systems, and systems with
complex algorithms and interfaces. It is also a very good choice to demonstrate technical feasibility
of the product.
Advantages:
A partial product is built in the initial stages. Therefore customers get a chance to see the
product early in the life cycle and thus give necessary feedback.
As user is involved from the starting of the project, he/she tends to be more secure,
comfortable and satisfied.
Disadvantages:
After seeing an early prototype end users demand the actual system to be delivered.
If not managed properly, the iterative process of prototype demonstration and refinement can
continue for long duration.
If end user is not satisfied with initial prototype, he/she may loose interest in the project.
Poor documentation
Business modeling: The information flow among business functions is modeled in a way that answers
the following questions: What information drives the business process? What information is generated?
Who generates it? Where does the information go? Who processes it?
Data modeling: The information flow defined as part of the business modeling phase is refined into a set
of data objects that are needed to support the business. The characteristics (called attributes) of each
object are identified and the relationships between these objects defined.
Process modeling: The data objects defined in the data modeling phase are transformed to achieve the
information flow necessary to implement a business function. Processing descriptions are created for
adding, modifying, deleting, or retrieving a data object.
Application generation: RAD assumes the use of fourth generation techniques). Rather than creating
software using conventional third generation programming languages the RAD process works to reuse
existing program components (when possible) or create reusable components (when necessary). In all
cases, automated tools are used to facilitate construction of the software.
Testing and turnover: Since the RAD process emphasizes reuse, many of the program components have
already been tested. This reduces overall testing time. However, new components must be tested and
all interfaces must be fully exercised. Obviously, the time constraints imposed on a RAD project demand
Advantages
As customer is involved at all stages of development. It leads to product achieving customer
satisfaction.
Usage of powerful development tools results into reduced software development cycle time.
Makes use of reusable components, to decrease the cycle time
Drawbacks of RAD
For large but scalable projects, RAD requires sufficient human resources to create the right
number of RAD teams.
RAD requires developers and customers who are committed to the rapid-fire activities
necessary to get a system complete in a much abbreviated time frame. If commitment is lacking
from either constituency, RAD projects will fail.
Not all types of applications are appropriate for RAD. If a system cannot be properly
modularized, building the components necessary for RAD will be problematic. If high
performance is an issue and performance is to be achieved through tuning the interfaces to
system components, the RAD approach may not work.
RAD is not appropriate when technical risks are high. This occurs when a new application
makes heavy use of new technology or when the new software requires a high degree of
interoperability with existing computer programs.
Exploratory development
• Objective is to work with customers and to evolve a final system from an initial outline
specification. Should start with well-understood requirements
Throw-away prototyping
• Objective is to understand the system requirements. Should start with poorly understood
requirements
Advantages:
The advantage of software process that is based on an evolutionary approach is that the
specification can be developed incrementally.
As users develop a better understanding of their problem, this can be reflected in the software
system.
The process is not visible: Managers need regular deliverables to measure progress. If systems
are developed quickly, it is not cost-effective to produce documents that reflect every version of
the system.
Systems are often poorly structured: Continual change tends to corrupt the software structure.
Incorporating software changes becomes increasingly difficult and costly.
Once the system increments have been identified, the requirements for the services to be
delivered in the first increment are defined in detail, and that increment is developed. During
development, further requirements analysis for later increments can take place, but
requirements changes for the current increment are not accepted.
Once increment is completed and delivered, customers can put it into services>they can
experiment with the system that helps to clarify their requirements for later increments and for
later versions of the current increment. As new increments are completed, they are integrated
with existing increments so that the system functionality improves each delivered increment.
The common services may be implemented early in the process or may be implemented
incrementally as functionality is required by an increment.
(In incremental model, rather than deliver the system as a single delivery, the development and
delivery is broken down into increments with each increment delivering part of the required
functionality
User requirements are prioritised and the highest priority requirements are included in early
increments
Once the development of an increment is started, the requirements are frozen though
requirements for later increments can continue to evolve)
Customer value can be delivered with each increment so system functionality is available earlier
Early increments act as a prototype to help elicit requirements for later increments
New approach to development based on the development and delivery of very small increments
of functionality
Relies on constant code improvement, user involvement in the development team and pairwise
programming
Disadvantages:
Well defined interfaces are required to connect modules developed with each phase.
In this model, process is represented as a spiral rather than as a sequence of activities with
backtracking from one activity to another.
No fixed phases such as specification or design - loops in the spiral are chosen depending on
what is required
Fig:Spiral model
In this sector, specific objectives are defined. Constraints on the process and product are
identified and a detailed management plan is drawn up. Project risks are identified. Alternative
strategies, depending on these risks, may be planned.
Risk assessment and reduction: Risks are assessed and activities put in place to reduce the key risks)
For each of the identified project risks, a detailed analysis is carried out. Steps are taken to
reduce the risk. For example, if there is risk that requirement are inappropriate, a prototype
system may be developed.
Development and validation: A development model for the system is chosen which can be any of
the generic models
After risk evaluation, a development model for the system is chosen which can be any generic
model. For example. the waterfall model may be the most appropriate development model if the
main identified risk is sub-system integration
Planning: (The project is reviewed and the next phase of the spiral is planned)
The project is reviewed and a decision made whether to continue with a further loop of the
spiral. If it is decided to continue, plans are drawn up for the next phase of the project.
Advantages:
The model tries to resolve all possible risks involved in the project starting with the highest risk.
End users get a chance to see the product early in life cycle.
With each phase as product is refined after customer feedback, the model ensures a good quality
product.
The model makes use of techniques like reuse, prototyping and component based design
Disadvantages:
The model requires expertise in risk management and excellent management skills.
This model is not suitable for small projects as cost of risk analysis may exceed the actual cost of the
project.
A CASE repository is a system developers’ database. It is a place where developers can store system
models, detailed descriptions and specifications, and other products of system development. Synonyms
include dictionary and encyclopedia.
CASE Facilities: To use the repository, the CASE tools provide some combination of the following
facilities.
Diagramming tools: are use to draw the system models required or recommended in
most system development methodologies. Usually, the shapes on one system model can
be linked to other models and to detailed descriptions.
Dictionary tools: are used to record, delete, edit, and output detailed documentation
and specifications. The descriptions can be associated with shapes appearing on system
models that were drawn with diagramming tools.
Design tools: can be used to develop system components such as inputs and outputs.
Quality management tools: analyze system models, descriptions and specifications, and
designs for completeness, consistency, and conformance to accepted rules of the
methodologies.
Documentation tools: are used to assemble, organize, and report on system models,
descriptions and specifications, and prototype that can be reviewed by system owners,
users, designers, and builders.
Design and code generator tools: automatically generate database designs and
application programs or significant portions of those programs.
Forward engineering requires the systems analyst to draw system models, either from scratch or from
templates. The resulting models are subsequently transformed into program code
Reverse engineering allows a CASE tool to read existing program code and transform that code into a
representative system model that can be edited and refined by the systems analyst.