Module 1
Module 1
Software Engineering
Professional software development
• Engineering discipline
• Using appropriate theories and methods to solve problems
within the organizational and financial constraints.
• Heterogeneity
• Business and social change
• Security and trust
Software Engineering diversity
• There are many different types of software system and there is no
universal set of software techniques that is applicable to all of
these.
• The software engineering methods and tools used depend on the
type of application being developed, the requirements of the
customer and the background of the development team.
• Software Engineering fundamentals
• Systems should be developed using a managed and understood
development process.
• Dependability and performance are important for all types of
system.
• Understanding and managing the software specification and
requirements (what the software should do) are important.
• should reuse software that has already been developed rather
than write new software.
Application types
• Stand-alone applications
• Interactive transaction-based applications
• Embedded control systems
• Batch processing systems
• Entertainment systems
• Data collection systems
• Systems of systems etc…
Software Engineering and the Web
•The Web is now a platform for running application
and organizations are increasingly developing web-
based systems rather than local systems.
.
Software engineering ethics
• Software engineering involves wider responsibilities than
simply the application of technical skills.
• Confidentiality
• Competence
• Intellectual property rights
• Computer misuse
ACM/IEEE Code of Ethics
• The professional societies in the US have cooperated to
produce a code of ethical practice.
• Incremental development
• Specification, development and validation are interleaved.
May be plan- driven or agile.
•Software design
•Design a software structure that realises the
specification;
•Implementation
•Translate this structure into an executable program;
• System Architecture
• Database Specification
• Interface specification
• Component specification
Software validation
3 stage process
System components are tested(component defects are
discovered early in the process)
then the integrated system is tested,(interface problems are
found when the system is integrated)
Finally the system is tested with the customers data.
Testing stages
• Development or component testing
• Individual components are tested independently;
• Components may be functions or objects
• Test automation tools can rerun component tests when new versions of
the components are created, are commonly used.
• System testing
• Testing of the system as a whole.
• system meets its functional and non functional requirements ,
• Acceptance testing(alpha testing)
• This is the final stage in the testing process before the system is
accepted for operational use.
• Testing with customer data to check that the system meets the customer’s
needs.
• Alpha Testing is a type of software testing performed to
identify bugs before releasing the product to real users or to the
public.
• Beta testing
• Where a version of the system or part of the system is developed quickly to check the customer
requirements .
• Benefits of prototyping
• Improved system usability.
• A closer match to users’ real needs.
• Improved design quality.
• Improved maintainability.
• Reduced development effort.
The process of prototype development
• User requirements are prioritised and the highest priority requirements are
included in early increments.
• Once an increment is completed and delivered, customers can put into service.
• They can experiment with the system and helps to clarify their requirements for
later system increments.
• As new increments are completed ,they are integrated with the existing
increments so that functionality improves with each delivered increment.
Incremental delivery advantages
• Customer value can be delivered with each increment so system
functionality is available earlier.
• Early increments act as a prototype to help elicit requirements for later
increments.
• Lower risk of overall project failure.
• The highest priority system services tend to receive the most testing
• Incremental delivery problems
• Most systems require a set of basic facilities that are used by different parts
of the system.
• The essence of iterative processes is that the specification is developed in
conjunction with the software.
Boehm’s spiral model
• Process is represented as a spiral rather than as a
sequence of activities with backtracking.