software engineering book

Ace your homework & exams now with Quizwiz!

3. Contingency plans

Following these strategies means that you are prepared for the worst and have a strategy in place to deal with it. An example of a contingency strategy is the strategy for organizational financial problems

Acceptance testing

'alpha testing'

As the cost of a project is only loosely related to the price quoted to a customer

'pricing to win' is a commonly used strategy

user requirement vs system requirement

'user requirements' to mean the high-level abstract requirements and 'system requirements' to mean the detailed description of what the system

Extreme programming involves a number of practices, ..

3. People, not process, are supported through pair programming, collective ownership of the system code, and a sustainable development process that does not involve excessively long working hours.

Agile Software Development

A method for software development that uses new approaches, focusing on close collaboration between programming teams and business experts

costs associated with reuse:.

2. Where applicable, the costs of buying the reusable software. For large off-theshelf systems, these costs can be very high.

relation between one non functional requirement and many functional requirement

A single non-functional requirement, such as a security requirement, may generate a number of related functional requirements that define new system services that are required.

Release management

A system release is a version of a software system that is distributed to customers.

incremental specification are inherent

Because incremental specification is inherent in agile methods, writing contracts for this type of development may be difficult.

For example, say an organization intends to introduce a new software-testing tool

Before introducing the tool, you record the number of software defects discovered in a given time

Application frameworks

Collections of abstract and concrete classes are adapted and extended to create application systems

Feasibility study

An estimate is made of whether the identified user needs may be satisfied using current software and hardware technologies

Application frameworks..

Early enthusiasts for object-oriented development suggested that one of the key benefits of using an object-oriented approach was that objects could be reused in different systems

Implementation issues

Software engineering includes all of the activities involved in software development from the initial requirements of the system through to maintenance and management of the deployed system

what does software engineering support

Software engineering is intended to support professional software development, rather than individual programming

Managing people

The people working in a software organization are its greatest assets. I

requirements engineering (RE)

The process of finding out, analyzing, documenting and checking these services and constraints

there are software engineering fundamentals that apply to all types of software system.

Understanding and managing the software specification and requirements (what the software should do) are important

The development schedule for the software

If the software has to be developed quickly, you should try to reuse off-the-shelf systems rather than individual components.

Increased maintenance costs

If the source code of a reused software system or component is not available, then maintenance costs may be higher because the reused elements of the system may become increasingly incompatible with system changes.

Description client-server

In a client-server architecture, the functionality of the system is organized into services, with each service delivered from a separate server. Clients are users of these services and access servers to make use of them.

Effective use of specialists

Instead of doing the same work over and over again, application specialists can develop reusable software that encapsulates their knowledge.

3. Inclusion

People contribute effectively when they feel that others listen to them and take account of their proposals. It is important to develop a working environment where all views, even those of the most junior staff, are considered

1. Consistency

People in a project team should all be treated in a comparable way. No one expects all rewards to be identical but people should not feel that their contribution to the organization is undervalued.

Creating, maintaining, and using a component library

Populating a reusable component library and ensuring the software developers can use this library can be expensive. Development processes have to be adapted to ensure that the library is used.

example of risk .

Requirements change> Project and product >There will be a larger number of changes to the requirements than anticipated.

3. Different stakeholders have different requirements and they may express these in different ways

Requirements engineers have to discover all potential sources of requirements and discover commonalities and conflict.

Change management for software products (e.g., a CAD system product) rather than systems that

are specifically developed for a certain customer, has to be handled in a slightly different way

, use case diagrams should use lines without arrowes

arrows as arrows in the UML indicate the direction of flow of messages

The UML does not support data-flow diagrams

as they were originally proposed and used for modeling data processing

2. Minimization strategies

following these strategies means that the impact of the risk will be reduced. An example of a risk minimization strategy is the strategy for staff illness

Frameworks support design reuse in that they provide a skeleton architecture

for the application as well as the reuse of specific classes in the system

1. The probability of the risk

ight be assessed as very low ( 10%), low (10-25%), moderate (25-50%), high (50-75%), or very high ( 75%).

Incremental development

in some form is now the most common approach for the development of application systems

Examples of product metrics

include the system size, measured in lines of code, or the number of methods associated with each object class.

An association is a link between classes that

indicates that there is a relationship between these classes. each class may have to have some knowledge of its associated class

The rectangle on the dotted lines

indicates the lifeline of the object concerned (i.e., the time that object instance is involved in the computation).

Therefore whatever software process model is used,

it is essential that it can accommodate changes to the software being developed.

developing the software incrementally

it is cheaper and easier to make changes in the software as it is being developed.

After a change request has been submitted,

it is checked to ensure that it is valid.

This layered approach supports the incremental development of systems

layer is developed, some of the services provided by that layer may be made available to users

The checker may be from a customer or application support team

or, for internal requests, may be a member of the development team

Risk monitoring

s the process of checking that your assumptions about the product, process, and business risks have not changed

The MVC pattern

separates elements of a system, allowing them to change independently

3. A structural perspective,

where you model the organization of a system or the structure of the data that is processed by the system.

Component design

where you take each system component and design how it will operate

Configuration management is sometimes considered to be part of software quality management

with the same manager having both quality management and configuration management responsibilities

User and system requirements

write requirements at different levels of detail because different readers use them in different ways

Developers check out components from the public repository

y into their private workspace and may change these as they wish in their private workspace

Validation

Validating requirements locally with users - through mock-ups and scenario-based models - will reduce the risk of starting development on the basis of an incomplete or inaccurate specification of the static elements of the system

Non-functional requirements

are requirements that are not directly concerned with the specific services delivered by the system to its users.

The MDA method recommends that three types of abstract system model should be produced:

1. A computation independent model (CIM) that models the important domain abstractions used in the system.

The first step in scoping many projects is a feasibility study and this is very often a technical rather than a commercial decision. Examples include:

1. A technical study to see if a legacy database contains accurate enough data to allow an enhancement. 2. A pilot to evaluate the feasibility of reverse-engineering an existing process

most users of the UML thought that five diagram types could represent the essentials of a system:

1. Activity diagrams 2. Use case diagrams 3. Sequence diagrams 4. Class diagrams 5. State diagrams

There are three basic methods for estimating the scale of the problem

1. Guesses (estimates made by experienced practitioners) 2. Revisions of previous guesses (based on the actual effort required to deliver similar projects) 3. Statistical manipulation of guesses, where the guesses become parameters of a calculation

Although each framework includes slightly different functionality, most web application frameworks support the following features:

1. Security WAFs may include classes to help implement user authentication (login) and access control to ensure that users can only access permitted functionality in the system.

I have assumed that the sequence of actions in using the microwave is:

1. Select the power level (either half power or full power). 2. Input the cooking time using a numeric keypad. 3. Press Start and the food is cooked for the given time.

For a company involved in software development, there are two open source issues that have to be considered:

1. Should the product that is being developed make use of open source components? 2. Should an open source approach be used for the software's development?

Important organizational questions for project managers include

1. Should the project manager be the technical leader of the group? 2. Who will be involved in making critical technical decisions, and how will these be made?

There are many different software processes but all must include four activities that are fundamental to software engineering:

1. Software specification The functionality of the software and constraints on its operation must be defined. 2. Software design and implementation The software to meet the specification must be produced. 3. Software validation The software must be validated to ensure that it does what the customer wants. 4. Software evolution The software must evolve to meet changing customer needs

There are four fundamental activities that are common to all software processes

1. Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation

here are several reasons why change is inevitable:

1. The business and technical environment of the system always changes after installation

costs associated with reuse:

1. The costs of the time spent in looking for software to reuse and assessing whether or not it meets your needs

Architectural views

1. What views or perspectives are useful when designing and documenting a system's architecture? 2. What notations should be used for describing architectural models?

The main differences between these approaches are as follows:

2. Application frameworks are primarily focused on providing technical rather than domain-specific support

Extreme programming involves a number of practices, .

2. Customer involvement is supported through the continuous engagement of the customer in the development team.

The components at each level in the product line system are as follows:.

3. At the resource management level (level 3) there are components that allow vehicles to be located and despatched, components to update the status of vehicles and equipment, and a component to log details of incidents

During the requirements validation process, different types of checks should be carried out on the requirements in the requirements document..

3. Completeness checks The requirements document should include requirements that define all functions and the constraints intended by the system user.

Although each framework includes slightly different functionality, most web application frameworks support the following features:..

3. Database support Frameworks don't usually include a database but rather assume that a separate database, such as MySQL, will be used. The framework may provide classes that provide an abstract interface to different databases

The effectiveness and efficiency of communications is influenced by...

3. Group composition People with the same personality types (discussed in Section 22.2) may clash and, as a result, communications can be inhibited.

The key stages in this component measurement process are:...

3. Measure component characteristics The selected components are measured and the associated metric values computed.

To use patterns in your design, you need to recognize that any design problem you are facing may have an associated pattern that can be applied,

3. Provide a standard way of accessing the elements in a collection, irrespective of how that collection is implemented (Iterator pattern). 4. Allow for the possibility of extending the functionality of an existing class at run-time (Decorator pattern).

plans normally include the following sections:..

3. Risk analysis This describes possible project risks, the likelihood of these risks arising, and the risk reduction strategies that are proposed

There are four fundamental activities that are common to all software processes

3. Software validation, where the software is checked to ensure that it is what the customer requires.

rapid software development, they share some fundamental characteristics:..

3. System user interfaces are often developed using an interactive development system that allows the interface design to be quickly created by drawing and placing icons on the interface.

costs associated with reuse:..

3. The costs of adapting and configuring the reusable software components or systems to reflect the requirements of the system that you are developing.

System architectures are often modeled using simple block diagrams

Each box in the diagram represents a component. Boxes within boxes indicate that the component has been decomposed to sub-components.

Principles of Agile Methods....

Embrace change Expect the system requirements to change and so design the system to accommodate these changes.

There are four main activities in the requirements engineering process

Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation

4. Much of the research on software measurement and metrics has focused on code-based metrics and plan-driven development processes.

However, more and more software is now developed by configuring ERP systems or COTS, or by using agile methods. We don't know, therefore, if previous research is applicable to these software development techniques.

3. Organizational risks

Risks that derive from the organizational environment where the software is being developed

The representation of the state is private and cannot be accessed directly from outside the object

Object-oriented design processes involve designing object classes and the relationships between these classes

Structural models

Structural models of software display the organization of a system in terms of the components that make up that system and their relationships

The long-term goal of software measurement is to use measurement in place of reviews to make judgments about software quality

Using software measurement, a system could ideally be assessed using a range of metrics and, from these measurements, a value for the quality of the system could be inferred

Measurement ambiguity

When you collect quantitative data about software and software processes, you have to analyze that data to understand its meaning. It is easy to misinterpret data and to make inferences that are incorrect

Generally, you get around this type of conflict by developing models at different levels of detai

Where there are close links between requirements engineers, designers, and programmers, then abstract models may be all that are required.

The arguments in favor of a plan-driven approach are that early planning allows organizational issues

closely taken into account, and that potential problems and dependencies are discovered before the project starts, rather than once the project is under way

Software process models

is a simplified representation of a software process

A deliverable

is a work product that is delivered to the custome

engineering

is all about selecting the most appropriate method for a set of circumstances so a more creative, less formal approach to development may be effective in some circumstances.

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.

,Architectural design,

is concerned with understanding how a system should be organized and designing the overall structure of that system

The definition of a system boundary

is not a value-free judgment.

Project planning

is one of the most important jobs of a software project manager

For some simple systems, software design and implementation

is software engineering, and all other activities are merged with this process.

One of the problems of configuration management

is that different companies talk about the same concepts using different terms.

functional user requirements

define specific facilities to be provided by the system

Aggregation

The UML provides a special type of association between classes called aggregation that means that one object (the whole) is composed of other objects (the parts)

2. As a way of documenting an architecture that has been designed

The aim here is to produce a complete system model that shows the different components in a system, their interfaces, and their connections.

These fundamental notions of process

dependability, requirements, management, and reuse

Market opportunity(fACTOR AFFECT PROJECT PRICING )

development organization may quote a low price because it wishes to move into a new segment of the software market

software development organizations

making sure that people's social, esteem, and self-realization needs are satisfied is most importan

Reuse-oriented approaches rely

on a large base of reusable software components and an integrating framework for the composition of these components.

Once you have drawn up an initial risk management plan,

ou monitor the situation to detect emerging risks.

2. The expected software lifetime If you are developing a long-lifetime system, you should focus on the maintainability of the system

You should not just think about the immediate benefits of reuse but also of the long-term implications

Risk monitoring

You should regularly assess the risk and your plans for risk mitigation and revise these when you learn more about the risk.

class diagrams look like

emantic data models. Semantic data models are used in database design

When expressed as user requirements

functional requirements are usually described in an abstract way that can be understood by system users

Data-driven modeling usefulness

They are particularly useful during the analysis of requirements as they can be used to show end-to-end processing in a system

3. Acceptance testing

This is the final stage in the testing process before the system is accepted for operational use.

This GANTT chart assigns a bar (and therefore resource) to reworking that arises from unsuccessful milestone review

This means that a known level of resources have been scheduled to reworking.

Roles

reflect the responsibilities of the people involved in the process. Examples of roles are project manager

two actors in this use case

the operator who is transferring the data and the patient record system.

the project manager role in risk identification process

the project manager may simply use his or her experience to identify the most probable or critical risks.

Effective risk management makes it easier

to cope with problems and to ensure that these do not lead to unacceptable budget or schedule slippage

2. An interaction perspective

where you model the interactions between a system and its environment or between the components of a system.

5. State diagrams,

which show how the system reacts to internal and external events

There are many different types of application including

. Interactive transaction-based applications These are applications that execute on a remote computer and that are accessed by users from their own PCs or terminals

Interviews may be of two type

1. Closed interviews, where the stakeholder answers a pre-defined set of questions. 2. Open interviews, in which there is no pre-defined agenda. The requirements engineering team explores a range of issues with system stakeholders and hence develop a better understanding of their needs.

four critical factors in people management

1. Consistency 2. Respect 3. Inclusion 4. Honesty

There are two types of technique that can be used to do this:

1. Experience-based techniques The estimate of future effort requirements is based on the manager's experience of past projects and the application domain. Essentially, the manager makes an informed judgment of what the effort requirements are likely to be.

The main arguments for and against MDE are

1. For MDE Model-based engineering allows engineers to think about systems at a high level of abstraction, without concern for the details of their implementation

The effectiveness and efficiency of communications is influenced by,

1. Group size As a group gets bigger, it gets harder for members to communicate effectively

A software prototype can be used in a software development process to help anticipate changes that may be required

1. In the requirements engineering process, a prototype can help with the elicitation and validation of system requirements. 2. In the system design process, a prototype can be used to explore particular software solutions and to support user interface design.

Extreme programming involves a number of practices,

1. Incremental development is supported through small, frequent releases of the system.

plans normally include the following sections:

1. Introduction This briefly describes the objectives of the project and sets out the constraints (e.g., budget, time, etc.) that affect the management of the project.

hree advantages of explicitly designing and documenting software architecture:

1. Stakeholder communication 2. System analysis 3. Large-scale reuse

