[go: up one dir, main page]

EP1266284A4 - DEVELOPMENT SOFTWARE SYSTEM PRESENTING A LOGIC VIEW OF PROJECT COMPONENTS, FACILITATING THEIR SELECTION, AND MISSING SIGNAL LINKS BEFORE COMPILATION - Google Patents

DEVELOPMENT SOFTWARE SYSTEM PRESENTING A LOGIC VIEW OF PROJECT COMPONENTS, FACILITATING THEIR SELECTION, AND MISSING SIGNAL LINKS BEFORE COMPILATION

Info

Publication number
EP1266284A4
EP1266284A4 EP01922536A EP01922536A EP1266284A4 EP 1266284 A4 EP1266284 A4 EP 1266284A4 EP 01922536 A EP01922536 A EP 01922536A EP 01922536 A EP01922536 A EP 01922536A EP 1266284 A4 EP1266284 A4 EP 1266284A4
Authority
EP
European Patent Office
Prior art keywords
accordance
component
software development
development system
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP01922536A
Other languages
German (de)
English (en)
French (fr)
Other versions
EP1266284A1 (en
Inventor
Frances Cohen
Marc Abraham Bombet
Robert Dennis Lusinsky
Timothy Andrew Lewis
Marc Shane Sandusky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phoenix Technologies Ltd
Original Assignee
Phoenix Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phoenix Technologies Ltd filed Critical Phoenix Technologies Ltd
Publication of EP1266284A1 publication Critical patent/EP1266284A1/en
Publication of EP1266284A4 publication Critical patent/EP1266284A4/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Definitions

  • source code files are placed into a directory hierarchy. Different subdirectories may correspond to different software "components.” Each “component” in the directory hierarchy, whether it be a true software component or a "hardware component,” meaning software supporting the needs of a particular hardware device, may be defined further by one or more “features" stored in lower level subdirectories so that one or more features may comprise each component and there may also be “sub-features” stored in yet lower level subdirectories.
  • One or more source code files may reside in each feature subdirectory. Each component and each feature is further described by an information file that is placed into its corresponding subdirectory defining what type of platform (server, notebook, etc.) a feature is intended for, what class it is assigned to, etc.
  • Fig. 20 illustrates an outline of the portion of data shown in Fig. 19 that is selected and fed into the product make routine 900 shown in Figs. 8 and 34 to govern the building of the finished product
  • Fig. 21 illustrates an exemplary set of product configuration commands contained in the product configuration data file "platform. cfg" 2100 shown in Fig. ii;
  • Fig. 23 illustrates the contents of an exemplary feature include file "feature.inc" 2300 (Fig. 11), these contents being generated automatically by the product make routine 900 (Fig. 11) and more particularly generated by the build feature include file routine 950 (Figs. 9A and 35);
  • Fig. 42 presents a block diagram that illustrates the use of the product compent linker 3600 to customize single items taken from a table.
  • the make utility sensing more commands in the product make file 2500, continues to read commands from this file 2500, to select additional component subdirectories, and to call upon itself to execute component make commands found in makefiles associated with each additional component, as was just explained, until finally all the component source code files have been compiled or assembled and linked.
  • the new source tree entry 312 is used when the source code library tree has never before been processed, thereby making it unnecessary to perform steps such as steps 956 and 904 in Figs. 9A and 9B that check for whether existing special files need to be corrected (since it is likely no such files exist).
  • the step 402 calls for a scan of the entire tree (Fig. 4).
  • the configure product entry 702 into the configurator 700 is then taken which, at step 604, calls for access to the data in the database 1800 (Fig. 6) and then configures the product in step 3000 (see Fig. 30 for details).
  • a report is generated for the designer, and the product configuration state data 1900 is written out to disk storage.
  • the INF file includes ASCII text containing attributes used for browsing the software project and controlling the compilation process.
  • BaseClass is used to identify that two features have the same interface and provide the same basis functionality. Normally no final software product may contain two features having the same BaseClass.
  • the database is searched for each caller to see if the version is compatible with the callee.
  • the version is considered compatible if the major version number of caller and callee are the same and the callee minor version number is greater than or equal to the caller version number.
  • This information can be displayed, output to a file, etc. so that the designer is informed of any potential incompatibility.
  • the originally called routine can be optionally branched to from within the intercept routine using the EXTJMP and EXTCALL macros.
  • the linking utility will perform this by using the fix-up information in the intermediate libraries to correctly link the branch instruction to the original routine.
  • the originally called routine can be optionally removed if the intercept routine never calls it and no other piece of code in the final binary image would reference it.
  • files can be listed in a makefile, batch file, or command line application, like it is done for the creation of object libraries.
  • a centralized list can list the library files of a project.
  • the resolution of external references to public declarations can be done at alternate phases of development and build. It can done dynamically during edit of a source code file for real-time feedback to the developer, or it can be done after individual file compilation, using compilation output to provide public and reference information.
  • the listing of object modules to compile and link can be done form a batch file, or a list input for command line link execution.
  • the configurator procedure 700 creates the configuration state data, defining the configuration of the finished product, using information drawn from the database 1800 and information drawn from the product configuration file "platform. cfg" 2100.
  • the configurator 700 which in the preferred embodiment is written in C++, maintains this information in a C++ RAM data structure of classes (in the C programming sense of the word class) as is shown in Fig. 32.
  • any number of product configurations 3202 may be stored in this RAM data structure.
  • Each such product configuration may be linked to any number of classes 3204 (in the sense of the present invention), components 3206, and features 3208.
  • each may be linked to any number of dependencies 3216 ("include”s, “option”s, macros, and functions, where functions include lists, labels, function calls, and strings) as well as any number of interfaces 3218 (anything that can be publicly (between components) or privately (access limited to parents and siblings) referenced, such as procedures).
  • dependencies 3216 include
  • optional include lists, labels, function calls, and strings
  • interfaces 3218 anything that can be publicly (between components) or privately (access limited to parents and siblings) referenced, such as procedures.
  • the EXTCALL macro 1318 calls the external procedure DELAY assigned to the class TIMER using its declaration in the PUBEXT macro 1312. Since this procedure is defined in a seperately linked component, the reference to it will be fixed up by the Product Component Linker (Fig. 36).
  • the EXTCALL macro is described in Section 1.1 of the Line-by-line Description of Macros.
  • the END_PROC macro 1320 ends the procedure opened by the PUBLICJPROC macro 1316. It is described in Section 3.3 of the Line-by-line Description of Macros.
  • a Uses command is an optional command that is used to identify the location of shared code used by an object being described.
  • the build tools may use this command to identify the file as a dependency in the MAKEFILE created for the object.
  • Use of shared files is restricted.
  • objects may only use files that identify themselves as shared using, for example, a PRIVATE_PROC or PRTVATE_ ⁇ NCLUDE command with the 'Shared' attribute.
  • an object may only use shared source files that are in sibling directories, or immediate children of upstream directory nodes.
  • the Uses command includes a FilePath field that provides the relative path and filename of the shared file to be used by the object.
  • Figs. 19 and 20 are symbolic representations of the data structures contained within the configuration state data 1900, organized similarly to the database shown in Fig. 18.
  • Three components - component A 1902, component B 1904, an component C 1906 are shown, each provided with a "select” or “unselect” flag symbolically represented by a voting square with or without an "X” to indicate whether a given component is selected or not selected for inclusion in the finished product 1106.
  • the flags 1922 and 1930 for the components A and B are shown with "X”s indicating that these components are currently part of the finished product 1106.
  • the flag 1928 for the component B is shown without an "X", indicating that either by default, or because of system designer intervention, this component has not been selected.
  • the module is marked (in the BIOS. SCR file 3812) for mirrored placement into the desired regions.
  • the linker 3600 will select a location that resides at the same address within those regions.
  • step 3610 the point at which the references and definitions are actually associated and eventually linked together.
  • Fig. 38 this is where, in the context of the present invention, the final choice is made to link a given call to one procedure or to another, for example; and because the process is done by the product component linker 3600 under the direct control of the macros 3806 (through the intermediary of the external and public sectors 3802 and 3804).
  • system-designer-designated "intercept” externals (a substitute procedure that is to "intercept” and take over the functions of a procedure called by the source code), identified as such by the macro-generated "call” information, are linked up to the intercepting references in preference over whatever reference would have been utilized otherwise.
  • a ROM stack appears as follows in assembler source code, and is generated by the macro CREATE_ROM_STACK: returnAddr:
  • the LIST_ENTRY macro (Section 5.5 in the Line-by-Line Description of Macros) in this code fragment 3710 specifies and preserves the data for a list entry, the name of the entry, its sort priority (a number used to sort list entries with the same sort key) and sort key.
  • the LIST_END macro 3712 (Section 5.4 in the Line-by-Line Description of Macros) ends the list entries begun by the LIST_START macro 3708 and allows multiple list entries to be specified.
  • the code fragment of source code file C 3714 illustrates that multiple list entries can be specified in different source code filess that may be a parts of different components.
  • the offset of the entry can be determined after the list has been sorted by multiplying the entry's index by the size 3707 of the entry. This produces the distance of the entry from the beginning of the segment.
  • the computed offset value is used, along with a pointer to the list segment object.
  • the segment value of the entry will be identical for all entries in the list and is determined when the list segment is placed into destined region.
  • the database is used for real-time evaluation of error conditions arising during the development process.
  • Current state of the art development systems do similar error checking only during the build process.
  • This invention accomplishes these tasks prior to the build process in an efficient, real-time environment where the user receives immediate feedback (in most cases ⁇ 1 sec) on standard personal computer systems (Pentium 400 MHz) if an error occurs.
  • the errors that can be identified include 1) unresolved dependencies, 2) calls that violate access levels such as a call from one component to a private procedure in another component. 3) Calls to procedures that are outside of the appropriate program segments (Appendix G).
  • Information is also available from the configuration to provide filter searches to only include the subset of the source code library that is part of a product. For example, to search for a displayed string, it is less useful to see all instances of that string in the source code library than to see the instances actually used by the product. Reports can be generated giving the developer information such as 1) Features without hard dependencies (optional features), 2)public interfaces available, 3) options and the set values and default values, 4) Features using specified code segments, and many others.
  • the OPTEXT macro declares a reference to an option from another component or feature that was declared in the component or feature's information file. Its parameters are name and an optional component name.
  • the name parameter is made up of a class name, zero or more subclass names and the actual option name, seperated by periods.
  • the OPTCHK macro tests the specified option (which must have been declared with a preceding OPTEXT macro) with the specified condition and value. If true, the traecodetext is executed; otherwise the falsecodetext is executed.
  • Its parameters are optionname, condition keyword, value, traecodetext and an optional falsecodetext.
  • the optionname parameter is made up of a class name, zero or more subclass names and the actual option name, seperated by periods.
  • the condition keyword is one of LE, LT, GE, GT, NE or EQ with the usual and customary meaning.
  • the value parameter is a constant.
  • the traecodetext parameter contains code to be executed if the condition is true and the optional falsecodetext parameter contains code to be executed if the condition is false.
  • the EXTJMP macro is implemented by invoking the BRANCH_HANDLER macro with the appropriate parameters.
  • the BRANCH_HANDLER macro is used to call a public or private procedure.
  • the backslash ( ⁇ ) at the end of the first line specifies line continuation.
  • Its parameters are: externName (required) - Name of external procedure to be called in dot notation, e.g. "class.subclass.procedure”; branchlnstraction (required) - A call or jmp; optionalCode - Optional code to assemble, typically a jump on the carry flag set by the called procedure; register - Register containing return address offset; and component - May be used to specify the name of the component in which the procedure is defined when multiple components define the same procedureName.
  • the PUBEXT macro is used by the present invention to declare the name of the public procedure that will be referenced by an Exit macro.
  • the PUBEXT macro name and its parameters are scanned from the source file by the present invention.
  • the information from this macro and the Entry Definition macro is used to generate a global macro variable for the procedure name in the feature include file produced by the present invention and included in each source code file that indicates what code, if any, the Exit macro should generate.
  • the PUBEXT macro is used to declare an external reference to a public procedure or label. Usage: "PUBEXT memctrl.shadow.set, 1.0, OPTIONAL". Its parameters are: name - Name of procedure or label in dot notation, e.g.
  • the list entry data enclosed by this listEntrySegment is merged into a single listEntrySegment when the source code files containing these segment declarations are compiled, linked, and processed by the product component linker.
  • the listEntrySegment in each object file is merged into a single listEntrySegment when the object files are linked to form the component .EXE file.
  • the list entry data in the listEntrySegment of each component .EXE file is merged and sorted by the BIOS Component Linker to generate a sorted list in the final ROM image with the list header specified by the LIST_CREATE macro that created the list.
  • MASTER END MACRO The MASTER JiND macro ends the definition of a master index. It must appear following a MASTER_START macro call.
  • the SAVEJvlASTERJNFO macro saves the keyName specified by its parameter in the special segment opened by the preceeding MASTERJSTART macro call. 6. Include Macros
  • Each List must be created, once, by the owning component/feature, usign the LIST_CREATE macro (page 10). If the list is sorted using a Master Index, the Master Index file is also part of the owning component. If two Lists are created with the same name, the Binary Linker will generate an error. IST_CREATE evnodes , 1.0 , devNode istStruct

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
EP01922536A 2000-03-20 2001-03-20 DEVELOPMENT SOFTWARE SYSTEM PRESENTING A LOGIC VIEW OF PROJECT COMPONENTS, FACILITATING THEIR SELECTION, AND MISSING SIGNAL LINKS BEFORE COMPILATION Withdrawn EP1266284A4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US53167800A 2000-03-20 2000-03-20
US531678 2000-03-20
PCT/US2001/009094 WO2001093031A1 (en) 2000-03-20 2001-03-20 A software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation

