Module 1 SE
Module 1 SE
PROCESS FRAMEWORK :
A process framework is a basic structure where all the activities are described in detail to achieve the task. This
is further divided into five generic software engineering framework activities for a better approach and to
ensure that no detail is missed.
1. Communication
Communication is the most basic yet important step in the software engineering framework. Here, the software
engineer and the user or the client discuss the functioning of the application. It is important to note down all
the details. Even if a small detail is missed or ignored, it may cause a problem in the later steps.
2. Planning
Planning is a more technical part of the software engineering frameworks. It requires the engineer to formulate
a work plan that shall be successful and foolproof. It also contains a list of all the requirements and risks.
Further, it has a detailed timetable on how work shall be scheduled ahead.
3. Modeling
A model is designed with the help of analyzing the data collected and the rough plan for the framework
software engineering. This helps get a rough idea of how the application would function. It also helps
significantly identify any loopholes or problems the application may have.
4. Construction
Construction is the step where the application is generated with the help of a code. The application is also
tested, and all the identified bugs or glitches are fixed. This is also known as software design mapping.
5. Deployment
This is the step of collecting feedback from the client. Irrespective of whether the application is complete or
incomplete, the client is shown it's working. The client or the user shares their updates. Based on this, the
software engineer modifies or edits the system to suit the client.
PROCESS PATTERNS :-
Patterns can be defined at any level of abstraction. In some cases, a pattern might be used to describe a problem
(and solution) associated with a complete process model (e.g., prototyping). In other situations, patterns can be used
to describe a problem (and solution) associated with a framework activity (e.g., planning) or an action within a
framework activity (e.g., project estimating). Ambler [Amb98] has proposed a template for describing a process
pattern:
Pattern Name : The pattern is given a meaningful name describing it within the context of the software process (e.g.,
Technical Reviews).
Forces : The environment in which the pattern is encountered and the issues that make the problem visible and may
affect its solution.
Type :The pattern type is specified. Ambler [Amb98] suggests three types:
1. Stage pattern—defines a problem associated with a framework activity for the process. Since a framework activity
encompasses multiple actions and work tasks, a stage pattern incorporates multiple task patterns (see the following)
that are relevant to the stage (framework activity). An example of a stage pattern might be Establishing
Communication. This pattern would incorporate the task pattern Requirements Gathering and others.
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 Model or Prototyping.3
Initial context : Describes the conditions under which the pattern applies. Prior to the initiation of the pattern:
(1) What organizational or team-related activities have already occurred?
(2) What is the entry state for the process?
(3) What software engineering information or project information already exists?
PROCESS ASSESSMENT :
• The existence of a software process is no guarantee that software will be delivered on time, that it will
meet the customer’s needs, or that it will exhibit the technical characteristics that will lead to long-term
quality characteristics.
• In addition, the process itself can be assessed to ensure that it meets a set of basic process criteria that
have been shown to be essential for a successful software engineering.
• A number of different approaches to software process assessment and improvement have been proposed
over the past few decades:
• 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.
PROCESS MODES
1. WATERFALL MODEL :-
Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of
the project. In "The Waterfall" approach, the whole process of software development is divided into
separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the next
phase sequentially.
The following illustration is a representation of the different phases of the Waterfall Model.
• Requirement Gathering and analysis − All possible requirements of the system to be developed are captured
in this phase and documented in a requirement specification document.
• System Design − The requirement specifications from first phase are studied in this phase and the system
design is prepared. This system design helps in specifying hardware and system requirements and helps in
defining the overall system architecture.
• Implementation − With inputs from the system design, the system is first developed in small programs called
units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is
referred to as Unit Testing.
• Integration and Testing − All the units developed in the implementation phase are integrated into a system
after testing of each unit. Post integration the entire system is tested for any faults and failures.
• Deployment of system − Once the functional and non-functional testing is done; the product is deployed in
the customer environment or released into the market.
• Maintenance − There are some issues which come up in the client environment. To fix those issues, patches
are released. Also to enhance the product some better versions are released. Maintenance is done to deliver
these changes in the customer environment.
When to use waterfall model :
o When the requirements are constant and not changed regularly.
o A project is short
o The situation is calm
o Where the tools and technology used is consistent and is not changing
o When resources are well prepared and are available to use.
Advantages :
• Simple and easy to understand and use
• Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.
Disadvantages :
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and
uncertainty is high with this process model.
• It is difficult to measure progress within stages.
• Cannot accommodate changing requirements.
• Adjusting scope during the life cycle can end a project.
• Integration is done as a "big-bang. at the very end, which doesn't allow identifying any technological or
business bottleneck or challenges early.
Based on the customer evaluation, the software development process enters the next iteration and
subsequently follows the linear approach to implement the feedback suggested by the customer. The process of
iterations along the spiral continues throughout the life of the software.
The advantages of the Spiral SDLC Model are as follows −
• Changing requirements can be accommodated.
• Allows extensive use of prototypes.
• Requirements can be captured more accurately.
• Users see the system early.
• Development can be divided into smaller parts and the risky parts can be developed earlier which helps
in better risk management.
The disadvantages of the Spiral SDLC Model are as follows −
• Management is more complex.
• End of the project may not be known early.
• Not suitable for small or low risk projects and could be expensive for small projects.
• Process is complex
• Spiral may go on indefinitely.
• Large number of intermediate stages requires excessive documentation.
The Agile thought process had started early in the software development and started becoming popular
with time due to its flexibility and adaptability.
The advantages of the Agile Model are as follows −
• Is a very realistic approach to software development.
• Promotes teamwork and cross training.
• Functionality can be developed rapidly and demonstrated.
• Resource requirements are minimum.
• Suitable for fixed or changing re quirements
• Delivers early partial working solutions.
• Good model for environments that change steadily.
• Minimal rules, documentation easily employed.
• Enables concurrent development and delivery within an overall planned context.
• Little or no planning required.
• Easy to manage.
• Gives flexibility to developers.
The disadvantages of the Agile Model are as follows −
• Not suitable for handling complex dependencies.
• More risk of sustainability, maintainability and extensibility.
• An overall plan, an agile leader and agile PM practice is a must without which it will not work.
• Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet
the deadlines.
• Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong
direction.
• There is a very high individual dependency, since there is minimum documentation generated.
• Transfer of technology to new team members may be quite challenging due to lack of documentation.
6. RAD MODEL :-
The RAD (Rapid Application Development) model is based on prototyping and iterative development
with no specific planning involved. The process of writing the software itself involves the planning
required for developing the product.
Rapid application development is a software development methodology that uses minimal planning in
favor of rapid prototyping.
In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to
make the complete product for faster product delivery. Since there is no detailed preplanning, it makes
it easier to incorporate the changes within the development process.
RAD Model Design
RAD model distributes the analysis, design, build and test phases into a series of short, iterative
development cycles.
Following are the various phases of the RAD Model –
Business Modelling
The business model for the product under development is designed in terms of flow of information
and the distribution of information between various business channels. A complete business analysis is
performed to find the vital information for business, how it can be obtained, how and when is the
information processed and what are the factors driving successful flow of information
Data Modelling
The information gathered in the Business Modelling phase is reviewed and analyzed to form sets of
data objects vital for the business. The attributes of all data sets is identified and defined. The relation
between these data objects are established and defined in detail in relevance to the business model.
Process Modelling
The data object sets defined in the Data Modelling phase are converted to establish the business
information flow needed to achieve specific business objectives as per the business model. The
process model for any changes or enhancements to the data object sets is defined in this phase.
Process descriptions for adding, deleting, retrieving or modifying a data object are given.
Application Generation
The actual system is built and coding is done by using automation tools to convert process and data
models into actual prototypes.
Testing and Turnover
The overall testing time is reduced in the RAD model as the prototypes are independently tested
during every iteration. However, the data flow and the interfaces between all the components need to
be thoroughly tested with complete test coverage. Since most of the programming components have
already been tested, it reduces the risk of any major issues.