Unit III New
Unit III New
➢ PM is required for
➢ Predictability
➢ Analyze the time to finish the product (PDS = no of person days )
➢ Co-ordination
➢ Resources (developers) needed to do the job
➢ Risk mimization
➢ Backup of resources to overcome critical situation
➢ Ensuring defective product is not developed
3. Increased productivity
➢ It is a Measure of efficiency as well as ROI
➢ How many resources are utilized to build the product, how much investment required, how much
time is taken for developing the project
➢ It is based on total man power efficiency
Study activity
ANALYSIS:
Analyze and
document functional
and non-functional
requirements
Requirement
Interface definition Document
specification
and documentation review
document
Advatages:
• Data can be used as reference for similar product development in future.
• More responsive to changing user needs.
• Product development can be stopped at any stage with a bare minimum
working product.
Disadvantages:
• It assumes all the analysis can be done without doing any design or
implementation
• The risk analysis is performed only once.
• The working product is available at many stages
• It is similar to iterative model and the product is developed in multiple cycles.
• The only difference is that, Prototyping model produces a refined prototype of
the product at the end of each cycle instead of functionality/feature addition in
each cycle as performed by the iterative model.
• There won’t be any commercial deployment of the prototype of the product at
each cycle’s end.
• The shortcomings of the proto-model after each cycle are evaluated and it is
fixed in the next cycle.
• After the initial requirement analysis, the design for the first prototype is
made, the development process is started.
• On finishing the prototype, it is sent to the customer for evaluation.
• The customer evaluates the product for the set of requirements and gives
his/her feedback to the developer in terms of shortcomings and improvements
needed.
• The developer refines the product according to the customer’s exact
expectation and repeats the proto development process.
• After a finite number of iterations, the final product is delivered to the
customer and launches in the market/operational environment
Capture Simulate
Capture Simulate
Capture Simulate
Capture Simulate
start
HW SW
HW SW
Designed by independent
groups of experts Designed by Same group of
experts with cooperation
System
Description
Modeling
Software Hardware
Interface synthesis
synthesis
synthesis
Control floor
req
b1 Buttons inside
... b2
bN elevator
Request up1
up2 up/down
dn2 buttons on each
Resolver up3
dn3 floor
...
dnN
• State machine model
FSM
FSM model for Automatic Tea/Coffee
vending machine
SEQUENTIAL PROGRAMMING MODEL
Sequential Program model (seat belt
warning)
Flow chart - Seat belt warning system
• Sequence diagram
Sequential programming model
• Use of multiple function calls sequentially
Sequential Programming Model of an ACVM
Concurrent model
Concurrent process model
• Describes functionality of system in terms of two or more concurrently executing subtasks
• Many systems easier to describe with concurrent process model because inherently multitasking
• E.g., simple example:
• Read two numbers X and Y
• Display “Hello world.” every X seconds
• Display “How are you?” every Y seconds
• More effort would be required with sequential program or state machine model
PrintHelloWorld
Enter X: 1
ReadX ReadY
Enter Y: 2
Hello world. (Time = 1 s)
PrintHowAreYou
Hello world. (Time = 2 s)
How are you? (Time = 2 s)
Hello world. (Time = 3 s)
time How are you? (Time = 4 s)
Hello world. (Time = 4 s)
...
Subroutine execution over time
80
Sample input and output
ConcurrentProcessExample() {
x = ReadX()
y = ReadY()
Call concurrently:
PrintHelloWorld(x) and
PrintHowAreYou(y)
}
PrintHelloWorld(x) {
while( 1 ) {
print "Hello world."
delay(x);
}
}
PrintHowAreYou(x) {
while( 1 ) {
print "How are you?"
delay(y);
}
}
Simple concurrent process example
Concurrent running of the processes in an
ACVM
Concurrent processing program model
Object oriented model
• Use cases:
• User
presses the floor button to summon the lift
• presses the elevator button to make the lift move to the desired floor
Floor Button/Elevator Button
illuminates when pressed
• places a elevator request when pressed
Elevator
• Moves up/down as per instruction
• Opens/closes the door
Object Oriented Programming Model
A class can thus create many objects by copying the group and
making it functional.
Each object is functional.
Each object can interact with other objects to process the
states as per the defined behavior.
A set of classes and their objects then gives
the application program
Example of the ACVM classes and objects
1.Class GUI for graphic-user interaction. It has two methods
display_menu( ) and
get_user_input ( ) and for obtaining input for the choice of
chocolate from the child. It has method set_choice ( ) to set
the choice
selected
2. Class Read_Coins ( ) for reading the coins
inserted. It has a method read ( ), read ( ) and
read to read one, two and five rupee coins
from three ports and a method sum ( ) for
summing the total coins
3. It has methods, get_choice ( ) to get the choice and deliver ( ) for delivering
the chocolate.
4. It has methods display_wait ( ) and
display_thanks ( ) for display wait message
and thank message.
Class GUI for graphic-user interaction.
It has two methods display_menu ( ) and get_user_input ( ) and for obtaining
input for the choice of chocolate from the child.
It has method set_choice ( ) to set the choice selected
• both software and hardware are being designed in parallel
• Time flows from the left and proceeds through seven phases:
1. Product specification
2. Partitioning of the design into its software and hardware components
3. Iteration and refinement of the partitioning
4. Independent hardware and software design tasks
5. Integration of the hardware and software components
6. Product testing and release
7. On-going maintenance and upgrading
Considerations for choosing the right microprocessor for
an embedded application.
• Is it available in a suitable implementation?
• Is it capable of sufficient performance?
• Is it supported by a suitable operating system?
• Is it supported by appropriate and adequate tools?
Device Drivers
• The availability of device drivers often is tied to the need to develop a board
support package (BSP).
• The BSP consists of the set of drivers and the integration of those drivers into
the RTOS kernel so that the RTOS operates smoothly with your hardware
during development and in the field.
• You must be experienced to create a BSP because it can be an extremely
difficult, defect-prone, and time consuming activity.
• Many RTOS customers are influenced by the availability of a BSP for their
hardware.
• This is particularly true if most of the processing hardware is a commercial off-
the-shelf (COTS), single-board computer.
• Alternatively, the design team might choose to have the RTOS vendor’s
engineering team develop the BSP.
• Although it’s an attractive alternative that can significantly reduce the
development risks, it also can be costly.
Debugging Tools
• RTOS vendor is in the customer’s decision process at an early stage, they
have the opportunity to influence strongly how the development budget is
apportioned.
• Although this can be self-serving because the RTOS vendor realizes a
significant portion of its revenue from the sale of debugging tools, it also can
be good for the customer.
• Debugging real-time software running under a commercial RTOS is not an
easy process.
• In most cases, the user doesn’t have visibility into the RTOS code itself, so the
engineer must attempt to guess what’s going on in the system. Having RTOS-
aware tools is a great help in debugging this class of problems.
• If an RTOS vendor recommends its tool as the tool of choice, it’s legitimate to
question the assertion, but it’s also important to ask other vendors about
their abilities to debug code running under this RTOS.
Standards Compatibility
• Because many embedded systems control devices that are mission
critical, it makes sense to be sure the RTOS software you choose has
already gone through a certification process and is deemed safe.
• For example, one RTOS vendor prominently advertises that its RTOS was
chosen for the Mars Rover.
• This fact might or might not be relevant for your application, but it does
convey a certain message about the reliability of the vendor’s code base.
Technical Support
• For most people, reading a technical manual is a painful experience.
• First, you’re not even sure the information is in there.
• If the information happens to be in the manual, it’s either hard to find or
incredibly obtuse, so you phone the vendor.
• Don’t underestimate the need for first-class tech support.
• Your next project could be at risk of failure without it.
Tool Chain Availability
• Choosing the embedded design and debug development tools is as important as choosing the
processor and RTOS.
• In some ways, the tool choices are even more important.
• If you don’t select the right tools up front, when design decisions also are being made, debugging
your design might take so long that the product will miss its market window.
• If you miss Comdex and are unable to show off your next generation of laser printer, for example,
it might not be worth your while to continue the product development.
• Multiprocessor designs are perfect examples of the necessity for debug strategies.
• Some telecommunications switches today contain more than 200 independent microprocessors,
happily sending terabytes of data per second back and forth to each other.
• An engineering team has no hope of debugging such a system if they didn’t design a debug
strategy at the same time they designed the system.
• When evaluating the tool chain, we should look for good, integrated coverage of these three
broad categories:
• Compiler tools
• Hardware and software debugging tools
• Performance measuring tools
Iteration and Implementation
• The iteration and implementation part of the process represents a somewhat blurred area between
implementation and hardware/software partitioning (refer to in which the hardware and software paths diverge.
• This phase represents the early design work before the hardware and software teams build “the wall” between
them.
• The design is still very fluid in this phase. Even though major blocks might be partitioned between the hardware
components and the software components, plenty of leeway remains to move these boundaries as more of the
design constraints are understood and modeled.
• Earlier in this chapter, Mann represents the iteration phase as part of the selection process. The hardware
designers might be using simulation tools, such as architectural simulators, to model the performance of the
processor and memory systems.
• The software designers are probably running code benchmarks on self-contained, single-board computers that use
the target micro processor.
• These single-board computers are often referred to as evaluation boards because they evaluate the performance
of the microprocessor by running test code on it.
• The evaluation board also provides a convenient software design and debug environment until the real system
hardware becomes available.
• We can learn more about this stage in later chapters. Just to whet your appetite,
• however, consider this: The technology exists today to enable the hardware and software teams to work closely
together and keep the partitioning process actively engaged longer and longer into the implementation phase.
• The teams have a greater opportunity to get it right the first time, minimizing the risk that something might crop
up late in the design phase and cause a major schedule delay as the teams scramble to fix it.
Detailed Hardware and Software Design
• This isn’t intended to teach you how to write software or design hardware.
• However, some aspects of embedded software and hardware design are unique to
the discipline and should be discussed in detail.
• For example, after one of lectures, a student asked, “Yes, but how does the code
actually get into the microprocessor?” Although well-versed in C, C++, and Java, he
had never faced having to initialize an environment so that the C code could run in
the first place.
• Therefore, I have devoted separate chapters to the development environment and
special software techniques.
• I’ve given considerable thought how deeply I should describe some of the
hardware design issues.
• This is a difficult decision to make because there is so much material that could be
covered.
• Also, most electrical engineering students have taken courses in digital design and
microprocessors, so they’ve had ample opportunity to be exposed to the actual
hardware issues of embedded systems design.
• Some issues are worth mentioning, and I’ll cover these as necessary.
Hardware/Software Integration
• The embedded system tool community has made almost no effort to develop
tools specifically targeted to products already in service.
• At first blush, you might not see this as a problem.
• Most commercially developed products are well documented, right?
• The majority of embedded system designers (around 60 percent) maintain and
upgrade existing products, rather than design new products.
• Most of these engineers were not members of the original design team for a
particular product, so they must rely on only their experience, their skills, the
existing documentation, and the old product to understand the original design
well enough to maintain and improve it.
• Embedded system design can be divided into four major tasks:
• partitioning the function to be implemented into smaller, interacting
pieces;
• allocating those partitions to microprocessors or other hardware
units, where the function may be implemented directly in hardware
or in software running on a microprocessor;
• scheduling the times at which functions are executed, which is
important when several functional partitions share one hardware
unit;
• mapping a generic functional description into an implementation on
a particular set of components, either as software suitable for a given
microprocessor or logic which can be implemented from the given
hardware libraries.