Software Engineering Process Framework Guide
Software Engineering Process Framework Guide
The process framework is required for representing common process activities. Five
framework activities are described in a process framework for software engineering.
Umbrella Activities are that take place during a software development process for
improved project management and tracking.
1. Software project tracking and control: This is an activity in which the team
can assess progress and take corrective action to maintain the schedule. Take
action to keep the project on time by comparing the project’s progress against
the plan.
2. Risk management: The risks that may affect project outcomes or quality can
be analyzed. Analyze potential risks that may have an impact on the software
product’s quality and outcome.
8. Measurement: In this activity, the process can be defined and collected. Also,
project and product measures are used to assist the software team in delivering
the required software.
Software Engineering-Capability maturity model (CMM)
CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in 1987.
• It also provides guidelines to further enhance the maturity of the process used
to develop those software products.
• This model describes a strategy for software process improvement that should
be followed by moving through 5 different levels.
• Each level of maturity shows a process capability level. All the levels except
level-1 are further described by Key Process Areas (KPA’s)
Level-1: Initial
• No KPA’s defined.
• Processes followed are Adhoc and immature and are not well defined.
• High risk of project failure or delays due to lack of process control and
stability.
Level-2: Repeatable
• Experience with earlier projects is used for managing new similar natured
projects.
etc. for the project. It presents a detailed plan to be followed systematically for
the successful completion of good quality software.
the software product, including all its components, for the entire lifecycle.
and feedback which result in some changes in the requirement set. It also
consists of accommodation of those modified requirements.
qualified software contractors i.e. it manages the parts of the software which
are developed by third parties.
the team members including the developers and ensuring an increase in work
efficiency.
Level-4: Managed
• At this stage, quantitative quality goals are set for the organization for software
products as well as software processes.
• The measurements made help the organization to predict the product and
process quality within some limits defined quantitatively.
in a quantitative manner.
Level-5: Optimizing
DevSecOps
With time and demand for new adoptions in technology, developing software in more
secure and faster methods has become much more prominent to maintain the overall
quality parameters. Besides this, as the growing demand for the cloud is increasing
everywhere, especially in software development, spam attacks have been consistently
increasing every day. These factors have triggered the stability of security protocols,
so keep in handy and smooth right from development to delivery process,
DevSecOps has come in limelight and has been fulfilling all the parameters that are
required to make the development process even secured. By this, one thing is pretty
clear, this adaptation can deliver a sustainable solution to avoid unwanted security
breaches.
AI and ML
Today, AI has spread all around the industry and has been actively used in businesses.
We are surrounded by AI/ML and we actively use it on daily basis without even
realizing it. People in different fields and industries are associated with AI, smart
innovative gadgets, and sometimes even a household presence (such as Alexa,
Google Assistant, etc.) While we have been talking about AI and ML, this concept is
not new in the market, even though it was introduced back in 1956, but it took us
years of work, experiments, and failures for making it a success in today’s
technological reality.
Besides this, it’s not just a replacement for human intelligence, it’s beyond a
supportive tool that is being used in healthcare, automation, finance, etc. Its diverse
nature and adaptability have provided millions of opportunities. Even if you’ll check
the current stats, there are more than 321,000 vacancies for AI/ML in the market
and it’s very likely to hold the market in the next few decades.
Kubernetes
As you must be aware of the basics of Kubernetes, which is being used to automate
the over process i.e. deployment, scaling, and management of containerized apps (and
is an open-source system). Henceforth, this pool of container management has soared
in popularity with the rise of businesses that have been operating and are inclined to
dependency on cloud technology. Today, top companies like Airbnb, NYT, etc. are
some of the major players who are using Kubernetes actively for a while now. Being
a standard platform (both for cloud-native and DevOps) environment, the best
opportunities in this field is not yet surprising, it’s been called the “de-facto
platform” when it comes to deployment. Besides this, the demand is not going to
decrease under any circumstances, and as per the survey, it indicated the same where
91 out of 100 people picked Kubernetes as their preference and so does the scope in
job preference is comparatively high for all levels of business.
Prescriptive Process Models:
The name 'prescriptive' is given because the model prescribes a set of activities,
actions, tasks, quality assurance and change the mechanism for every project.
Some Circumstances where the use of the Waterfall model is most suited are:
• The waterfall model is simple and easy to understand, implement, and use.
• All the requirements are known at the beginning of the project, hence it is easy
to manage.
• It avoids overlapping of phases because each phase is completed at once.
• This model works for small projects because the requirements are understood
very well.
• This model is preferred for those projects where the quality is more important
as compared to the cost of the project.
• This model is not good for complex and object oriented projects.
• It is a poor model for long projects.
• The problems with this model are uncovered, until the software testing.
• The amount of risk is high.
Incremental Process model
1. Requirement analysis: In the first phase of the incremental model, the product
analysis expertise identifies the requirements. And the system functional
requirements are understood by the requirement analysis team. To develop the
software under the incremental model, this phase performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the
design of the system functionality and the development method are finished with
success. When software develops new practicality, the incremental model uses style
and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of
each existing function as well as additional functionality. In the testing phase, the
various methods are used to test the behavior of each task.
• This model is flexible because the cost of development is low and initial
product delivery is faster.
• It is easier to test and debug during the smaller iteration.
• The working software generates quickly and early during the software life
cycle.
• The customers can respond to its functionalities after every increment.
• The cost of the final product may cross the cost estimated initially.
• This model requires a very clear and complete planning.
• The planning of design is required before the whole system is broken into
small increments.
Evolutionary Process Models:
2. Data Modelling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes
(character of each entity) are identified, and the relation between these data objects
(entities) is defined.
3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a
data object.
5. Testing & Turnover: Many of the programming components have already been
tested since RAD emphasis reuse. This reduces the overall testing time. But the new
part must be tested, and all interfaces must be fully exercised.
• When the system should need to create the project that modularizes in a short
span time (2-3 months).
• When the requirements are well-known.
• When the technical risk is limited.
• When there's a necessity to make a system, which modularized in 2-3 months
of period.
• It should be used only if the budget allows the use of automatic code
generating tools.
Advantage of RAD Model
Objective setting: Each cycle in the spiral starts with the identification of purpose
for that cycle, the various alternatives that are possible for achieving the targets, and
the constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in this
stage is located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice
made whether to continue with a further period of the spiral. If it is determined to
keep, plans are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance
or user-interface risks are treated more essential than the program development risks,
the next phase may be an evolutionary development that includes developing a more
detailed prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that cycle,
including plans for the next cycle. The spiral model works for development as well as
enhancement projects.
When to use Spiral Model?
Advantages
Disadvantages
1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build the
project. Based on this information, you can evaluate technical and economic
feasibility.
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
3. Construction/ iteration: When the team defines the requirements, the work
begins. Designers and developers start working on their project, which aims to deploy
a working product. The product will undergo various stages of improvement, so it
includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Extreme Programming (XP)
2. Designing is actually a part of the planning process, but can be set apart to
emphasize its importance. It’s related to one of the main XP values that we’ll
discuss below — simplicity. A good design brings logic and structure to the
system and allows to avoid unnecessary complexities and redundancies.
3. Coding is the phase during which the actual code is created by implementing
specific XP practices such as coding standards, pair programming, continuous
integration, and collective code ownership (the entire list is described below).
1. Rapid feedback. Team members understand the given feedback and react to it
right away.
2. Assumed simplicity. Developers need to focus on the job that is important at
the moment and follow YAGNI (You Ain’t Gonna Need It) and DRY (Don’t
Repeat Yourself) principles.
3. Incremental changes. Small changes made to a product step by step work
better than big ones made at once.
4. Embracing change. If a client thinks a product needs to be changed,
programmers should support this decision and plan how to implement new
requirements.
5. Quality work. A team that works well, makes a valuable product and feels
proud of it.
Extreme programming practices
The practices of XP are a set of specific rules and methods that distinguishes it from
other methodologies. When used in conjunction, they reinforce each other, help
mitigate the risks of the development process, and lead to the expected high-quality
result. XP suggests using 12 practices while developing software which can be
clustered into four groups.
Test-Driven Development
Is it possible to write a clear code quickly? The answer is yes, according to XP
practitioners. The quality of software derives from short development cycles that, in
turn, allow for receiving frequent feedback. And valuable feedback comes from good
testing. XP teams practice test-driven development technique (TDD) that entails
writing an automated unit test before the code itself. According to this approach,
every piece of code must pass the test to be released. So, software engineers thereby
focus on writing code that can accomplish the needed function. That’s the way TDD
allows programmers to use immediate feedback to produce reliable software. You can
learn more about improving software testing in our dedicated article.
On-site Customer
As we already mentioned, according to XP, the end customer should fully participate
in development. The customer should be present all the time to answer team
questions, set priorities, and resolve disputes if necessary.
Pair Programming
This practice requires two programmers to work jointly on the same code. While the
first developer focuses on writing, the other one reviews code, suggests
improvements, and fixes mistakes along the way. Such teamwork results in high-
quality software and faster knowledge sharing but takes about 15% more. In this
regard, it’s more reasonable trying pair programming for long-term projects.
Code Refactoring
To deliver business value with well-designed software in every short iteration, XP
teams also use refactoring. The goal of this technique is to continuously improve
code. Refactoring is about removing redundancy, eliminating unnecessary functions,
increasing code coherency, and at the same time decoupling elements. Keep your
code clean and simple, so you can easily understand and modify it when required
would be the advice of any XP team member.
Continuous Integration
Developers always keep the system fully integrated. XP teams take iterative
development to another level because they commit code multiple times a day, which
is also called continuous delivery. XP practitioners understand the importance of
communication. Programmers discuss which parts of the code can be re-used or
shared. This way, they know exactly what functionality they need to develop. The
policy of shared code helps eliminate integration problems. In addition, automated
testing allows developers to detect and fix errors before deployment.
Small Releases
This practice suggests releasing the MVP quickly and further developing the product
by making small and incremental updates. Small releases allow developers to
frequently receive feedback, detect bugs early, and monitor how the product works in
production. One of the methods of doing so is the continuous integration practice (CI)
we mentioned before.
Simple Design
The best design for software is the simplest one that works. If any complexity is
found, it should be removed. The right design should pass all tests, have no duplicate
code, and contain the fewest possible methods and classes. It should also clearly
reflect the programmer’s intent.
Coding Standards
A team must have common sets of coding practices, using the same formats and
styles for code writing. Application of standards allows all team members to read,
share, and refactor code with ease, track who worked on certain pieces of code, as
well as make the learning faster for other programmers. Code written according to the
same rules encourages collective ownership.
40-Hour Week
XP projects require developers to work fast, be efficient, and sustain the product’s
quality. To adhere to these requirements, they should feel well and rested. Keeping
the work-life balance prevents professionals from burnout. In XP, the optimal number
of work hours must not exceed 45 hours a week. One overtime a week is possible
only if there will be none the week after.
Scrum is the type of Agile framework. It is a framework within which people can
address complex adaptive problem while productivity and creativity of delivering
product is at highest possible values. Scrum uses Iterative process.
Silent features of Scrum are:
• Scrum is light-weighted framework
• Scrum emphasizes self-organization
• Scrum is simple to understand
• Scrum framework help the team to work together
Scrum Lifecycle
• Sprint: A Sprint is a time box of one month or less. A new Sprint starts
immediately after the completion of the previous Sprint.
• Release: When the product is completed, it goes to the Release stage.
• Sprint Review: If the product still has some non-achievable features, it will be
checked in this stage and then passed to the Sprint Retrospective stage.
• Sprint Retrospective: In this stage quality or status of the product is checked.
• Product Backlog: According to the prioritize features the product is organized.
• Sprint Backlog: Sprint Backlog is divided into two parts Product assigned
features to sprint and Sprint planning meeting.
Advantage of using Scrum framework:
• Scrum framework is fast moving and money efficient.
• Scrum framework works by dividing the large product into small sub-products.
It’s like a divide and conquer strategy
• In Scrum customer satisfaction is very important.
• Scrum is adaptive in nature because it have short sprint.
• As Scrum framework rely on constant feedback therefore the quality of product
increases in less amount of time
Disadvantage of using Scrum framework:
• Scrum framework do not allow changes into their sprint.
• Scrum framework is not fully described model. If you wanna adopt it you need
to fill in the framework with your own details like Extreme Programming(XP),
Kanban, DSDM.
• It can be difficult for the Scrum to plan, structure and organize a project that
lacks a clear definition.
• The daily Scrum meetings and frequent reviews require substantial resources.
Kanban Model
Kanban is a very popular framework for development in the agile software
development methodology. It provides a transparent way of visualizing the tasks and
work capacity of a team. It mainly uses physical and digital boards to allow the team
members to visualize the current state of the project they are working on.
Kanban originated in Toyota in the 1940s. Kanban’s meaning in Japanese is
“billboards.” The Kanban board has columns and story cards. The columns are
nothing, but workflow states and cards are nothing but a demonstration of the actual
task a team member is performing.
When to use Kanban?
• Kanban can be used in any domain, and it can be used very effectively in
software development. Kanban project management helps in improving the
efficiency of the team.
• It is a pull-based system. Tasks are being pulled as soon as an individual is free.
• Kanban should be used when you want to release your work at any time. It
requires git branching, but it is doable.
• Kanban should be used when you want to change the priorities on the fly. For
that, all you need to do is to put this story on the top of the to-do queue.
• It should be used when you want to visualize your work, and you want to see
the progress of your tasks visually.
Boards
The kanban board is the agile project management tool that designed the necessary
visualized work, limited work-in-progress, and maximizes flow (or efficiency). It
uses cards, columns, and provides continuous improvement to help technology and
service teams who commit the right amount of work and get it done.
Elements of a kanban board
A person called David Anderson divides the kanban board into five different
components. These are Visual signals, columns, work-in-progress limits, a
commitment point, and a delivery point.
1. Visual Signals: The kanban board is a visual card (stickies, tickets, or
otherwise). Kanban team write their projects and work items onto cards,
usually per person each card. For agile teams, each card could encapsulate into
one user story. Once the board completed, this visual team helps team members
and stock members quickly to understand what the team is working.
2. Columns: The column represents the specific activities that compose a
"workflow" together. The card flows through a workflow until its completion.
The workflow may be a simple as "To Do," "In Progress," "Complete," or
much more complicated.
3. Work in progress (WIP) Limits: The work in progress limits are the maximum
number of cards which can be in one column. This is at any given time. It gives
the alert signal that you committed too much work.
4. Commitment point: Kanban teams also maintain a backlog for their board. This
is where the customers and team member put ideas for projects that the team
can pick up. The team members pick up plans when they are ready. The
committed point is a movement where the design is picked up by the team, and
work starts on the project.
5. Delivery point: It is the end point of a kanban team's workflow. Mostly the
delivery point for every team is when the product and services are handed to
the customer.
Advantages kanban:
1. Kanban is a very simple and easy to understand system that makes it practical
for the management of a company to apply this system effectively.
2. The main advantage of applying the kanban system is a direct reduction in the
costs and wastage of the company. Kanban system improves the flow and
management of inventory by directly assisting the company to pursue the
company’s existing systems i.e. just in time (JIT) and make to order etc. which
reduces carrying or holding costs and makes sure smoother running of
inventories.
3. Kanban system advocates continuous and sustainable improvements in the
production systems of the company. Kanban not only consist of manual
guidelines or cards but also visualizations of the process outputs which makes
the review of work easier. This could also highlight other potential problematic
areas where additional attention is needed.
4. Kanban system is a very responsive system and does not promote any lags or
delays. As the tasks are continuously shifted between the columns of the
kanban cards, it automatically highlights the areas where any limiting factors
are raised that could hold up the overall output which can be responded to as
soon as possible by shifting and switching the resources from the other tasks.
Disadvantages of kanban:
1. Kanban cannot be used as an independent tool. It is not a methodology that
could be applied solely rather it can be merged with other processes and
systems of a company like JIT, make to order and scrum etc. making these
systems more visible.
2. As the tasks are continuously shifted between the columns of kanban board, the
prediction of specific timelines for completion of tasks or activities becomes
difficult. This is because kanban acts only as a signaling port in a pull
production system.
3. Kanban is not suitable for the environments that are dynamic in nature.
Because a kanban system assumes the plans that are stable and consistent to a
certain extent, it may become ineffective in industries where the activities are
not static.
4. Kanban will become very difficult to apply if too much activities or tasks are
interrelated in a system. This is because such systems enhance the possibility
of transfers of goods and expertise amongst different tasks too often and
increases difficulty to keep the pace of all these activities.