Professional Documents
Culture Documents
Software Engineering
Software Engineering
ENGINEERING
Presented by,
Tasmiya Anjum H.N
INTRODUCTION
PROFESSIONAL SOFTWARE DEVELOPMENT:
• Software engineering is intended to support professional software development, rather than
individual programming.
1. Generic products :These are stand-alone systems that are produced by a development
organization and sold on the open market to any customer.
2. Customized products :These are systems that are commissioned by a particular customer. A
software contractor develops the software especially for that customer.
Attributes of a good software:
1. Maintainability :Software should be written in such a way so that it can evolve to
• There are four fundamental activities that are common to all software processes. These activities
are:
1. Software specification, where customers and engineers define the software that is to be produced
and the constraints on its operation.
3. Software validation, where the software is checked to ensure that it is what the customer requires.
4. Software evolution, where the software is modified to reflect changing customer and market
requirements.
Software Engineering Ethics
• Like other engineering disciplines, software engineering is carried out within a social
and legal framework that limits the freedom of people working in that area.
2. Competence You should not misrepresent your level of competence. You should
4. Computer misuse You should not use your technical skills to misuse other people’s
computers.
• An insulin pump is a medical system that simulates the operation of the pancreas.
• The software controlling this system is an embedded system, which collects information
from a sensor and controls a pump that delivers a controlled dose of insulin to a user.
• Diabetes is a relatively common condition where the human pancreas is unable to
produce sufficient quantities of a hormone called insulin.
• Insulin metabolises glucose (sugar) in the blood. The conventional treatment of diabetes
involves regular injections.
• Diabetics measure their blood sugar levels using an external meter and then calculate
the dose of insulin that they should inject.
• The problem with this treatment is that the level of insulin required does not just depend
on the blood glucose level but also on the time of the last insulin injection.
• Problem causes:
1. very low levels of blood glucose (if there is too much insulin)
2. very high levels of blood sugar (if there is too little insulin).
• In the high level can lead to eye damage, kidney damage, and heart problems.
• blood sensor measures the electrical conductivity of the blood under different
conditions and that these values can be related to the blood sugar level.
• The insulin pump delivers one unit of insulin in response to a single pulse from a
controller. Therefore, to deliver 10 units of insulin, the controller sends 10 pulses to
the pump.
Figure 1.5 is a UML activity model that illustrates how the software transforms an
input blood sugar level to a sequence of commands that drive the insulin pump.
Figure 1.5 Activity model of the insulin pump
Software process models
• A process activity model shows the activities and their sequence but may
not show the roles of the people involved in these activities.
1. The Waterfall Model: The waterfall model is a linear, sequential approach to the software
development lifecycle(SDLC).
1. Requirements analysis and definition The system’s services, constraints, and goals are
established by consultation with system users.
2. System and software design The systems design process allocates the requirements to either
hardware or software systems by establishing an overall system architecture.
3. Implementation and unit testing involves coding the software based on the design
specification and also includes unit testing.
4. Integration and system testing The individual program units or programsare integrated and
tested as a complete system to ensure that the softwarerequirements have been met.
5. Operation and maintenance The system is installed and put into practical use.
Maintenance involves correcting errors which were not discovered in earlier stages of
the life cycle.
• In waterfall model the following phase should not start untill the previous phase has
finished. It require feedback from one phase to another. It is appropriate for some types
of system like embedded, critical and large software system.
2. Incremental development:
• Incremental development reflects the way that we solve problems. We rarely work out a
complete problem solution in advance but move toward a solution in a series of steps,
backtracking when we realize that we have made a mistake.
3. More rapid delivery and deployment of useful software to the customer is possible, even if
all of the functionality has not been included.
In the majority of software projects, there is some software reuse. Reuse-oriented approaches
rely on a large base of reusable software components and an integrating framework for the
composition of these components.
2. Requirements modification During this stage, the requirements are analyzed using
information about the components that have been discovered. They are then
mod_x0002_ified to reflect the available components.
3. System design with reuse During this phase, the framework of the system is designed
or an existing framework is reused.
4.Development and integration Software that cannot be externally procured is developed, and the
components and COTS systems are integrated to create the new system.
Process activities:
Real software processes are interleaved sequences of technical, collaborative, and
The four basic process activities of specification, development, validation, and evolution.
1.1 Software specification or 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.
1. Feasibility study An estimate is made of whether the identified user needs may be
satisfied using current software and hardware technologies.
2. 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.
3. Requirements specification Requirements specification is the activity of translating
the information gathered during the analysis activity into a document that defines a set
of requirements.
• four activities that may be part of the design process for information systems:
1. Architectural design, where you identify the overall structure of the system, the principal
components (or modules), their relationships, and how they are distributed.
2. Interface design, where you define the interfaces between system components.This
interface specification must be unambiguous.
3. Component design, where you take each system component and design how it will operate.
4. Database design, where you design the system data structures and how these are to be
represented in a database. Again, the work here depends on whether an existing database is to
be reused or a new database is to be created.
Software validation or, more generally, 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.
1. Development testing The components making up the system are tested by the people
developing the system. Each component is tested independently, without other system
components.
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.
3. Acceptance testing This is the final stage in the testing process before the system is
accepted for operational use.
The flexibility of software systems is one of the main reasons why more and more
software is being incorporated in large, complex systems. Changes can be made to
software at any time during or after the system development.
• There are two related approaches that may be used to reduce the costs of rework:
1. Change avoidance, where the software process includes activities that can anticipate
possible changes before significant rework is required.
2. Change tolerance, where the process is designed so that changes can be accommodated
at relatively low cost.
The RUP recognizes that conventional process models present a single view of
the process. In contrast, the RUP is normally described from three perspectives:
1. A dynamic perspective, which shows the phases of the model over time.
2. A static perspective, which shows the process activities that are enacted.
3. A practice perspective, which suggests good practices to be used during the process.
The RUP is a phased model that identifies four discrete phases in the software process
1. Inception: The goal of the inception phase is to establish a business case for the system.
You should identify all external entities (people and systems) that will interact with the
system and define these interactions.
2. Elaboration: The goals of the elaboration phase are to develop an understanding of the
problem domain, establish an architectural framework for the system, develop the project
plan, and identify key project risks.
3. Construction: The construction phase involves system
design,programming, and testing.
4. Transition: The final phase of the RUP is concerned with moving the
system from the development community to the user community and making it
work in a real environment.
Agile Software Development
• Agile software development is an iterative and incremental approach to software
development that emphasizes the importance of delivering a product quickly and
frequently.
• Agile methods:
They are intended to deliver working software quickly to customers, who can then propose
new and changed requirements to be included in later iterations of the system.
The principles of agile methods
• Plan-driven and agile development
• They incorporate other activities, such as requirements elicitation and testing, into design
and implementation.
• In a plan-driven approach, iteration occurs within activities with formal documents used
to communicate between stages of the process. ex: requirement to design
Figure: Plan-driven and
agile specification
• Extreme programming (XP) is perhaps the best known and most widely used
of the agile methods.
• The Scrum approach is a general agile method but its focus is on managing iterative
development rather than specific technical approaches to agile software engineering.
• There are three phases in Scrum. The first is an outline planning phase where you
establish the general objectives for the project and design the software architecture.
• This is followed by a series of sprint cycles, where each cycle develops an increment of
the system.
• The project closure phase wraps up the project, completes required documentation such
as system help frames and user manuals, and assesses the lessons learned from the
project.
• The innovative feature of Scrum is its central phase, namely the sprint cycles. A Scrum
sprint is a planning unit in which the work to be done is assessed, features are selected
for development, and the software is implemented.
• Agile methods have therefore been mostly used for the development of small and medium-
sized systems the need for faster delivery of software. Consequently, there has been a great
deal of interest in scaling agile methods to cope with larger systems, developed by large
organizations.
1. A ‘scaling up’ perspective, which is concerned with using these methods for developing
large software systems that cannot be developed by a small team.
2. A ‘scaling out’ perspective, which is concerned with how agile methods can be
introduced across a large organization with many years of software development experience.