Professional Documents
Culture Documents
Software Process John Wiley
Software Process John Wiley
Science
Barcelos, Rafael; BenQ Mobile, PC Software Development
Júnior, Meuse; Universidade Federal de Pernambuco, Computer
Science
Maciel, Paulo; Universidade Federal de Pernambuco, Computer
er
Science
Júnior, Vicente; Universidade Federal do Amazonas, Computer
Science
Re
http://mc.manuscriptcentral.com/spip
Page 1 of 10 Software Process: Improvement and Practice
1
2 Towards An Agile Methodology for Building Embedded Real-Time Systems
3
4 Lucas Cordeiro1,3 , Raimundo Barreto1 , Rafael Barcelos3 , Meuse Oliveira2 ,
5 Vicente Lucena1 , and Paulo Maciel2
6
1
7 Departamento de Ciência da Computação - Universidade Federal do Amazonas (UFAM), Brazil
8 rbarreto@dcc.ufam.edu.br and vicente@ufam.edu.br
9
2
10 Centro de Informática - Universidade Federal do Pernambuco (UFPE), Brazil
11 {mnoj, prmm}@cin.ufpe.br
12 3
13 BenQ Mobile Phones - Research and Development Center, Brazil
14 {lucas.cordeiro, raf ael.barcelos}@benq.com
15
16 February 26, 2007
17
18
19 Abstract solve the problems at hand in an empirical way [2]. An-
20 other important point is that some classes of embedded real-
Fo
21 The proposed development methodology combines agile prin- time systems may put lives or business-critical functions at
22 ciples with organizational patterns and adapts them to build risk (mission criticality). Therefore, these systems should
23 embedded real-time systems focusing on the system’s con- be treated differently from the case where the only cost of
24 straints. The hardware/software partitioning and platform- failure is the project’s investment.
rP
25 based design are used in the proposed methodology to support Based on this context, we propose a development method-
26 the embedded system designer for meeting the system’s con- ology based on the agile principles such as adaptive plan-
27 straints in an iterative and incremental way and for reducing ning, flexibility, iterative and incremental approach in or-
28 substantially the design time and cost of the product. In order der to make the development of embedded real-time systems
29
ee
to discuss the strengths and weakness of this methodology, a easier. To achieve that, this methodology is composed by
30 case study involving a pulse oximeter is also presented. best practices from Software Engineering and Agile methods
31 Keywords: Agile methodologies, Organizational Pat- (Scrum and XP) which aim at minimizing the main problems
32 terns, Embedded Agile Development, Platform-Based Design, present on the embedded software development context (i.e.
rR
33
Real-time Software. requirement volatility and risk management), and by oth-
34
ers practices that are needed to achieve embedded real-time
35
36 systems (i.e. platform-based design [3]). In this paper, the
37
1 Introduction methodology and its components (roles, process and tools)
ev
38 are described.
The micro-controllers becoming cheaper, smaller and more The remainder of this paper is organized as follows: Sec-
39 reliable make them economically attractive to be used as
40 tion 2 summarizes the related works. Section 3 overviews
computer systems in several appliances. Approximately the agile methods and patterns that were integrated into the
41
iew
3 billion of micro-controllers (µC) are sold each year and proposed methodology. Section 4 describes the proposed ag-
42
smaller µC (4-,8-, and 16-bit) are dominating the market ile methodology and section 5 shows the application of the
43
and adding value to products [1]. The embedded computer proposed methodology in the development of a pulse oxime-
44
systems are used in a wide range of system from machine ter. Finally, section 6 summarizes this paper and identifies
45
condition monitoring to airbag control systems. As the sys- the next steps from this research.
46
47 tem complexity increases, its development lifecycle is also af-
48 fected. Because of that, system development methodologies
49 must be applied in order to manage the team size, the prod- 2 Related Works
50 uct requirement (scope), and meet the project’s constraints
51 (time-to-market and costs). Embedded software development teams usually do not make
52 Nevertheless, many development methodologies that are use of development methodologies or any other more complex
53 used to produce software that runs on the personal com- software engineering concept [2]. There are different reasons
54 puters (PC’s) are not appropriate for developing embedded that explain this fact, but the main one is the developers’
55 real-time systems. This kind of system contains very differ- lack of maturity related to software engineering practices.
56 ent characteristics such as dedicated hardware and software, Nevertheless, we identified in the literature through a biblio-
57 and constraints that are not common to PC’s based systems graphical review, three different development methodologies
58 (e.g. energy consumption, execution time, memory foot- that allowed us to evaluate the state of the art in this con-
59 print). Moreover, many embedded systems engineers do not text and to support us during the definition of our proposed
60 have good software engineering skills. They have hardware approach.
development skills and often use programming languages to One of the results from this review is a paper that describes
http://mc.manuscriptcentral.com/spip
Software Process: Improvement and Practice Page 2 of 10
1
2
3
4
the experience of applying Agile approaches to the develop- 3 A Brief Look at the Agile Meth-
ment of firmware for the Intel Itanium processor family [2].
5
In this paper, Greene identified the agile practices that his
ods and Patterns
6
team successfully applied, but he did not take into account
7 In this section, a brief look at the agile principles, methods,
8 the hardware related development, one of the main parts of and patterns that were used in the proposed methodology is
9 this kind of development. Greene only mentioned that an-
presented. It identifies the main product development and
10 other Intel team was applying agile concepts and they were
management practices of the XP and Scrum methods respec-
11 having good results. Even so, the comments retrieved from tively.
12 this paper regarding the application of agile concepts were
13 very useful during the definition of our approach since it sup-
14 ports the benefits of using agile concepts in contexts beyond 3.1 Extreme Programming
15 object oriented software development.
The most recognizable agile method is eXtreme Program-
16
ming (XP) which is very communication-oriented and team-
17 The second one is the methodology proposed by Gajski [4] oriented [6]. XP is composed of 12 core practices and some
18 which aims to develop embedded systems by formally de- of its main characteristics that were integrated into the pro-
19 scribing the system’s functionalities in an executable lan- posed methodology include:
20 guage rather than a natural language. The executable spec-
Fo
33 Finally, Manhart and Schneider [5] related a successful in- tests are automated tests that test the functionality of
34 dustrial experience when partially adopting agile methods in pieces of the code.
35 the production of software for embedded systems. Indeed
36 they made slight modifications in a well established soft- • Coding Standard practice: Everyone involved in the
37 ware development process for the automotive branch adopt- project needs to follow the same code style. It specifies
ev
38 ing some agile elements in order to adequate their process to a consistent format for source code, within the chosen
39 new needs as flexibility and high speed software production. programming language.
40 As pointed out in the paper many other application areas
41
iew
may benefit from their experiments, nevertheless the authors XP promotes an evolutionary approach to design the sys-
42 did not presented any measurement results that could prove tem by using the first three practices described above. The
43 their expectations. main benefit of this approach is that the system grows in an
44 incremental way and it aims to reduce project’s risk and un-
45 certainty too early (risk management). Section 4 describes
46 The difference of the proposed methodology compared
how these XP practices were adapted into the proposed
47 with other methodologies can be described as follows: (i)
methodology.
48 our methodology aims to tradeoff flexibility and perfor-
49 mance by adopting highly programmable platforms, (ii)
50 hardware/software estimation and partitioning techniques 3.2 Scrum
51 are used in order to explore design alternatives and meet
the system’s constraints, (iii) by making use of the iter- Scrum is a simple and straightforward approach to manage
52
53 ative and incremental approach, the product development the software development process based on the assumption
54 can be broken in a sequence of iterations and implemented that environmental (i.e. people) and technical (i.e. tech-
55 in an incremental way, (iv) as the system functionalities in- nologies) variables are likely to change during the process [7].
56 creases iteration by iteration then the proposed methodol- Scrum is composed of 14 practices and some of its main char-
57 ogy offers clearly an iterative process where the designer can acteristics that were integrated into the proposed methodol-
58 validate the partition of a system specification produced by ogy include:
59 algorithms, (v) and last but not least, the proposed method-
60 ology adopts an adaptive planning which makes it possible • Sprint practice: The iteration is organized in 30-
to embraces changes even late in the development process. calendar-day.
http://mc.manuscriptcentral.com/spip
Page 3 of 10 Software Process: Improvement and Practice
1
2
3
• Sprint Planning practice: Consists of two meetings. and they offer patterns that help the development team de-
4
In the first meeting, the product backlog (which con- fine mechanisms for managing different versions of the work
5
tains features, use cases, enhancements, and defects) is products, develop code in parallel with other developers and
6
7 refined and re-prioritized by the product owner, stake- join up with the current state of development line, and iden-
8 holders and goals are chosen. In the second meeting, the tify what versions of code make up a particular component.
9 Scrum team figures out how to achieve the requests and
10 creates the sprint backlog that contains detailed tasks
11 to be accomplished. 4 Proposed Agile Development
12 • Sprint Review practice: The Scrum team presents Methodology
13
the results obtained at the end of each iteration by
14 The proposed methodology aims to define roles and respon-
showing the working software for the product owner,
15 sibilities and provide processes, lifecycle, practices and tools
customers and other stakeholders.
16 to be applied in embedded real-time system projects. It con-
17 • Daily Scrum practice: Daily meetings are held at tains three different processes groups that should be used
18 the same place and time with special questions to be during the system development: system platform, product
19 answered by the Scrum team. development and management.
20 The system platform processes group aims to instantiate
Fo
21 Scrum adopts the empirical process control model, i.e. the the platform for a given product. It means that the system
22 practices aim to inspect the activities and empirically deter- designer must choose the system components that will be
23 mines what to do next in order to produce the expected part of the architecture and API platforms from a platform
24 outcomes (product). The productivity and quality strongly library. After that, the system designer has still the possibil-
rP
25 depend on both skills and motivation of the people involved ity to customize the architecture and API platforms in order
26 in the process. Section 4 shows how the Scrum practices to meet the application constraints. The customization pro-
27 were adapted into the proposed methodology. cess is carried out by programming the microprocessors and
28 field-programmable gate arrays (FPGAs) integrated into the
29
ee
3.3 Patterns for Agile Software Develop- platform. The customization process is carried out by suc-
30 cessive refinements in an iterative and incremental way into
31 ment
the proposed methodology.
32 The agile patterns described by [8] can be combined with The product development processes group offers prac-
rR
33 XP and Scrum agile methods with the purpose of structur- tices to develop the application’s components and integrating
34 ing the software development process of the organizations. them into the platform. The functionalities which make up
35 These patterns are split into four different pattern languages the product are partitioned into either hardware or software
36 as follows: The project management pattern language pro- elements of the platform. The partitioning algorithms used
37
ev
vides a set of patterns that help the organization manage to carry out this task take into account the energy consump-
38
the product development, clarify the product requirements, tion, execution time, and memory size of the application’s
39
coordinate project’s activities, generate system’s build, and components. The mechanical design is also part of this pro-
40
keep the team focus on the project’s primary goals. cesses group, but it is out of the scope of this paper. The
41
iew
The piecemeal growth pattern language provides a set of partitioning technique is also applied in an iterative and in-
42
patterns that help the organization define the high-level man- cremental way.
43
agement and amount of team members per project, ensure The product scope, time, quality, and costs parameters
44
45 and maintain customer satisfaction, communicate the system are monitored and controlled by the product management
46 requirements, and ensure a common vision for all people in- processes group. These parameters also influence the system
47 volved in the product development team. The organizational platform and product development processes groups. When
48 style pattern language provides a set of patterns that help the the project starts with an infeasible project plan which needs
49 organization eliminate project’s overhead and latency, ensure corrective actions to be carried out then this processes group
50 that the organization structure is compatible with the prod- aims to get the project back on the track and ensure that
51 uct architecture, organize work to develop products by ge- the project’s parameters are met. The product management
52 ographically distributed teams, and ensure that the market processes group consists of the practices promoted by the
53 needs will be met. Scrum agile method as well as the agile patterns described
54 The people and code pattern language provides a set of in Section 3. The next subsections are concerned with de-
55 patterns that help the organization define and keep the ar- scribing the processes groups, roles and responsibilities, and
56 chitecture style of the product, ensure that the architect is the processes lifecycle of the proposed methodology.
57 materially involved in implementation, and assign feature
58 development to people in nontrivial projects. The software
4.1 System Platform Processes Group
59 configuration management pattern language is not part of
60 the organizational patterns but they were integrated into the The system platform processes group is composed of the
proposed methodology. These patterns were defined by [9] following processes: product requirements, system platform,
http://mc.manuscriptcentral.com/spip
Software Process: Improvement and Practice Page 4 of 10
1
2
3
4
5
6
7
8
9
10
11
12
13 Figure 1: System Platform Processes Group. Figure 2: Product Development Processes Group.
14
15
16 product line, and system optimization. Figure 1 depicts
17 the processes that are related to system platform processes
18 group. The product requirements process aims to obtain the
19 system’s requirements (functional and non-functional) that
20 are relevant to determine the system platform in which the
Fo
25
helps the development team setup the repository in which the
26
system platform components will be available to the product
27
development. This process also allows the development team Figure 3: Product Management Processes Group.
28
to implement and integrate system’s functionalities into the
29
ee
system and release new product versions into the market. Af-
30
ter implementing and integrating the system’s functionalities 4.3 Product Management Processes Group
31
32 into the product development line, the system optimization
process provides activities to ensure that system’s variables The product management processes group is composed of
rR
following processes: functionality implementation, task inte- the development team to implement the system’s require-
42 gration, system refactoring, and system optimization. Figure ments by managing the product and sprint backlog, coordi-
43 2 depicts the processes that are related to product devel- nating activities, generating system’s build, and tracking the
44 opment processes group. The functionality implementation product’s bug.
45 process ensures that test cases are created for every prod-
46 The bug tracking process allows the product leader to man-
uct’s functionality. This process helps increase the product age the lifecycle of the project’s issues (bug, task, and en-
47
quality and reduce the creation of complex functions. The hancement) and provide the needed information about the
48
task integration process provides means to integrate new im- product quality through the release notes for the end user.
49
plemented functionalities into the development line of the The sprint requirements process allows the development team
50
product without forcing the other team members to work to analyze, evaluate, and estimate the system’s functionali-
51
around it. ties before starting a new project’s sprint. This information
52
53 The system refactoring process supports the development is included into the sprint backlog which will help the devel-
54 team for identifying opportunity to improve the code and opment team partition the system functionalities into either
55 changing it without altering its external behavior. After hardware or software before starting the sprint.
56 refactoring the code, the system optimization process allows The product line process guarantees that the system func-
57 the development team to optimize small part of the code by tionalities implemented during the sprint will be integrated
58 making use of profiler tools that monitor the program and into the product development line. This process also helps
59 tells where, for instance, it is consuming time, energy, and the development team to release new product versions into
60 memory space. This process guarantees that software met- the market. The implementation priority process helps the
rics meets the system constraints. product leader manage any kind of interruptions that may
http://mc.manuscriptcentral.com/spip
Page 5 of 10 Software Process: Improvement and Practice
1
2
3
4
impact the project’s goals. This process guarantees that the 4.5 Processes Lifecycle
project’s tasks are 100 percent completed after initiated.
5 The proposed agile methodology consists of five phases:
6 Exploration, Planning, Development, Release, and Mainte-
7 nance. In the Exploration phase, the customers provide re-
4.4 Roles and Responsibilities
8 quirements for the first product release. These requirements
9 The proposed methodology involves four different roles and are included into the product backlog by the platform owner.
10 the responsibility of each role is described as follows: After that, the platform owner and product leader estimate
11 Platform Owner: Platform owner is the person who the requirements with no item larger than 3 person-days of
12 is officially responsible for the products that derive from a effort. In this phase, the development team identifies the
13 platform and application constraints and estimates the sys-
given platform. This person is responsible for defining qual-
14 tem’s metrics based on the product backlog items. With this
ity, schedule and costs targets of the product. He/she must
15 information at hand, the development team is able to define
also create and prioritize the product backlog and ensuring
16
that it is visible to everyone. Platform owner is also respon- the system platform that will be used to develop the product
17
sible for choosing the goals for the next sprint and reviewing in the next phases.
18
the product with other stakeholder at the end of iteration. In the Planning phase, the platform owner and customers
19
Product Leader: Product leader is responsible for the identify more requirements and prioritize the product back-
20
Fo
21 implementation, integration and test of the product ensur- log. After that, the development team spends one day to
22 ing that quality, schedule, and cost targets defined by the estimate the sprint backlog items and decompose them into
23 platform owner are met. He/she is also responsible for medi- tasks. The tasks that make up the sprint backlog must take
24 ating between management and development team as well as from 1 to 16 hours to be completed. Explanatory design and
rP
25 listening to progress and removing block points. If the prod- prototypes may also be developed at this phase in order to
26 uct is composed by several components and involves several help clarify the system’s requirements.
27 development teams then he/she must work very close to the In the development phase, the team members implement
28 feature leader (described below). new functionalities and enhance the system based on the
29 Feature Leader: Feature leader is responsible for man- items of the sprint backlog. The daily meetings are held
ee
30 aging, controlling and coordinating subsystem projects, pre- at the same time and place with the purpose of monitoring
31 integration projects, external suppliers that contribute to a and adapting the activities to produce the desired outcomes.
32 defined set of features. The feature leader also tracks the At the end of the each iteration, unit and functional tests
rR
33 progress and status of the feature development (deliverables, are executed in a continuous integration build. System opti-
34 integration and test status, defects, and change requests) and mization also takes place during this phase. The last sprint
35 reports the status to the product leader. provides the product to be deployed in the operational envi-
36 Development Team: Development team which may ronment.
37 consist of programmers, architects, and testers are respon- In the Release phase, the product is installed and put into
ev
38 sible for working on the product development. The amount practical use. During this phase, it usually involves the iden-
39 of work that will be addressed in the project’s iterations is tification of errors and enhancement in the system services.
40 solely up to this team. They must also assess what can be ac- Therefore, the platform owner and customers decide if these
41
iew
complished during the product development. Therefore, the changes will be included in the current or subsequent re-
42 lease. This phase aims to deliver the release product and
development team has the authority to make any decisions,
43 needed documentation to the customer. The Maintenance
do whatever is necessary to do (according to the project’s
44 phase may also require more sprints in order to implement
guidelines), and ask for any block points to be removed.
45 new features, enhancement and bug fixes raised in the release
46 If the product to be developed is small, i.e. it is composed
of few components and does not require other development phase.
47
48 teams to implement the product’s functionalities then one
49 product leader and the development is enough for the prod-
uct development. On the other hand, if the product is com- 5 Applying the Proposed Method-
50
51 posed by several components and requires other development ology
52 team to implement the product’s functionalities then another
53 role (Feature Leader) must be involved in the processes. In This section is concerned with describing the application of
54 this context, one product leader requires feature leaders to the proposed methodology in the development of the pulse
55 manage, control and coordinate components’ projects. Each oximeter equipment. We chose the pulse oximeter as a case
56 feature leader is responsible for one development team and study because it was already developed in another work by
57 may depend on the services provided by the components de- our research group using an ad hoc development methodol-
58 veloped by other development teams. Therefore, for medium ogy [10]. Therefore, we describe the pulse oximeter in this
59 and larger projects, one product leader and several feature section only as an example of the application of the proposed
60 leaders and development teams may be involved in the pro- methodology in the domain of embedded systems. Generally
cesses. speaking, the pulse oximeter is responsible for measuring the
http://mc.manuscriptcentral.com/spip
Software Process: Improvement and Practice Page 6 of 10
1
2
3
4 CONVERSOR
5 SPECTROPHOTOMETRIC
SENSOR
LED DRIVER
PRE-AMPLIFIER DEMULTIPLEX
6
7 MICRO-CONTROLLER
UNIT DIGITAL/ANALOG
8 INTERFACE DEMODULATOR
9
10 Test Signal ATENUATOR
SELECTOR
SIGNAL/TEST
11 SELECTOR
CONTROL
12 DC Signal FILTER
13 AC Signal INTERFACE
PROGRAMMABLE
AMPLIFIER
FILTER
33 micro-controller performs the calculation related to oxygen ter that, the final configuration would dispense unneeded
34 saturation level based on data received, and shows the result components and combine everything on one board for eco-
35 on a display. The final product contains about 5000 lines of nomical production costs. As the hardware problems are
36 C code. Due to timing and energy constraints, the sensor found or new requirements are discovered, different versions
37 signals excitation and conditioning were implemented using of the final configuration are likely to be produced. Figure 5
ev
38 hardware components while the control algorithm and the shows the evolution of the hardware platform that is typical
39 signal conversion system were implemented in software by in many embedded real-time projects.
40 the micro-controller AT89S8252 of the 8051-family. As a requirement management strategy, we could put
41
iew
http://mc.manuscriptcentral.com/spip
Page 7 of 10 Software Process: Improvement and Practice
1
2
3
4
5.2 Process for Managing the Project
5 This process would help us refine and prioritize the prod-
6 uct backlog that contains the system’s functionalities. In
7 the sprint planning, the product leader and our customer
8 could choose the goals of the next sprint based on the highest
9 business value and risks of the product backlog items. After
10 that, we could have a meeting to consider how to achieve the
11 sprint’s goals and to create the sprint backlog. The sprint
12 backlog should contain only tasks in the 4-16 hour range.
13
During the system development, the sprint backlog could
14
be updated on a daily basis as the activities were being ac-
15
complished. The product leader could hold daily meetings
16
at the same place and time with the team members with the
17
purpose of monitoring and controlling the complexity of the
18
tasks. These daily meetings would provide a great feedback Figure 6: Hardware/Software Partitioning Tool for
19
20 to the product leader and create the habit of sharing the Platform-Based Design. (a) Task Graph of the System, (b)
Fo
21 knowledge. After starting the sprint, we could implement Parameters of the System Partitioner, (c) and (d) System
22 first the functional requirements and then focus on the non- Partitioner.
23 functional requirements of the system. This approach would
24 help us obtain better optimization results because we would
rP
25 be trying to optimize the global system instead of only parts (e.g., SystemC, Java, and C/C++). Nguyen et. al. [12]
26 of the system which sometimes could not lead to the global provides a tool that enables the system designer to spec-
27 optimization. ify the system model in UML and automatically convert it
28 During this phase, system’s builds could also be gener- into SystemC code [12]. After generating the code in the
29 ated on a daily basis which could help our customer clarify selected language, hardware/software estimation tools could
ee
30 the requirements and asses the risks earlier in the develop- be used to estimate the execution time and energy consump-
31 ment process. At the end of the sprint, the product leader tion. We could use the estimation tool developed by our
32 and development team could show the results of the work research group that is capable of estimating the execution
rR
33 to the customers. This meeting aims to present the product time and energy consumption based on Assembly code [13].
34 increment, technology and business situation. These arti- Therefore, after estimating the system’s metrics, we could
35 facts would help the product leader and customers decide provide this information to our hardware/software partition-
36 the goals of the next sprint. In addition, after each sprint ing tool (see Figure 6) that is being integrated into the
37 review there would be a retrospective meeting which has the Eclipse plug-in by our research group. This tool allows the
ev
38 purpose of collecting the best practices used in the sprint user to (i) enter the system’s model, (ii) enter the objective
39 and identifying what could be improved for the next sprint. function parameters such as metrics importance and con-
40 straints, (iii) select the components of the system platform,
41
iew
http://mc.manuscriptcentral.com/spip
Software Process: Improvement and Practice Page 8 of 10
1
2
3
start implementing the tasks responsible for measuring the
4
SpO2 level in the patient’s blood. In order to implement this
5
functionality, we should first write the unit test for each stage
6
7 of computation. Thereafter, we should successfully compile
8 the unit test before really writing the functionality’s code. If
9 there would be compilation problems then the unit test for
10 this functionality should be fixed. We should also replace
11 the sensor data by a set of test data in order to run the unit
12 tests without needing to connect the sensor hardware to the
13 platform.
14 After successfully compiling the unit test, we could start
15 coding the functionality by following product’s coding stan-
16 dard defined at the beginning of the project. The functional-
17 ity’s code would be considered completely implemented only
18 after the team member successfully runs the unit test that
19 was created for the functionality. Therefore, it would ensure Figure 7: Analysis of Performance and Energy Consumption.
20 that the functionality would be in compliance with its speci- (a) Metrics and Options, (b) Probability Distribution, (c)
Fo
21 fication and the calculation of the SpO2 level in the patient’s Scenario Analysis, and (d) Probability Sweep (Average).
22 blood would be correctly performed.
23 An important point to take into account is that if there
24 is the need for splitting a given system’s functionality into product development line.
rP
25 different tasks then the unit tests should be created for each After integrating the code, the regression tests could be
26 code piece of the functionality. Nevertheless, these unit tests run in order to check if there is no compilation and semantic
27 can address logic but not timing. In order to find out spe- problems. If there is no problem then the refactoring would
28 cific problems related to the timing constraints of the sys- be completed. Another important point when applying the
29 refactoring process is that system functions might also be
ee
33 rial communication is not providing reliable data then the instance, the signal conditioning of the pulse oximeter could
34 problem might be either in the sensor (a hardware problem) be moved from software component to a full-custom logic,
35 or in the serial communication (timing delays). Therefore, an application-specific integrated circuit (ASIC), or recon-
36 domain-level testing is a crucial technique that helps isolate figurable logic component (FPGA). This process would also
37 lead to improve the system performance.
ev
After implementing the system’s functionalities, we could This process would help us identify system’s variable that
42
identify in further sprints opportunities to improve an ex- could be optimized in order to meet the system’s constraint.
43
isting code. For instance, we could identify during the pulse To optimize the system’s variables, we should first estab-
44
oximeter project that the level of the SpO2 and HR func- lish the metrics and ensure that the refactoring process has
45
tionalities have some tasks in common. Both functionalities already been applied. After that, we could run our estima-
46
47 need to collect data from the sensor and identify the maxi- tion tool [13] (see Figure 7) to monitor the program and tell
48 mum and minimum signal pulses. Therefore, the application where it would be consuming time and energy. Our estima-
49 of this process would lead to elimination of duplicated code, tion tool allows the user to analyze three metrics (Energy
50 reduction of the amount of system’s functions, and improve Consumption, Power Dissipation, Execution-time) and for
51 the system performance. each metrics there three analysis options (Probability distri-
52 But before improving the code for those tasks in common, bution, Scenario analysis, Probability sweep).
53 we should first create branches in the system repository for By using this tool we could be able to find small parts
54 not breaking an existing working code. After that, we should of the program where these system’s variables could be op-
55 verify if there is some need for updating the unit test of the timized. Thereafter, we could optimize the variables under
56 functionality. If there is no need to update the unit tests attention by hand. As in refactoring, we could also carry out
57 then we could start improving the code without altering its the changes in small steps. After each step, we should com-
58 external behavior. After refactoring the code, we could run pile, test and run the estimation tool again. If the variable
59 the unit test in order to verify if the changes are working has not been optimized then we should return the changes
60 correctly. If there is no compilation problem and the unit in the version control system and continue the optimization
test dos not fail then we could integrate our changes into the process until the variables could satisfy the constraints.
http://mc.manuscriptcentral.com/spip
Page 9 of 10 Software Process: Improvement and Practice
1
2
3
4
5
6
7
8
9
10 Figure 8: Log Output Sample.
11
12
13 5.7 Process for Tracking the Product Bugs
14 This process for tracking the product’s bugs provides activi-
15 ties to manage the lifecycle of the project’s issues (e.g., bug,
16 task, and enhancement). Therefore, this process would allow
17 us to identify a new issue during the product development
18 by using a log system as depicted in Figure 8. This log sys- Figure 9: System Platform Components.
19
tem is an extension of the idea put forth by [14] which aims
20
to eliminate the overhead caused by the printf call. There-
Fo
25
rupt Service Routine (ISR) and then subtract the timer to clude new requirements, enhancements and bug fixes), each
26
see how long the ISR took to execute. team member should create a branch in the product devel-
27
After identifying bugs in the code through either the log opment line. This branch would help the team member im-
28
system or the agile testing strategy described in the pro- plement the task without forcing the other team members
29
ee
cess for implementing new systems functionalities, the issue to work around it. After implementing and optimizing all
30
could be open in the bug tracking tool by any team member. system’s components that make up the product, the devel-
31
He/She should only provide the needed information in order opment team could create a release branch of the product
32
with the purpose of not interfering with the current system
rR
38 ing the issue was not able to reproduce the bug then he/she quirements
39 could talk directly with the person who opened the bug in This process for choosing the sprint requirements provides
40 order to get more information on how to reproduce it. activities to analyze, evaluate, and estimate the system’s
41
iew
http://mc.manuscriptcentral.com/spip
Software Process: Improvement and Practice Page 10 of 10
1
2
3
4
able incremental integration to happen in embedded real- References
time projects, the notion that subsystems should expect a
5 [1] P. Koopman. Embedded system design issues (the rest of
level of rework between iterations should be introduced.
6 the story). Proceedings of the International Conference on
7 Finally, after defining the system’s functionalities that fit
Computer Design (ICCD96), pages 310–317, 1996.
8 into an iteration, each team member should choose the sys- [2] B. Greene. Agile methods applied to embedded software de-
9 tem’s functionalities that he/she will be responsible for im- velopment. Proceeding of the Agile Development Conference
10 plementing during the sprint. After that, the development (ADC’04)., 2004.
11 team should use a set of design tools in order to partition [3] A. S. Vicentelli and G. Martin. Platform-based design and
12 the system functional specification into a set of system com- software design methodology for embedded systems. IEEE
13 ponents. Design and Test of Computers, 18(6):23–33, 2001.
14 [4] D. Gajski, F. Vahid, and S. Narayan. A system-design
methodology: Executable-specification refinement. Euro-
15
6 Conclusion pean Conference on Design Automation, Paris, France,
16
1994.
17 [5] P. Manhart and K. Schneider. Breaking the ice for agile
18 This paper described an agile development methodology and
development of embedded software: An industry experience
19 its application in the development of the pulse oximeter. In report. Proceedings of the 26th International Conference on
20 order to create the methodology, we chose two agile methods Software Engineering (ICSE04), page 3647, 2004.
Fo
21 XP and Scrum as well as organizational patterns named in [6] K. Beck and C. Andres. Extreme Programming Explained -
22 this paper as agile patterns. Scrum is explicitly intended Embrace Change. Second Edition, Addison-Wesley, 1999.
23 for the purpose of managing agile software development [7] K. Schwaber and M. Beedle. Agile Software Development
24 projects. On the other hand, XP is a collection of well-known with Scrum. First Edition, Series in Agile Software Develop-
rP
25 development practices. The agile patterns provide means to ment, Prentice Hall, 2002.
26 structure the software development process of organizations. [8] J. O. Coplien and D.C. Schmidt. Organizational Patterns
27 of Agile Software Development. First Edition, Prentice Hall,
When XP, Scrum and agile patterns are combined they
28 2004.
cover many areas of the system development life-cycle. How- [9] S. Berczuk and B. Appleton. Software Configuration Man-
29
ee
ever, the combination of Scrum, XP and agile patterns does agement Patterns. First Edition, Addison-Wesley, 2002.
30 not mean that they can directly be used to develop embed- [10] M. Oliveira. Desenvolvimento de Um Protótipo para a Me-
31 ded systems. Slightly changes were needed to: (i) adopt pro- dida Não Invasiva da Saturação Arterial de Oxigênio em
32 cesses and tools to optimize the product’s design rather than Humanos - Oxı́metro de Pulso. Master thesis, Center for
rR
33 take paths that lead to designs that have no chance of sat- Informatics at Federal University of Pernambuco, 2002.
34 isfying the constraints, (ii) support software and hardware [11] P. Kukkala, J. Riihimki, M. Hnnikinen, T. Hmlinen, and
35 development through a comprehensive flow from specifica- K. Kronlf. Uml 2.0 profile for embedded system design.
36 tion to implementation, (iii) instantiate the system platform Proceedings of the Design, Automation and Test in Europe
37 Conference and Exhibition (DATE’05)., 2005.
ev
To illustrate the use of the processes and tools of the pro- [13] M. Jr. Oliveira, S. Neto, P. Maciel, R. Lima, A. Ribeiro,
42
43 posed methodology, we described how it could be applied to R. Barreto, E. Tavares, and F. Braga. Analyzing software
develop the pulse oximeter equipment. In this case study, performance and energy consumption of embedded systems
44
we used UML notation to specify the application function- by probabilistic modeling: An approach based on coloured
45 petri nets. ICATPN 2006, LNCS 4024, pp. 261281, 2006.,
46 alities and convert them into programming languages to ap-
ply the estimation and partitioning tools. For further steps, page 261281, 2006.
47 [14] N. V. Schooenderwoert and R. Moriscato. Taming the em-
48 we are researching models that can carry enough informa-
bedded tiger - agile test techniques for embedded software.
49 tion about the ultimate physical implementation at a high Proceeding of the Agile Development Conference (ADC’04).,
50 abstraction level and achieve better results in terms of func- 2004.
51 tional correctness (e.g., Timed Petri Nets). Moreover, we [15] Mike. Cohn. Agile Estimating and Planning. Robert Martin
52 are planning experimental studies where the methodology Series, Prentice Hall, 2005.
53 will be observed while applied. After that, our goal is to in-
54 troduce the proposed methodology step-by-step at BenQ by
55 using traditional measurement framework.
56
57
58 7 Acknowledgements
59
60 This work is partially supported by Brazilian Council of Re-
search CNPq under grant number 55.3164/2005-8.
10
http://mc.manuscriptcentral.com/spip