Publications (2)

Publication Number Publication Date
EP1266284A1 EP1266284A1 (en) 2002-12-18
EP1266284A4 true EP1266284A4 (en) 2003-08-06

Family

ID=24118600

Family Applications (1)

Application Number Title Priority Date Filing Date
EP01922536A Withdrawn EP1266284A4 (en) 2000-03-20 2001-03-20 DEVELOPMENT SOFTWARE SYSTEM PRESENTING A LOGIC VIEW OF PROJECT COMPONENTS, FACILITATING THEIR SELECTION, AND MISSING SIGNAL LINKS BEFORE COMPILATION

Country Status (5)

Country Link
EP (1) EP1266284A4 (zh)
JP (1) JP2003535415A (zh)
CN (1) CN1957328A (zh)
AU (1) AU2001249327A1 (zh)
WO (1) WO2001093031A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200532A1 (en) * 2002-04-17 2003-10-23 Thomas Gensel System and method for sharing reusable code base
US7562346B2 (en) * 2003-09-02 2009-07-14 Microsoft Corporation Software componentization for building a software product
US20060178858A1 (en) * 2005-02-07 2006-08-10 Microsoft Corporation Baseline architecture monitor application for distributed systems
KR100834676B1 (ko) 2006-08-08 2008-06-02 삼성전자주식회사 소프트웨어 프로젝트 빌드 방법
CN102841782B (zh) * 2011-06-23 2017-08-01 腾讯科技(深圳)有限公司 全局变量管理方法及装置
KR102057724B1 (ko) 2018-05-25 2019-12-19 고려대학교 산학협력단 메모리 해제 오류를 자동으로 수정하는 장치 및 방법
CN109828752B (zh) * 2018-12-14 2024-01-02 平安科技(深圳)有限公司 项目代码自动生成方法、装置、计算机设备及存储介质
CN111722846B (zh) * 2020-05-29 2022-05-31 苏州浪潮智能科技有限公司 一种兼容多种oem产品的cim接口定制的方法和设备
CN111857033A (zh) * 2020-08-07 2020-10-30 深圳市派姆智能机器有限公司 一种可编程控制器的编译系统
KR102793732B1 (ko) * 2024-08-14 2025-04-11 주식회사 씨피식스 차량내 개인정보 삭제 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs
US5574918A (en) * 1993-08-23 1996-11-12 Lucent Technologies Inc. Method and apparatus for configuring computer program from available subprograms
WO1998014869A1 (en) * 1996-10-02 1998-04-09 Alcatel Usa Sourcing, L.P. Software release control system and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339433A (en) * 1992-11-19 1994-08-16 Borland International, Inc. Symbol browsing in an object-oriented development system
US5758160A (en) * 1993-06-28 1998-05-26 Object Technology Licensing Corporation Method and apparatus for building a software program using dependencies derived from software component interfaces
US6167564A (en) * 1998-09-17 2000-12-26 Unisys Corp. Software system development framework

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs
US5574918A (en) * 1993-08-23 1996-11-12 Lucent Technologies Inc. Method and apparatus for configuring computer program from available subprograms
WO1998014869A1 (en) * 1996-10-02 1998-04-09 Alcatel Usa Sourcing, L.P. Software release control system and method

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KRAMER J ET AL: "GRAPHICAL CONFIGURATION PROGRAMMING", COMPUTER,US,IEEE COMPUTER SOCIETY, LONG BEACH., CA, US, vol. 22, no. 10, 1 October 1989 (1989-10-01), pages 53 - 65, XP000072735, ISSN: 0018-9162 *
LOQUES O ET AL: "P-RIO: A MODULAR PARALLEL-PROGRAMMING ENVIRONMENT", IEEE CONCURRENCY,US,IEEE SERVICE CENTER, PISCATAWAY, NY, vol. 6, no. 1, 1998, pages 47 - 56, XP000737884, ISSN: 1092-3063 *
See also references of WO0193031A1 *

