Title: The relationship of software engineering to other area of computer science
1The relationship of software engineering to
other area of computer science
2- Programming language
- Central tools used in software development
- Having influenced how well we can achieve our
software engineering goals
3- Operating systems
- Software should usually run on a specific
operating system - Need to consider if the software can work well
with a specific operating system
4- Database
- Databases allow applications to be written that
use data without worrying about the underlying
representation of the data - Allow database systems to be used as components
of large software systems
5- Artificial intelligence
- Some researchers have been trying to apply
artificial-intelligence techniques to improve
software engineering
6The software life cycle
- Software is said to have a life cycle composed of
several phases. - waterfall model - the process structures the
activities as a linear cascade of phases, in
which the output of one phase flows as the input
to the next one. Each phase has well-defined
starting and ending points, with clearly
identifiable deliverables to the next phase
7Phases of waterfall life cycle model
- Requirements analysis and specification
- Usually the first phase of a large-scale
software development project - Purpose of this phase is to identify and
document the exact requirements of the system
8- System design and specification
- Software engineers design a software system to
meet requirements. -
9- Coding and module testing
- The engineer produces the actual code that will
be delivered to the customer as the running
system - Individual modules developed in the coding
phase are tested before being delivered to the
next phase
10- Integration and system testing
- All the modules having been developed before
and tested individually are put
together-integrated-in this phase and are tested
as a whole system
11- Delivery and maintenance
- Once the system passes all the tests, it is
delivered to the customer and enters the
maintenance phase. All modifications made to the
system after the initial delivery are usually
attributed to this phase
12(No Transcript)
13Definition of software production process
- Software production process
- The process we follow to build, deliver, deploy
and evolve the software product, from the
inception of an idea all the way to the delivery
and final retirement of the system. -
Satisfy customers expectations by delivering
quality products on time.
14- Software can be decomposed into a number of
specific activities - Feasibility study
- Performed before the production process actually
starts, to support the decision of weather a new
development should be started. - Its goal is to provide a feasibility study
document, which represents different scenarios
and alternative solutions. - The feasibility study document should contain
- A definition of problem
- Alternative solutions and their expected benefits
- Required resources, costs, and delivery dates in
each proposed alternative solution
15- Designing
- Design is the activity through which software
engineer structure the application at different
levels of detail. - The result is a design specification document,
which contains a description of the software
architecture, including - The system in terms of its components
- Their interfaces,
- Their interconnections
16- Delivery, deployment, and maintenance
- Delivery
- Distributed among a selected group of customers
prior to its official release, also called beta
testing - Deployment
- It defines the physical run-time architecture
- Maintenance
- A set of activities performed to modify the
system after it is delivered to the customer
17PROJECT SIZE CATEGORIES
CATEGORY NUMBER OF PROGRAMMERS DURATION PRODUCT SIZE
Trivial 1 1-4 weeks 500
Small 1 1-6 months 1K to 2K
Medium 2 to 5 1-2 years 5k to 50k
Large 5 to 20 2-3 years 50k to 100k
Very Large 100 to 1000 4-5 years 1 M
Extremely Large 2000 - 5000 5 - 10 years 1M to 10M
18Trivial PROJECTS
- 1 programmer working perhaps, part time.
- Packaged in 10 to 20 sub routines.
- Doesnt need a formal analysis.
- Conflict
- If personal software intended for personal use
became a software product.
19SMALL PEOJECTS
- 1 programmer
- packaged perhaps in 25 to 50 routines
- Small programs have no interaction at all.
- Client interaction.
- Do have standards.
- Development Notation
- Documentation
- Reviews
20MEDIUM PROJECTS
- 2 to 5 programmers
- 250 to 1000 subroutines
- Have interactions with other programs!
- Do also have client and developer interaction.
- Advantage
- has a vastly improved product quality
-
21LARGE PROJECTS
- 5 to 20 programmers
- Has massive number of subroutines
- Applies several subsystem
- Example
- 1. Compiler
- 2. Database Package
- 3. Graphics Program
- 4. Real-time control system
22Very large project
- Requires 100 to 1000 programmers
- 1,000,000 source instructions
- HAS MASSIVE NUMBER OF SUBROUTINES and SUBSYSTEMS
which forms a LARGE SYSTEM! - Involves real-time processing, telecommunication
and multitasking! - Example
- LARGE SCALE OS, LARGE DB SYSTEM, AND MILITARY
COMMAND CONTROL SYSTEM.
23TRIVIA
- According to Brooks
- IBM and OS/360 was developed by 5000 programmers
over a period of 5 years and contained more that
1,000,000 codes!
24Extremely large project
- Employs 2000 to 5000 programmers for a period of
up to 10 years and results in 1 to 10 million
lines of codes. - It involves LIFE-and-DEATH processes
- Example
- air traffic control
- ballistic missile defense
- military command and control system
25The phases of WATERFALL life cycle model A.
Requirement analysis and specifications B.
System design and specifications C. Coding and
module testing D. Integration and system
testing E. Delivery and maintenance
26Analysis
- _______1. They are the activities through which
we actually write programs using a programming
language. - _______ 2. In this phase, all system modules will
be integrated together and tested as a whole. -
- _______ 3. In this phase, software engineers
produced the actual code that will be delivered
to the customer as running system. -
- _______ 4. Once the system has passed all the
tests conducted, it will be delivered to the
clients and then proceeds to the maintenance
phase. - _______ 5. It usually the first phase of a
large-scale software development project.
27- _______6. In this phase, individual modules
developed in the coding phase are tested before
being delivered to the next phase. -
- _______7. All modifications made to the system
after the initial delivery is usually attributed
to this phase. - _______8. In this phase, software engineers
design the system to meet the requirements and
specifications of the clients. - _______ 9. This phase includes the architectural
and detailed design of software development. - _______ 10. The purpose of this phase is to
identify and document the exact requirements of
the system. -
-
28Some considerations in software engineering
- A Component is a tested, special purpose software
unit which is reusable, adaptable and portable.
In software terms, components are also called
component ware (CM). - Framework is the combination of components that
can be plugged into an application.
29- A Software interface is the program that makes it
possible for components to interact and
interoperate with each other. - Eg. JAVA BEANS
- Software Entities are the processes,
requirements, products and resources of a
software engineering landscape.
30- Software Requirement Specification (SRS) This
is a blueprint for the complete design of a
software product.
31Major software Quality Factors
- Portability
- Reliability
- Efficiency
- Accuracy
- Robustness
- Correctness
32Reusability Criterion
- Portability means transfer of software from one
system to other. - Platform Independence means it can execute on any
type of platform.
33Software Evolution
- A genotype provides information about a member of
a population. - A phenotype characterizes the behavior of a
population member. - Evolution pattern where why what when
how by-whom.
34Software Life-Cycle
- This is the period of time beginning with a
concept for a software product and ending
whenever the software is no longer available for
use. - The Software life-cycle typically includes the
following - Requirements, Analysis, Design, construction,
testing (Validation), installation, operation,
maintenance, and retirement.
35Software Engineering approach
- The application of a systematic, disciplined,
quantifiable approach to development, operation,
and maintenance of software that is, the
application of engineering to software. - The specification, development, management, and
evolution of software systems. - A discipline whose aim is the production of
quality software, delivered on time, within
budget, and satisfying users' needs. - Designing and developing high-quality software.
Application of computer science techniques to a
variety of problems.
36What is a CASE tool ?
- CASE stands for Computer Aided Software
Engineering it can be used to mean any
computer-based tool for software planning,
development, and evolution.
What is a Function Point ?
- Function points and feature points are methods of
estimating the "amount of functionality" required
for a program, and are thus used to estimate
project completion time. The basic idea involves
counting inputs, outputs, and other features of a
description of functionality.
37What is a BUG?
- A Fault, Failure, Mistake.
What is a Clean Room?
- 'Clean room' is a software process based on
mathematical verification of components and
system-level testing.
38What are the two major types of testing?
- The following are the two major groups of testing
- i) Black Box testing
- ii) White Box testing.
39Black Box testing
- Functional or black box testing is an approach to
testing where the tests are derived from the
program or component specification. - The system is a black box whose behavior can only
be determined by studying its inputs and the
related outputs. - Another name for this is the functional testing
because the tester is only concentrated with the
functionality and not the implementation of the
software.
40White box testing
- Using white box testing methods, the software
engineer can derive test cases that do the
following - Guarantee that all independent paths with in a
module have been executive once at least. - Exercise all logical decisions on their true and
false sides - Exercise all loops, data flow, conditional
testing are working
41What are Check Points?
- Checkpoints enable you to compare the current
behavior of your application to its expected
behavior. - GUI checkpoints check information about GUI
objects. For example, you can check that a button
is enabled or see which item is selected in a
list. - Database checkpoints check the data content in a
database. - Text checkpoints read text in GUI objects and
in bitmaps, and enable you to check their
contents. - Bitmap checkpoints compare a "snapshot" of a
window or an area in your application to an image
captured in an earlier version.
42Levels of testing
- Unit testing
- Generally the code which is generated is
compiled. The unit test is white box oriented and
the steps can be conducted in parallel for
multiple components. - 1. The module Interface is tested to ensure that
information properly flows into and out of the
program unit under test. - 2. The local data structure is examined to ensure
that data stored temporarily maintains its
integrity during all steps in an algorithms
execution. - 3. Boundary conditions are tested to ensure that
the module operates properly at boundaries
established to limit and restrict processing - 4. All the statements are executed at least once
and error handling paths are tested
43- Integration testing-
- Integration testing is a systematic technique for
constructing the program structure .In
integration test you have like - Top down
- Bottom up
- Regressive
- Performance testing
- Recovery testing
- Security Testing
- Acceptance Testing
44Programming team structure
- Democratic team members participates in
decision making.
45- Chief programmer assisted and supported by the
team members.
Chief programmer
Back-up program consultant
Librarian
Junior Programmer
46- Hierarchical Team Structure
Senior Programmers
Project Leader
Junior Programmers
Junior Programmers
47Data bank
- CLEAN ROOM PORTABILITY
- BLACK BOX BUG
- FUNCTION POINT ROBUSTNESS
- EFFICIENCY SOFTWARE ENTITIES
- SOFTWARE REQUIREMENT SPECS.
- FRAMEWORK
48assignment
- Normalization
- All normal forms
- How to normalize many to many relation
- What is a procedure Give one example?