When you use the UML to develop a design, you will normally develop two kinds of design model:

1. Structural models, 2. Dynamic models,

Most open source licenses are derived from one of three general models:

1. The GNU General Public License (GPL). This is a so-called 'reciprocal' license

During the requirements validation process, different types of checks should be carried out on the requirements in the requirements document

1. Validity checks A user may think that a system is needed to perform certain functions.

Version management systems normally provide a range of features:

1. Version and release identification 2. Storage management 3. Change history recording 4. Independent development 5. Project support

Example of layered

A layered model of a system for sharing copyright documents held in different libraries

Project planning takes place at three stages in a project life cycle.

2. During the project startup phase, when you have to plan who will work on the project, how the project will be broken down into increments, how resources will be allocated across your company

Although each framework includes slightly different functionality, most web application frameworks support the following features:.

2. Dynamic web pages Classes are provided to help you define web page templates and to populate these dynamically with specific data from the system database.

The effectiveness and efficiency of communications is influenced by....

2. Group structure People in informally structured groups communicate more effectively than people in groups with a formal, hierarchical structure

plans normally include the following sections:.

2. Project organization This describes the way in which the development team is organized, the people involved, and their roles in the team.

There are four fundamental activities that are common to all software processes

2. Software development, where the software is designed and programmed.

Project activities are the basic planning element. Each activity has.

3. A deadline by which the activity should be completed. 4. A defined endpoint. This represents the tangible result of completing the activity. This could be a document, the holding of a review meeting, the successful execution of all tests, et

Incremental delivery has a number of advantages:...

4. As the highest-priority services are delivered first and increments then integrated, the most important system services receive the most testing.

Business modelling

Activity diagram Class diagram Use case diagram Data flow diagram

Architectural design decisions

Architectural design is a creative process where you design a system organization that will satisfy the functional and non-functional requirements of a system

You create structural models of a system when you are discussing and designing the system architecture.

Architectural design is a particularly important topic in software engineering and UML component, package, and deployment diagrams may all be used when presenting architectural model

4. Honesty

As a manager, you should always be honest about what is going well and what is going badly in the team

Software Requirements Specifications

escriptions of 'Software Requirements Specification' (SRS) documents can be found in Sommerville, Karl Viegers (see: www.processimpact.com/goodies.shtml) (the RUP-based origin of the outline referenced in Pressman) and, of course, the UP itself.

ricing to win means that a company has some idea of the price that the customer

expects to pay and makes a bid for the contract based on the customer's expected price. This may seem unethical and unbusinesslike, but it does have advantages for both the customer and the system provider

Versions implement proposals for change, corrections of faults, and adaptations

for different hardware and operating systems

The advantage of relying on other systems

for patient information is that you avoid duplicating data

Following this analysis, a separate group should then decide if it is costeffective

from a business perspective to make the change to the software

an object class can be thought of as a

general definition of one kind of system object

Software design and implementation.

involves processes of software design and programming but, if an incremental approach to development is used, may also involve refinement of the software specification

The most important aspect of a system model

is that it leaves out detail

The principal argument against plan-driven development

is that many early decisions have to be revised because of changes to the environment in which the software is to be developed and used

When showing the associations between classes

it is convenient to represent these classes in the simplest possible way.

In agile processes

it is generally accepted that an early stage of the development process should be concerned with establishing an overall system architecture

Reuse-oriented software engineering....

leads to faster delivery of the software

This means that common information will be

maintained in one place only.

4. Tool support Requirements

management involves the processing of large amounts of information about the requirements.

Social and organizational concerns may mean that the position of a system boundary

may be determined by non-technical factors. For example, a system boundary may be deliberately positioned so that the analysis process can all be carried out on one site

Motivation

means organizing the work and the working environment to encourage people to work as effectively as possible

good software engineers are

not necessarily good people managers

n practice, you have to use several knowledge sources to discover object classes.

Object classes, attributes, and operations that are initially identified from the informal system description can be a starting point for the design

The WBS does not in itself carry any timing or inter-dependency information

One good way of informing the design of the GANTT chart is to design a Product Flow Diagram (PFD) linking the outputs of each task

Open source development

Open source development is an approach to software development in which the source code of a software system is published and volunteers are invited to participate in the development process

Reuse-oriented software engineering has the obvious advantage

of reducing the amount of software to be developed and so reducing cost and risks

Codelines normally apply to components

of systems so that there are different versions of each component. A baseline is a definition of a specific system

Real software processes are interleaved sequences

of technical, collaborative, and managerial activities with the overall goal of specifying, designing, implementing, and testing a software system

Your judgment must depend on a combination

of the probability of the risk arising and the effects of that risk

The primary aims of analysis are to ensure the accuracy and completeness of the understanding of the customer's needs, which may influence the scope of the projec

Prioritisation of the specific requirements allows functionality to be allocated to the first or subsequent iterations of the project.

Deltas are usually stored as lists of changed lines and, by applying these automatically,

one version of a component can be created from another

You have to coordinate these parallel tasks

organize the work so that the workforce is used optimally and you don't introduce unnecessary dependencies between the tasks

Relationships between internal and external software.

Reliability related to Cyclomatic Complexity,Program Size in Lines of Code,Number of Error Messages

Relationships between internal and external software..

Reusability related to Depth of Inheritance Tree,Program Size in Lines of Code

Software reuse

Reuse-based software engineering is a software engineering strategy where the development process is geared to reusing existing software

Increased dependability

Reused software, which has been tried and tested in working systems, should be more dependable than new software. Its design and implementation faults should have been found and fixed

An outline of the process of risk management

Risk identification risk analysis risk planning risk monitoring

Risk identification,

Risk identification is the first stage of the risk management process

Risk management

Risk management is one of the most important jobs for a project manager

Business risks

Risks that affect the organization developing or procuring the software.

Project risks

Risks that affect the project schedule or resources

Product risks

Risks that affect the quality or performance of the software being developed

5. Requirements risks

Risks that derive from changes to the customer requirements and the process of managing the requirements change

1. Technology risks

Risks that derive from the software or hardware technologies that are used to develop the system

4. Tools risks

Risks that derive from the software tools and other support software used to develop the system.

Once some decisions on the boundaries of the system have been made

part of the analysis activity is the definition of that context and the dependencies that a system has on its environment.

Non-functional requirements, such as

performance, security, or availability, usually specify or constrain characteristics of the system as a whole

Each process model

represents a process from a particular perspective, and thus provides only partial information about that process.

In software products, the customer is not directly involved in decisions about system evolution,

so the relevance of the change to the customer's business is not an issue.

Use case diagrams give a fairly simple overview of an interaction

so you have to provide more detail to understand what is involved

For mass- market software, it is usually possible to identify two types of release namely major releases,

which deliver significant new functionality, and minor releases, which repair bugs and fix customer problems that have been reported

3. Sequence diagrams

which show interactions between actors and the system and between system components.

Patterns have made a huge impact on object-oriented software design.

As well as being tested solutions to common problems, they have become a vocabulary for talking about a design.

Preparing and distributing a system release is an expensive process, particularly for mass-market software products

As well as the technical work involved in creating a release distribution, advertising and publicity material have to be prepared and marketing strategies put in place to convince customers to buy the new release

The objects and actors involved are listed along the top of the diagram

with a dotted line drawn vertically from these. Interactions between objects are indicated by annotated arrows.

Some of these tasks are carried out in parallel

with different people working on different components of the system.

Accelerated development

Bringing a system to market as early as possible is often more important than overall development costs. Reusing software can speed up system production because both development and validation time may be reduced.

Planning at the proposal stage is inevitably speculative, as you do not usually have a complete set of requirements for the software to be developed

you have to respond to a call for proposals based on a high-level description of the software functionality that is required.

A subsystem model is a useful static model as it shows how a design is organized into logically related groups of objects

I have already shown this type of model in Figure 7.4 to show the subsystems in the weather mapping system

Not-invented-here syndrome

Some software engineers prefer to rewrite components because they believe they can improve on them.

example of risk

Staff turnover Project Experienced staff will leave the project before it is finished.

Some large companies provide a range of reusable components for their customers.

Standards, such as web service standards, have made it easier to develop general services and reuse them across a range of applications.

The UML supports event-based modeling using state diagrams

State diagrams show system states and events that cause transitions from one state to another.

Incremental development.

Incremental development is based on the idea of developing an initial implementation, exposing this to user comment and evolving it through several versions until an adequate system has been developed

2. To identify the system components whose quality is substandard

Measurements can identify individual components with characteristics that deviate from the norm. For example, you can measure components to discover those with the highest complexity.

COTS product reuse

Systems are developed by configuring and integrating existing application systems.

Component-based development

Systems are developed by integrating components (collections of objects) that conform to component-model standards.

Service-oriented systems

Systems are developed by linking shared services, which may be externally provided

example of risk,

Technology change >Business>>> The underlying technology on which the system is built is superseded by new technology.

Plan-driven development and agile development

The essence of a plan-driven approach to a project is that the customer and developer commit to a detailed project plan (specifying and scheduling release of a series of products) before entering the construction phase

Risk Management Process

The method of making, implementing, and monitoring decisions that minimize the adverse effects of risk on an organization.

Reuse

The only significant reuse or software was the reuse of functions and objects in programming language libraries.

The availability of reusable software has increased dramatically

The open source movement has meant that there is a huge reusable code base available at low cost

The availability of reusable software has increased dramatically.

The open source movement has meant that there is a huge reusable code base available at low cost.

Objects include both data and operations to manipulate that data

They may therefore be understood and modified as stand-alone entities.

Each of these use cases should be described in structured natural language

This helps designers identify objects in the system and gives them an understanding of what the system is intended to do

One of the most effective ways of promoting cohesion is to be inclusive.

This means that you should treat group members as responsible and trustworthy, and make information freely available.

Weighted methods per class (WMC)

This is the number of methods in each class, weighted by the complexity of each method. Therefore, a simple method may have a complexity of 1, and a large and complex method a much higher value

Requirements elicitation and analysis

This is the process of deriving the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis, and so on.

the well-known Model-View-Controller pattern

This pattern is the basis of interaction management in many web-based systems

Putting together a group that has the right balance of technical skills, experience, and personalities is a critical management task.

successful groups are more than simply a collection of individuals with the right balance of skills.

Finally, the cost of making the change is estimated,

taking into account the costs of changing related components

stakeholders should also be concerned with non-technical issue

that affect a project's feasibility. According to Figure 1.6 in the previous chapter, the purpose of the inception phase of a UP project is to produce a set of artefacts that allow the two prime project stakeholder groups, the customer(s) and their supplier(s) to determine the feasibility of a new project (or new iteration of an existing project).

Deliverables are work products

that are delivered to the customer (e.g., a requirements document for the system)

The baseline therefore specifies the component versions

that are included in the system plus a specification of the libraries used, configuration files, etc

Many business systems are data processing systems

that are primarily driven by data.

A use case can be taken as a simple scenario

that describes what a user expects from a system.

Risk identification

You should identify possible project, product, and business risks.

It is important that software project managers understand the technical issues

that influence the work of software development

Each use case represents a discrete task

that involves external interaction with a system.

Enterprise Resource Planning (ERP) systems, such as the SAP system, are the best examples of this approach

a large and complex system is adapted for a company by incorporating information about business rules and processes, reports required, and so on

During the architectural design process, system architects have to make a number of structural decisions

that profoundly affect the system and its development process.

If more defects have been found in the same amount of time,

after the tool has been introduced, then you may decide that it provides useful support for the software validation process.

Requirements documents are essential when an outside contractor is developing the software system

agile development methods argue that requirements change so rapidly that a requirements document is out of date as soon as it is written,

As well as subsystem models, you may also design detailed object models, showing

all of the objects in the systems and their associations (inheritance, generalization, aggregation, etc.)

Standardization

also an important first step in introducing new software engineering methods and techniques and good software engineering practice

Architectural design,

architectural design is the first stage in the software design process

A software product line is a set of applications with a common

architecture and shared components, with each application specialized to reflect different requirements

the problems that arise during the requirements engineering process

are a result of failing to make a clear separation between these different levels of description

In a generalization, the attributes and operations associated with higher-level classes

are also associated with the lower-level classes

Customers may use a webpage or e-mail to report bugs. A bug management team then checks that

the bug reports are valid and translates them into formal system change requests.

when the communications subsystem receives a control command, such as shutdown,

the command is picked up by each of the other subsystems, which then shut themselves down in the correct way

Change requests for these products come from the customer support team,

the company marketing team and the developers themselves.

In traditional development processes

the complete schedule is initially developed and then modified as the project progresses

Static metrics help assess

the complexity, understandability, and maintainability of a software system or system components.

Data-flow models are useful because

tracking and documenting how the data associated with a particular process moves through the system helps analysts and designers understand what is going on

To support independent development without interference, version management systems

use the concept of a public repository and a private workspace.

Once the risks have been analyzed and ranked

you should assess which of these risks are most significant

5. Analyze anomalous components When you have identified components that have anomalous values for your chosen metrics,

you should examine them to decide whether or not these anomalous metric values mean that the quality of the component is compromised.

Engineering discipline

Engineers make things work

3. System building This is the process of assembling program components

data, and libraries, and then compiling and linking these to create an executable system

These small requests should be passed to the development team without

detailed analysis, as such an analysis could cost more than implementing the change.

Repository architecture....

Example Figure 6.9 is an example of an IDE where the components use a repository of system design information. Each software tool generates information which is then available for use by other tools.

When planning a project, you should also define milestone

each stage in the project where a progress assessment can be made

Model-driven engineering

Model-driven engineering (MDE) is an approach to software development here models rather than programs are the principal outputs of the development process

Teamwork

Most professional software is developed by project teams that range in size from two to several hundred people

Selecting group members

A manager or team leader's job is to create a cohesive group and organize their group so that they can work together effectively

client-server Example

film and video/DVD library organized as a client-server system

An agile development team does not expect to be constrained by a detailed plan

(although high-level planning may be required by the principle of 'serial in the large, iterative in the small') since the 'constant' is not the product but the timing of the iteration cycle. Functionality is dynamically prioritised and allocated to a planned release.

Because it is a creative process, the activities within the process depend on the type of system being developed

, the background and experience of the system architect, and the specific requirements for the system

For most projects,

, the biggest cost is the effort cost

The UML has a rich syntax for sequence diagrams

, which allows many different kinds of interaction to be modeled

The process activities are:

1. Requirements discovery 2. Requirements classification and organization 3. Requirements prioritization and negotiation 4. Requirements specification

A software metric is a characteristic of a software system, system documentation, or development process that can be objectively measured

. Examples of metrics include the size of a product in lines of code; the Fog index (Gunning, 1962), which is a measure of the readability of a passage of written text

5. Project support A version management system may support the development of several projects, which share components

. In project support systems, such asCVS (Vesperman, 2003), it is 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

The benefits of creating a cohesive group are:

1. The group can establish its own quality standards 2. Individuals learn from and support each other 3. Knowledge is shared Continuity can be maintained if a group member leaves 4. Refactoring and continual improvement is encouraged

Significant factors that should be taken into account in deciding whether or not a change should be approved are:...