Also Published As

Publication number Publication date
AU2001249327A1 (en) 2001-12-11
EP1266284A1 (en) 2002-12-18
WO2001093031A1 (en) 2001-12-06
JP2003535415A (ja) 2003-11-25
CN1957328A (zh) 2007-05-02

Similar Documents

Publication Publication Date Title
US6487713B1 (en) Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
WO2001023998A1 (en) Software development system for facilitating selection of components
US6067641A (en) Demand-based generation of symbolic information
US6769115B1 (en) Adaptive interface for a software development environment
EP0664027B1 (en) Program modeling system
US5761510A (en) Method for error identification in a program interface
US6807548B1 (en) System and methodology providing automated selection adjustment for refactoring
US5911071A (en) Persistent programming system and method for deploying self-containing executable applications
Mecklenburg Managing Projects with GNU Make: The Power of GNU Make for Building Anything
Stallman GNU compiler collection internals
US6961931B2 (en) Dependency specification using target patterns
EP1266284A1 (en) A software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
MacKenzie et al. Gnu automake
Veer et al. The eCos component writer’s guide
Sutton et al. How we manage portability and configuration with the C preprocessor
Taylor The GNU configure and build system
Van Canneyt et al. Free Pascal User’s Guide
Blume A Compilation Manager for SML/NJ User Manual
Wielemaker SWI-Prolog 4.0
Wielemaker SWI-Prolog 5.1
Linka Visual Studio refactoring and code style management toolset
CN117519719A (zh) 一种面向嵌入式的源码包编译管理系统
Michel Redesign and enhancement of the Katja system
Matzigkeit et al. GNU Libtool
Nios Getting Started with Nios II Software in Eclipse

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20021002

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR

AX Request for extension of the european patent

Free format text: AL;LT;LV;MK;RO;SI

RIN1 Information on inventor provided before grant (corrected)

Inventor name: COHEN, FRANCES

Inventor name: BOMBET, MARC, ABRAHAM

Inventor name: LUSINSKY, ROBERT, DENNIS

Inventor name: LEWIS, TIMOTHY, ANDREW

Inventor name: SANDUSKY, MARC, SHANE

A4 Supplementary search report drawn up and despatched

Effective date: 20030624

RIC1 Information provided on ipc code assigned before grant

Ipc: 7G 06F 9/44 A

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20030923