Chapter 25 Configuration Management
Chapter 25 Configuration Management
Software issue
Ethical
Software meaning
Software related activity
- Software specification
- Software validation
- Software
Software engineering is concerned with theory, method and tools for professional software
development.
Software issues
Heterogeneity
Increasingly, systems are required to operate as distributed systems across networks that include
different types of computer and mobile devices.
Scale
Software has to be developed across a very wide range of scales, from very small embedded systems
in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global
community.
Software validation, where the software is checked to ensure that it is what the customer requires.
Software evolution, where the software is modified to reflect changing customer and market
requirements.
Generic product
Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
The specification of what the software should do is owned by the software developer and decisions on
software change are made by the developer.
Customized product
Software that is commissioned by a specific customer to meet their own needs.
The specification of what the software should do is owned by the customer for the software and they
make decisions on software changes that are required.
Application types:
Embedded system
These are software control systems that control and manage hardware devices. Numerically, there are
probably more embedded systems than any other type of system. Examples of embedded systems
include the software in a mobile (cell) phone, software that controls antilock braking in a car, and
software in a microwave oven to control the cooking process.
System of system
These are systems that are composed of a number of other software systems.
Stand-alone application
These are application systems that run on a local computer, such as a PC. They include all necessary
functionality and do not need to be connected to a network. Examples of such applications are office
applications on a PC, CAD programs, photo manipulation software, travel apps, productivity apps, and
so on.
Entertainment system
These are systems that are primarily for personal use and which are intended to entertain the user.
Most of these systems are games of one kind or another, which may run on special-purpose console
hardware. The quality of the user interaction offered is the most important distinguishing characteristic
of entertainment systems.
Understanding and managing the software specification and requirements (what the software should do)
are important.
Where appropriate, you should reuse software that has already been developed rather than write new
software.
SE ethics
1. Confidentiality You should normally respect the confidentiality of your employers or clients
regardless of whether or not a formal confidentiality agreement has been signed.
2. Competence You should not misrepresent your level of competence. You should not knowingly
accept work that is outside your competence.
3. Intellectual property rights You should be aware of local laws governing the use of intellectual
property such as patents and copyright. You should be careful to ensure that the intellectual property of
employers and clients is protected.
4. Computer misuse You should not use your technical skills to misuse other people’s computers.
Computer misuse ranges from relatively trivial (game playing on an employer’s machine) to extremely
serious (dissemination of viruses or other malware).
Software engineering is an engineering discipline that is concerned with all aspects of software
production from the early stages of system specification through to maintaining the system after it has
gone into use. In this definition, there are two key phrases:
1.
Engineering discipline Engineers make things work. They apply theories, methods, and tools where
these are appropriate. However, they use them selectively and always try to discover solutions to
problems even when there are no applicable theories and methods. Engineers also recognize that they
must work to organizational and financial constraints so they look for solutions within these
constraints.
2.
All aspects of software production Software engineering is not just concerned with the technical
processes of software development. It also includes activities such as software project management and
the development of tools, methods, and theories to support software production.
It is usually cheaper, in the long run, to use software engineering methods and techniques for software
systems rather than just write the programs as if it was a personal programming project. For most types
of systems, the majority of costs are the costs of changing the software after it has gone into use
This radical change in software organization has, obviously, led to changes in the ways that web-based
systems are engineered. For example:
1. Software reuse has become the dominant approach for constructing web-based systems. When
building these systems, you think about how you can assemble them from pre-existing software
components and systems.
2. It is now generally recognized that it is impractical to specify all the requirements for such systems
in advance. Web-based systems should be developed and delivered incrementally.
3. User interfaces are constrained by the capabilities of web browsers. Although technologies such as
AJAX mean that rich interfaces can be created within a web browser, these technologies are still
difficult to use. Web forms with local scripting are more commonly used. Application interfaces on
web-based systems are often poorer than the specially designed user interfaces on PC system products.
Chapter 2 Software process model
Software process activity:
Specification – defining what the system should do;
Design and implementation – defining the organization of the system and implementing the system;
Validation – checking that it does what the customer wants;
Evolution – changing the system in response to changing customer needs.
The main drawback of the waterfall model is the difficulty of accommodating change after the process
is underway. In principle, a phase has to be complete before moving onto the next phase.
Incremental development
May be plan driven or agile, Specification, development and validation are interleaved.
Incremental development has three important benefits, compared to the waterfall
model:
1. The cost of accommodating changing customer requirements is reduced. The amount of analysis and
documentation that has to be redone is much less than is required with the waterfall model.
2. It is easier to get customer feedback on the development work that has been done. Customers can
comment on demonstrations of the software and see how much has been implemented. Customers find
it difficult to judge progress from software design documents.
3. More rapid delivery and deployment of useful software to the customer is possible, even if all of the
functionality has not been included. Customers are able to use and gain value from the software earlier
than is possible with a waterfall process.
- Reuse oriented software engineering, maybe agile or plan driven. The system is assembled from
existing components.
Process stages
Component analysis Given the requirements specification, a search is made for components to
implement that specification. Usually, there is no exact match and the components that may be used
only provide some of the functionality required.
2.
Requirements modification During this stage, the requirements are analyzed using information about
the components that have been discovered. They are then modified to reflect the available components.
Where modifications are impossible, the component analysis activity may be re-entered to search for
alternative solutions.
3.
System design with reuse During this phase, the framework of the system is designed or an existing
framework is reused. The designers take into account the components that are reused and organize the
framework to cater for this. Some new software may have to be designed if reusable components are
not available.
4.
Development and integration Software that cannot be externally procured is developed, and the
components and COTS systems are integrated to create the new system. System integration, in this
model, may be part of the development process rather than a separate activity.
There are three types of software component that may be used in a reuse-oriented
process:
1. Web services that are developed according to service standards and which are available for remote
invocation.
2. Collections of objects that are developed as a package to be integrated with a component framework
such as .NET or J2EE.
3. Stand-alone software systems that are configured for use in a particular environment.
Based on systematic reuse where systems are integrated from existing components or COTS
(Commercial-off-the-shelf) systems.
Agile manifesto
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Agile methods:
Focus on the code rather than the design
Are based on an iterative approach to software development
Are intended to deliver working software quickly and evolve this quickly to meet changing
requirements.
Agile principles
Customer i Customers should be closely involved throughout the development process.
nvolvemen
t Their role is provide and prioritize new system requirements and to evaluate the iterations of the system.
Incrementa The software is developed in increments with the customer specifying the requirements to be included
l delivery
in each increment.
People not The skills of the development team should be recognized and exploited. Team members should
process
be left to develop their own ways of working without prescriptive processes.
Embrace c Expect the system requirements to change and so design the system to accommodate these changes.
hange
Maintain si Focus on simplicity in both the software being developed and in the development process.
mplicity
Wherever possible, actively work to eliminate complexity from the system.
There are two related approaches that may be used to reduce the costs of rework:
1. Change avoidance, where the software process includes activities that can anticipate possible
changes before significant rework is required. For example, a prototype system may be developed to
show some key features of the system to customers. They can experiment with the prototype and refine
their requirements before committing to high software production costs.
2. Change tolerance, where the process is designed so that changes can be accommodated at relatively
low cost. This normally involves some form of incremental development. Proposed changes may be
implemented in increments that have not yet been developed. If this is impossible, then only a single
increment (a small part of the system) may have to be altered to incorporate the change.
Two ways of coping with change and changing system requirements. These are:
1. System prototyping, where a version of the system or part of the system is developed quickly to
check the customer’s requirements and the feasibility of some design decisions. This supports change
avoidance as it allows users to experiment with the system before delivery and so refine their
requirements. The number of requirements change proposals made after delivery is therefore likely to
be reduced.
2. Incremental delivery, where system increments are delivered to the customer for comment and
experimentation. This supports both change avoidance and change tolerance. It avoids the premature
commitment to requirements for the whole system and allows changes to be incorporated into later
increments at relatively low cost.
Chapter 3 Requirements
Requirements engineering process
Feasibility study
Requirements elicitation and analysis
Requirements specification
Requirements validation
Collective ownership
The pairs of developers work on all areas of the system, so that no islands of expertise develop and all
the developers take responsibility for all of the code. Anyone can change anything.
Continuous integration
As soon as the work on a task is complete, it is integrated into the whole system. After any such
integration, all the unit tests in the system must pass.
Incremental planning
Requirements are recorded on “story cards,” and the stories to be included in a release are determined
by the time available and their relative priority. The developers break these stories into development
“tasks.”
On-site customer
A representative of the end-user of the system (the Customer) should be available full time for the use
of the XP team. In an extreme programming process, the customer is a member of the development
team and is responsible for bringing system requirements to the team for implementation.
Pair programming
Developers work in pairs, checking each other's work and providing the support to always do a good
job.
Refactoring
All developers are expected to refactor the code continuously as soon as potential code improvements
are found. This keeps the code simple and maintainable.
Simple design
Enough design is carried out to meet the current requirements and no more.
Small releases
The minimal useful set of functionality that provides business value is developed first. Releases of the
system are frequent and incrementally add functionality to the first release.
Sustainable pace
Large amounts of overtime are not considered acceptable, as the net effect is often to reduce code
quality and medium-term productivity.
Test first development
An automated unit test framework is used to write tests for a new piece of functionality before that
functionality itself is implemented.
Scrum
A daily meeting of the Scrum team that reviews progress and prioritizes
work to be done that day. Ideally, this should be a short face-to-face
meeting that includes the whole team.
Sprints
A development iteration. Sprints are usually 2 to 4 weeks long.
Requirements
Functional requirements
Organizational requirements
Requirements which are a consequence of organizational policies and procedures e.g. process
standards used, implementation requirements, etc.
External requirements
Requirements which arise from factors which are external to the system and its development process,
e.g. interoperability requirements, legislative requirements, etc
four activities that may be part of the design process for information systems:
Architectural design, where you identify the overall structure of the system, the principal components
(sometimes called sub-systems or modules), their relationships, and how they are distributed.
Interface design, where you define the interfaces between system components. This interface
specification must be unambiguous. With a precise interface, a component can be used without other
components having to know how it is implemented. Once interface specifications are agreed, the
components can be designed and developed concurrently.
Component design, where you take each system component and design how it will operate. This may
be a simple statement of the expected functionality to be implemented, with the specific design left to
the programmer. Alternatively, it may be a list of changes to be made to a reusable component or a
detailed design model. The design model may be used to automatically generate an implementation.
Database design, where you design the system data structures and how these are to be represented in a
database. Again, the work here depends on whether an existing database is to be reused or a new
database is to be created.
The processes used for RE vary widely depending on the application domain, the people involved and
the organisation developing the requirements.
Activity of requirements elicitation:
Requirements discovery
Interacting with stakeholders to discover their requirements. Domain requirements are also
discovered at this stage.
Requirements classification and organization
Groups related requirements and organizes them into coherent clusters.
Prioritization and negotiation
Prioritizing requirements and resolving requirements conflicts.
Requirements specification
Requirements are documented and input into the next round of the spiral.
Design method:
Structured design - supported with CASE tools
JSD Jackson System Development
Design description is use graphical notation to show relationship between components, informal text,
natural language to describe so that customer and user can understand, Program description
languages. Based on programming languages but with more flexibility to represent abstract concepts
Design strategy:
Functional design
The system is designed from a functional viewpoint. The system state is centralised and shared
between the functions operating on that state
Object-oriented design
The system is viewed as a collection of interacting objects. The system state is de-centralised and each
object manages its own state. Objects may be instances of an object class and communicate by
exchanging methods
Error : It is a human action that produces the incorrect result that produces a fault.
Bug : The presence of error at the time of execution of the software.
Fault : State of software caused by an error.
Failure : Deviation of the software from its expected result. It is an event.
Test cases is a table of questions to test whether each functional have perform well or not
Test plan is plan that carry out before testing, It is a systematic approach to test a system i.e.
software. The plan typically contains a detailed understanding of what the eventual testing workflow
will be
Test cases
It is a specific procedure of testing a particular requirement.
It will include:
Identification of specific requirement tested
Test case success/failure criteria
Specific steps to execute test
Test data
Testing techique
Black box testing
- is the user didn’t have knowledge about the internal content of the system, the user only test the
function and interface only. Tests are based on requirements and functionality.
Component/integration testing, where several individual units are integrated to create composite
components. Component testing should focus on testing component interfaces.
System testing, where some or all of the components in a system are integrated and the system is
tested as a whole. System testing should focus on testing component interactions.
User testing
- users or potential users of a system test the system in their own environment. is a stage in the
testing process in which users or customers provide input and advice on system testing. U ser testing
is essential The reason for this is that influences from the user’s working environment have a major
effect on the reliability, performance, usability and robustness of a system. These cannot be
replicated in a testing environment.
Beta testing
A release of the software is made available to users to allow them to experiment and to raise
problems that they discover with the system developers.
Acceptance testing
Customers test a system to decide whether or not it is ready to be accepted from the system
developers and deployed in the customer environment. Primarily for custom systems.
Release testing
- a separate testing team test a complete version of the system before it is released to users.
Testing strategy:
Partition testing
Guideline-based testing
Interface testing
Performance testing is part of the release testing may involve testing the emergent properties of a
system, such as performance and reliability.
Stress testing is a form of performance testing where the system is deliberately overloaded to test its
failure behavior.
Testing only can show the presence if error, cannot state that the system no remaining error
In order to be cost effective, the testing must be concentrated on areas where it will be most
effective.
Company size
SOftware customer
Software size
Software type.
Organizational culture.
Software development processes.
Increased pricing
The price may be increased when a buyer wishes a fixed-price contract and so the seller increases the
price to allow for unexpected risks
Pricing to win
The software is priced according to what the software developer believes the buyer is willing to pay
If this is less than the development costs, the software functionality may be reduced accordingly with
a view to extra functionality being added in a later release
Additional costs may be added as the requirements change and these may be priced at a higher level
to make up the shortfall in the original price
It means that if the price is low than the development cost, the software developer can reduce the
functionality first, and then if the buyer need to add the extra functionality then software developer
can priced at a higher level
Factors affecting software pricing
Retain (保留)
Uncertainly (犹豫不决)
Volatility (易变)
Risk classification:
Project risk – affect the project schedule or resources.
Product risk – affect quality and performance of the software being developed.
Business risk – affect the organization that develops or procures the software.
Risk strategies
Avoidance strategies – To reduce the probability that the risk will happen
Minimization strategies – To reduce the impact of the risk on the project or product.
Contingency plans – Plans on how to deal with the risk if it happens
Four critical factors that influence relationship between manager and people in organization:
Consistency - Team members should all be treated in a comparable way without favoritism or
discrimination.
Respect - Different team members have different skills and these differences should be respected.
Inclusion - Involve all team members and make sure that people’s views are considered.
Honesty - Be honest about what is going on well in a project and vice-versa.
Chapter6 Quality management
A quality plan sets out
the desired product qualities
the product quality assessment processes or procedures
the most significant quality attributes
the organisational standards should be applied (and, where necessary, define new standards to be
used)
Security terminology
Term Definition
Something of value which has to be protected such as software system, data, etc
Asset
.
Identificat
Intrusion detection
ion
Authentic
Non-repudiation( 否认)
ation
Authorizat
Privacy
ion
Immunity Security auditing
Integrity System maintenance security
Security assurance
Vulnerability avoidance
- The system Is designed so that vulnerabilities do not occur. For example, if there is no external
network connection then external attack is impossible.
The patient databa High. Required to High. Financial loss as clinics may have to be cancelled.
se support all clinical
consultations. Pote Costs of restoring system. Possible patient harm if
ntially safety-
critical. treatment cannot be prescribed.
An individual pati Normally low alth Low direct losses but possible loss of reputation.
ent record ough may be high
for specific high-
profile patients.
Identification the needs to identify its users before interacting with them.
Authentication how users are identified.
Immunity how a system should protect itself against viruses, worms, and similar
threats.
Intrusion detection what mechanisms should be used to detect attacks on the system.
Nonrepudiation that a party in a transaction cannot deny its involvement in that transaction.
System maintenance how an application can prevent authorized changes from accidentally
security
defeating its security mechanisms.
Two fundamental issues have to be considered when designing an architecture for security.
Protection - How should the system be organized so that critical assets can be protected against
external attack?
Distribution - How should system assets be distributed so that the effects of a successful attack are
minimized?
Attack simulation
Devise attack scenarios and identify components affected
Survivability analysis
Identify survivability strategies to be applied
Survivability strategy:
Resistance (抵抗)
Avoiding problems by building capabilities into the system to resist attacks
Recognition
Detecting problems by building capabilities into the system to detect attacks and failures and assess
the resultant damage
Recovery
Tolerating problems by building capabilities into the system to deliver services whilst under attack
1. Version control This involves keeping track of the multiple versions of system components and
ensuring that changes made to components by different developers do not interfere with each other.
2. System building This is the process of assembling program components, data, and libraries, then
compiling and linking these to create an executable system.
3. Change management This involves keeping track of requests for changes to delivered software from
customers and developers, working out the costs and impact of making these changes, and deciding if
and when the changes should be implemented.
4. Release management This involves preparing software for external release and keeping track of the
system versions that have been released for customer use.
Baseline
A collection of component versions that make up a system. Baselines are controlled, which means that
the component versions used in the baseline cannot be changed. It is always possible to re-create a
baseline from its constituent components.
Branching
The creation of a new codeline from a version in an existing codeline. The new codeline and the
existing codeline may then develop independently.
Codeline
A set of versions of a software component and other configuration items on which that component
depends.
Configuration (version) control
The process of ensuring that versions of systems and components are recorded and maintained so that
changes are managed and all versions of components are identified and stored for the lifetime of the
system.
Configuration item or software configuration item (SCI)
Anything associated with a software project (design, code, test data, document, etc.) that has been
placed under configuration control. Configuration items always have a unique identifier.
Mainline
A sequence of baselines representing different versions of a system.
Merging
The creation of a new version of a software component by merging separate versions in different
codelines. These codelines may have been created by a previous branch of one of the codelines
involved.
Release
A version of a system that has been released to customers (or other users in an organization) for use.
Repository
A shared database of versions of software components and metainformation about changes to these
components.
System building
The creation of an executable system version by compiling and linking the appropriate versions of the
components and libraries making up the system.
Version
An instance of a configuration item that differs, in some way, from other instances of that item.
Versions should always have a unique identifier.
Workspace
A private work area where software can be modified without affecting other developers who may be
using or modifying that software.
Version control (VC) systems identify, store, and control access to the different versions of
components. There are two types of modern version control system:
1. Centralized systems, where a single master repository maintains all versions of the software
components that are being developed. Subversion is a widely used example of a centralized VC system.
2. Distributed systems, where multiple versions of the component repository exist at the same time. Git
(Loeliger and McCullough 2012), is a widely used example of a distributed VC system.
Centralized and distributed VC systems provide comparable functionality but implement this
functionality in different ways. Key features of these systems include:
1. Version and release identification Managed versions of a component are assigned unique identifiers
when they are submitted to the system. These identifiers allow different versions of the same
component to be managed, without changing the component name. Versions may also be assigned
attributes, with the set of attributes used to uniquely identify each version.
2. Change history recording The VC system keeps records of the changes that have been made to
create a new version of a component from an earlier version. In some systems, these changes may be
used to select a particular system version. This involves tagging components with keywords describing
the changes made. You then use these tags to select the components to be included in a baseline.
3. Independent development Different developers may be working on the same component at the same
time. The version control system keeps track of components that have been checked out for editing and
ensures that changes made to a component by different developers do not interfere.
4. Project support A version control system may support the development of several projects, which
share components. It is usually possible to check in and check out all of the files associated with a
project rather than having to work with one file or directory at a time.
5. Storage management Rather than maintain separate copies of all versions of a component, the
version control system may use efficient mechanisms to ensure that duplicate copies of identical files
are not maintained. Where there are only small differences between files, the VC system may store
these differences rather than maintain multiple copies of files. A specific version may be automatically
re-created by applying the differences to a master version.
This model of development has a number of advantages: (Distributed version control system)
1. It provides a backup mechanism for the repository. If the repository is corrupted, work can continue
and the project repository can be restored from local copies.
2. It allows for offline working so that developers can commit changes if they do not have a network
connection.
3. Project support is the default way of working. Developers can compile and test the entire system on
their local machines and test the changes they have made.
Contractual responsibility
The developers of a system may have no contractual responsibility for maintenance so there is no
incentive to design for future change.
Staff skills
Maintenance staff are often inexperienced and have limited domain knowledge.
Benefit of re-engineering
Reduced cost
- The cost of reengineering may be significantly less than the cost of developing new software. Ulrich
(1990) quotes an example of a commercial system for which the reimplementation costs were
estimated at $50 million. The system was successfully reengineered for $12 million. I suspect that, with
modern software technology, the relative cost of reimplementation is probably less than this but will
still considerably exceed the costs of reengineering.
Reduced risk
- There is a high risk in redeveloping business-critical software. Errors may be made in the system
specification or there may be development problems. Delays in introducing the new software may
mean that business is lost and extra costs are incurred.
Reengineerig process
Source code translation
- Using a translation tool, the program is converted from an old programming language to a more
modern version of the same language or to a different language.
Reverse engineering
- The program is analyzed and information extracted from it. This helps to document its organization
and functionality. Again, this process is usually completely automated.
Program modularization
- Related parts of the program are grouped together and, where appropriate, redundancy is removed. In
some cases, this stage may involve architectural refactoring (e.g., a system that uses several different
data stores may be refactored to use a single repository). This is a manual process.
Data reengineering
- The data processed by the program is changed to reflect program changes. This may mean redefining
database schemas and converting existing databases to the new structure. You should usually also clean
up the data. This involves finding and correcting mistakes, removing duplicate records, etc. Tools are
available to support data reengineering.
These Software Quality Attributes in software engineering can be categorized under specific
areas as mentioned below:
Conceptual Integrity
Maintainability
Reusability
Correctness
#2) Runtime Qualities
Reliability
Interoperability
Scalability (Flexibility)
Performance
Security
Availability
#3) System Qualities
Supportability
Testability
#4) User Qualities
Usability
#5) Non-runtime Qualities
Portability
Reusability
Reliability
Synonym for reliability is assurance. Reliability can be defined as the degree to which a software
system or its components or a service performs specific functions under predefined conditions for
a set period. It is the likelihood of fault-free software operation for a specified period of time in a
specified environment. A typical example is to have several servers in a cluster, so that if one of
the servers fails the other servers will continue processing seamlessly and take over the load of the
failed server. Another method could be to implement automatic failover.
Maintainability
It is the ease with which a software developer is able to fix flaws in the existing functionality
without impacting other components of the software system. It also considers the ease with which
a developer can add new features, update existing features or upgrade the system with new
technology.
Usability
This attribute refers to the quality of the end user’s experience while interacting with the application or
service. Usability is concerned with effectiveness, efficiency, and overall user satisfaction.This
attribute helps to measure the ease of use of any software application or service (e.g., registering a new
account and then signing in to the account) A web application for scientists and research students
had all of the necessary features, however, some of the sub-menus on one or more pages were
concealed (for instance, they were only seen after clicking the ellipsis button). As a result, users
had a tough time understanding how to start using those features.
Portability
It refers to the extent to which a system or its components can be migrated (transported) to other
environments consisting of different hardware and/or different software (operating system).
The importance of software portability should not be underestimated. Mobile version of event
booking software was working fine on Android but had issues with context menus on iOS.
Correctness
This refers to the ability of software products or services to perform tasks (e.g. calculations, sign-
ups, navigations) correctly as specified by the predefined requirements when used under specified
conditions.. It is a measure of whether a software system is correct or not, implying that it is an
all-or-nothing attribute. An online examination system had a remote proctoring feature. As per the
specification, it was required to have the option to enable/disable this functionality as required and
to work on all current browser versions. But in the production environment, the admin user
couldn’t disable this functionality on Firefox.
Efficiency
It is one of the most important software quality attributes. It reveals the performance of a software product
concerning the number of resources utilized under predefined conditions. It is measured simply in terms of the
time required by the software system or service to complete any given task. A survey application was collecting
data, which could be downloaded as an MS Excel file. However, the applications started freezing with
approximately 5000 records.
Security
It is defined as the capacity of a system to fend off or thwart malicious or unauthorized attempts to intrude and
damage it while still allowing access to authorized users. Additionally, it also measures the ability of the software
system to safeguard data and information from unauthorized entities.. As in recent years, the number of cyber-
attacks are on the rise, security of a software system should be given very high priority. One of the APIs of a large
customized survey application was accessible without proper authentication. Although only technically skilled
individuals could have utilized that API, it posed a significant security risk.
Supportability
It is the degree to which a software application can provide practically useful information helpful for identifying
and resolving issues when the application fails to work correctly.PDF downloads for resource booking applications
started failing in the production environment (which was working perfectly fine on test & release environments).
The lack of sufficient and appropriate error logging information caused a delay in providing the fix for it.
Initial
Repeatable
Defined
Managed
Optimising
Chapter 12 Software reuse
Actually in software engineering, system are compose by use existing components from other
existing system.
Reuse landscape
Application framework
- Collections of abstract and concrete classes are adapted and extended to create application
systems.
Software product line
ERP systems