Software and Software Engineering Process Models
Software and Software Engineering Process Models
• Software engineering:
Software Engineering is an engineering branch which is a
systematic and disciplined approach to software development that aims
to create high-quality, reliable, and maintainable software
Why is Software Engineering required?
Software Engineering is required due to the following reasons:
• It is a product, and at the same time, the vehicle for delivering a product.
• As the vehicle used to deliver the product, software acts as the basis for the control
of the computer (operating systems), the communication of information (networks),
and the creation and control of other programs (software tools and environments).
The Nature of Software
• Software delivers the most important product of our time—information.
• It transforms personal data (e.g., an individual’s financial transactions) so that the data
can be more useful in a local context
• it manages business information to enhance competitiveness
• it provides a gateway to worldwide information networks (e.g., the Internet),
• provides the means for acquiring information in all of its forms.
• Such questions acts as a manifestation of the concern about software and the
manner in which it is developed—
a concern that has lead to the adoption of
software engineering practice
Defining Software
• Software is:
(1) instructions (computer programs) that when executed
provide desired features, function, and performance
(2) data structures that enable the programs to adequately
manipulate information, and
(3) descriptive information in both hard copy and virtual
forms that describes the operation and use of the
programs.
Characteristics of Software
• Software has characteristics that are considerably different than those of
hardware
• In order to build software that is ready to meet the challenges of the twenty-first
century, recognizing a few simple realities is important and they are:
• a concerted effort should be made to understand the problem before a software solution is
developed
• design becomes a pivotal activity.
• software should exhibit high quality
• software should be maintainable
PROCESS MODELS
• Definition:
Software process is a framework for the activities, actions, and tasks
that are required to build high-quality software
• For a small software project requested by one person (at a remote location) with simple,
straightforward requirements, the communication activity might encompass little more than a
phone call with the appropriate stakeholder.
• Therefore, the only necessary action is phone conversation, and the work tasks (the task set) that
this action encompasses are:
1. Make contact with stakeholder via telephone.
2. Discuss requirements and take notes.
3. Organize notes into a brief written statement of requirements.
4. E-mail to stakeholder for review and approval.
• If the project was considerably more complex with many stakeholders, each with a different set of
(sometime conflicting) requirements, the communication activity might have six distinct actions:
• inception, elicitation, elaboration, negotiation, specification, and validation
Identifying a Task Set
• Each software engineering action (e.g., elicitation, an action associated with the
communication activity) can be represented by a number of different task sets—
each a collection of software engineering work tasks, related work products,
quality assurance points, and project milestones.
• We should choose a task set that best accommodates the needs of the project
and the characteristics of the team. This implies that a software engineering
action can be adapted to the specific needs of the software project and the
characteristics of the project team
Task Set
• For a larger, more complex software project, a different task set would be required. It
might encompass the following work tasks:
1. Pattern Name.
The pattern is given a meaningful name describing it within the context of the software process (e.g., TechnicalReviews).
2. Forces
The environment in which the pattern is encountered and the issues that make the problem visible and may affect its
solution.
3. Type.
The pattern type is specified
4. Initial context
Describes the conditions under which the pattern applies
5. Resulting Context
Describes the conditions that will result once the pat tern has been successfully implemented
6. Related Patterns.
Provide a list of all process patterns that are directly related to this one. This may be represented as a hierarchy or in some other
diagrammatic form
2. Task pattern—
defines a problem associated with a software engineering action or work task and relevant to
successful software engineering practice (e.g., Requirements Gathering is a task pattern).
3. Phase pattern—
define the sequence of framework activities that occurs within the process, even when the
overall flow of activities is iterative in nature. An example of a phase pattern might be Spiral
Process Assessment and Improvement
• Standard CMMI Assessment Method for Process Improvement (SCAMPI)—
provides a five step process assessment model that incorporates five phases: initiating,
diagnosing, establishing, acting and learning.
• SPICE—
The SPICE (ISO/IEC15504)standard defines a set of requirements for software process
assessment. The intent of the standard is to assist organizations in developing an
objective evaluation of the efficacy of any defined software process.
• The modeling activity (which existed in the inactive state while initial communication was
completed, now makes a transition into the under-development state.
• If, however, the customer indicates that changes in requirements must be made, the modeling
activity moves from the under-development state into the awaiting changes state.
• Concurrent modeling defines a series of events that will trigger transitions from state to state
for each of the software engineering activities, actions, or tasks
• Example:
an inconsistency in the requirements model is uncovered might uncovered in early design stage.
This generates the event analysis model correction, which will trigger the requirements analysis
action from the done state into the awaiting changes state
Advantages
• We can use this model in all types of software development
processes.
• It is so much easier to understand.
• It also provides immediate feedback after the testing process is done.
• It also provides an accurate picture of the state of the project.
Disadvantages
• We have to improve communication between the team members.
• It requires remembering the status of the different activities.
Points to be considered while
applying Evolutionary Models
1. Prototyping and other more sophisticated evolutionary processes poses a problem to
project planning because of the uncertain number of cycles required to construct the
product.
2. Evolutionary software processes do not establish the maximum speed of the evolution. If
the evolutions occur too fast, without a period of relaxation, it is certain that the process
will fall into chaos. On the other hand, if the speed is too slow then productivity could be
affected
3. Software processes should be focused on flexibility and extensibility rather than on high
quality. This assertion sounds scary. However, we should prioritize the speed of the
development over zero defects. Extending the development in order to reach high quality
could result in a late delivery of the product, when the opportunity niche has disappeared
Specialized Process Models
1. Component-Based Development
• It not only identifies candidate components but also qualifies each component’s interface, adapts
components to remove architectural mismatches, assembles components into a selected
architectural style, and updates components as requirements for the system change.
• The component-based development model incorporates the following steps (implemented using
an evolutionary approach):
1. Available component-based products are researched and evaluated for the application domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper functionality.
Advantages
• Reduction in development cycle time
• Reduction in project cost
Formal Methods Model
• The formal methods model is concerned with the application of a mathematical
technique to design and implement the software
• Formal methods enable you to specify, develop, and verify a computer-based
system by applying a rigorous, mathematical notation. A variation on this
approach, called cleanroom software engineering
• Formal methods comprise formal specification using mathematics to specify
the desired properties of the system.
• Formal specification is expressed in a language whose syntax and semantics are
formally defined.
• This language comprises:
• a syntax that defines specific notation used for specification representation
• semantic, which uses objects to describe the system
• a set of relations, which uses rules to indicate the objects for satisfying the specification.
Advantages
• Discovers ambiguity, incompleteness, and inconsistency in the software.
• Offers defect-free software.
• Incrementally grows in effective solution after each iteration.
• This model does not involve high complexity rate.
• Formal specification language semantics verify self-consistency.
Disadvantages
• Time consuming and expensive.
• Difficult to use this model as a communication mechanism for non
technical personnel.
• Extensive training is required since only few developers have the
essential knowledge to implement this model.
Aspect-oriented software
development
• It is a relatively new software engineering paradigm that provides a process and
methodological approach for defining, specifying, designing, and con structing aspects
• Some concerns are high-level properties of a system (e.g., security, fault tolerance).
Other concerns affect functions (e.g., the application of business rules), while others
are systemic (e.g., task synchronization or memory management)
• When concerns cut across multiple system functions, features, and information, they
are often referred to as crosscutting concerns. Aspectual requirements define those
crosscutting concerns that have an impact across the software architecture.