STUDENTS NOTES Cat1
STUDENTS NOTES Cat1
1.Build a detailed explanation of the Waterfall Model and its key phases in
software development.
Waterfall Model
Phases of SDLC Waterfall Model – Design
The Waterfall Model is a linear and sequential approach to software development that consists of several phases
that must be completed in a specific order.
The Waterfall Model has six phases which are:
1. Requirements: The first phase involves gathering requirements from stakeholders and analysing them
to understand the scope and objectives of the project.
2. Design: Once the requirements are understood, the design phase begins. This involves creating a
detailed design document that outlines the software architecture, user interface, and system components.
3. Development: The Development phase include implementation involves coding the software based on the
design specifications. This phase also includes unit testing to ensure that each component of the software is
working as expected.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets the requirements
and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves fixing any issues
that arise after the software has been deployed and ensuring that it continues to meet the requirements over
time.
The classical waterfall model divides the life cycle into a set of phases. This model considers that one phase can
be started after the completion of the previous phase. That is the output of one phase will be the input to the next
phase. Thus the development process can be considered as a sequential flow in the waterfall. Here the phases do
not overlap with each other. The different sequential phases of the classical waterfall model are shown in the
below figure.
1
The waterfall model is a software development model used in the context of large, complex projects, typically in
the field of information technology. It is characterized by a structured, sequential approach to project
management and software development.
Let us now learn about each of these phases in detail which include further phases.
1. Feasibility Study
The main goal of this phase is to determine whether it would be financially and technically feasible to develop the
software. The feasibility study involves understanding the problem and then determining the various possible
strategies to solve the problem. These different identified solutions are analyzed based on their benefits and
drawbacks. The best solution is chosen and all the other phases are carried out as per this solution strategy.
2. Requirements Analysis and Specification
The requirement analysis and specification phase aims to understand the exact requirements of the customer and
document them properly. This phase consists of two different activities.
Requirement gathering and analysis: Firstly all the requirements regarding the software are gathered from the
customer and then the gathered requirements are analyzed. The goal of the analysis part is to remove
incompleteness (an incomplete requirement is one in which some parts of the actual requirements have been
omitted) and inconsistencies (an inconsistent requirement is one in which some part of the requirement
contradicts some other part).
Requirement specification: These analyzed requirements are documented in a software requirement specification
(SRS) document. SRS document serves as a contract between the development team and customers. Any future
dispute between the customers and the developers can be settled by examining the SRS document.
2
3. Design
The goal of this phase is to convert the requirements acquired in the SRS into a format that can be coded in a
programming language. It includes high-level and detailed design as well as the overall software architecture. A
Software Design Document is used to document all of this effort (SDD).
6. Maintenance
Maintenance is the most important phase of a software life cycle. The effort spent on maintenance is 60% of the
total effort spent to develop a full software. There are three types of maintenance.
Corrective Maintenance: This type of maintenance is carried out to correct errors that were not discovered
during the product development phase.
Perfective Maintenance: This type of maintenance is carried out to enhance the functionalities of the system
based on the customer’s request.
Adaptive Maintenance: Adaptive maintenance is usually required for porting the software to work in a new
environment such as working on a new computer platform or with a new operating system.
2. Identify the key benefits of using Incremental Process Models in large-scale software
development projects.
3
First, a simple working system implementing only a few basic features is built and then that is delivered to the
customer. Then thereafter many successive iterations/ versions are implemented and delivered to the customer
until the desired system is released.
A, B, and C are modules of Software Products that are incrementally developed and delivered.
Phases of incremental model
Requirements of Software are first broken down into several modules that can be incrementally constructed and
delivered.
1. Requirement analysis: In Requirement Analysis At any time, the plan is made just for the next increment
and not for any kind of long-term plan. Therefore, it is easier to modify the version as per the needs of the
customer.
2. Design & Development: At any time, the plan is made just for the next increment and not for any kind of
long-term plan. Therefore, it is easier to modify the version as per the needs of the customer. The
Development Team first undertakes to develop core features (these do not need services from other features)
of the system. Once the core features are fully developed, then these are refined to increase levels of
capabilities by adding new functions in Successive versions. Each incremental version is usually developed
using an iterative waterfall model of development.
3. Deployment and Testing: After Requirements gathering and specification, requirements are then split into
several different versions starting with version 1, in each successive increment, the next version is
constructed and then deployed at the customer site. in development and Testing the product is checked and
tested for the actual process of the model.
4. Implementation: In implementation After the last version (version n), it is now deployed at the client site.
Requirement Process Model
4
Requirement Process Model
5
Parallel Development Model
1. Iterative Model
2. Incremental Model
3. Spiral Model
7
Iterative Model
In the iterative model first, we take the initial requirements then we enhance the product over multiple iterations until
the final product gets ready. In every iteration, some design modifications were made and some changes in
functional requirements is added. The main idea behind this approach is to build the final product through multiple
iterations that result in the final product being almost the same as the user wants with fewer errors and the
performance, and quality would be high.
Incremental Model
In the incremental model, we first build the project with basic features and then evolve the project in every iteration, it
is mainly used for large projects. The first step is to gather the requirements and then perform analysis, design,
code, and test and this process goes the same over and over again until our final project is ready.
Spiral Model
The spiral model is a combination of waterfall and iterative models and in this, we focused on risk handling along
with developing the project with the incremental and iterative approach, producing the output quickly as well as it
is good for big projects. The software is created through multiple iterations using a spiral approach. Later on, after
successive development the final product will develop, and the customer interaction is there so the chances of error
get reduced.
8
5. Build a detailed outline of the Spiral Model, explaining how its iterative
approach supports risk analysis and project management.
Spiral Model
What is the Spiral Model?
The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a systematic and
iterative approach to software development. In its diagrammatic representation, looks like a spiral with many
loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the
spiral is called a phase of the software development process.
Some Key Points regarding the phase of a Spiral Model:
1. The exact number of phases needed to develop the product can be varied by the project manager depending
upon the project risks.
2. As the project manager dynamically determines the number of phases, the project manager has an important
role in developing a product using the spiral model.
3. It is based on the idea of a spiral, with each iteration of the spiral representing a complete software
development cycle, from requirements gathering and analysis to design, implementation, testing, and
maintenance.
9
The Spiral Model is often used for complex and large software development projects, as it allows for a more
flexible and adaptable approach to software development. It is also well-suited to projects with significant
uncertainty or high levels of risk.
The Radius of the spiral at any point represents the expenses (cost) of the project so far, and the angular dimension
represents the progress made so far in the current phase.
10
Spiral Model
Each phase of the Spiral Model is divided into four quadrants as shown in the above figure. The functions
of these four quadrants are discussed below:
1. Objectives determination and identify alternative solutions: Requirements are gathered from the
customers and the objectives are identified, elaborated, and analyzed at the start of every phase. Then
alternative solutions possible for the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible solutions are evaluated to select
the best possible solution. Then the risks associated with that solution are identified and the risks are
resolved using the best possible strategy. At the end of this quadrant, the Prototype is built for the best
possible solution.
3. Develop the next version of the Product: During the third quadrant, the identified features are developed
and verified through testing. At the end of the third quadrant, the next version of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so-far developed
version of the software. In the end, planning for the next phase is started.
11
2. The Prototyping Model also supports risk handling, but the risks must be identified completely before the
start of the development work of the project.
3. But in real life, project risk may occur after the development work starts, in that case, we cannot use the
Prototyping Model.
4. In each phase of the Spiral Model, the features of the product dated and analyzed, and the risks at that point
in time are identified and are resolved through prototyping.
5. Thus, this model is much more flexible compared to other SDLC models.
Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a software development approach based on
iterative development. Agile methods break tasks into smaller iterations, or parts do not directly involve long term
planning. The project scope and requirements are laid down at the beginning of the development process. Plans
regarding the number of iterations, the duration and the scope of each iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts from one to four
weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the
overall project delivery time requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and testing before a working
product is demonstrated to the client.
1. Requirements gathering
12
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
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.
UNIT-2
1. Develop a comprehensive approach to gathering and analyzing requirements during the Requirements
Engineering process.
Requirements Engineering
What is Requirements Engineering?
A systematic and strict approach to the definition, creation, and verification of requirements for a software system
is known as requirements engineering. To guarantee the effective creation of a software product, the requirements
engineering process entails several tasks that help in understanding, recording, and managing the demands of
stakeholders.
13
Requirements Engineering Process
1. Feasibility Study
2. Requirements elicitation
3. Requirements specification
4. Requirements for verification and validation
5. Requirements management
1. Feasibility Study
The feasibility study mainly concentrates on below five mentioned areas below. Among these Economic Feasibility
Study is the most important part of the feasibility analysis and the Legal Feasibility Study is less considered
feasibility analysis.
1. Technical Feasibility: In Technical Feasibility current resources both hardware software along required
technology are analyzed/assessed to develop the project. This technical feasibility study reports whether
there are correct required resources and technologies that will be used for project development. Along with
this, the feasibility study also analyzes the technical skills and capabilities of the technical team, whether
existing technology can be used or not, whether maintenance and up-gradation are easy or not for the chosen
technology, etc.
2. Operational Feasibility: In Operational Feasibility degree of providing service to requirements is analyzed
along with how easy the product will be to operate and maintain after deployment. Along with this other
operational scopes are determining the usability of the product, Determining suggested solution by the
software development team is acceptable or not, etc.
3. Economic Feasibility: In the Economic Feasibility study cost and benefit of the project are analyzed. This
means under this feasibility study a detailed analysis is carried out will be cost of the project for
14
development which includes all required costs for final development hardware and software resources
required, design and development costs operational costs, and so on. After that, it is analyzed whether the
project will be beneficial in terms of finance for the organization or not.
4. Legal Feasibility: In legal feasibility, the project is ensured to comply with all relevant laws, regulations,
and standards. It identifies any legal constraints that could impact the project and reviews existing contracts
and agreements to assess their effect on the project’s execution. Additionally, legal feasibility considers
issues related to intellectual property, such as patents and copyrights, to safeguard the project’s innovation
and originality.
5. Schedule Feasibility: In schedule feasibility, the project timeline is evaluated to determine if it is realistic
and achievable. Significant milestones are identified, and deadlines are established to track progress
effectively. Resource availability is assessed to ensure that the necessary resources are accessible to meet the
project schedule. Furthermore, any time constraints that might affect project delivery are considered to
ensure timely completion. This focus on schedule feasibility is crucial for the successful planning and
execution of a project.
2. Requirements Elicitation
It is related to the various ways used to gain knowledge about the project domain and requirements. The various
sources of domain knowledge include customers, business manuals, the existing software of the same type,
standards, and other stakeholders of the project. The techniques used for requirements elicitation include
interviews, brainstorming, task analysis, Delphi technique, prototyping, etc. Some of these are
discussed here. Elicitation does not produce formal models of the requirements understood. Instead, it widens the
domain knowledge of the analyst and thus helps in providing input to the next stage.
Requirements elicitation is the process of gathering information about the needs and expectations of stakeholders for a
software system. This is the first step in the requirements engineering process and it is critical to the success of the
software development project. The goal of this step is to understand the problem that the software system is
intended to solve and the needs and expectations of the stakeholders who will use the system.
Several techniques can be used to elicit requirements, including:
Interviews: These are one-on-one conversations with stakeholders to gather information about their needs
and expectations.
Surveys: These are questionnaires that are distributed to stakeholders to gather information about their
needs and expectations.
15
Focus Groups: These are small groups of stakeholders who are brought together to discuss their needs and
expectations for the software system.
Observation: This technique involves observing the stakeholders in their work environment to gather
information about their needs and expectations.
Prototyping: This technique involves creating a working model of the software system, which can be used
to gather feedback from stakeholders and to validate requirements.
It’s important to document, organize, and prioritize the requirements obtained from all these techniques to ensure that
they are complete, consistent, and accurate.
3. Requirements Specification
This activity is used to produce formal software requirement models. All the requirements including the functional as
well as the non-functional requirements and the constraints are specified by these models in totality. During
specification, more knowledge about the problem may be required which can again trigger the elicitation process.
The models used at this stage include ER diagrams, data flow diagrams(DFDs), function decomposition
diagrams(FDDs), data dictionaries, etc.
Requirements specification is the process of documenting the requirements identified in the analysis step in a clear,
consistent, and unambiguous manner. This step also involves prioritizing and grouping the requirements into
manageable chunks.
The goal of this step is to create a clear and comprehensive document that describes the requirements for the software
system. This document should be understandable by both the development team and the stakeholders.
1. Functional Requirements: These describe what the software system should do. They specify the
functionality that the system must provide, such as input validation, data storage, and user interface.
2. Non-Functional Requirements: These describe how well the software system should do it. They specify
the quality attributes of the system, such as performance, reliability, usability, and security.
3. Constraints: These describe any limitations or restrictions that must be considered when developing the
software system.
4. Acceptance Criteria: These describe the conditions that must be met for the software system to be
considered complete and ready for release.
To make the requirements specification clear, the requirements should be written in a natural language and use simple
terms, avoiding technical jargon, and using a consistent format throughout the document. It is also important to
use diagrams, models, and other visual aids to help communicate the requirements effectively.
Once the requirements are specified, they must be reviewed and validated by the stakeholders and development team
to ensure that they are complete, consistent, and accurate.
5. Requirements Management
Requirement management is the process of analyzing, documenting, tracking, prioritizing, and agreeing on the
requirement and controlling the communication with relevant stakeholders. This stage takes care of the changing
nature of requirements. It should be ensured that the SRS is as modifiable as possible to incorporate changes in
requirements specified by the end users at later stages too. Modifying the software as per requirements in a
systematic and controlled manner is an extremely important part of the requirements engineering process.
Requirements management is the process of managing the requirements throughout the software development life
cycle, including tracking and controlling changes, and ensuring that the requirements are still valid and relevant.
The goal of requirements management is to ensure that the software system being developed meets the needs and
expectations of the stakeholders and that it is developed on time, within budget, and to the required quality.
1. Tracking and controlling changes: This involves monitoring and controlling changes to the requirements
throughout the development process, including identifying the source of the change, assessing the impact of
the change, and approving or rejecting the change.
2. Version control: This involves keeping track of different versions of the requirements document and other
related artifacts.
3. Traceability: This involves linking the requirements to other elements of the development process, such as
design, testing, and validation.
4. Communication: This involves ensuring that the requirements are communicated effectively to all
stakeholders and that any changes or issues are addressed promptly.
5. Monitoring and reporting: This involves monitoring the progress of the development process and reporting
on the status of the requirements.
Requirements management is a critical step in the software development life cycle as it helps to ensure that the
software system being developed meets the needs and expectations of stakeholders and that it is developed on
time, within budget, and to the required quality. It also helps to prevent scope creep and to ensure that the
requirements are aligned with the project goals.
17
2. Build a step-by-step guide for effectively eliciting requirements from stakeholders
during the early stages of a software project.
Eliciting Requirements
What is Requirement Elicitation?
The process of investigating and learning about a system’s requirements from users, clients, and other stakeholders
is known as requirements elicitation. Requirements elicitation in software engineering is perhaps the most
difficult, most error-prone, and most communication-intensive software development.
1. Requirement Elicitation can be successful only through an effective customer-developer partnership. It is
needed to know what the users require.
2. Requirements elicitation involves the identification, collection, analysis, and refinement of the requirements
for a software system.
3. Requirement Elicitation is a critical part of the software development life cycle and is typically performed at
the beginning of the project.
4. Requirements elicitation involves stakeholders from different areas of the organization, including business
owners, end-users, and technical experts.
5. The output of the requirements elicitation process is a set of clear, concise, and well-defined requirements
that serve as the basis for the design and development of the software system.
6. Requirements elicitation is difficult because just questioning users and customers about system needs may
not collect all relevant requirements, particularly for safety and dependability.
7. Interviews, surveys, user observation, workshops, brainstorming, use cases, role-playing, and prototyping
are all methods for eliciting requirements.
18
Requirement Elicitation Techniques
1. Interviews
The objective of conducting an interview is to understand the customer’s expectations of the software.
It is impossible to interview every stakeholder hence representatives from groups are selected based on their
expertise and credibility. Interviews may be open-ended or structured.
1. In open-ended interviews, there is no pre-set agenda. Context-free questions may be asked to understand the
problem.
2. In a structured interview, an agenda of fairly open questions is prepared. Sometimes a proper questionnaire
is designed for the interview.
2. Brainstorming Sessions
Brainstorming Sessions is a group technique
It is intended to generate lots of new ideas hence providing a platform to share views
A highly trained facilitator is required to handle group bias and conflicts.
Every idea is documented so that everyone can see it.
Finally, a document is prepared which consists of the list of requirements and their priority if possible.
19
3. Facilitated Application Specification Technique
Its objective is to bridge the expectation gap – the difference between what the developers think they are supposed
to build and what customers think they are going to get. A team-oriented approach is developed for
requirements gathering. Each attendee is asked to make a list of objects that are:
1. Part of the environment that surrounds the system.
2. Produced by the system.
3. Used by the system.
Each participant prepares his/her list, different lists are then combined, redundant entries are eliminated, the team is
divided into smaller sub-teams to develop mini-specifications and finally, a draft of specifications is written down
using all the inputs from the meeting.
Long story short, software development estimation is a crucial process that revolves around predicting the project’s
20
time and effort, cost, and scope; all this information is necessary for the planning stage and to ensure the project’s
success. Additionally, it also takes into consideration, in terms of custom software development, the experience of
the company you’re working with, their tech stack, and their own process they need to follow to finish the project
(also known as the software development life cycle).
Even though an estimation is not the final software cost but just a ballpark range of the project – it’s essential to be as
accurate as possible. To be transparent and fair, an estimate should take into consideration the following points but
doesn’t have to be limited to them:
The estimation accuracy is crucial because the client needs to feel confident that they can fund the project before
committing to it. Also, there are many side effects of poor project estimates, like:
… and those are just some examples. But you get the idea – the more accurate the software project estimations, the
better the chances of successfully finishing the project. So, as a recommendation, the error margin should be
anywhere in the range of 5 to 10 percent.
We’ve seen the effects of poor project estimates, but what about the benefits of estimation?
So what do you need to estimate a software project? Here is a list of inputs that you will need to be able to create a
meaningful result:
1. Scope of work
21
2. Project risks
A risk is something that has the potential to happen and, if it materializes, will cause a measurable impact on the
project. Each risk can be prevented, reduced, accepted, or transferred.
3. Tech stack
No matter the type of development estimation, there are a couple of questions that any software project manager
should ask that aim at the most critical six constraints before starting the software project estimation process, such
as:
Estimating software projects should have three major parts at the center: effort, cost, and resource predictions. There
is more than one estimation technique. However, during the early stages of a project life cycle, when the product
requirements are still fuzzy, and there isn’t much data to base the project estimation on, an initial estimate is
made, all known as a “ballpark estimate.” Let’s see what types of estimation techniques you can use:
1. Parametric estimation
This type of estimation uses independent measurable variables from the actual project work. For instance, the effort
needed to build a work packet will be calculated using the variable representing the lines of code in the project.
The parametric model gives more accuracy to the estimation since it uses more of a statistical or mathematical
approach.
2. Topdown estimation
22
This method is more beneficial for initial estimations. The project’s scope is reviewed at a high level and divided into
features or estimated deliverables. However, this doesn’t include breaking down the project scope into smaller
pieces of work.
Mainly used for projects in the initial stages, where there isn’t much information available. Less time-consuming than
the bottom-up method, but it provides high-level estimations.
3. Bottomup estimation
This estimation model is useful when the requirements are known at a discrete level, where the smaller work pieces
are aggregated into the whole project. As the name implies, this is the reverse method of topdown estimation.
The scope of the project needs to be described at a low level with all the details, and those components of work are
estimated. The work breakdown structure can be used to present the detailed project scope.
The bottomup estimation is usually precise; however, it might not provide a buffer in case of scope changes.
Therefore, it is recommended to use this type of estimation technique for more mature projects; it’s more time-
consuming but provides a more precise estimation.
4. Threepoint estimating
This one uses a mathematical approach, the result being a weighted average or an optimistic, most likely, and
pessimistic estimation of the work package. This is also known as Program Evaluation and Review Technique, or
PERT.
Three ranges of estimates from three different data points are provided. Those three data points are “best scenario,”
“worst scenario,” and “most likely scenario.” The pessimistic estimation considers negative risks that
can happen, while the optimistic analysis includes positive risks. The final result is the weighted average of the
estimates.
5. Planning poker
Mostly used in agile software development, the planning poker estimation approach is used to estimate project
backlog. The name comes from the fact that the team uses cards while estimating.
Team members estimate all items in the backlog using cards; after the product owner describes the items, each team
member thinks about the estimation and prepares the card. Simultaneously, everyone shows their cards, and the
session ends when the team reaches a consensus.
Agile estimations are also used to estimate story points, even for virtual teams. This estimation technique’s apparent
benefit is that all team members think about the estimation simultaneously. This way, nobody is being influenced.
6. Expert judgment
As the name suggests, this method involves experts in the project estimation process since they have experience
23
with similar projects and can provide more accurate cost estimates. Additionally, experts will be integrating risk
into their calculations.
This will usually end up either in Lines of Code (LOC) or Function Points (FP). The sources of information for this
step should start with formal descriptions of the requirements. This step can be completed either by analogy or by
counting product features and using an algorithmic approach to convert the count into an estimate of size.
You can convert the software project size estimation to the total project effort only if you have a
defined software development life cycle and a development process that you must follow. This effort estimation
requires you to identify and predict all the necessary activities to build the product. You can do this either by
using historical data or with an algorithmic approach, such as the COCOMO model or the Putnam Methodology.
This can be determined by using the effort estimate. It involves predicting the number of people working on the project,
what they will work on, when they will start working on it, and when they will finish. Again, like before, historical
data help lay this information out in a calendar format.
4. Develop a decision-making framework for evaluating whether to make or buy a software solution,
considering factors like cost, time, and expertise.
Introduction
Are you outsourcing enough? This was one of the main questions asked by management consultants during the
outsourcing boom. Outsourcing was viewed as one of the best ways of getting things done for a fraction of the
original cost.
24
Outsourcing is closely related to make or buy decision. The corporations made decisions on what to make internally
and what to buy from outside in order to maximize the profit margins.
As a result of this, the organizational functions were divided into segments and some of those functions were
outsourced to expert companies, who can do the same job for much less cost.
Make or buy decision is always a valid concept in business. No organization should attempt to make something by their
own, when they stand the opportunity to buy the same for much less price.
This is why most of the electronic items manufactured and software systems developed in the Asia, on behalf of the
organizations in the USA and Europe.
25
Four Numbers You Should Know
When you are supposed to make a make-or-buy decision, there are four numbers you need to be aware of. Your
decision will be based on the values of these four numbers. Let's have a look at the numbers now. They are
quite self-explanatory.
The volume
The fixed cost of making
Per-unit direct cost when making
Per-unit cost when buying
Now, there are two formulas that use the above numbers. They are 'Cost to Buy' and 'Cost to Make'. The higher
value loses and the decision maker can go ahead with the less costly solution.
There are number of reasons a company would consider when it comes to making in-house. Following are a few:
Cost concerns
Desire to expand the manufacturing focus
Need of direct control over the product
Intellectual property concerns
Quality control concerns
Supplier unreliability
Lack of competent suppliers
Volume too small to get a supplier attracted
Reduction of logistic costs (shipping etc.)
To maintain a backup source
Political and environment reasons
Organizational pride
Following are some of the reasons companies may consider when it comes to buying from a supplier:
26
The Process
The make or buy decision can be in many scales. If the decision is small in nature and has less impact on the business,
then even one person can make the decision. The person can consider the pros and cons between making and
buying and finally arrive at a decision.
When it comes to larger and high impact decisions, usually organizations follow a standard method to arrive at a
decision. This method can be divided into four main stages as below.
1. Preparation
Team creation and appointment of the team leader
Identifying the product requirements and analysis
Team briefing and aspect/area destitution
2. Data Collection
Collecting information on various aspects of make-or-buy decision
Workshops on weightings, ratings, and cost for both make-or-buy
3. Data Analysis
Analysis of data gathered
4. Feedback
Feedback on the decision made
By following the above structured process, the organization can make an informed decision on make-or-buy. Although
this is a standard process for making the make-or-buy decision, the organizations can have their own varieties.
27
Conclusion
Make-or-buy decision is one of the key techniques for management practice. Due to the global outsourcing, make-
or-buy decision making has become popular and frequent.
Since the manufacturing and services industries have been diversified across the globe, there are a number of
suppliers offering products and services for a fraction of the original price. This has enhanced the global product
and service markets by giving the consumer the eventual advantage.
If you make a make-or-buy decision that can create a high impact, always use a process for doing that. When such
a process is followed, the activities are transparent and the decisions are made for the best interest of the company.
UNIT-3
1. Analyze the core design concepts in software engineering and explain
how they contribute to creating a scalable and maintainable system.
3.1 The Design Concepts
Software Design is the process of transforming user requirements into a suitable form, which helps the
programmer in software coding and implementation. During the software design phase, the design document is
produced, based on the customer requirements as documented in the SRS document. Hence, this phase aims to
transform the SRS document into a design document.
The following items are designed and documented during the design phase:
1. Different modules are required.
2. Control relationships among modules.
3. Interface among different modules.
4. Data structure among the different modules.
5. Algorithms are required to be implemented among the individual modules.
28
appropriate naming conventions and providing clear documentation). Maintainability in Software and design also
enables developers to fix bugs, enhance features, and adapt the software to changing requirements without
excessive effort or introducing new issues.
29
3. Architecture (design a structure of something): Architecture simply means a technique to design a
structure of something. Architecture in designing software is a concept that focuses on various elements and
the data of the structure. These components interact with each other and use the data of the structure in
architecture.
4. Refinement (removes impurities): Refinement simply means to refine something to remove any impurities
if present and increase the quality. The refinement concept of software design is a process of developing or
presenting the software or system in a detailed manner which means elaborating a system or software.
Refinement is very necessary to find out any error if present and then to reduce it.
5. Pattern (a Repeated form): A pattern simply means a repeated form or design in which the same shape is
repeated several times to form a pattern. The pattern in the design process means the repetition of a solution
to a common recurring problem within a certain context.
6. Information Hiding (Hide the Information): Information hiding simply means to hide the information so
that it cannot be accessed by an unwanted party. In software design, information hiding is achieved by
designing the modules in a manner that the information gathered or contained in one module is hidden and
can’t be accessed by any other modules.
7. Refactoring (Reconstruct something): Refactoring simply means reconstructing something in such a way
that it does not affect the behavior of any other features. Refactoring in software design means
reconstructing the design to reduce complexity and simplify it without impacting the behavior or its
functions. Fowler has defined refactoring as “the process of changing a software system in a way that it
won’t impact the behavior of the design and improves the internal structure”.
nference the key factors that contribute to an effective user interface design, and
explain how they enhance user experience and accessibility.
The user interface is the front-end application view to which the user interacts to use the software. The software
becomes more popular if its user interface is:
1. Attractive
2. Simple to use
3. Responsive in a short time
4. Clear to understand
5. Consistent on all interface screens
30
UI Design Stages
2. Interface Design
The goal of this phase is to define the set of interface objects and actions i.e., control mechanisms that enable the
user to perform desired tasks. Indicate how these control mechanisms affect the system. Specify the action
sequence of tasks and subtasks, also called a user scenario. Indicate the state of the system when the user performs
a particular task. Always follow the three golden rules stated by Theo Mandel. Design issues such as response
time, command and action structure, error handling, and help facilities are considered as the design model is
refined. This phase serves as the foundation for the implementation phase.
31
4. Interface Validation
This phase focuses on testing the interface. The interface should be in such a way that it should be able to perform
tasks correctly, and it should be able to handle a variety of tasks. It should achieve all the user’s requirements. It
should be easy to use and easy to learn. Users should accept the interface as a useful one in their work.
32