Software Engineer PDF Unit 1 - 3
Software Engineer PDF Unit 1 - 3
– User – programmer
– customer – tester
– project manager – configuration manager
– system engineer – quality assurer
– software architect – documenter
– software designer – trainer
and so forth
1. Analysis 4. Documentations
2. Design 5. Software maintenance
3. Verification &Testing 6. Project Management
Computer Software:
• It includes the Source code and all the associated documents and documentation that
constitute the software product.
Components of Software products :
Documentation:
Distribution of Effort:
• Life cycle of Software
• The life span of software products is one to 3 years for development 5to 15 years for
maintenance.
Software maintenance involves 3 activities.
a) Enhancing the capability of the product.
b) Adapting the products to new processing environments
c) Correcting bugs.
Trivial Project:
No.of programmers : 1
Duration : for a few days, few weeks
Product Size : 500 source line
Packaged in : 10 to 20 subroutines
• These Programs are often personal software Developed exclusively for the use of the
programmer.
• Small amount of formal analysis, elaborate design documentation, extensive test
planning or supporting documents are needed.
Small Project:
No.of programmers : 1
Duration : 1 to 6 months
Product Size : 1000 to 2000 source lines
Level of Reliability:
• Every software product must possess basic level of reliability.
• Extreme reliability is gained only with great care in analysis,design,design
implementation,system testing and maintenance of software product.
• Both human and machine resources are required to obtained increased reliability.
Problem Understanding:
• Failures to understand the true nature of the problem to be solved is a common and
difficult issue.
• Often the customer does not truly understand nature of the problem.
• Often the software engineering does not understand the application area and has
trouble communicating with the customer because of differences in educational
backgrounds view the points and technology.
• Careful planning customer interviews, task observations and prototyping, a preliminary
version of the user’s manual and precise product specification can increase both
customer and developer understanding of the problem to be solved.
Available Time:
• A software project requiring 6 programmer-months of effort can be completed by 1
programmer in 6 months or by 6 programmers in 1 month.
• Software projects are sensitive not only to total effort but also to ellapse time and the no
of people involved.
• Utilising 6 programmers for 1 month will be less effective than using 1 programmer for
6 months.
• This is because the learning curve for 6 programmers on an 1 month schedule will
occupy a large percentage of the elapsed time and because the effort required for co-
ordination and communication among 6 programmers.
Required Skill:
Software Engineering requires a vast range of skills.
Good Communications
Knowledge of application area
Requirement definition and design
Problem solving skills
Implementation of software (i.e)Good programming knowledge, no syntax error
Debugging and test plans
Inter personnel communication skill.
Facilities and Resources:
• Work related factors such as Good machine access and quiet place to work are more
important.
• Software project managers must be effective in dealing with the factors that motivate
the programmers to maintain high note on product quality, programmer productivity
and high job satisfaction.
Adequacy of Training:
Express oneself clearly in English
Develop and Validate software requirements and design specifications.
Work within application area
Perform software maintenance
Raising Expectations:
There are two interrelated aspects of raising expectations
1. How much functionality, reliability and performance can be provided by a given
amount of development effort.
2.Issues of fundamental limitations of software technology.
Appropriate Goals:
• Primary Goal of software engineering is to development of software products
for their intended use.
• Every software product must provide optimal level of
1. Generality (Broad View)
2. Reliability (Trustworthiness)
3. Efficiency
Managerial Issues:
Success of Software project involves
Technical Activities
Managerial Activities
Managers Control
1.Resources
2.Environment
• Important managers responsibility
– Software product delivered on time
– Software working according to customer’s wish
– Software within cost estimates
Other managerial responsibility:
– Business Plans
– Recruiting customers
– Developing Marketing Strategies
– Recruiting and training employees
Important Problems:
• Planning is poor
• Selection for project managers are poor (i.e) Procedures and Techniques
• Description of project is poor
• Estimation of resources for software project is poor
• Success criteria is inappropriate
Successive Versions
Functional format:
• In this approach a different team of programmers perform each phase of the Project.
• Functional format involves 3 teams
1. An analysis team.
2. A design team and implementation team.
Hierarchical team:
• In combines the aspects of the democratic team and chief programmer team.
• Each team should be limited to not more than 5 or 17 members for effective
coordination and communication.
• The Rayleigh curve is specified by two parameters: td, the time at which the curve
reaches its maximum value.
• And K, the total area under the curve, which represents the total effort required for the
project.
• The td corresponds to the time of system testing and product release for many software
products.
• Approximately 40 percent of the area under the Rayleigh curve is to the left of td and 60
percent is to the right.
• In 1976, Putnam reported that the personnel level of effort required throughout the life
cycle of a software product has a similar envelope.
• Putnam subsequently studied 50 Army software projects and 150 other projects to
determine how the Rayleigh curve can be used to describe the software life cycle.
Relational notations:
• It is based on the concept of entities and attributes.
• Entities are named elements in a system. Eg: stack, queue
• Attributes are specified by applying functions and relations to the named entities.
• Attributes specify permitted operations on entities, relationships among entities and
data flow between entities.
Implicit Notation:
• Complete of matrix element which include matrix size ,data element ,algorithm for
computing the inverse and packaging technique for inversion module.
• M x M' = I ± E
• Iimplicit equations state the properties of a solution without stating a solution method.
Recurrence Relations:
• The recursive part describes the desired value of functions in terms of other values of
the function.
• For eg successive Fibonacci numbers are formed as the sum of previous two Fibonacci
numbers.
Algebraic Axioms:
• Mathematical systems are defined by axioms.
• The axioms specify fundamental properties of a system and provide a basis for deriving
additional properties that are implied by the axioms.
• These additional properties are called theorems.
• In order to establish valid mathematical system, the set of Axioms must be complete
and consistent.
• Axiomatic specification of the last-in first-out (LIFO) property of stack objects is
specified in Figure 4.3.
• Observe that the type of data elements being manipulated, ITEM, is a parameter in the
specification, and that the specification is representation independent.
• Operations NEW, PUSH, POP, TOP, and EMPTY are named to suggest their purposes
mentioned below:
• In Figure 4.5, NEW and ADD are constructor, REMOVE is a modified and FRONT &
EMPTY are behaviors.
• Closure (R1)* denotes zero or more connected series of elements from R1.
State Oriented Notations
Decision Tables:
• They are used for recording complex decision logic.
• Orders are approved if the credit limit is not exceeded or if the credit limit is exceeded
but past experience is good or if a special arrangement has made otherwise the order is
rejected.
Event Table:
• An Event table is useful for specifying system behaviour when different stimuli results in
different modes of operations.
Transition Tables:
• Transition tables and diagrams can be used to specify the next desired state of a system.
• Transition diagram are alternate representation for Transition tables.
Petri Nets :
• Petri Nets in state oriented notations are used for specifying parallelism of operations.
• Concurrent systems are designed to permit simultaneous execution of software
components called task on multiple processors.
• Petri Nets were invented to overcome the limitations of FSM.
• Two types of nodes in a Petri net called places(are marked by tokens) and transition.
• It is important to note that four distinct types of arcs can be attached to each node.
• Arcs coming into the left side of a node carry inputs and arcs leaving the right side of a
node convey outputs.
• Arcs entering the top of a node convey control and arcs entering the bottom specify
mechanism.
• In an activity diagram the inputs and outputs arc data flows and the mechanisms arc
processors (mechanical or human).
• In a data diagram the input is the activity that creates the data object and the output is
the activity that uses the data object.
Structured System Analysis (SSA)
• There are four basic features in SSA: data flow diagrams, data dictionaries. processing
logic representations and data store structuring techniques.
• SSA DFD are similar to SADT actigrams but an additional notation is used to show data
stores.
• A data dictionary is used to define and record data elements and processing logic
representations, such as decision tables and structured English, are used to specify
algorithmic processing details.
• Processing logic representations an used to precisely specify processing sequences that
are understandable to customers and developers.
Gist
A specification is composed of three parts:
• A specification of object types and relationships between these types.
• A specification of actions which define transitions between possible states.
• A specification of constraints on states and state transitions.
• Preparing a Gist specification involves several steps:
1. Identify a collection of object types.
2. Identify individual objects (values) within types.
3. Identify relationships to specify the ways in which objects can be related to one
another.
4. Identify types and relationships that can be in terms of other types and relations.
UNIT-III
Fundamental Design Concepts
Introduction:
• There are 3 distinct types of activities in software design:
• External , (Architectural & Detailed design) Internal design.
• E.D involves planning and specifying observable characters of software product.
• Fundamental concepts of software design include
Abstraction
• It is the intellectual tool that allows us to deal with concepts apart from particular
instances.
• During software design it allows us to organize considerations until functional
characteristics data streams and stores have been established.
• Three widely used mechanism are Functional , Data and Control abstraction.
Information Hiding
• When a software system is designed using information hiding approach.
• Each module in the system hides the internal details of its processing activities.
• Here modules communicate with well defined interfaces.
Structure
• The use of structuring permits decomposition of a large system into smaller, more
manageable units with well-defined relationships to the other units in the system.
• The most general form of system structure is the network.
• A computing network can be represented as a directed graph, consisting of nodes and
arcs.
• The nodes can represent processing elements that transform data and the arcs can be
used to represent data links between nodes.
Hierarchical ordering of abstractions is established by the following rule:
• If A and B are distinct entities and if A uses B, then B is not permitted to use A or any
entity that makes use of A.
• A hierarchical ordering relation can be represented as an acyclic, directed graph with a
distinguished node that represents the root entity.
o Data coupling involves the use of parameter lists to pass data items between routines.
o Stamp coupling is more desirable than common coupling because fewer modules will
have to be modified if a shared data structure is modified.
o Control coupling involves passing control flag between modules so that one module
controls the sequence of processing step in another module.
o Common coupling modules are bound together by global data structures.
o Content coupling occurs when one module modifies local data values or instructions in
another module. They can occur in assembly language programs.
• The most desirable form of coupling between modules is a combination of stamp and
data coupling.
Cohesion
• Def: It refers to the level of strength with which different components of a software
program are inter-related with each other.
• Cohesion of elements occurs on the scale of weakest (least desirable) to strongest (most
desirable) in the following order
• Coincidental cohesion occurs when the elements within a module have no apparent
relationship with another.
• Logical cohesion implies some relationship among the elements of the module as for
example in a module that performs all input and output operations.
• Temporal cohesion here all elements are executed at one time and no parameters are
required to determine which elements to execute.
• A typical example of temporal cohesion is program initialization.
• Informational cohesion of elements in a module occurs when the module contains a
complex data structure and several routines to manipulate the data structure.
• Communicational cohesion Here the elements of a module possessing refers to the
same set of input and/or output data.
• Sequential cohesion of elements occurs when the output of one element is the input for
the next element.
• For example. "Read Next Transaction and Update Master File" is sequentially bound.
• Functional cohesion is a strong and hence desirable type of binding of elements in a
module because all elements are related to the performance of a single function.
• Examples are "Compute Square Root" , "Obtain Random Number" and "Write Record to
Output File.“
Design Notations
• The design specativation can be categorized into three levels:
a. External design specifications which describe the external characteristics of a
software system.
b. Architectural design specifications which describe the structure of the system.
c. Detailed design specifications which describe control flow, data representation.
and other algorithmic details within the modules.
• Notations used to specify the external characteristics, architectural structure, and
processing details of a software system which are represented below.
DFD
• A data flow diagram are directed graphs in which the Nodes specify processing activity
and Arcs specify data item transmitted between the processing nodes.
• A data flow diagram might specify the data flow between individual statements.
• They can be expressed using Informal Notations.
HIPO Diagram:
• The Hierarchy-Process-Input-Output was developed at IBM for Top-down software
development.
• A set of HIPO diagram contains visual table of contents.
• The visual table of content is a directory to the set of diagrams in the package.
Procedure Templates
• The procedure interface and pseudocode can be expanded directly into source code
during product implementation.
• In the early stages of Architectural Design only the information in level 1 need be
supplied.
• As Design progresses, the information on levels 2, 3 and 4 can be included in successive
steps.
• Procedure interface provide a natural transition from Architectural to Detailed design
and from Detailed design to Implementation.
• The format of a procedure interface specification is illustrated in Figure 5.10.
Pseudocode
• Pseudocode notation can be used in both the Architectural and Detailed design phases.
• Like flowcharts, pseudocode can be used at any desired level of abstraction.
• Using pseudocode the Designer describes system characteristics using short concise,
English language phrases that are structured by key words such as If-ThenElse, While-
Do.
• Pseudocode can replace flowcharts and reduce the amount of external documentation
required to describe a system.
Structured Flowcharts:
• The structured flowcharts may be preferred in situations where clarity of control flow
is to be emphasized.
• Because structured flowcharts are logically equivalent to pseudocode, they have the
same expressive power as pseudocode.
Structured English
• Structured English can be used to provide a step-by-step specification for an algorithm.
• Like pseudocode, structured English can be used at any desired level of detail.
• An example of using structured English for software specification is provided in Figure
5.9, where it is used to specify the processing plan of the Hipo diagram.
Decision Tables:
• They can be used to specify complex decision logic in high level software
specification.(ch 4)
• They are also useful for specifying algorithmic logic during detailed design.
DESIGN TECHNIQUES
•The design techniques involves developing the conceptual view of the system,
establishing system structure ,decomposing higher level function into subfunctions
and specifying algorithmic details.
• The D.T is basically based on Top down or Bottom up approach strategies.
• In the Top Down approach attention is based on global aspects,
• like customer needs, user intefaces & overall nature of the problem being solved.
• In the Bottom Up approach the designer attempts to identify set of primitives
objects, actions and relationships that will provide the basis for the solution.
• Several techniques have been developed for software design often called "Design
Methodologies"
Stepwise refinement
• Stepwise refinement is a top-down technique for decomposing a system from high-level
specifications into more elementary levels.
• It is also known as "stepwise program development" and “successive refinement”.
• stepwise refinement involves the following activities:
• Decomposing design decisions to elementary levels.
• Isolating design aspects that are not truly interdependent.
• Postponing decisions concerning representation details as long as possible.
Design Guidelines
• The following are some guidance that provide activities for organizing software design.
• Review the requirements specification and expand the external interfaces & report
formats developed during requirements analysis.
• Identify Functional & Data Abstraction , record them using Design Notations.
• Verify the system structure that satisfies the requirements.
• Specify algorithmic details for each procedure system using successive refinement ,
HIPO diagrams, pseudocode , Structured English and structured flow chart.
• Conduct CDR.
• Redesign as necessary.