4. The costs of making the change If making the change affects many system components (hence increasing the chances of introducing new bugs) and/or takes a lot of time to implement, then the change may be rejected, given the elevated costs involved.

The effectiveness and efficiency of communications is influenced by..

4. The physical work environment The organization of the workplace is a major factor in facilitating or inhibiting communications

fundamental questions about the system:.

4. What will be the fundamental approach used to structure the system? 5. How will the structural components in the system be decomposed into subcomponents? 6. What strategy will be used to control the operation of the components in the system?

Contractual terms

A customer may be willing to allow the developer to retain ownership of the source code and reuse it in other projects. The price charged may then be less than if the software source code is handed over to the customer.

3. Large-scale reuse

A model of a system architecture is a compact, manageable description of how a system is organized and how the components interoperate.

Prototyping

A prototype is an initial version of a software system that is used to demonstrate concepts, try out design options

In a UML activity diagram, arrows represent the flow of work from one activity to another.

A solid bar is used to indicate activity coordination. When the flow from more than one activity leads to a solid bar then all of these activities must be complete before progress is possible

Repository architecture..

Advantages Components can be independent—they do not need to know of the existence of other components. Changes made by one component can be propagated to all components. All data can be managed consistently (e.g., backups done at the same time) as it is all in one place.

Advantages of layered architecture

Advantages of layered architecture

Advantages

Allows the data to change independently of its representation and vice versa. Supports presentation of the same data in different ways with changes made in one representation shown in all of them.

Open source licensing

Although a fundamental principle of open-source development is that source code should be freely available

Artefacts

An output from the project, or 'product', is known in the UP as an 'artefact'. There are many definitions of artefact in different contexts, but the one we will focus on is that it is something that allows another, higher level, product to be constructed.

he design process for information system

Architectural design Interface design Component design Database design

Disadvantages

Can involve additional code and code complexity when the data model and interactions are simple

Change management

Change is a fact of life for large software systems

Coping with change

Change is inevitable in all large software projects

Architectural design

Class diagram Sequence diagram Component diagram Activity or sequence diagram State diagram Deployment diagram

Class diagrams

Class diagrams are used when developing an object-oriented system model to show the classes in a system and the associations between these classes

What are the key challenges facing software engineering?

Coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.

Data-driven modeling

Data-driven models show the sequence of actions involved in processing input data and generating an associated output

there are software engineering fundamentals that apply to all types of software system

Dependability and performance are important for all types of systems. Software should behave as expected, without failures and should be available for use when it is required

Repository architecture,

Description All data in a system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository

Design and implementation

Design and implementation

Design models

Design or system models, as I discussed in Chapter 5, show the objects or object classes in a system.

2. The build server, which is used to build definitive, executable versions of the system. This interacts closely with the version management system

Developers check in code to the version management system before it is built. The system build may rely on external libraries that are not included in the version management system.

Repository architecture.

Disadvantages The repository is a single point of failure so problems in the repository affect the whole system. May be inefficiencies in organizing all communication through the repository. Distributing the repository across several computers may be difficult

In a wide range of domains, it is now possible to buy off-the-shelf systems (COTS) that can be adapted and tailored to the users' requirements.

For example, if you want to implement a medical records system, you can buy a package that is already used in hospitals

Most software development is a team activity, so situations often arise where different team members work on the same component at the same time

For example, let's say Alice is making some changes to a system, which involves changing components A, B, and C. At the same time, Bob is working on changes and these require making changes to components X, Y, and C

Interviewing

Formal or informal interviews with system stakeholders are part of most requirements engineering processes

functional and non functonal requirement

Functional requirements describe the way the system behaves. Non-functional requirements describe the context within which that system behaviour is delivered.

Generalization

Generalization is an everyday technique that we use to manage complexity

Design patterns...

Generic abstractions that occur across applications are represented as design patterns showing abstract and concrete objects and interactions.

Disadvantages of layered

In practice, providing a clean separation between layers is often difficult and a high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it. Performance can be a problem because of multiple levels of interpretation of a service request as it is processed at each layer.

. Their configuration management systems and processes have to be designed to provide information about which customers have which releases of the system and the relationship between releases and system versions

In the event of a problem, it may be necessary to reproduce exactly the software that has been delivered to a particular customer

you can see that different baselines use different versions of the components from each codeline

In the diagram, I have shaded the boxes representing components in the baseline definition to indicate that these are actually references to components in a codeline.

software failures are a consequence of two factors:

Increasing demands Low expectations

Principles of Agile Methods.

Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment.

Incremental delivery.

Incremental delivery (Figure 2.10) is an approach to software development where some of the developed increments are delivered to the customer and deployed for use in an operational environment.

Legacy system wrapping

Legacy systems (see Chapter 9) are 'wrapped' by defining a set of interfaces and providing access to these legacy systems through these interfaces.

Length of code,

Length of code has been shown to be one of the most reliable metrics for predicting error-proneness in components

Principles of Agile Methods....;

Maintain simplicity Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.

Relationships between internal and external software

Maintainability (external )related to Depth of Inheritance Tree ,Cyclomatic Complexity,Program Size in Lines of Code,Length of User Manual

2. System analysis

Making the system architecture explicit at an early stage in the system development requires some analysis.

example of risk .

Management change >>Project >>There will be a change of organizational management with different priorities

2. There are no standards for software metrics or standardized processes for measurement and analysis

Many companies are reluctant to introduce measurement programs until such standards and supporting tools are available.

Risk types and examples

Organizational financial problems force reductions in the project budget (7). Low Catastrophic

Product metrics

Product metrics are predictor metrics that are used to measure internal attributes of a software system

Description of MVC

Separates presentation and interaction from the system data. The system is structured into three logical components that interact with each other. The Model component manages the system data and associated operations on that data

Finding, understanding, and adapting reusable components

Software components have to be discovered in a library, understood and, sometimes, adapted to work in a new environment. Engineers must be reasonably confident of finding a component in the library before they include a component search as part of their normal development process

Sequence Diagram

Shows the timing of interactions between objects as they occur

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.

Software measurement and metrics

Software measurement is concerned with deriving a numeric value or profile for an attribute of a software component, system, or process.

What are the fundamental software engineering activities?

Software specification, software development, software validation, and software evolution.

Functional and non-functional requirements

Software system requirements are often classified as functional requirements or nonfunctional requirements

There are many different types of application including

Stand-alone applications These are application systems that run on a local computer, such as a PC

Architectural patterns,,

Standard software architectures that support common types of application systems are used as the basis of applications

1. Development testing

The components making up the system are tested by the people developing the system

Incremental development has three important benefits, compared to the waterfall model:

The cost of accommodating changing customer requirements is reduced. It is easier to get customer feedback on the development work that has been done More rapid delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included

System context and interactions

The first stage in any software design process is to develop an understanding of the relationships between the software that is being designed and its external environment.

Software evolution

The flexibility of software systems is one of the main reasons why more and more software is being incorporated in large, complex systems

Disadvantages of pipe

The format for data transfer has to be agreed upon between communicating transformations. Each transformation must parse its input and unparse its output to the agreed form.

The UML has a specific type of association to denote generalization

The generalization is shown as an arrowhead pointing up

goal of milestones in software engineering

The goal is to minimise the wasted work that results from re-iteration of previous phases.

Architectural patterns

The idea of patterns as a way of presenting, sharing, and reusing knowledge about software systems is now widely used.

Software design and implementation

The implementation stage of software development is the process of converting a system specification into an executable system

This spiral model accommodates approaches to development where the requirements are developed to different levels of detail.

The number of iterations around the spiral can vary so the spiral can be exited after some or all of the user requirements have been elicited. Agile development can be used instead of prototyping so that the requirements and the system implementation are developed together

Requirements specification..

The requirements are documented and input into the next round of the spiral. Formal or informal requirements documents may be produced,

They are passed directly to the system developer.

The system developer either accepts them or makes a case for why they are not required.

3. Acceptance testing.

The system is tested with data supplied by the system customer rather than with simulated test data.

System requirements are more detailed descriptions of the software system's functions, services, and operational constraints

The system requirements document (sometimes called a functional specification) should define exactly what is to be implemented. It may be part of the contract between the system buyer and the software developers.

a software process

The systematic approach that is used in software engineering is sometimes called

Frameworks are an effective approach to reuse, but are expensive to introduce into software development processes.

They are inherently complex and it can take several months to learn to use them. It can be difficult and expensive to evaluate available frameworks to choose the most appropriate one

Length of identifiers

This is a measure of the average length of identifiers (names for variables, classes, methods, etc.) in a program.

The impact of the change on the rest of the system must be checked

To do this, you have to identify all of the components affected by the change

Version management

Version management (VM) is the process of keeping track of different versions of software components or configuration items and the systems in which these components are used.

Web application frameworks (WAFs) are a more recent and very important typemof framework

WAFs that support the construction of dynamic websites are now widely available. The architecture of a WAF is usually based on the Model-ViewController (MVC) composite pattern

You use knowledge of the application domain to identify other objects, attributes, and services

We know that weather stations are often located in remote places and include various instruments that sometimes go wrong

An MVC framework supports the presentation of data in different ways and allows interaction with each of these presentations.

When the data is modified through one of the presentations, the system model is changed and the controllers associated with each view update their presentation

Specific design decisions may be made as the system is implemented, with problems resolved through informal discussions.

When the links between system specifiers, designers, and programmers are indirect (e.g., where a system is being designed in one part of an organization but implemented elsewhere), then more detailed models are likely to be needed.

pipe and filter used

When used Commonly used in data processing applications (both batch- and transaction-based) where inputs are processed in separate stages to generate related outputs

sequence diagram reading

You read the sequence of interactions from top to bottom

The process then enters a loop

You draw up an estimated schedule for the project and the activities defined in the schedule are initiated or given permission to continue

Risk analysis

You should assess the likelihood and consequences of these risks.

The waterfall model is an example of

a plan-driven process

h plan-based and agile processes need

an initial project schedule, although the level of detail may be less in an agile project plan.

You have to anticipate risks;

understand the impact of these risks on the project, the product, and the business; and take steps to avoid these risks

a software engineer is given a program design for coding and notices

what appears to be possible improvements that could be made to the design

Exchanging profit for opportunity such as:

• entry into new market or working with new client • retention of rights to use code • gaining experience, skills or specialist staff.

It decides whether the change in question is economically justified and prioritizes accepted changes for implementation

Accepted changes are passed back to the development group; rejected change requests are closed and no further action is taken

functional system requirement example

A user shall be able to search the appointments lists for all clinics

three related categories of risk:

Project risks Product risks business risks

what are the output of architectural design

The output of the architectural design process is an architectural model that describes how the system is organized as a set of communicating components

client-server Advantages

The principal advantage of this model is that servers can be distributed across a network. General functionality (e.g., a printing service) can be available to all clients and does not need to be implemented by all service

From a management perspective, the incremental approach has two problems:

The process is not visible System structure tends to degrade as new increments are added.

Use cases are documented using a high-level use case diagram

The set of use cases represents all of the possible interactions that will be described in the system requirements

Behavioral models

Behavioral models are models of the dynamic behavior of the system as it is executing.

Fan-in/Fan-out

Fan-in is a measure of the number of functions or methods that call another function or method (say X). Fan-out is the number of functions that are called by function X

These types of metric are related to different quality attributes

Dynamic metrics help to assess the efficiency and reliability of a program

the bar chart or GANTT chart

Each bar (representing the expected start and finish dates) has an implied or explicit relationship with others - its predecessors and successors. Overlap of parts of two bars means they are concurrent. Most project planning software (such as Microsoft Project) maps 'work to task' as well as 'task to time'

what requirement document include

It should include both the user requirements for a system and a detailed specification of the system requirements

Modeling user interaction is important as it helps to identify user requirements.

Modeling system to system interaction highlights the communication problems that may arise

You need to specify interfaces so that objects and subsystems can be designed in parallel.

Once an interface has been specified, the developers of other objects may assume that interface will be implemented

An example of a product risk

is the failure of a purchased component to perform as expected. This may affect the overall performance of the system so that it is slower than expected.

In modeling systems, it is often useful to examine the classes in a system to see if there is

scope for generalization

Risk identification may be a team process

where a team get together to brainstorm possible risks.

1. To satisfy social needs,

you need to give people time to meet their co-workers and provide places for them to meet

A software process

is a sequence of activities that leads to the production of a software product

Project activities are the basic planning element. Each activity has

1. A duration in calendar days or months. 2. An effort estimate, which reflects the number of person-days or person-months to complete the work.

two questions that should be considered when considering agile methods and maintenance

2. Can agile methods be used effectively for evolving a system in response to customer change requests?

Software engineering ethics.

2. Competence You should not misrepresent your level of competence. You should not knowingly accept work that is outside your competence.

During the requirements validation process, different types of checks should be carried out on the requirements in the requirements document.

2. Consistency checks Requirements in the document should not conflict.

Incremental delivery has a number of advantages:.

2. Customers do not have to wait until the entire system is delivered before they can gain value from it

The waterfall model..

software life cycle

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.

2. Incremental delivery,

where system increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance.

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

As your understanding of the design develops, you refine these ideas about the system objects

The use case description helps to identify objects and operations in the system

here are several reasons why change is inevitable:.

2. The people who pay for a system and the users of that system are rarely the same people. System customers impose requirements because of organizational and budgetary constraints

rapid software development, they share some fundamental characteristics:.

2. The system is developed in a series of versions. End-users and other system stakeholders are involved in specifying and evaluating each version.

Effective interviewers have two characteristics:.

2. They prompt the interviewee to get discussions going using a springboard question, a requirements proposal, or by working together on a prototype system

To minimize misunderstandings when writing natural language requirements, I recommend that you follow some simple guidelines.

2. Use language consistently to distinguish between mandatory and desirable requirements.

The components at each level in the product line system are as follows:.

4. At the database level, as well as the usual transaction management support, there are separate databases of vehicles, equipment, and maps.

Software engineering ethics...

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, say) to extremely serious (dissemination of viruses or other malware).

More and more systems are now being built with a generic product as a base, which is then adapted to suit the requirements of a customer

Enterprise Resource Planning (ERP) systems, such as the SAP system, are the best examples of this approach

extreme programming requirement collection

Extreme Programming (Beck, 1999) collect user requirements incrementally and write these on cards as user stories.

Cost estimate uncertainty

If an organization is unsure of its cost estimate, it may increase its price by a contingency over and above its normal profit.

Requirements volatilitY

If the requirements are likely to change, an organization may lower its price to win a contract. After the contract is awarded, high prices can be charged for changes to the requirements.

Group communications

It is absolutely essential that group members communicate effectively and efficiently with each other and with other project stakeholders

risk identification concern with

It is concerned with identifying the risks that could pose a major threat to the software engineering process, the software being developed, or the development organization

Incremental delivery has a number of advantages:

1. Customers can use the early increments as prototypes and gain experience that informs their requirements for later system increments.

Frameworks are implemented as a collection of concrete and abstract object classes in an object-oriented programming language

