1. What do
you mean by software engineering?
Software engineering is the study and an
application of engineering to the design, development, and
maintenance of software.
2. Size
factors:
1. Total effort devoted to software.
It deals
with the amount of total cost is spent on hardware as well as software for the
development of software product.
2. Distribution of effort:
Distribution of effort during the development phase of a software
product is 40 percent for analysis and design, 40 percent for integration and
acceptance testing, and 20 percent for implementation, debugging and unit
testing.
3. Project size categories:
Determines
the level of management control and the types of tools and techniques required
on a software project.
E.g. Personal software
1
.trivial project:
Involves
one programmer working for part time, or for few days or few weeks and results
in a program less than 500 statements packaged in 10 to 20 subroutines.
2.
Small project:
Employs
one programmer for 1 to 6 months and results in a product containing 1000 to
2000 lines of source code packaged in 25 to 50 routines.
E.g. scientific applications written by engineers to
solve numerical problems.
3.
Medium project:
Employs
2 to 5 programmers working for 1 to 2 years and results in 10,000 to 50,000
lines of source code packaged in 250 to 1000 routines.
E.g. Assemblers, compilers, inventory systems etc.
4.
Large project:
Requires
5 to 20 programmers for a period of 2 to 3 years and results in a system of 50,000
to 100,000 source statements packaged in several subsystems.
E.g. Large compilers, small time sharing systems, database
packages…..
5.
Very large project:
Requires
100 to 1000 programmers for a period of 4 to 5 years and result in a software
system of 1 million source code.
E.g. Real time processing, telecommunications and
multitasking…..
6.
Extremely large project.
Employs
2000 to 5000 programmers for a period of up to 10 years and results in 1
million to 10 million lines of source code.
E.g. real time processing, telecommunications and
multitasking and distributed processing.
4. How Programmers spend their time.
Deals
with how programmers spend their time on a software project.40 percent of
project effort is spent in activities like reading, reviewing, meeting and
fixing.
3. What are
the three types of activities involved in software maintenance?
1. Enhancing the capabilities of the
product
2.
Adapting the product to new processing environments
3. Correcting
bugs.
4. What are
the benefits of using systematic tools and techniques during software
development?
1.
An increase in quality and productivity during initial product development can
be expected.
2. Resulting
documentation levels and clarity of the product will permit systematic testing,
enhancement, adaption and correction.
3. Correcting
bugs.
5.Describe briefly about the managerial issues.
5.Describe briefly about the managerial issues.
Managerial issues:
Important management problems are:
1. Planning for software engineering projects is generally
poor.
2. Procedures and techniques for the selection of
project managers are poor
3. The accountability of many software engineering projects
is poor, leaving some question as to who is responsible for various project functions.
4. The ability to accurately estimate the resources
required to accomplish a software development project is poor.
5. Success criteria for software development
projects are frequently inappropriate .This result in software products that are
unreliable, difficult to use, and difficult to maintain.
6. Decison rules to aid in selecting the proper organizational
structure are not available.
7. Decison rules to aid in selecting the correct management
techniques for software engineering projects are not available.
8. Procedures, methods and techniques for designing
a project control system that will enable project managers to successfully
control their project are not readily available.
9. Procedures, techniques, strategies, and aids that
will provide visibility of progress to the project manager are not available.
10. Standards and techniques for measuring the
quality of performance and the quantity of production expected from programmers
and data processing analysts are not available.
Methods for solving these problems are :
1. Educate and train top management, project
managers, and software developers.
2. Enforce the use of standards, procedures, and
documentation.
3.Analyze data from prior software projects to
determine effective methods.
4. Define objectives in term of quality desired.
5. Define quality in terms of deliverables.
6. Establish success priority criteria.
7. Allow for contingencies.
8. Develop truthful ,accurate cost and schedule
estimates that are accepted by management and customer.
9. Select project managers based on ability to
manage software project s, rather than on technical ability availability.
10. Make specific work assignment to software
developers and apply job performance standard.
6. What are
the factors that influence quality and productivity of a software project?
1.
Individual ability:
ü It
deals with the individual effort of the programmer given to the software
productivity and quality.
ü The
two aspects of individual ability are
- General competence
of the individual-competent data processing programmers is not usually
competent in scientific application areas.
- Familiarity
of the individual with the particular application area-lack of
familiarity with the application area can result in low productivity and
poor quality
2.
Team communication:
Programming has been traditionally treated as an individual and private
activity.
If
the programmers prefer to work alone it is possible to misunderstand the role
of the modules in an evolving system and to make mistakes that may not be
detected.
So
the recent innovation of software engineering such as design reviews,
structured walkthroughs, and code reading exercises help the programmers to make
the software more visible and improves communication among programmers.
3.
Product complexity:
Three
levels of product complexity are
1. Application programs:
include scientific and data processing routines written in a high level
language such as FORTRAN, COBOL or Pascal.
2.
Utility
programs: include compilers, assemblers, linkage editors and
loaders written in high level language such as Pascal or Ada or in Assembly
language.
3.
System
Programs: include data communication packages, real time
process control systems and operating system routines which are written in
assembly language or a high level language such as PL/I or Ada
Application programs
have the highest productivity and systems program has the lowest productivity.
The effort required to
develop and maintain a software product is a nonlinear function of product size
and complexity.
Failure to allow for
the nonlinear scaling of size and complexity is a primary reason for cost and
schedule overruns on many software projects.
4. Appropriate
notations:
The representation schemes are of importance in software
engineering.
Good notation clarify
the relationships and interactions of interest, poor notations complicate and
interfere with good practice.
Appropriate notations
provide communication among project personnel and introduce the possibility of
using automated software tools to manipulate the notations and verify proper
usage.
5. Systematic
approaches:
Standard practices is
one of the distinguish characteristics of a professional discipline.
Various systematic
approaches are used for software development and maintenance.
6. Change
control:
Software is tailored to
satisfy differing requirements of different customers.
The Flexibility of
software is a great strength and great source of difficulty in software engineering.
7. Level
of technology:
The level of technology
used on a software project accounts factors such as programming language, the
machine environment, the programming practices and the software tools.
Modern programming
language provide improved facilities for data definition and data usage, improved
constructs for specifying control flow, better modularization facilities, user
defined exception handling and facilities for concurrent programming.
The machine environment
includes the set of hardware and software facilities available for developing,
using and maintaining a software product.
Modern programming
practices include use of systematic analysis and design techniques, appropriate
notations, structured coding, systematic techniques for examining design documents
and source code, and systematic testing.
8. Level
of reliability:
Reliability is gained
with great care in analysis, design, implementation, system testing and
maintenance of the software product.
Both human and machine
resources are required to obtain increased reliability.
9. Problem
understanding:
The software engineer
does not understand the application area and has trouble communicating with the
customer because of differences in educational backgrounds, viewpoints and
technical jargon.
Careful planning, customer
interviews, task observation, prototyping, preliminary version of user’s manual
and precise product information can increase both customer and developer
understanding of the problems to be solved
10. Available
time:
The difficulty of a
project and the resulting programmer productivity and software quality are
sensitive functions of the time available for product development or modification.
Determining optimum
staffing levels and proper elapsed times for various activities in software
product development is an important and difficult aspect of cost and resource
estimation.
11. Required
skills:
Good communication
skills, diplomacy and knowledge of application area, creative problem solving
skills, absolute consistency in cross referencing, deductive skills, good
writing skills, ability to place oneself in maintainers position, software
engineers should possess social skills to interact with managers, customers and
other engineers. These skills must present among members of the programming
team.
12. Facilities
and resources:
Factors such as good
machine access and quiet place to work, reserved parking places and keys to
executive rest rooms.
Software project managers
must be effective in dealing with these factors that motivate and frustrate
programmers if they are to maintain high programmer productivity, high product
quality, and high job satisfaction.
13. Adequacy
of training:
Software engineering is
concerned with analyzing, designing, constructing, testing, verifying, documenting,
operating, and maintaining software products. Due to lack of training provided
by the universities entry level programmers are poorly prepared to become
software engineers.
14. Management
skills:
Software projects are
supervised by managers who have little
knowledge of software engineering find difficult in project management due to
differences in design methods, notations, development tools.
Many organizations
offer project management training to software engineers to prepare them for
project management tasks.
15. Appropriate
goals:
The primary goal of
software engineering is development of software products that are appropriate
for their intended use.
Productivity and
quality factors can be achieved by adhering to the goals and requirements established
for the software product during project planning.
16. Rising
expectations:
Interrelated aspects to
rising expectations:
1. how
much functionality, reliability and performance can be provided by a given
amount of development effort
2. issue
of fundamental limitations of software
technology.
17.
Other factors.
- Experience
with programming language
- Database
size
- Stability
of the computing system used to develop or modify the software.
No comments:
Post a Comment