Professional Documents
Culture Documents
Se - Unit-1
Se - Unit-1
Software engineering is defined as a process of analyzing user requirements and then designing,
building, and testing software application which will satisfy those requirements.
The term software engineering is the product of two words, software, and engineering
Computer programs and related documentation such as requirements, design models and user
manuals.
Engineering is the application of scientific and practical knowledge to invent, design, build,
maintain, and improve frameworks, processes, etc.
Software Engineering is an engineering branch related to the evolution of software product using
well-defined scientific principles, techniques, and procedures. The result of software engineering
is an effective and reliable software product.
or
Software is more than just a program code. A program is an executable code, which serves some
computational purpose. Software is considered to be collection of executable programming code,
associated libraries and documentations. Software, when made for a specific requirement is
called software product.
Engineering on the other hand, is all about developing products, using well-defined, scientific
principles and methods.
Software engineering is an engineering branch associated with development of software product
using well-defined scientific principles, methods and procedures. The outcome of software
engineering is an efficient and reliable software product.
Definition:
IEEE, in its standard 610.12-1990, defines software engineering as the application of a systematic,
disciplined, which is a computable approach for the development, operation, and maintenance of
software.
Boehm defines software engineering, which involves, ‘the practical application of scientific
knowledge to the creative design and building of computer programs. It also includes associated
documentation needed for developing, operating, and maintaining them.
What was the Software Crisis?
It was in the late 1960s when many software projects failed.
Many software became over budget. Output was an unreliable software which is expensive
to maintain.
Larger software was difficult and quite expensive to maintain.
Lots of software not able to satisfy the growing requirements of the customer.
Complexities of software projects increased whenever its hardware capability increased.
Demand for new software increased faster compared with the ability to generate new
software.
The Solution
Solution was to the problem was transforming unorganized coding effort into a software
engineering discipline. These engineering models helped companies to streamline operations and
deliver software meeting customer requirements.
The late 1970s saw the widespread uses of software engineering principles.
In the 1980s saw the automation of software engineering process and growth of (CASE)
Computer-Aided Software Engineering.
The 1990s have seen an increased emphasis on the ‘management’ aspects of projects
standard of quality and processes just like ISO 9001
Large software or Huge Programming: – In our real life, it is quite more comfortable to build a
wall than a house or building. In the same manner, as the size of the software becomes large,
software engineering helps you to build software.
Scalability- If the software process were not based on scientific and engineering concepts, it
would be easier to re-create new software than to scale an existing one.
Adaptability: Whenever the software process was based on scientific and engineering, it is easy
to re-create new software with the help of software engineering.
Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let down
the cost of computer and electronic hardware. But the cost of programming remains high if the
proper process is not adapted.
Dynamic Nature: The continually growing and adapting nature of programming hugely depends
upon the environment in which the client works. If the quality of the software is continually
changing, new upgrades need to be done in the existing one.
Quality Management: Better procedure of software development provides a better and quality
software product.
To minimize software cost: Software needs a lot of hardwork and software engineers are highly
paid experts. A lot of manpower is required to develop software with a large number of codes. But
in software engineering, programmers project everything and decrease all those things that are not
needed. In turn, the cost for software productions becomes less as compared to any software that
does not use software engineering method.
To decrease time: Anything that is not made according to the project always wastes time. And if
you are making great software, then you may need to run many codes to get the definitive running
code. This is a very time-consuming procedure, and if it is not well handled, then this can take a
lot of time. So if you are making your software according to the software engineering method, then
it will decrease a lot of time.
Handling big projects: Big projects are not done in a couple of days, and they need lots of
patience, planning, and management. And to invest six and seven months of any company, it
requires heaps of planning, direction, testing, and maintenance. No one can say that he has given
four months of a company to the task, and the project is still in its first stage. Because the company
has provided many resources to the plan and it should be completed. So to handle a big project
without any problem, the company has to go for a software engineering method.
Reliable software: Software should be secure, means if you have delivered the software, then it
should work for at least its given time or subscription. And if any bugs come in the software, the
company is responsible for solving all these bugs. Because in software engineering, testing and
maintenance are given, so there is no worry of its reliability.
Effectiveness: Effectiveness comes if anything has made according to the standards. Software
standards are the big target of companies to make it more effective. So Software becomes more
effective in the act with the help of software engineering.
Operational
Transitional
Maintenance
Here are some important characteristics of good software developed by software professionals
Operational
This characteristic let us know about how well software works in the operations which can be
measured on:
Budget, Efficiency, Usability, Dependability, Correctness, Functionality, Safety
Security.
Transitional
This is an essential aspect when the software is moved from one platform to another:
Interoperability
Reusability
Portability
Adaptability
Maintenance
This aspect talks about how well software has the capabilities to adapt itself in the quickly
changing environment:
Flexibility
Maintainability
Modularity
Scalability
Software Evolution:
The process of developing a software product using software engineering principles and methods
is referred to as software evolution. This includes the initial development of software and its
maintenance and updates, till desired software product is developed, which satisfies the expected
requirements.
Evolution starts from the requirement gathering process. After which developers create a prototype
of the intended software and show it to the users to get their feedback at the early stage of software
product development. The users suggest changes, on which several consecutive updates and
maintenance keep on changing too. This process changes to the original software, till the desired
software is accomplished.
Even after the user has desired software in hand, the advancing technology and the changing
requirements force the software product to change accordingly. Re-creating software from scratch
and to go one-on-one with requirement is not feasible. The only feasible and economical solution
is to update the existing software so that it matches the latest requirements.
Lehman has given laws for software evolution. He divided the software into three different
categories:
S-type (static-type) - This is a software, which works strictly according to
defined specifications and solutions. The solution and the method to achieve it, both are
immediately understood before coding. The s-type software is least subjected to changes
hence this is the simplest of all. For example, calculator program for mathematical
computation.
P-type (practical-type) - This is a software with a collection of procedures. This is defined
by exactly what procedures can do. In this software, the specifications can be described but
the solution is not obvious instantly. For example, gaming software.
E-type (embedded-type) - This software works closely as the requirement of real-
world environment. This software has a high degree of evolution as there are various
changes in laws, taxes etc. in the real world situations. For example, Online trading
software.
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). Software delivers the most important
product of our time—information.
Software 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., Internet) and provides the means for
acquiring information in all of its forms. The role of computer software has undergone significant
change over a time span of little more than 50 years. Dramatic improvements in hardware
performance, profound changes in computing architectures, vast increases in memory and storage
capacity, and a wide variety of exotic input and output options have all precipitated more
sophisticated and complex computer-based systems. The lone programmer of an earlier era has
been replaced by a team of software specialists, each focusing on one part of the technology
required to deliver a complex application.
1. System software: It is a collection of programs written to service other programs. Some system
software are compilers, editors, file management utilities. They process complex but determinate
information structure. Other system applications can be operating system components, drivers,
networking software. They process largely indeterminate data. In either case the system software
area is characterized by heavy interaction with computer hardware, heavy usage by multiple users,
concurrent operation that requires scheduling, resource sharing, and sophisticated process
management, complex data structure, and multiple external interfaces.
2. Application software: It is a program or group of programs designed for end-users. These
software are used to monitor, control and analyze real world events as they occur. An example
may be software required for weather forecasting. Such software will gather and process the status
of temperature, humidity and other environmental parameters to forcast the weather.
Ex: Email apps, c, and java.
3. Engineering and Scientific Software: This software is used to facilitate the engineering
function and task. This type of software used in number crunching algorithms applications.
However modern application within the engineering and scientific area are moving away from the
conventional numerical algorithms. Computer-aided design, system simulation, and other
interactive applications have begun to take a real-time and even system software characteristic.
4. Embedded software: This type of software is placed in “Read-Only- Memory (ROM)”of the
product and control the various functions of the product. The product could be an aircraft,
automobile, security system, signalling system, control unit of power plants, etc. the embedded
software handles hardware components and is also termed as intelligent software.
7. Product line software: These are designed to provide a specific capability for use by many
different customers. They focus on a limited and esoteric market place. These software addresses
mass consumer markets. Ex: DBMS, Computer graphics.
Software Myths:
Software myths are the beliefs that people consider are true but are not, regarding software and
its development process. The software myths have been carried over several years and are now
identified by software engineering professionals.
The managers and software practitioners are habitual to these myths. However, the old habits are
difficult to modify.
1. Management Myths
The manager who is responsible for developing software is often under pressure regarding many
attributes of the software such as:
Under such pressure, even the software manager develops belief in a software myth that lessens.
These software myths grasped by the software manager lessen his pressure up to a certain level
but this is temporary.
Let us discuss some myths perceived by the software manager:
Myth 1:
The software building team has a book that explains all standards and procedures that are
required for developing software.
The manager has a myth that the book provides everything to the team required for the software
development.
Reality 1
Though there exists a book that has all the standards and procedures required to develop
software. But are the developers aware of its existence? Do they ever refer to such books? Is the
book complete?
Can it be referred to? Does the book help the developers to stick to the time-to-deliver even
maintain the quality of the software?
Myth 2
If more programmers are added to the software development team we can stick to the schedule.
Reality 2
This is because when new members are introduced to the team, the members already working on
the software will have to explain the work done till now. This will even reduce the time from the
time that has to spend on the development of the software.
Although more members can be added to the team in a planned and co-ordinate manner.
Myth 3
Outsourcing the software project to a third party will let the manager relax. The third-party will
be solely responsible for the development of the software.
Reality 3
If the company has outsourced the software project to a third party, it means the company is not
aware of the details of the software project. It doesn’t know how to manage and control the
software project.
2. Customer Myths
The customer is one who requests software either from a software engineer, a technical group, or
the marketing sales department. The customer always requests the software under a contract.
The customer has some myths regarding the development of software. Hence customer develops
false expectations which lead to dissatisfaction with the developer. Let us discuss some myths
developed by the customer.
Myth 1
Customers believe that giving a general statement would let the software developer start writing
the program. The rest of the details can be filled in later.
Reality 1
Although it is not possible for a customer to provide a comprehensive and stable statement. And
an ambiguous statement will lead to disaster. The unambiguous statement comes with an
iterative communication between the customer and the developer.
Myth 2
Customers can ask for the changes in software as many times as desired as software is flexible.
Reality 2
Well, the customer can ask for the changes in the software. But the impact of the changes varies
from the time it has been introduced. If the customer asks for the changes early during the
development of the software the cost impact is less.
However, over time impact of changes grows gradually may it be in terms of cost or duration, or
the quality of the software.
Software practitioners are the ones who are involved in the development and maintenance of the
software. Earlier developing software is considered as an art. So, the software practitioners have
developed some myths regarding the software.
Myth 1
Once you write the code and develop the software your job is done.
Reality
Practically 60% – 80% of the efforts are expended on the software when the software is
delivered to the customer for the first time.
When the software is delivered to the customer for the first time. When a customer starts using
the software they figure out the improvements that can be made to enhance the quality of the
software.
Myth 3
Reality
Although the working software is the essential part of software configuration there are many
other elements that count in a success of a software project. Such as models of the software, its
documents, and plans.
These are the elements that are essential in the foundation of a successful engineering product.
Myth 4
Practicing software engineering while developing software will tend you to create voluminous
documentation and this will eventually slow down the process of software development.
Reality
Practicing software engineering will never tend you to create huge documentation instead it
focuses on the quality of the developed software. A better-quality software reduces the number
of iterations and thus faster the delivery time.
Legacy Software:
Legacy Software are defined as those that rely on older or obsolete technology. This includes not
only outdated computer hardware but also programming languages and software applications that
can no longer support an organization’s technology needs. The criteria given below serve as a
checklist for determining what a legacy system is.
A system unable to support an organization’s software needs
The requirement of personnel with archaic technology skill sets
Excessive costs associated with maintenance
Substantially decreased system performance
Cost-prohibitive to upgrade
Inability to handle the required number of users simultaneously.
Older software supported with feature updates but no security patches
A platform incompatible with new systems and drivers
Software that’s non-compliant with recent standards
Software that requires new updates to be functional.
COBOL: Common Business-Oriented Language or COBOL is still used 55 years after its
development. Forty-eight percent of businesses and government organizations reportedly depend
on this language more than others.
Discontinued Oracle products: Oracle database software such as E-Business Suite and People
soft.
A legacy system can cause a my riad of problems, such as exorbitant maintenance costs, data silos
that prevent integration between systems, lack of compliance to governmental regulations, and
reduced security. These issues eventually outweigh the convenience of continuing to use an
existing legacy system.
At some point, there won’t be any more support for a legacy system and there won’t be any more
updates. If the system fails, there’s nowhere to turn.
Think of a weak dam with holes that you keep plugging and plugging, yet water keeps seeping
through. A legacy system continues to cost a company money for maintenance while never
providing new and innovative services.
In addition to soloing the data they contain, legacy systems keep the departments that use them
out of data integration happening in the rest of the organization. If one team maintains a legacy
system while the rest of the company upgrades, that one team is isolated from business intelligence
and insights being created in integrated systems.
Compliance regulations like the GDPR, for example, require a company to know (and prove) what
customer data they have, where it is, and who is accessing it. Companies with customer data need
to maintain well-governed records, which is much harder (if not impossible) in outdated, siloed
systems.
A legacy system not only leaves a company behind with old technology, it can also seriously
damage a company’s reputation by putting data at risk of a breach. At some point, a vendor no
longer supports the legacy system or provides much needed updates, opening the legacy system
up to a security risk. Even if a critical update is available, installing it can be risky and is postponed
for fear of breaking the system. As technology advances, risks increase for legacy systems.
Developing processes to make the systems work together is cumbersome and still leaves the
company open to security risks. This causes an inability for technological growth within a
company.
1. Definition Phase - It is the base of Definition phase. The experts get the knowledge about
"What".
Analysis of system
Planning of project
Requirement Analysis
2. Development phase - Focus point of development phase is "How". After the explanation of
"What" it turn to "How". Various type of question raised in developer mind that how to design the
data structure and Architecture of software, Procedural detail how to implemented and how design
convert in a programming language and testing of software how to perform. Three special steps
always taken in this phase which are
Design of software
Coding
testing of software system
3. Maintenance phase - The main focus of maintenance phase is change which cause is correction
of errors, adaption of new idea, According to the needs of software after change in customer mood.
2. Process: It is the foundation or base layer of software engineering. It is key that binds all the
layers together which enables the development of software before the deadline or on time. Process
defines a framework that must be established for the effective delivery of software engineering
technology. The software process covers all the activities, actions, and tasks required to be carried
out for software development.
3. Method: During the process of software development the answers to all “how-to-do” questions
are given by method. It has the information of all the tasks which includes communication,
requirement analysis, design modeling, program construction, testing, and support.
4. Tools: Software engineering tools provide a self-operating system for processes and methods.
Tools are integrated which means information created by one tool can be used by another.
Software process framework includes all set of umbrella activities. It also includes number of
framework activities that are applicable to all software projects.
Software process includes:
2. Planning: Establish engineering work plan, describes technical risk, lists resources
requirements, work produced and defines work schedule.
3. Modeling: Architectural models and design to better understand the problem and for work
towards the best solution. The software model is prepared by:
Analysis of requirements
Design
4. Construction: Creating code, testing the system, fixing bugs, and confirming that all criteria
are met. The software design is mapped into a code by:
Code generation
Testing
Umbrella activities:
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.
3. Software quality assurance: These are activities required to maintain software quality. Perform
actions to ensure the product’s quality.
4. Formal technical reviews: It is required to assess engineering work products to uncover and
remove errors before they propagate to the next activity. At each level of the process, errors are
evaluated and fixed.
7. Reusability management: It defines criteria for work product reuse. Reusable work items
should be backed up, and reusable software components should be achieved.
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.
It is a software process
CMMI Model – Maturity Levels :
There are five maturity levels described as follows:
Process models:
A process model describes how each step in SDLC (software development life cycle) work and
what are the process required for each step in SDLC.
Software Development life Cycle:
Software Development Life Cycle (SDLC) is a process used by the software industry to design,
develop and test high quality softwares. The SDLC aims to produce a high-quality software that
meets or exceeds customer expectations, reaches completion within times and cost estimates.
The following figure is a graphical representation of the various stages of a typical SDLC.
A typical Software Development Life Cycle consists of the following phases –
1. Requirement Phase: During this phase, all the relevant information is collected from the
customer to develop a product as per their expectation. Any ambiguities must be resolved in this
phase only.Business analyst and Project Manager set up a meeting with the customer to gather all
the information like what the customer wants to build, who will be the end-user, what is the
purpose of the product. Before building a product a core understanding or knowledge of the
product is very important.
For Example, A customer wants to have an application which involves money transactions. In this
case, the requirement has to be clear like what kind of transactions will be done, how it will be
done, in which currency it will be done, etc.
2. Analysis Phase : Once the requirement gathering is done, an analysis is done to check the
feasibility of the development of a product. In case of any ambiguity, a call is set up for further
discussion.
Once the requirement is clearly understood, the SRS (Software Requirement Specification)
document is created. This document should be thoroughly understood by the developers and also
should be reviewed by the customer for future reference.
3. Design Phase: Based on the requirement we make a design showing how the flow of process
should happen.
4. Implementation or Coding Phase: Implementation/Coding starts once the developer gets the
Design document. The Software design is translated into source code. All the components of the
software are implemented in this phase.
5. Testing Phase: Testing starts once the coding is complete and the modules are released for
testing. In this phase, the developed software is tested thoroughly and any defects found are
assigned to developers to get them fixed.
Retesting, regression testing is done until the point at which the software is as per the customer’s
expectation. Testers refer SRS document to make sure that the software is as per the customer’s
standard.
6. Deployment and Maintenance: Once the software is certified, and no bugs or errors are stated,
then it is deployed. Then based on the assessment, the software may be released as it is or with
suggested enhancement in the object segment. After the software is deployed, then its maintenance
begins.
Once when the client starts using the developed systems, then the real issues come up and
requirements to be solved from time to time.
Process Models:
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.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the defined
set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model".
In this model, phases do not overlap.
Disadvantages
Incremental Model:
Incremental Model is a process of software development where requirements are broken down
into multiple standalone modules of software development cycle. Incremental development is done
in steps from analysis design, implementation, testing/verification, maintenance.
Each iteration passes through the requirements, design, coding and testing phases. And each
subsequent release of the system adds function to the previous release until all designed
functionality has been implemented. The system is put into production when the first increment is
delivered. The first increment is often a core product where the basic requirements are addressed,
and supplementary features are added in the next increments. Once the core product is analyzed
by the client, there is plan development for the next increment.
Advantages:
The software will be generated quickly during the software life cycle
It is flexible and less expensive to change requirements and scope
Throughout the development stages changes can be done
This model is less costly compared to others
A customer can respond to each building
Errors are easy to be identified
Disadvantages
RAD Model:
As the name suggest, RAD is the Rapid Application Development Model. This model is used for
projects which has to be done in a fast pace and can be modularised.
The main advantage is that it is a very high speed waterfall model and hence the time is relatively
short.
The main disadvantage is that since tha project is done in parallel between teams, if one team lacks
technical skills, the project will be a flop.
The requirement analysis is done first and then the project is divided into modules. The design,
implementation and testing are done for each module by different teams. Then the output from
each module are integrated in the deployment stage.
Advantages:
Disadvantages:
Applications:
1. This model should be used for a system with known requirements and requiring a short
development time.
2. It is also suitable for projects where requirements can be modularized and reusable
components are also available for development.
3. The model can also be used when already existing system components can be used in
developing a new system with minimum changes.
4. This model can only be used if the teams consist of domain experts. This is because relevant
knowledge and the ability to use powerful techniques are a necessity.
5. The model should be chosen when the budget permits the use of automated tools and
techniques required.
Evolutionary Model:
Evolutionary model is also referred to as the successive versions model and sometimes as the
incremental model. In Evolutionary model, the software requirement is first broken down into
several modules (or functional units) that can be incrementally constructed and delivered. The
development first develops the core modules of the system. The core modules are those that do
not need services from the other modules. The initial product skeleton is refined into increasing
levels of capability by adding new functionalities in successive versions.
The evolutionary model is shown in above Figure each successive version/model of the product
is a fully functioning software capable of performing more work than the previous
versions/model.
The evolutionary model is normally useful for very large products, where it is easier to find
modules for incremental implementation.
1. It is very useful in a large project where you can easily find a module for step by step
implementation. The evolutionary model is used when the users need to start using the
many features instead of waiting for the complete software.
2. The evolutionary model is also very useful in object-oriented software development
because all the development is divided into different units.
Advantages
Large project: Evolutionary model is normally useful for very large products.
User gets a chance to experiment with a partially developed software much before the
complete version of the system is released.
Evolutionary model helps to accurately elicit user requirements during the delivery of
different versions of the software.
The core modules get tested thoroughly, thereby reducing the chances of errors in the
core modules of the final products.
Evolutionary model avoids the need to commit large resources in one go for
development of the system.
Disadvantages
Difficult to divide the problem into several versions that would be acceptable to the customer and
which can be incrementally implemented and delivered.
Iterative Model:
In the Iterative model, iterative process starts with a simple implementation of a small set of the
software requirements and iteratively enhances the evolving versions until the complete system is
implemented and ready to be deployed.
Prototype Model:
The prototype model requires that before carrying out the development of actual software, a
working prototype of the system should be built. A prototype is a toy implementation of the
system. A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as compared
to actual software. In many instances, the client only has a general view of what is expected from
the software product. In such a scenario where there is an absence of detailed information
regarding the input to the system, the processing needs, and the output requirement, the prototyping
model may be employed.
Spiral Model:
Spiral model is one of the most important Software Development Life Cycle models, which
provides support for Risk Handling. In its diagrammatic representation, it 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. The exact
number of phases needed to develop the product can be varied by the project manager depending
upon the project risks. As the project manager dynamically determines the number of phases, so
the project manager has an important role to develop a product using the spiral model.
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.
The advantages of the Spiral SDLC Model are as follows −
Unified Process:
Unified process (UP) is an architecture centric, use case driven, iterative and incremental
development process. UP is also referred to as the unified software development process. The
Unified Process is an attempt to draw on the best features and characteristics of traditional software
process models, but characterize them in a way that implements many of the best principles of
agile software development. The Unified Process recognizes the importance of customer
communication and streamlined methods for describing the customer’s view of a system. It
emphasizes the important role of software architecture and “helps the architect focus on the right
goals, such as understand ability, reliance to future changes, and reuse”.
The unified process occurs over four phases which include, Inception, Elaboration,
Construction, and Transition. Each of these phases consists of several iterations.
Unified Process Phases
Inception Phase: Communication with the customer is made, and all the features are
identified and plan for the development process.
Elaboration Phase: Identified features are modeled.
Construction Phase: The is constructed and developed.
Transition Phase: The software is deployed on the client-side.
Inception Phase: The initial use case model includes the features, the business case, risk
list, project plan, prototype, etc.
Elaboration Phase: Analysis model. Preliminary model, manual use case model, etc.
Construction Phase: The software is developed, the test plan made, the user manual, and
the installation manual are written.
Transition Phase: Software increment, the beta test report, and the user feedback.
1. The team members need to be expert in their field to develop a software under this
methodology.
2. The development process is too complex and disorganized.
3. On cutting edge projects which utilise new technology, the reuse of components will not
be possible. Hence the time saving one could have made will be impossible to fulfill.
4. Integration throughout the process of software development, in theory sounds a good
thing. But on particularly big projects with multiple development streams it will only add
to the confusion and cause more issues during the stages of testing