Therefore, frameworks are language-specific. There are frameworks available in all of the commonly used object-oriented programming languages (e.g., Java, C#, C++, as well as dynamic languages such as Ruby and Python).

Change management is usually supported by specialized software tools.

These may be relatively simple web-based tools such as Bugzilla, which is used to report problems with many open source systems

External requirements This broad heading covers all requirements that are derived from factors external to the system and its development process.

These may include regulatory requirements that set out what must be done for the system to be approved for use by a regulator, such as a central bank;

Batch processing systems

These are business systems that are designed to process data in large batches.

3. Enterprise application frameworks

These are concerned with specific application domains such as telecommunications or financial systems

Embedded control systems

These are software control systems that control and manage hardware devices

Generic products

These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able tobuy them

Functional requirements

These are statements of services the system should provide, how the system should react to particular inputs, and how the systemshould behave in particular situations

Systems for modeling and simulation

These are systems that are developed by scientists and engineers to model physical processes or situations,

Entertainment systems

These are systems that are primarily for personal use and which are intended to entertain the user

2. Middleware integration frameworks

These consist of a set of standards and associated object classes that support component communication and information exchange. Examples of this type of framework include Microsoft's

1. System infrastructure frameworks

These frameworks support the development of system infrastructures such as communications, user interfaces, and compilers

1-Version and release identification Managed versions are assigned identifiers when they are submitted to the system

These identifiers are usually based on the name of the configuration item (e.g., ButtonManager), followed by one or more numbers

functional requirement depend on

These requirements depend on the type of software being developed, the expected users of the software, and the general approach taken by the organization when writing requirements

System requirements are expanded versions of the user requirements that are used by software engineers as the starting point for the system design

They add detail and explain how the user requirements should be provided by the system.

More and more companies see their software as a valuable asset

They are promoting reuse to increase their return on software investments

Businesses now operate in a global, rapidly changing environment

They have to respond to new opportunities and markets, changing economic conditions, and the emergence of competing products and services

Non-functional requirements These are constraints on the services or functions offered by the system.

They include timing constraints, constraints on the development process, and constraints imposed by standards. Non-functional requirements often apply to the system as a whole, rather than individual system features or services.

there are software engineering fundamentals that apply to all types of software system:

They should be developed using a managed and understood development process

no motivation

They will work slowly, be more likely to make mistakes, and will not contribute to the broader goals of the team or the organization

he bar chart or GANTT chart

This consists of rows reflecting the hierarchical organisation of tasks in the 'Work Breakdown Structure' (WBS) with time as the horizontal axis

Requirements validation

This activity checks the requirements for realism, consistency, and completeness

generalization hierarchy

This allows us to infer that different members of these classes have some common characteristics (e.g., squirrels and rats are rodents)

Incremental development

This approach interleaves the activities of specification, development, and validation. The system is developed as a series of versions (increments), with each version adding functionality to the previous version.

Reuse-oriented software engineering

This approach is based on the existence of a significant number of reusable components. The system development process focuses on integrating these components into a system rather than developing them from scratch.

5. Introducing measurement adds additional overhead to processes. This contradicts the aims of agile methods

which recommend the elimination of process activities that are not directly related to program development. Companies that have adopted agile methods are therefore not likely to adopt a metrics program.

1. Activity diagrams

which show the activities involved in a process or in data processing.

2. Use case diagrams,

which show the interactions between a system and its environment.

4. Class diagrams

which show the object classes in the system and the associations between these classes.

3. A development view,

which shows how the software is decomposed for development, that is, it shows the breakdown of the software into components that are implemented by a single developer or development team.

2. A process view

which shows how, at run-time, the system is composed of interacting processes. This view is useful for making judgments about nonfunctional system characteristics such as performance and availability

1. A logical view

which shows the key abstractions in the system as objects or object classes. It should be possible to relate the system requirements to entities in this logical view.

4. A physical view,

which shows the system hardware and how software components are distributed across the processors in the system

Milestones are points in the schedule against

which you can assess progress, for example, the handover of the system for testing.

1. Task-oriented people

who are motivated by the work they do. In software engineering, these are people who are motivated by the intellectual challenge of software development.

2. Self-oriented people

who are principally motivated by personal success and recognition. They are interested in software development as a means of achieving their own goals.

it may be called something like a 'product development group',

who is responsible for making decisions about how a software system should evolve

project plan is created that records the work to be done,

who will do it, the development schedule, and the work products

You estimate the calendar time needed to complete each task, the effort required,

who will work on the tasks that have been identified.

Class diagrams in the UML can be expressed at different levels of detail

When you are developing a model, the first stage is usually to look at the world, identify the essential objects, and represent these as classes

User requirements are statements

in a natural language plus diagrams, of what services the system is expected to provide to system users and the constraints under which it must operate.

Change Management Process

includes change request forms, change request log, analysis of changes, CCB, communication with stakeholders, and updating the affected project planning documents.

If a project is technically advanced

initial estimates will almost certainly be optimistic even when you try to consider all eventualitie

This group should review and approve all change requests, unless the changes simply

involve correcting minor errors on screen displays, webpages, or documents.

Scheduling in plan-driven projects

involves breaking down the total work involved in a project into separate tasks and estimating the time required to complete each task

A software process.

is a set of related activities that leads to the production of a software product

Reuse-based software engineering

is a software engineering strategy where the development process is geared to reusing existing software.

A common problem with non-functional requirements

is that users or customers often propose these requirements as general goals, such as ease of use, the ability of the system to recover from failure, or rapid user response

An example of a project risk

is the loss of an experienced designer. Finding a replacement designer with appropriate skills and experience may take a long time and, consequently, the software design will take longer to comp

Project Scheduling.

is the process of deciding how the work in a project will be organized as separate tasks, and when and how these tasks will be executed

A special kind of milestone

is the production of a project deliverable

The cost of fixing a requirements problem by making a system change

is usually much greater than repairing design or coding errors

Software engineers often have strong technical skills

lack the softer skills that enable them tomotivate and lead a project development team

Software metrics

may be either control metrics or predictor metrics

The system developers themselves may

may have some good ideas about new features that can be added to the system

If you use the identifier, this means that the most recent version

of the component should be used in the baseline

Risk management is particularly important for software projects because

of the inherent uncertainties that most projects face

identify which system components implement specific functional requirements

often more difficult to relate components to non-functional requirements.

At the beginning of a planning process,

ou should assess the constraints affecting the project.

This initial schedule is used to plan how people

will be allocated to projects and to check the progress of the project against its contractual commitments

he software is not developed as a single unit but as a series of increments,

with each increment including new system functionality. Although there are many approaches to rapid software development, they share some fundamental characteristics:

2. Security If security is a critical requirement, a layered structure for the architecture should be used,

with the most critical assets protected in the innermost layers, with a high level of security validation applied to these layers.

To make a judgment about these attributes,

you have to measure some internal attributes of the software (such as its size, complexity, etc.) and assume that these are related to the quality characteristics that you are concerned with.

3. The background, skills, and experience of the development team All reuse technologies are fairly complex

you need quite a lot of time to understand and use them effectively. Therefore, if the development team has skills in a particular area, this is probably where you should focus.

When calculating a price,

you should take broader organizational, economic, political, and business considerations into account,

When you model the interactions of a system with its environment

you should use an abstract approach that does not include too much detail.

When you start designing a system, it can be difficult to know, in advance, if you will need a particular pattern

ystem, it can be difficult to know, in advance, if you will need a particular pattern. Therefore, using patterns in a design process often involves developing a design, experiencing a problem, and then recognizing that a pattern can be used

Software specification

requirements engineering is the process of understanding and defining what services are required from the system and identifying the constraints on the system's operation and development

The outcome of a review may be a decision to cancel a project.

result of technical or managerial failings but, more often, is a consequence of external changes that affect the project.

When these design decisions conflict with your particular requirements,

reusing the component is either impossible or introduces inefficiencies into your system.

The most common expression of the network

s the bar chart or GANTT chart

Maslow (1954) suggests that people are motivated by

satisfying their needs. These needs are arranged in a series of levels,

Use case modeling..

se case modeling is widely used to support requirements elicitation.

he layered architecture pattern is another way of achieving

separation and independence

The maximum amount of time for any task

should be around 8 to 10 weeks. If it takes longer than this, the task should be subdivided for project planning and scheduling.

project manager, you should be aware of the potential problems of people management

should try to develop people management skills.

There are differing views about whether or not software architects should use the UML for architectural description

showed that, when the UML was used, it was mostly applied in a loose and informal way. The authors of that paper argued that this was a bad thing

requierment

simply a high-level, abstract statement of a service that a system should provide or a constraint on a system

The lower levels of this hierarchy represent fundamental needs for food,

sleep, and so on, and the need to feel secure in an environment

The pattern is a description of the problem and the essence of its solution

so that the solution may be reused indifferent settings. The pattern is not a detailed specification

you have limited information to make such an estimate

so you have to make the best possible estimate and then add significant contingency (extra time and effort) in case your initial estimate is optimistic

software engineering not same as program

software engineering, software is not just the programs themselves but also all associated documentation and configuration data that is required to make these programs operate correctly

People management, in my view

something that has to be based on experience, rather than learned from a book

Configuration management tools are used to keep track of change proposals

store versions of system components, build systems from these components, and track the releases of system versions to customers

software characteristics that can be easily measured,

such as size and cyclomatic complexity, do not have a clear and consistent relationship with quality attributes such as understandability and maintainability.

2. Static metrics, which are collected by measurements made of representations of the system

such as the design, program, or documentation. Examples of static metrics are the code size and the average length of identifiers used.

They are affected by subjective factors

such as user experience and education, and they cannot therefore be measured objectively.

2. Version management 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.

End-users and customers need a high-level statement of the requirements

system developers need a more detailed system specification.

In a plan-driven approach

system increments are identified in advance; if an agile approach is adopted, the early increments are identified but the development of later increments depends on progress and customer priorities.

A consequence of the independent development of the same componen

t is that codelines may branch. Rather than a linear sequence of versions that reflect changes to the component over time, there may be several independent sequences,

The waterfall model.

takes the fundamental process activities of specification, development, validation, and evolution and represents them as separate process phases such as requirements specification, software design, implementation, testing, and so on

When a plan-driven software process is used (e.g., for critical systems development),

testing is driven by a set of test plans. An independent team of testers works from these pre-formulated test plans, which have been developed from the system specification and design

A group that has complementary personalities may work better than a group

that is selected solely on technical ability. People who are motivated by the work are likely to be the strongest technically

Activity diagrams are intended to show the activities

that make up a system process and the flow of control from one activity to another.

5. The application domain In some application domains, such as manufacturing and medical information systems, there are several generic products

that may be reused by configuring them to a local situation. If you are working in such a domain, you should always consider these as an option.

Functional Requirements

the activities that the system must perform

Example

the architecture of a web-based application system organized using the MVC pattern.

it is only since 2000 that 'development with reuse' has become

the norm for new business systems

These classes define the objects in the system and their interactions. When the design is realized as an executing program,

the objects are created dynamically from these class definitions

Once a contract to develop a system has been awarded

the outline project plan for the project has to be refined to create a project startup plan

System modeling

the process of developing abstract models of a system, with each model presenting a different view or perspective of that system

Requirements specification....

the process of writing down the user and system requirements in a requirements document

impossible to choose a group with complementary personalities

the project manager has to control the group so that individual goals do not take precedence over organizational and group objectives

Software development processes that plan on completely specifying

the requirements and then designing, building, and testing the system are not geared to rapid software development

Ethnography

the scientific description of the customs of individual peoples and cultures.

Sequence models are dynamic models that describe, for each mode of interaction

the sequence of object interactions that take place. When documenting a design, you should produce a sequence model for each significant interaction

1. Change management This involves keeping track of requests for changes to

the 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.

Software design and implementation is

the stage in the software engineering process at which an executable software system is developed

Exchanging profit later for cash flow now in order to pay the bills (mostly salaries). Remember that this is itself a risky option, profit or loss being

the very small difference between two very large numbers'.

a CSR validates that the program design is a true expression of the output of the analysis phase,

there is no point in looking at the program design for the source of an error found during the coding phase.

Customized (or bespoke) products

these are systems that are commissioned by a particular customer

common risks that are not related to the type of software being developed

these can occur in any project

The user requirements for a system should describe the functional and nonfunctional requirements

they are understandable by system users who don't have detailed technical knowledge.

If people are not motivated

they will not be interested in the work they are doing

If making the change means that further changes elsewhere in the system are needed

this will obviously increase the cost of change implementation

Customers may use a single release of these systems for many years and may require specific changes

to a particular software system long after its original release date.

A software design is a description of the structure of the software

to be implemented, the data models and structures used by the system, the interfaces between system components and, sometimes, the algorithms used

You should regularly assess each of the identified risks

to decide whether or not that risk is becoming more or less probable

Good project managers should always try t

to encourage group cohesiveness

System modeling has generally come to

to mean representing the system using some kind of graphical notation, which is now almost always based on notations in the Unified Modeling Language (UML).

For each of the risks, you have to think of actions that you might take

to minimize the disruption to the project if the problem identified in the risk occurs.

You may develop different models

to represent the system from different perspectives.

These perspectives have much in common with Krutchen's 4 + 1 view of system architecture

where he suggests that you should document a system's architecture and organization from different perspectives

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.

Interface design,

where you define the interfaces between system components. This interface specification must be unambiguous

Database design

where you design the system data structures and how these are to be represented in a database.

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.

1. An external perspective

where you model the context or environment of the system.

4. A behavioral perspective,

where you model the dynamic behavior of the system and how it responds to events.

MDA focuses on the design and implementation stages of software development

whereas MDE is concerned with all aspects of the software engineering process

However, there are costs and problems associated with reuse (Figure 16.2). There is a significant cost associated with understanding

whether or not a component is suitable for reuse in a particular situation, and in testing that component to ensure its dependability

One of the most important implementation decisions that has to be made at an early stage of a software project is

whether or not you should buy or build the application software

The concept that you reuse is represented in an abstract notation (e.g., a system model),

which does not include implementation detail

because data-driven systems are so common in business, UML 2.0 introduced activity diagrams,

which are similar to data-flow diagrams

Pre- and post-conditions

which are statements that are true before and after a process activity has been enacted or a product produced

Products,

which are the outcomes of a process activity. For example, the outcome of the activity of architectural design may be a model of the software architecture.

2. Sequence diagrams

which are used to model interactions between system components, although external agents may also be included.

However, frameworks are usually more general than software product lines,

which focus on a specific family of application system. For example, you can use a web-based framework to build different types of web-based applications

Incremental software development,

which is a fundamental part of agile approaches, is better than a waterfall approach for most business, e-commerce, and personal systems

1. Use case modeling

which is mostly used to model interactions between a system and external actors (users or other systems).

Schedule representation

Project schedules may simply be represented in a table or spreadsheet showing the tasks, effort, expected duration, and task dependencies

6. The platform on which the system will run Some components models, such as .NET, are specific to Microsoft platforms.

Similarly, generic application systems may be platform-specific and you may only be able to reuse these if your system is designed for the same platform.

1. Dynamic metrics, which are collected by measurements made of a program in execution

These metrics can be collected during system testing or after the system has gone into use. An example might be the number of bug reports or the time taken to complete a computation.

They also show the associations and relationships between these entities

These models are the bridge between the system requirements and the implementation of a system

When you try to reuse executable components you are inevitably constrained by detailed design decisions that have been made by the implementers of these components

These range from the particular algorithms that have been used to implement the components to the objects and types in the component interfaces

2. People risks

risks that are associated with the people in the development team.

Project definition sources.

• an inventory of risks with strategies for their avoidance or reduction • project approach • project architecture • high-level project plan • high-level resource plan • project evolution.

By comparing these values to each other and to the standards that apply across an organization

, you may be able to draw conclusions about the quality of software, or assess the effectiveness of software processes, tools, and methods.

a scenario may include

1. A description of what the system and users expects when the scenario starts. 2. A description of the normal flow of events in the scenario. 3. A description of what can go wrong and how this is handled. 4. Information about other activities that might be going on at the same time. 5. A description of the system state when the scenario finishes.

You may develop models of both the existing system and the system to be developed:

1. Models of the existing system are used during requirements engineering. 2. Models of the new system are used during requirements engineering to help explain the proposed requirements to other system stakeholders

Software engineering is important for two reasons:

1. More and more, individuals and society rely on advanced software systems.

there are problems with incremental delivery:

1. Most systems require a set of basic facilities that are used by different parts of the system.

why functional requirement should implement different

1. Non-functional requirements may affect the overall architecture of a system rather than the individual components

he particular architectural style and structure that you choose for a system should depend on the non-functional system requirements:

1. Performance If performance is a critical requirement, the architecture should be designed to localize critical operations within a small number of components,

Various types of specialization of a software product line may be developed

1. Platform specialization 2. Environment specialization 3. Functional specialization 4. Process specialization

Agile methods have been very successful for some types of system development:

1. Product development where a software company is developing a small or medium-sized product for sale.

If the measure of the internal attribute is to be a useful predictor of the external software characteristic, three conditions must hold.

2. A relationship must exist between the attribute that can be measured and the external quality attribute that is of interest.

two types of representation that are commonly used:

2. Activity networks, which are network diagrams, show the dependencies between the different activities making up a project

The main arguments for and against MDE are

2. Against MDE As I discussed earlier in this chapter, models are a good way of facilitating discussions about a software design. However, it does not always follow that the abstractions that are supported by the model are the right abstractions for implementation

There are two types of technique that can be used to do this:.

2. Algorithmic cost modeling In this approach, a formulaic approach is used to compute the project effort based on estimates of product attributes, such as size, and process characteristics, such as experience of staff involved.

Three additional factors affect the overall duration of the project.

5. Reworking caused by design/software errors. 6. Reworking caused by changes in customer requirements. 7. Delays caused by risks that materialise as issues.

Pipe and filter advantages

Advantages Easy to understand and supports transformation reuse. Workflow style matches the structure of many business processes. Evolution by adding transformations is straightforward. Can be implemented as either a sequential or concurrent system.

Testing phases in a plan-driven software process

After this feedback, the system is modified and released either for further beta testing or for general sale.

This is a baseline for assessing the effectiveness of the too

After using the tool for some time, you repeat this process.

. Application system reuse The whole of an application system may be reused by incorporating it without changing into other systems or by configuring the application for different customers

Alternatively, application families that have a common architecture, but which are tailored for specific customers, may be developed. I cover application system reuse later in this chapter

1. Application system reuse The whole of an application system may be reused by incorporating it without changing into other systems or by configuring the application for different customers.

Alternatively, application families that have a common architecture, but which are tailored for specific customers, may be developed. I cover application system reuse later in this chapter

Software product lines

An application type is generalized around a common architecture so that it can be adapted for different customers.

Interface specification

An important part of any design process is the specification of the interfaces between the components in the design

Object-oriented design using the UML

An object-oriented system is made up of interacting objects that maintain their own local state and provide operations on that state

reuse software stages

Component analysis Requirements modification System design with reuse Development and integration

What is software?

Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

Principles of Agile Methods

Customer involvement Customers should be closely involved throughout the development process. Their role is provide and prioritize new system requirements and to evaluate the iterations of the system.

Financial health

Developers in financial difficulty may lower their price to gain a contract. It is better to make a smaller than normal profit or break even than to go out of business. Cash flow is more important than profit in difficult economic times.

2. Organizational requirements These requirements are broad system requirements derived from policies and procedures in the customer's and developer's organization

Examples include operational process requirements that define how the system will be used, development process requirements that specify the programming language, the development environment or process standards to be used

2. Environment specialization Versions of the application are created to handle particular operating environments and peripheral devices

For example, a system for the emergency services may exist in different versions, depending on the vehicle communications system

3. Technical and managerial communications

Good communications between group members, and between the software engineering team and other project stakeholders, is essential.

What are the attributes of good software?

Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable

3. The target environment, which is the platform on which the system executes. This may be the same type of computer that is used for the development and build systems.

However, for real-time and embedded systems, the target environment is often smaller and simpler than the development environment (e.g., a cell phone). For large systems, the target environment may include databases and other COTS systems that cannot be installed on development machines

Design is about how to solve a problem, so there is always a design process.

However, it isn't always necessary or appropriate to describe the design in detail using the UML or other design description language.

example of risk

Hardware unavailability >Project> Hardware that is essential for the project will not be delivered on schedule

They have to be abstract so that unnecessary detail doesn't hide the relationships between them and the system requirements

However, they also have to include enough detail for programmers to make implementation decisions.

Project Scheduling

Identifying precedence relationships Sequencing activities Determining activity times & costs Estimating material & worker requirements Determining critical activities

example of requirement statement

If a company wishes to let a contract for a large software development project, it must define its needs in a sufficiently abstract way that a solution is not predefined.

1. Structural models, which describe the static structure of the system using object classes and their relationships.

Important relationships that may be documented at this stage are generalization (inheritance) relationships, uses/used-by relationships, and composition relationships.

Setting the system boundaries helps you decide what features are implemented in the system being designed and what features are in other associated systems

In this case, you need to decide how functionality is distributed between the control system for all of the weather stations, and the embedded software in the weather station itself.

2. Storage management To reduce the storage space required by multiple versions of components that differ only slightly, version management systems usually provide storage management facilities

Instead of keeping a complete copy of each version, the system stores a list of differences (deltas) between one version and another. By applying these to a source version (usually the most recent version), a target version can be re-created

A project cost is agreed on the basis of an outline proposal

Negotiations then take place between client and customer to establish the detailed project specification

The best-known open source product is, of course, the Linux operating system which is widely used as a server system and, increasingly, as a desktop environment

Other important open source products are Java, the Apache web server, and the mySQL database management system

Description of layered

Organizes the system into layers with related functionality associated with each layer. A layer provides services to the layer above it so the lowest-level layers represent core services that are likely to be used throughout the system

2. To satisfy esteem needs, you need to show people that they are valued by the organization.

Public recognition of achievements is a simple yet effective way of doing this. O

Design patterns are usually associated with object-oriented design.

Published patterns often rely on object characteristics such as inheritance and polymorphism to provide generality

rapid development

Rapid development and delivery is therefore now often the most critical requirement for software systems

Scheduling: time

Scheduling is essentially the translation of the process model into a network of activities.

class diagram and objects

The UML also allows the role of the objects participating in the association to be specified

I don't find the UML to be useful during the design process itself and prefer informal notations that are quicker to write and which can be easily drawn on a whiteboard. T

The UML is of most value when you are documenting an architecture in detail or using model-driven development,

Requirements elicitation and analysis may involve

a variety of different kinds of people in an organization.

Requirements management

The requirements for large software systems are always changing.

Risk planning,

The risk planning process considers each of the key risks that have been identified, and develops strategies to manage these risks

Relationships between internal and external software...

Usability related to Number of Error Messages ,Length of User Manual

Estimating the work required to deliver the end result is the one difficult part of this equation, especially in the early days of the inception phase

Whether the unit of work is 'Lines Of Code' (LOC) or methods of a class, efficiency is an expression of the number of those units that a member of staff can produce, error-free, in a working day

Repository architecture...

When used You should use this pattern when you have a system in which large volumes of information are generated that has to be stored for a long time. You may also use it in data-driven systems where the inclusion of data in the repository triggers an action or tool

the biggest cost is the effort cost

You have to estimate the total effort (in person-months) that is likely to be required to complete the work of a project

The nature of the relationships is now specified.

You may therefore document the environment of the system using a simple block diagram, showing the entities in the system and their associations.

release date. To document a release, you have to record the specific versions of the source code components that were used to create the executable code

You must keep copies of the source code files, corresponding executables, and all data and configuration files. You should also record the versions of the operating system, libraries, compilers, and other tools used to build the software

The configuration description used to identify

a baseline is also used by the system building tool.

Patterns are a great idea but you need experience of software design to use them effectively

a pattern can be applied. Inexperienced programmers, even if they have read the pattern books, will always find it hard to decide whether they can reuse a pattern or need to develop a specialpurpose solution.

The specific risks that may affect

a project depend on the project and the organizational environment in which the software is being developed

a plan-driven development project

a project plan sets out the resources available to the project, the work breakdown, and a schedule for carrying out the work

A complementary form of reuse is 'concept reuse' where, rather than reuse

a software component, you reuse an idea, a way, or working or an algorithm

Baselines are important because you often have to re-create

a specific version of a complete system. For example, a product line may be instantiated so that there are individual system versions for different customers

Software evolution..

a split between the process of software development and the process of software evolution (software maintenance)

When you are bidding for a contract, you have to work out the price that you will propose to the customer for developing the software

a starting point for calculating this price, you need to draw up an estimate of your costs for completing the project work

a system controlling a valve may move from a state 'Valve open' to

a state 'Valve closed' when an operator command (the stimulus) is received

Other interactions are with a control system that can issue specific weather station control commands

a stick figure is used in the UML to represent other systems as well as human users.

The CCB or product development group considers the impact of the change from

a strategic and organizational rather than a technical point of view.

Changing the implementation of an object

adding services should not affect other system objects.

A model is an abstraction of the system being studied rather than

an alternative representation of that system

The stylized pattern description includes the pattern name, a brief description (with an associated graphical model),

an example of the type of system where the pattern is used (again, perhaps with a graphical model).

In terms of the planning stages that I discussed in the introduction of this chapter,

an initial project schedule is usually created during the project startup phase

The risk management process is

an iterative process that continues throughout the project.

Project planning is

an iterative process that starts when you create an initial project plan during the project startup phase

The software requirements document

an official statement of what the system developers should implement.

4. Release management This involves preparing software for external release

and keeping track of the system versions that have been released for customer use

The change management process is concerned with analyzing the costs

and benefits of proposed changes, approving those changes that are worthwhile, and tracking which components in the system have been changed.

These requests may reflect suggestions

and feedback from customers or analyses of what is offered by competing products.

Organizational needs and requirements change during the lifetime of a system,

bugs have to be repaired, and systems have to adapt to changes in their environment. To ensure that the changes are applied to the system in a controlled way, you need a set of tool-supported, change management processes.

a use case is shown

as an ellipse with the actors involved in the use case represented as stick figures

The UML does not include a specific notation for this database modeling

as it assumes an object-oriented development process and models data using objects and their relationships

the probability and the assessment of the effects of a risk may change

as more information about the risk becomes available and as risk management plans are implemented.

The system requirements change

as the business procuring the system responds to external pressures and management priorities change.

Block diagrams are an appropriate way of describing the system architecture during the design process,

as they are a good way of supporting communications between the people involved in the process

The principles of agile development are

based in a large part on 'lean thinking', an approach to manufacturing

the user and system requirements should

be clear, unambiguous, easy to understand, complete, and consistent.

Structural models may

be static models, which show the structure of the system design or dynamic models, which show the organization of the system when it is executing.

Requirements validation is important

because errors in a requirements document can lead to extensive rework costs when these problems are discovered during development or after the system is in service

Software architecture is importan

because it affects the performance, robustness, distributability, and maintainability of a system

The key benefit of this architecture is that it is easy to support different configurations of subsystems

because the sender of a message does not need to address the message to a particular subsystem.

Evaluating an architectural design is difficul

because the true test of an architecture is how well the system meets its functional and non-functional requirements when it is in use

The notions of separation and independence are fundamental to architectural design

because they allow changes to be localized

The problems of incremental development

become particularly acute for large, complex, long-lifetime systems, where different teams develop different parts of the system.

a 'Preliminary Software Review' (PSR)

between supplier and customer before formally moving on to the analysis phase, based on a preliminary program design which acts as a form of prototype to guide design and coding

When a new version is created, the system simply stores a delta (a list of differences)

between the new version and the older version used to create that new version (

a 'Final Software Acceptance Review' (FSAR

between the testing and operations phases

Maslow's model of motivation is helpful up to a point

but I think that a problem with it is that it takes an exclusively personal viewpoint on motivation.

Software systems and components are potentially reusable entities

but their specific nature sometimes means that it is expensive to modify them for a new situation

Sequence diagrams are used to model the combined behavior of a group of objects

but you may also want to summarize the behavior of an object or a subsystem in response to messages and events

The customer support team may submit change requests associated with bugs that have been discovered and reported

by customers after the software has been released.

The SRS is not complete until the end of the high-level analysis phase

by which time the use cases or user requirements statements have been transformed into concrete system features.

For military and government systems, this group is often

called the change control board (CCB).

Using patterns means that you reuse the ideas but

can adapt the implementation to suit the system that you are developing

Software processes improvement .

can be improved by process standardization where the diversity in software processes across an organization is reduce

'Critical Software Reviews' (CSRs)

can be scheduled with the customer, to further inform the coding process

It is important to be realistic when you are creating a project plan

blems of some description nearly always arise during a project, and these can lead to project delays

Plan-driven development is based on engineering project management techniques a

can be thought of as the 'traditional' way of managing large software development projects

a conceptual view

conceptual views are almost always developed during the design process and are used to support architectural decision making

Configuration management (CM) is

concerned with the policies, processes, and tools for managing changing software systems

Reuse-oriented software engineering.

happens informally when people working on the project know of designs or code that are similar to what is required.

a sequence diagram shows the sequence of interactions

hat take place during a particular use case or use case instance

An important difference between these types of software is

hat, in generic products, the organization that develops the software controls the software specification

they may define constraints on the system implementation

he capabilities of I/O devices or the data representations used in interfaces with other systems.

These requirements reflect

he needs of customers for a system that serves a certain purpose such as controlling a device, placing an order, or finding information

Software Pricing def

he price of a software product to a customer is simply the cost of development plus profit for the developer

The nonfunctional requirements depend on the system architecture

he way in which these components are organized and communicate. In many systems, non-functional requirements are also influenced by individual components

for large systems, software design and implementation is only one of a set of processes (requirements engineering, verification and validation, etc.) i

involved in software engineering.

we use them in small to medium size projects

heavyweight, plan-driven development approach is applied to small and medium-sized business systems

there are costs and problems associated with reuse

here is a significant cost associated with understanding whether or not a component is suitable for reuse in a particular situation, and in testing that component to ensure its dependability

Model-driven engineering has its roots in model-driven architecture

hich was proposed by the Object Management Group (OMG)

1. As a way of facilitating discussion about the system design

high-level architectural view of a system is useful for communication with system stakeholders and project planning because it is not cluttered with detail. Stakeholders can relate to it and understand an abstract view of the system

Requirements classification and organization

his activity takes the unstructured collection of requirements, groups related requirements, and organizes them into coherent clusters

Each subsystem listens for messages on that infrastructure and picks up the messages that are intended for them

his is another commonly used architectural style in addition

Each increment or version of the system

incorporates some of the functionality that is needed by the customer

Event-based modeling was introduced in real-time design

methods such as those proposed by Ward and Mellor

2. The effects of the risk

might be assessed as catastrophic (threaten the survival of the project), serious (would cause major delays), tolerable (delays are within allowed contingency), or insignificant.

Sequence diagrams in the UML are primarily used to

model the interactions between the actors and the objects in a system and the interactions between the objects themselves.

Model-driven architecture

model-focused approach to software design and implementation that uses a sub-set of UML models to describe a system

Software design is a creative activity in which you identify software components and their relationships, based on a customer's requirements

mplementation is the process of realizing the design as a program. Sometimes, there is a separate design stage and this design is modeled and documented

no ideal process

no ideal process and most organizations have developed their own software development processes

Finer subdivision means that a disproportionate amount of time

must be spent on replanning and updating the project plan

System building tools and version management tools

must communicate as the build process involves checking out component versions from the repository managed by the version management system.

The stick figure notation was originally developed to cover human interaction

n but it is also now used to represent other external systems and hardware.

Example

n example of a pipe and filter system used for processing invoices

a manager, you have to break down the work into parts

nd assign these to project team members, anticipate problems that might arise, and prepare tentative solutions to those problems

Increasing demands

new software engineering techniques help us to build larger, more complex systems, the demands change

project planning involves a judicious mixture of

plan-based and agile development.

software processes are categorized

plan-driven or agileprocesses.

agile processes,

planning is incremental and it is easier to change the process to reflect changing customer requirements

Block diagrams

present a high-level picture of the system structure,

The storage management features in a version control system

reduce the disk space required to maintain all system versions

The definition and use of configuration management standards is essential for

quality certification in both the ISO 9000 and the CMM and CMMI standards

A system stakeholder

r is anyone who should have some direct or indirect influence on the system requirements

is possible to explicitly specify a specific component version (X.1.2, say)

r simply to specify the component identifier (X).

It also involves ensuring that changes made by different developers to these versions do not interfere with each other.

r. You can, therefore, think of version management as the process of managing codelines and baselines

A complementary form of reuse is 'concept reuse' where,

rather than reuse a software component, you reuse an idea, a way, or working or an algorithm.

Model-driven engineering and model-driven architecture

re often seen as the same thing

This may be in the form of program libraries or entire applications

re are many domain-specific application systems available that can be tailored and adapted to the needs of a specific company.

he shaded boxes represent earlier versions of a component that are automatically

re-created from the most recent component version

Maintainability If maintainability is a critical requirement, the system architecture should be designed using fine-grain, self-contained components t

readily be changed. Producers of data should be separated from consumers and shared data structures should be avoided

You should document the outcomes of the risk management process in

risk management plan.

The plan should identify

risks to the project and the software under development, and the approach that is taken to risk management

6. Estimation risks

s Risks that derive from the management estimates of the resources required to build the system.

4. Availability If availability is a critical requirement, the architecture should be designed to include redundant components

s so that it is possible to replace and update components without stopping the system.

risk management strategies

s that have been identified for the key risks (i.e., those that are serious or intolerable)

You can think of an architectural pattern as

stylized, abstract description of good practice, which has been tried and tested in different systems and environments

a plan-driven approach is normally used to coordinate

the work across each development site

The four basic process activities

specification, development, validation, and evolution are organized differently in different development processes

It allows for the separation of the application

state from the user interface to application

When version management systems were first developed,

storage management was one of their most important functions

what are the early increment involved

the early increments of the system include the most important or most urgently required functionality

The start of a process is indicated by a filled circle

the end by a filled circle inside another circle

Change management is intended to ensure that

the evolution of the system is a managed process and that priority is given to the most urgent and cost-effective changes

From the description of the Report weather use case, it is obvious that objects representing

the instruments that collect weather data will be required, as will an object representing the summary of the weather data

After an initial feasibility study

the next stage of the requirements engineering process is requirements elicitation and analysis

The alpha testing process continues

until the system developer and the client agree that the delivered system is an acceptable implementation of the requirements.

software validation

verification and validation (V&V) is intended to show that a system both conforms to its specification and that it meets the expectations of the system customer.

The architecture is also changeable and portable. So long as its interface is unchanged, a layer can be replaced by another, equivalent layer

when layer interfaces change or new facilities are added to a layer, only the adjacent layer is affected.

Requirements prioritization and negotiation

when multiple stakeholders are involved, requirements will conflict. This activity is concerned with prioritizing requirements and finding and resolving requirements conflicts through negotiation.

n agile processes, there has to be an overall schedule that identifies

when the major phases of the project will be completed. An iterative approach to scheduling is then used to plan each phase

the waterfall model should only be used

when the requirements are well understood and unlikely to change radically during system development

safety-critical control systems

where a complete analysis of the system is essential, a plan-driven approach is the right one.

The Spiral approach highlights the order in which these different specifications are normally produced

• Business requirements define the scope of the project. • User requirements define the system to be produced in sufficient detail to be able to plan the project. • System requirements define the system in sufficient detail to allow it to be implemented.

Customer business information sources

• Business vision - Corporate goals. • Business rules - Policies and constraints. • Business case - Source of information about corporate values (intangible).

A system release is not just the executable code of the system. The release may also include:..

• an installation program that is used to help install the system on target hardware; • electronic and paper documentation describing the system; • packaging and associated publicity that have been designed for that release

A system release is not just the executable code of the system. The release may also include:

• configuration files defining how the release should be configured for particular installations; • data files, such as files of error messages, that are needed for successful system operation;

The stages in the testing process are:

1. Development testing 2. System testing 3. Acceptance testing

Object-oriented systems are easier to change than

systems developed using functional approaches.

There are three significant approaches to statistical estimation of effort described in the recommended textbooks

1. Constructive Cost Model (COCOMO II) 2. Function Point Analysis (FPA) 3. Object Oriented (OO) approach.

Requirements Evolution

. Requirements reviews The requirements are analyzed systematically by a team of reviewers who check for errors and inconsistencies. 2. Prototyping In this approach to validation, an executable model of the system in question is demonstrated to end-users and customers. They can experiment with this model to see if it meets their real needs. 3. Test-case generation Requirements should be testable

For example, a competitor introducing a new product is a business risk

. The introduction of a competitive product may mean that the assumptions made about sales of existing software products may be unduly optimistic

3. State machine model, which show how individual objects change their state in response to events

. These are represented in the UML using state diagrams. State machine models are dynamic models.

well-known 4+1 view model of software architecture, suggests that there should be four fundamental architectural views,

1. A logical view, 2. A process view 3. A development view 4. A physical view

The four essential elements of design patterns were defined by the 'Gang of Four' in their patterns book:

1. A name that is a meaningful reference to the pattern. 2. A description of the problem area that explains when the pattern may be applied.

System context models and interaction models present complementary views of the relationships between a system and its environment:

1. A system context model is a structural model that demonstrates the other systems in the environment of the system being developed.

It can be difficult to elicit domain knowledge through interviews for two reasons

1. All application specialists use terminology and jargon that are specific to a domain 2. Some domain knowledge is so familiar to stakeholders that they either find it difficult to explain or they think it is so fundamental that it isn't worth mentioning.

the principles underlying agile methods are sometimes difficult to realize:

1. Although the idea of customer involvement in the development process is an attractive one, its success depends on having a customer who is willing and able to spend time with the development team and who can represent all system stakeholders.

The main differences between these approaches are as follows:

1. Application frameworks rely on object-oriented features such as inheritance and polymorphism to implement extensions to the framework.

The software units that are reused may be of radically different sizes. For example:

1. Application system reuse 2. Component reuse 3. Object and function reuse

You can design software architectures at two levels of abstraction

1. Architecture in the small is concerned with the architecture of individual programs. 2. Architecture in the large is concerned with the architecture of complex enterprise systems that include other systems, programs, and program components.

two questions that should be considered when considering agile methods and maintenance:

1. Are systems that are developed using an agile approach maintainable, given the emphasis in the development process of minimizing formal documentation?

three ways in which graphical models are commonly used:

1. As a means of facilitating discussion about an existing or proposed system. 2. As a way of documenting an existing system. 3. As a detailed system description that can be used to generate a system implementation.

two ways in which an architectural model of a program is used:

1. As a way of facilitating discussion about the system design 2. As a way of documenting an architecture that has been designed

The components at each level in the product line system are as follows:

1. At the interaction level, there are components providing an operator display interface and an interface with the communications systems used.

Project planning takes place at three stages in a project life cycle

1. At the proposal stage, when you are bidding for a contract to develop or provide a software system

strategies fall into three categories:

1. Avoidance strategies 2. Minimization strategies 3. Contingency plans

e two types of representation that are commonly used:

1. Bar charts, which are calendar-based, show who is responsible for each activity, the expected elapsed time, and when the activity is scheduled to begin and end.

Successful execution of a software project is dependent on three planning activities:

1. Budget/resource-planning. 2. Scheduling. 3. Monitoring and progress management.

There are two related approaches that may be used to reduce the costs of rework

1. Change avoidance 2. Change tolerance

The configuration management of a software system product involves four closely related activities

1. Change management 2. Version management 3. System building 4. Release management

The key stages in this component measurement process are:

1. Choose measurements to be made The questions that the measurement is intended to answer should be formulated and the measurements required to answer these questions defined.

Software engineering ethics

1. Confidentiality You should normally respect the confidentiality of your employers or clients irrespective of whether or not a formal confidentiality agreement has been signed

You can think of these stimuli as being of two types:

1. Data Some data arrives that has to be processed by the system. 2. Events Some event happens that triggers system processing

Product metrics fall into two classes

1. Dynamic metrics, 2. Static metrics

Bayersdorfer (2007) suggests that companies managing projects that use open source should:

1. Establish a system for maintaining information about open source components that are downloaded and used

To minimize misunderstandings when writing natural language requirements, I recommend that you follow some simple guidelines:

1. Invent a standard format and ensure that all requirement definitions adhere to that format. Standardizing the format makes omissions less likely and requirements easier to check

fundamental questions about the system:

1. Is there a generic application architecture that can act as a template for the system that is being designed? 2. How will the system be distributed across a number of cores or processors? 3. What architectural patterns or styles might be used

classification of non-functional requirements

1. Product requirements 2. Organizational requirements 3. External requirements

To illustrate this problem, consider the following scenario:

1. Release 1 of a system is distributed and put into use. 2. Release 2 requires the installation of new data files, but some customers do not need the facilities of release 2 so remain with release 1. 3. Release 3 requires the data files installed in release 2 and has no new data files of its own

The principal stages of the waterfall model directly reflect the fundamental development activities:

1. Requirements analysis and definition 2. System and software design 3. Implementation and unit testing 4. Integration and system testing 5. Operation and maintenance

d, I introduce some aspects of implementation that are particularly important to software engineering that are often not covered in programming texts. These are:

1. Reuse Most modern software is constructed by reusing existing components or systems. When you are developing software, you should make as much use as possible of existing code.

Estimating: cost

1. Scale of problem 2. Efficiency of staff 3. Unit cost of staff 4. Project-specific equipment costs (for example, servers, licenses) 5. Overheads associated with staff time (travel, accommodation, utility equipment such as phones, laptops).

Eliciting and understanding requirements from system stakeholders is a difficult process for several reasons

1. Stakeholders often don't know what they want from a computer system except in the most general terms; they may find it difficult to articulate what they want the system to do

In the early stages of the design process, I think there are three models that are particularly useful for adding detail to use case and architectural models:

1. Subsystem models, which that show logical groupings of objects into coherent subsystems. These are represented using a form of class diagram with each subsystem shown as a package with enclosed objects

three classes of frameworks:

1. System infrastructure frameworks 2. Middleware integration frameworks 3. Enterprise application frameworks

two ways of coping with change and changing system requirement

1. System prototyping 2. Incremental delivery

Personality type also influences motivation. Bass and Dunteman (1963) classify professionals into three types:

1. Task-oriented people 2. Self-oriented people 3. Interaction-oriented people

To use patterns in your design, you need to recognize that any design problem you are facing may have an associated pattern that can be applied

1. Tell several objects that the state of some other object has changed (Observer pattern). 2. Tidy up the interfaces to a number of related objects that have often been developed incrementally

been identified from the system description and the scenario (use case) description:

1. The WeatherStation object class provides the basic interface of the weather station with its environment

Software reuse is possible at a number of different levels:

1. The abstraction level At this level, you don't reuse software directly but rather use knowledge of successful abstractions in the design of your software

Significant factors that should be taken into account in deciding whether or not a change should be approved are:

1. The consequences of not making the change When assessing a change request, you have to consider what will happen if the change is not implemented

Key factors that you should consider when planning reuse are:

1. The development schedule for the software 2. The expected software lifetime 3. The background, skills, and experience of the development team 4. The criticality of the software and its non-functional requirements 5. The application domain

Building is a complex process, which is potentially error-prone, as there may be three different system platforms involved

1. The development system, which includes development tools such as compilers, source code editors

If the measure of the internal attribute is to be a useful predictor of the external software characteristic, three conditions must hold

1. The internal attribute must be measured accurately. This is not always straightforward and it may require special-purpose tools to make the measurements.

rectangle that represents a class

1. The name of the object class is in the top section. 2. The class attributes are in the middle section . The operations (called methods in Java and other OO programming languages) associated with the object class are in the lower section of the rectangle.

here are three generic factors that affect team working

1. The people in the group 2. The group organization 3. Technical and managerial

ou should assign the risk to one of a number of bands:

1. The probability of the risk 2. The effects of the risk

rapid software development, they share some fundamental characteristics:

1. The processes of specification, design, and implementation are interleaved

To understand why this kind of ambiguity can occur, you have to understand the reasons why users might make change requests:

1. The software is not good enough and does not do what customers want it to do. They therefore request changes to deliver the functionality that they require.

Four factors determine how the network is constructed:

1. The way the project decomposes into tasks (work breakdown structure). 2. The availability of the resources needed to execute the tasks. 3. The estimated time to completion for each task. 4. The interdependencies that dictate prerequisites for starting a task.

Effective interviewers have two characteristics:

1. They are open-minded, avoid pre-conceived ideas about the requirements, and are willing to listen to stakeholde

There are two ways in which measurements of a software system may be used:

1. To assign a value to system quality attributes 2. To identify the system components whose quality is substandard

To develop a system design from concept to detailed, object-oriented design, there are several things that you need to do:

1. Understand and define the context and the external interactions with the system. 2. Design the system architecture. 3. Identify the principal objects in the system. 4. Develop design models. 5. Specify interfaces.

There have been various proposals made about how to identify object classes in object-oriented systems:

1. Use a grammatical analysis of a natural language description of the system to be constructed. Objects and attributes are nouns; operations or services are verbs

I cover two related approaches to interaction modeling

1. Use case modeling 2. Sequence diagrams

Configuration management,,

1. Version management, 2. System integration 3. Problem tracking,

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.

To understand why this kind of ambiguity can occur, you have to understand the reasons why users might make change requests:..

2. Alternatively, the software may be very good and so it is widely and heavily used. Change requests may be generated because there are many software users who creatively think of new things that could be done with the software.

System context models and interaction models present complementary views of the relationships between a system and its environment:,

2. An interaction model is a dynamic model that shows how the system interacts with its environment as it is used.

The components at each level in the product line system are as follows:.

2. At the I/O management level (level 2), there are components that handle operator authentication, generate reports of incidents and vehicles despatched, support map output and route planning,

Agile methods have been very successful for some types of system development:.

2. Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software.

the principles underlying agile methods are sometimes difficult to realize

2. Individual team members may not have suitable personalities for the intense involvement that is typical of agile methods, and therefore not interact well with other team members.

Software engineering is important for two reasons:

2. 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 projec

The key stages in this component measurement process are:.

2. Select components to be assessed You may not need to assess metric values for all of the components in a software system.

architectural models:

2. Sequence models, which show the sequence of object interactions. These are represented using a UML sequence or a collaboration diagram. Sequence models are dynamic models.

Significant factors that should be taken into account in deciding whether or not a change should be approved are:.

2. The benefits of the change Is the change something that will benefit many users of the system or is it simply a proposal that will primarily be of benefit to the change proposer?

There have been various proposals made about how to identify object classes in object-oriented systems:.

2. Use tangible entities (things) in the application domain such as aircraft, roles such as manager or doctor, events such as requests, interactions such as meetings, locations such as offices, organizational units such as companies

The four essential elements of design patterns were defined by the 'Gang of Four' in their patterns book:.

3. A solution description of the parts of the design solution, their relationships, and their responsibilities. This is not a concrete design description 4. A statement of the consequences—the results and trade-offs—of applying the pattern.

The first step in scoping many projects is a feasibility study and this is very often a technical rather than a commercial decision. Examples include:.

3. A trial to see how many extra sales agents the current network will support. 4. An evaluation of three vendors' COTS software. 5. A mock-up interface to see whether staff would feel comfortable using the proposed new Human Resource system.

5. How can knowledge be shared across the group?

3. How will interactions with external stakeholders and senior company management be handled? 4. How can groups integrate people who are not colocated?

Software engineering ethics..

3. Intellectual property rights You should be aware of local laws governing the use of intellectual property such as patents and copyright.

here are several reasons why change is inevitable:..

3. Large systems usually have a diverse user community, with many users having different requirements and priorities that may be conflicting or contradictory

Project planning takes place at three stages in a project life cycle..

3. Periodically throughout the project, when you modify your plan in light of experience gained and information from monitoring the progress of the work. You learn more about the system being implemented and capabilities of your development team

the principles underlying agile methods are sometimes difficult to realize-

3. Prioritizing changes can be extremely difficult, especially in systems for which there are many stakeholders. Typically, each stakeholder gives different priorities to different changes.

The main differences between these approaches are as follows:

3. Software product lines are often control applications for equipment. For example, there may be a software product line for a family of printers

Significant factors that should be taken into account in deciding whether or not a change should be approved are:..

3. The number of users affected by the change If only a few users are affected, then the change may be assigned a low priority. In fact, making the change may be inadvisable if it could have adverse effects on the majority of system users.

Incremental delivery has a number of advantages:..

3. The process maintains the benefits of incremental development in that it should be relatively easy to incorporate changes into the system.

If the measure of the internal attribute is to be a useful predictor of the external software characteristic, three conditions must hold,

3. This relationship between the internal and external attributes must be understood, validated, and expressed in terms of a formula or model. Model formulation involves identifying the functional form of the model (linear, exponential, etc.)

There have been various proposals made about how to identify object classes in object-oriented systems:..

3. Use a scenario-based analysis where various scenarios of system use are identified and analyzed in turn. As each scenario is analyzed, the team responsible for the analysis must identify the required objects, attributes, and operations

To minimize misunderstandings when writing natural language requirements, I recommend that you follow some simple guidelines..

4. Do not assume that readers understand technical software engineering language. It is easy for words like 'architecture' and 'module' to be misunderstood

3. Be aware of evolution pathways for components. You need to know a bit about the open source project where components

4. Educate people about open source. It's not enough to have procedures in place to ensure compliance with license conditions.

plans normally include the following sections:...

4. Hardware and software resource requirements This specifies the hardware and support software required to carry out the development. If hardware has to be bought, estimates of the prices and the delivery schedule may be included

the principles underlying agile methods are sometimes difficult to realize=

4. Maintaining simplicity requires extra work. Under pressure from delivery schedules, the team members may not have time to carry out desirable system simplifications.

Although each framework includes slightly different functionality, most web application frameworks support the following features:...

4. Session management Classes to create and manage sessions (a number of interactions with the system by a user) are usually part of a WAF.

There are four fundamental activities that are common to all software processes

4. Software evolution, where the software is modified to reflect changing customer and market requirements.

The main differences between these approaches are as follows:

4. Software product lines are made up of a family of related applications, owned by the same organization.

costs associated with reuse:...

4. The costs of integrating reusable software elements with each other (if you are using software from different sources) and with the new code that you have developed

The effectiveness and efficiency of communications is influenced by.

5. The available communication channels There are many different forms of communication—face-to-face, e-mail messages, formal documents, telephone

Significant factors that should be taken into account in deciding whether or not a change should be approved are:....

5. The product release cycle If a new version of the software has just been released to customers, it may make sense to delay the implementation of the change until the next planned release

Although each framework includes slightly different functionality, most web application frameworks support the following features:......

5. User interaction Most web frameworks now provide AJAX support (Holdener, 2008), which allows more interactive web pages to be created.

plans normally include the following sections:....

5. Work breakdown This sets out the breakdown of the project into activities and identifies the milestones and deliverables associated with each activity.

5. Have auditing systems in place. Developers, under tight deadlines, might be tempted to break the terms of a license.

6. Participate in the open source community. If you rely on open source products, you should participate in the community and help support their development

plans normally include the following sections:.....

6. Project schedule This shows the dependencies between activities, the estimated time required to reach each milestone, and the allocation of people to activities

plans normally include the following sections:......

7. Monitoring and reporting mechanisms This defines the management reports that should be produced, when these should be produced, and the project monitoring mechanisms to be used.

fundamental questions about the system:

7. What architectural organization is best for delivering the non-functional requirements of the system? 8. How will the architectural design be evaluated? 9. How should the architecture of the system be documented?

2. The group organization

A group should be organized so that individuals can contribute to the best of their abilities and tasks can be completed as expected.

Software reuse is most effective when it is planned as part of an organization-wide reuse program.

A reuse program involves the creation of reusable assets and the adaptation of development processes to incorporate these assets in new software

Software reuse is most effective when it is planned as part of an organization-wide reuse program

A reuse program involves the creation of reusable assets and the adaptation of development processes to incorporate these assets in new software.

Motivating people

As a project manager, you need to motivate the people that work with you so that they contribute to the best of their abilities.

3. In many companies, software processes are not standardized and are poorly defined and controlled.

As such, there is too much process variability within the same company for measurements to be used in a meaningful way.

Electronic change request forms record information that is shared between all groups involved in change management.

As the change request is processed, information is added to the CRF to record decisions made at each stage of the process.

At any time, it therefore represents a snapshot of the state of the change request.

As well as recording the change required, the CRF records the recommendations regarding the change; the estimated costs of the change; and the dates when the change was requested, approved, implemented, and validated

The context model of a system may be represented using associations

Associations simply show that there are some relationships between the entities involved in the association.

Context models

At an early stage in the specification of a system, you should decide on the system boundaries.

You should monitor risks regularly at all stages in a project

At every management review, you should consider and discuss each of the key risks separately

Software systems always change during development and use.

Bugs are discovered and have to be fixed. System requirements change, and you have to implement these changes in a new version of the system

1. To assign a value to system quality attributes

By measuring the characteristics of system components, such as their cyclomatic complexity, and then aggregating these measurements, you can assess system quality attributes, such as maintainability

Object class identification

By this stage in the design process, you should have some ideas about the essential objects in the system that you are designing

A specification document must comply with the 'four Cs'

Clear: No ambiguities or confusing cross references to other documents. Concise: No unnecessary detail, repetition or confusing cross-references to other documents. Correct: Attributed, with no conjecture, paraphrasing or unsubstantiated opinion. Complete: Verified as part of the V & V process

Software engineering is related to both computer science and systems engineering:

Computer science is concerned with the theories and methods that underlie computers and software systems, whereas software engineering is concerned with the practical problems of producing software

The project plan always evolves during the development process

Development planning is intended to ensure that the project plan remains a useful document for staff to understand what is to be achieved and when it is to be delivered

2. Respect

Different people have different skills and managers should respect these differences. All members of the team should be given an opportunity to make a contribution.( In some cases, of course, you will find that people simply don't fit into a team and they cannot continue, but it is important not to jump to conclusions about this at an early stage in the project.)

Risk analysis,,

During the risk analysis process, you have to consider each identified risk and make a judgment about the probability and seriousness of that risk

process model of the elicitation and analysis process

Each organization will have its own version or instantiation of this general model depending on local factors such as the expertise of the staff, the type of system being developed, the standards use

1. Requirements identification

Each requirement must be uniquely identified so that it can be cross-referenced with other requirements and used in traceability assessments.

client-server disadvantages

Each service is a single point of failure so susceptible to denial of service attacks or server failure. Performance may be unpredictable because it depends on the network as well as the system. May be management problems if servers are owned by different organizations.

the differences between codelines and baselines

Essentially, a codeline is a sequence of versions of source code with later versions in the sequence derived from earlier versions

Event-driven modeling

Event-driven modeling shows how a system responds to external and internal events.

1. Product requirements These requirements specify or constrain the behavior of the software.

Examples include performance requirements on how fast the system must execute and how much memory it requires, reliability requirements

Control metrics are usually associated with software processes.

Examples of control or process metrics are the average effort and the time required to repair reported defects

FURPS - Functionality, Usability, Reliability, Performance, Supportability

FURPS

An obvious advantage of software reuse is that overall development costs should be reduced.

Fewer software components need to be specified, designed, implemented, and validated. However, cost reduction is only one advantage of reuse. In Figure 16.1, I have listed other advantages of reusing software assets.

1. Avoidance strategies

Following these strategies means that the probability that the risk will arise will be reduced. An example of a risk avoidance strategy is the strategy for dealing with defective components

3. Functional specialization Versions of the application are created for specific customers who have different requirements.

For example, a library automation system may be modified depending on whether it is used in a public library, a reference library, or a university library.

2. Component reuse Components of an application, ranging in size from subsystems to single objects, may be reused.

For example, a pattern-matching system developed as part of a text-processing system may be reused in a database management system

2. Component reuse Components of an application, ranging in size from subsystems to single objects, may be reused

For example, a pattern-matching system developed as part of a text-processing system may be reused in a database management system.

Frameworks provide support for generic features that are likely to be used in all applications of a similar type

For example, a user interface framework will provide support for interface event handling and will include a set of widgets that can be used to construct displays.

4. Process specialization The system is adapted to cope with specific business processes

For example, an ordering system may be adapted to cope with a centralized ordering process in one company and a distributed process in another.

It is then left to the developer to specialize these by adding specific functionality for a particular application

For example, in a user interface framework, the developer defines display layouts that are appropriate to the application being implemented

Non-functional requirements often conflict and interact with other functional or non-functional requirements.

For example, the authentication requirement in Figure 4.4 obviously requires a card reader to be installed with each computer attached to the system

Design and implementation are closely linked and you should normally take implementation issues into account when developing a design.

For example, using the UML to document a design may be the right thing to do if you are programming in an object-oriented language such as Java or C#.

1. Platform specialization Versions of the application are developed for different platforms.

For example, versions of the application may exist for Windows, Mac OS, and Linux platforms

the boundary between a system and its environment is relatively clear

For example, where an automated system is replacing an existing manual or computerized system, the environment of the new system is usually the same as the existing system's environment.

You look for common features and then design the inheritance hierarchy for the system

For example, you may identify an Instrument superclass, which defines the common features of all instruments, such as an identifier, and get and test operations

This is an example of a type of CRF that might be used in a large complex systems engineering project.

For smaller projects, I recommend that change requests should be formally recorded and the CRF should focus on describing the change required, with less emphasis on implementation issues

customers for a system often find it difficult to translate their goals into measurable requirements

For some goals, such as maintainability, there are no metrics that can be used.

two kinds of software products

Generic products Customized (or bespoke) products

these risk types overlap تتداخل أنواع المخاطر هذه

If an experienced programmer leaves a project this can be a project risk because, even if they are immediately replaced, the schedule will be affected. (It inevitably takes time for a new project member to understand the work that has been done,) so they cannot be immediately productive. Consequently, the delivery of the system may be delayed

2. Configuration management During the development process, many different versions of each software component are created.

If you don't keep track of these versions in a configuration management system, you are liable to include the wrong versions of these components in your system.

cost of people recuriment

It costs a lot to recruit and retain good people and it is up to software managers to ensure that the organization gets the best possible return on its investment

2. Dynamic models, which describe the dynamic structure of the system and show the interactions between the system objects.

Interactions that may be documented include the sequence of service requests made by objects and the state changes that are triggered by these object interactions.

Project Scheduling

Involves the creation of a specific timetable, usually in the form of charts

Configuration management is useful for individual projects as it is easy for one person to forget what changes have been made

It is essential for team projects where several developers are working at the same time on a software system. Sometimes these developers are all working in the same place but, increasingly, development teams are distributed with members in different locations across the world

There is usually a clear relationship between dynamic metrics and software quality characteristics. I

It is fairly easy to measure the execution time required for particular functions and to assess the time required to start up a system.

low expectation

It is relatively easy to write computer programs without using software engineering methods and techniques

what are architectural design link

It is the critical link between design and requirements engineering, as it identifies the main structural components in a system and the relationships between them

There is little information publicly available about the current use of systematic software measurement in industry.

Many companies do collect information about their software, such as the number of requirements change requests or the number of defects discovered in testing.

3. Object and function reuse Software components that implement a single function, such as a mathematical function, or an object class may be reused.

Many libraries of functions and classes are freely available. You reuse the classes and functions in these libraries by linking them with newly developed application code

Open source software extended this idea by using the Internet to recruit a much larger population of volunteer developers

Many of them are also users of the code. In principle at least, any contributor to an open source project may report and fix bugs and propose new features and functionality

importance of non functional requirement

Non-functional requirements are often more critical than individual functional requirements

Architectural Design

Once the interactions between the software system and the system's environment have been defined, you use this information as a basis for designing the system architecture

At this stage in the design process, you should focus on the objects themselves, without thinking about how these might be implemented

Once you have identified the objects, you then refine the object design

Software product lines,,

One of the most effective approaches to reuse is to create software product lines or application families

Principles of Agile Methods..

People not process The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes.

Scenarios

People usually find it easier to relate to real-life examples rather than abstract descriptions

Plan-driven development

Plan-driven or plan-based development is an approach to software engineering where the development process is planned in detail

Requirements management planning

Planning is an essential first stage in the requirements management process

benefit of rapid development process

Rapid software development processes are designed to produce useful software quickly

Generalization idea

Rather than learn the detailed characteristics of every entity that we experience, we place these entities in more general classes (animals, cars, houses, etc.)

. Host-target development Production software does not usually execute on the same computer as the software development environment

Rather, you develop it on one computer (the host system) and execute it on a separate computer (the target system). The host and target systems are sometimes of the same type but, often they are completely different

Requirements discovery..

Requirements discovery (sometime called requirements elicitation) is the process of gathering information about the required system and existing systems, and distilling the user and system requirements from this information

2. Stakeholders in a system naturally express requirements in their own terms and with implicit knowledge of their own work

Requirements engineers, without experience in the customer's domain, may not understand these requirements

Requirements specification

Requirements specification is the activity of translating the information gathered during the analysis activity into a document thatdefines a set of requirements

Requirements validation..

Requirements validation is the process of checking that requirements actually define the system that the customer really wants

Alice arranges regular informal meetings where she tells the other group members what is going on

She makes a point of involving people in the product development by asking them to come up with new ideas derived from their own family experiences

What is software engineering?

Software engineering is an engineering discipline that is concerned with all aspects of software production.

Lack of tool support

Some software tools do not support development with reuse. It may be difficult or impossible to integrate these tools with a component library system.

Standards compliance

Some standards, such as user interface standards, can be implemented as a set of reusable components. For example, if menus in a user interface are implemented using reusable components, all applications present the same menu formats to users.

For custom software or software product lines, managing system releases is a complex process

Special releases of the system may have to be produced for each customer and individual customers may be running several different releases of the system at the same time

Configuration Management

System Building,Component Versions,Version Management,System Versions,Release Management, System Releases ,Change Management

System building

System building is the process of creating a complete, executable system by compiling and linking the system components, external libraries, configuration files

2-System testing

System components are integrated to create a complete system. This process is concerned with finding errors that result from unanticipated interactions between components and component interface problems

Software engineering is related to both computer science and systems engineering:

System engineering is concerned with all aspects of the development and evolution of complex systems where software plays a major role

1. Stakeholder communication

The architecture is a high-level presentation of the system that may be used as a focus for discussion by a range of different stakeholders

Reduced process risk

The cost of existing software is already known, whereas the costs of development are always a matter of judgment. This is an important factor for project management because it reduces the margin of error in project cost estimation

As it is most likely that the most recent version of a component will be used, most systems store that version in full

The deltas then define how to re-create earlier system versions.

there has to be a requirements refinement stage where the requirements for the system are modified to reflect the reusable software that is available.

The design and implementation stages of the system may also include explicit activities to look for and evaluate candidate components for reuse.

Description of pipe and filter

The processing of the data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. The data flows (as in a pipe) from one component to another for processing

4. Independent development Different developers may be working on the same component at the same time

The version management 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

The process models

The waterfall model Incremental development Reuse-oriented software engineering

Group organization

The way that a group is organized affects the decisions that are made by that group

The high-level architectural design for the weather station software

The weather station is composed of independent subsystems that communicate by broadcasting messages on a common infrastructure

As a starting point for risk identification, a checklist of different types of risk may be used

There are at least six types of risk that may be included in a risk checklist:

This may be in the form of program libraries or entire applications.

There are many domain-specific application systems available that can be tailored and adapted to the needs of a specific company

1. It is impossible to quantify the return on investment of introducing an organizational metrics program.

There have been significant improvements in software quality over the past few years without the use of metrics so it is difficult to justify the initial costs of introducing systematic software measurement and assessment

3. Object and function reuse Software components that implement a single function, such as a mathematical function, or an object class may be reused.,

This form of reuse, based around standard libraries, has been common for the past 40 years. Many libraries of functions and classes are freely available. You reuse the classes and functions in these libraries by linking them with newly developed application code

Partially-functional prototypes provide another tool for eliciting feedback from users as the detailed design evolves.

This has become increasingly valuable as developers gain access to re-usable library objects, especially user-interface objects, and acquire skills in using techniques from the field of usability

3. Change history recording All of the changes made to the code of a system or component are recorded and listed. 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

Fog index

This is a measure of the average length of words and sentences in documents. The higher the value of a document's Fog index, the more difficult the document is to understand.

Depth of conditional nesting

This is a measure of the depth of nesting of if-statements in a program. Deeply nested if-statements are hard to understand and potentially error-prone.

Length of code

This is a measure of the size of a program. Generally, the larger the size of the code of a component, the more complex and error-prone that component is likely to be.

4. The criticality of the software and its non-functional requirements For a critical system that has to be certified by an external regulator, you may have to create a dependability case for the system

This is difficult if you don't have access to the source code of the software. If your software has stringent performance requirements, it may be impossible to use strategies such as generator-based reuse

You can therefore explain your design by describing the patterns that you have used

This is particularly true for the best-known design patterns that were originally described by the 'Gang of Four' in their patterns book

Requirements discovery

This is the process of interacting with stakeholders of the system to discover their requirements. Domain requirements from stakeholders and documentation are also discovered during this activity

2. A change management process

This is the set of activities that assess the impact and cost of changes. I discuss this process in more detail in the following section.

For valid change requests, the next stage of the process is change assessment and costing.

This is usually the responsibility of the development or maintenance team as they can work out what is involved in implementing the change

4. The system level At this level, you reuse entire application systems. This usually involves some kind of configuration of these systems.

This may be done by adding and modifying code (if you are reusing a software product line) or by using the system's own configuration interface. Most commercial systems are now built in this way where generic COTS (commercial off-the-shelf) systems are adapted and reused

The core system is designed to be configured and adapted to suit the needs of different system customers

This may involve the configuration of some components, implementing additional components, and modifying some of the components to reflect new requirements.

3. Safety If safety is a critical requirement, the architecture should be designed so that safety-related operations are all located in either a single component or in a small number of components

This reduces the costs and problems of safety validation and makes it possible to provide related protection systems that can safely shut down the system in the event of failure.

Depth of inheritance tree (DIT)

This represents the number of discrete levels in the inheritance tree where subclasses inherit attributes and operations (methods) from superclasses. The deeper the inheritance tree, the more complex the design.

a layered architecture with four layers.

User Interface Core Business Logic/Application Functionality System Utilities System Support (OS, Database etc.) User Interface Management Authentication and Authorization

Agile methods

This view came from the software engineering community that was responsible for developing large, longlived software systems such as aerospace and government systems.

2. The object level At this level, you directly reuse objects from a library rather than writing the code yourself

To implement this type of reuse, you have to find appropriate libraries and discover if the objects and methods offer the functionality that you need. For example, if you need to process mail messages in a Java program, you may use objects and methods from a JavaMail library.

Software requirements

Use case diagram A statement of a functional requirement (a specific task undertaken on behalf of a specific class of user)

Use cases

Use cases are a requirements discovery technique that were first introduced in the Objectory method

When used,,of layered

Used when building new facilities on top of existing systems; when the development is spread across several teams with each team responsibility for a layer of functionality; when there is a requirement for multi-level security.

client-server When used

Used when data in a shared database has to be accessed from a range of locations. Because servers can be replicated, may also be used when the load on a system is variable

When used

Used when there are multiple ways to view and interact with data. Also used when the future requirements for interaction and presentation of data are unknown

User requirements vs System requirements

User requirements are the functional and non-functional requirements that describe the business goals for the system. System requirements are the functional and non-functional requirements that have to be met in order to achieve the business goals for the system.

software meaurement

difficult to make direct measurements of many of the software quality attributes

The project scheduling process

identify activities -> identify activity dependencies -> estimate Resources for Activities -> allocate people to activities -> create project charts

You may have to re-create the version delivered to a specific customer

if, for example, that customer reports bugs in their system that have to be repaired

Risk planning

You should make plans to address the risk, either by avoiding it or minimizing its effects on the project

Your aim at this stage should be to create a project plan that can be used to support decision making about project staffing and budgeting

You use the plan as a basis for allocating resources to the project from within the organization and to help decide if you need to hire new staff.

Models are used during the requirements engineering process to help derive the requirements for a system,

during the design process to describe the system to engineers implementing the system and after implementation to document the system's structure and operation.

When a system is to be marketed as a software product

a testing process called 'beta testing' is often used

an architectural pattern should describe

e a system organization that has been successful in previous systems

The requirements engineering process

aims to produce an agreed requirements document that specifies a system satisfying stakeholder requirements. Requirements are usually presented at two levels of detail.

The MVC pattern was originally proposed in the 1980s as an approach to GUI design that

allowed for multiple presentations of an object and separate styles of interaction with each of these presentations

You should record the results of the risk analysis in the project plan

along with a consequence analysis, which sets out the consequences of the risk for the project, product, and business

This is essential for deciding how to provide the required system functionality

and how to structure the system to communicate with its environment

This can be user interaction, which involves user inputs and outputs, interaction between the system being developed

and other systems or interaction between the components of the system

a software architecture can serve firstly as a design plan for the negotiation of system requirements,

and secondly as a means of structuring discussions with clients, developers, and managers. T

Commercial systems developers were not familiar with the military procedures or terminology

and so often invented their own terms.

Each possible interaction is named in an ellipse

and the external entity involved in the interaction is represented by a stick figure.

Military software systems were probably the first systems in which configuration management was used

and the terminology for these systems reflected the processes and procedures already in place for hardware configuration management

Because objects are associated with things, there is often a clear mapping between realworld entities (such as hardware components)

and their controlling objects in the system.

You identify the major components that make up the system and their interactions,

and then may organize the components using an architectural pattern such as a layered or client-server model. However, this is not essential at this stage.

Risk management involves

anticipating risks that might affect the project schedule or the quality of the software being developed, and then taking action to avoid these risks

The architecture of a software product line often reflects a general

application-specific architectural style or pattern. For example, consider a product line system that is designed to handle vehicle despatching for emergency services

In successful companies and economies, this is achieved when people are respected by the organization and

are assigned responsibilities that reflect their skills and experience

extreme programming, requirements

are expressed as scenarios (called user stories), which are implemented directly as a series of tasks

Processes based on formal transformations

are generally only used in the development of safety-critical or security-critical systems

Software design and implementation activities

are invariably interleaved.

Internal software attributes, such as the cyclomatic complexity of a component

are measured by using software tools that analyze the source code of the software

Software systems and components

are potentially reusable entities

Plan-driven processes

are processes where all of the process activities are planned in advance and progress is measured against this plan.

The requirements for a system

are the descriptions of what the system should dothe services that it provides and the constraints on its operation

Design patterns

certain common patterns of building design that were inherently pleasing and effective

control metrics support process management,

control metrics support process management, and predictor metrics help you predict characteristics of the software

1. The people in the group

You need a mix of people in a project group as software development involves diverse activities such as negotiating with clients, programming, testing, and documentation

3. The component level Components are collections of objects and object classes that operate together to provide related functions and services.

You often have to adapt and extend the component by adding some code of your own. An example of component-level reuse is where you build your user interface using a framework

there are software engineering fundamentals that apply to all types of software system..

You should make as effective use as possible of existing resources. This means that, where appropriate, you should reuse software that has already been developed rather than write new software.

There was an assumption that the code would be

controlled and developed by a small core group, rather than users of the code

There are many variants of this process in use but, to be effective, change management processes should always have a means of checking,

costing, and approving changes. This process should come into effect when the software is handed over for release to customers or for deployment within an organization.

3. Finally, to satisfy self-realization needs, you need to give people responsibility for their work, assign them demanding (but not impossible) tasks,

d provide a training programme where people can develop their skills. Training is an important motivating influence as people like to gain new knowledge and learn new skills.

Because of the organizational considerations involved

deciding on a project price should be a group activity involving marketing and sales staff, senior management, and project managers.

3. Traceability policies These policies

define the relationships between each requirement and between the requirements and the system design that should be recorded. The traceability policy should also define how these records should be maintained

Baselines may be specified using a configuration language, which allows you to

define what components are included in a version of a particular system.

The move to reuse-based development has been in response to

demands for lower software production and maintenance costs, faster delivery of systems, and increased software quality

you can use a state machine model that shows how the object instance changes state

depending on the messages that it receives

functional system requirements

describe the system functions, its inputs and outputs, exceptions,

If an incremental approach to development is used,

each increment should be tested as it is developed, with these tests based on the requirements for that increment. In extreme programming, tests are developed along with the requirements before development starts

costs and schedule pressure meant that this approach became increasingly unviable,

especially for commercial and Internet-based systems.

t is difficult, in practice, to separate functional and non-functional requirements in the requirements document

f the non-functional requirements are stated separately from the functional requirements, the relationships between them may be hard to understand.

Cyclomatic complexity

his is a measure of the control complexity of a program. This control complexity may be related to program understandability.

Therefore when a system release is produced, it must be documented to ensure that it can be re-created exactly in the future.

his is particularly important for customized, long-lifetime embedded systems, such as those that control complex machines.

Software engineering and the Web

his led to the development of a vast range of new system products that delivered innovative services, accessed over the Web.

3. Interaction-oriented people

ho are motivated by the presence and actions of co-workers. As software development becomes more user-centered, interactionoriented individuals are becoming more involved in software engineering.

an independent authority, such as the system architect,

hould assess and prioritize changes that affect those system modules that have been produced by different development teams.

Quality attributes such as maintainability, understandability, and usability are external attributes that relate to

how developers and users experience the software

The project plan, which is created at the start of a project, is used to communicate

how the work will be done to the project team and customers, and to help assess progress on the project.

Configuration management policies and processes define

how to record and process proposed system changes, how to decide what system components to change, how to manage different versions of the system and its components, and how to distribute changes to customers

Project definition sources

• definition of scope • user requirements, possibly supported by user profiles and key high-level use case definitions • supplementary, non-functional, requirements • interfaces: users, hardware, software, communications

There are three main parameters that you should use when computing the costs of a software development project:

• effort costs (the costs of paying software engineers and managers); • hardware and software costs, including maintenance; • travel and training costs.

The artefacts that must be signed off to allow the 'Lifecycle objectives' milestone to be met at the end of the inception phase, for example, should be based on:

• project scope definition • cost and schedule definitions • risk identification • project feasibility • plans for the project (development) environment.

we have modified the list to reflect the types of project that you are likely to encounter:

• responding to market demand for a feature, product or service • addressing internal needs or opportunities within the organisation • servicing a customer request for a bespoke system

we have modified the list to reflect the types of project that you are likely to encounter:,,

• technology-driven need to update an existing system • constraints such as legal changes • improving the way a system operates, such as reducing environmental impact • infrastructure development (originally categorised as 'social need', such as providing drinking water).


Related study sets

A&P 106: Chapter 5 - Integumentary System

View Set

Electrical apprenticeship year 1- exam 2 prep

View Set

AP BIO CB 2024 Ecology Missed Questions

View Set

NUR 220 CCTC UNIT 1 NURSING ROLE IN CARING FOR THE PREGNANT FAMILY

View Set