scispace - formally typeset
Search or ask a question
Proceedings ArticleDOI

Teaching advanced software design in team-based project course

19 May 2013-pp 31-40
TL;DR: A teaching methodology and 10 years of experiences teaching advanced design in a team-based software engineering project course are described, which builds around fundamental concepts in API design and use.
Abstract: Skillful design remains one of the critical success factors in long-lived software projects. Design fundamentals have been established and are pretty stable. How do we teach design in-the-large to equip our graduates with design skills relevant to a plethora of changing software technologies and emerging new application domains? Today programs are built on top of functionalities provided by software platforms. Most often, developers extend existing systems rather than develop from scratch. Programming with application program interfaces (API) that allow newly written code to call middleware or existing application software has become a norm in software industries. While the details of API mechanisms heavily depend on a specific platform or application, the principles behind API design are universal, and can be taught in project courses designed for that purpose. Working knowledge of API design principles helps students faster adapt to new and changing technologies. In the paper, we describe a teaching methodology and 10 years of experiences teaching advanced design in a team-based software engineering project course. Our course builds around fundamental concepts in API design and use.
Citations
More filters
Journal ArticleDOI
TL;DR: Abstraction and specification in program development will lead you to love reading starting from now and will improve your quality of the life however is the role.

288 citations

Book
18 Dec 2017
TL;DR: This chapter discusses software engineering, knowledge engineering and end user development approaches, and the role of case tools in the development of software quality assurance and testing.
Abstract: Salient Features: 1. Software Engineering Fundamentals: Definition of software product, software development paradigms; software engineering, knowledge engineering and end user development approaches. Software Analysis: Abstraction, partitioning and projection, system specification, software requirements specification (SRS) standards, formal specification method, specification tools, flow based, data based and object orientated analysis. 2. Systems Design: Idealized and constrained design, process oriented design (Gane and Sarson and Yourdon notations); data oriented design, Object oriented design (Booch approach), Cohesion and coupling; Design metrics, design documentation standards, Role of Case Tools. 3. Coding And Programming: Choice of programming languages, mixed language programming and call semantics, Re-engineering legacy systems, coding standard. 4. Software Quality And Testing: Software quality assurance, types of software testing (white box, black box, unit, integration, validation, system etc. 5. Software Project Management: Planning software projects, work background structures, integrating software, software design.

136 citations

Proceedings ArticleDOI
01 Nov 2017
TL;DR: A set of lessons are distill regarding the class evolution, which will guide the future improvement of the course and which could be useful for other educators developing a similar course.
Abstract: This paper presents the evolution of a project-based course in Software Engineering for undergraduate students at the Universidad Nacional de Colombia. We describe and explain the changes we have done over six semesters. In addition, we investigate the effects of the changes on the students' grades and their project activities, by analyzing the software project repositories and the student feedback. Most of the changes had positive and expected results, while some had unexpected consequences. We distill a set of lessons regarding the class evolution, which will guide the future improvement of the course and which could be useful for other educators developing a similar course.

19 citations


Cites methods from "Teaching advanced software design i..."

  • ...Jarzabek [10] presents a particular methodology based on APIs, which takes advantage of the interoperability properties....

    [...]

Proceedings ArticleDOI
05 Apr 2016
TL;DR: There is a need for further investigation into the value and opportunity of exported education: bringing University expertise out of the traditional classroom and directly into the hands of industry professionals via corporate training-style SPOC offerings.
Abstract: Large software organizations seek internal professional staff development beyond traditional corporate training in specific technical skills (i.e., a new programming language or tool). This paper describes the results of one effort of delivery: the offering of a non-credit small, private, online course (SPOC) in software design. Participants spanned those with formal degrees in Computer Science or Software Engineering to those with no formal education in the area. After completing the course, a survey was administered. Intention to enroll in further non-credit SPOC courses was found to be more likely than intention in formal degrees in the area. Additionally, the course content was highly valued by the participants. These findings show a need for further investigation into the value and opportunity of exported education: bringing University expertise out of the traditional classroom and directly into the hands of industry professionals via corporate training-style SPOC offerings.

9 citations

Proceedings ArticleDOI
16 May 2015
TL;DR: This work presents a pedagogical proposal, in the context of game-based learning (GBL), that uses the concept of Transparency Pedagogy, that aims to improve the quality of teaching, and the relationship between student, teacher and teaching methods.
Abstract: This work presents a pedagogical proposal, in the context of game-based learning (GBL), that uses the concept of Transparency Pedagogy. As such, it aims to improve the quality of teaching, and the relationship between student, teacher and teaching methods. Transparency is anchored in the principle of information disclosure. In pedagogy, transparency emerges as an important issue that proposes to raise student awareness about the educational processes. Using GBL as an educational strategy we managed to make the game, a software, transparent. That is we made the inner processes of the game known to the students. As such, besides learning by playing, students had access to the game design, through intentional modeling. We collected evidence that, by disclosure of the information about the design, students better performed on learning software engineering.

8 citations

References
More filters
Journal ArticleDOI
TL;DR: In this paper, the authors discuss modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time, and the effectiveness of modularization is dependent upon the criteria used in dividing the system into modules.
Abstract: This paper discusses modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time. The effectiveness of a “modularization” is dependent upon the criteria used in dividing the system into modules. A system design problem is presented and both a conventional and unconventional decomposition are described. It is shown that the unconventional decompositions have distinct advantages for the goals outlined. The criteria used in arriving at the decompositions are discussed. The unconventional decomposition, if implemented with the conventional assumption that a module consists of one or more subroutines, will be less efficient in most cases. An alternative approach to implementation which does not have this effect is sketched.

5,028 citations

Book
01 Jan 1999
TL;DR: This book provides a comprehensive guide to The Objectory Software Development Process derived from the three market leading OOA&D methods: Booch, OOSE (Use-Case), and OMT.
Abstract: The three amigos of software development come together again to bring you an introduction to a new standard for creating today's software that will definitely be useful for any developer or manager familiar with UML. This book provides a comprehensive guide to The Objectory Software Development Process derived from the three market leading OOA&D methods: Booch, OOSE (Use-Case), and OMT. Overviews of the four basic principles of the Unified Process are complemented by excellent use case examples that are drawn from such areas as banking and inventory control.

3,486 citations

Journal ArticleDOI
TL;DR: A new clone detection technique, which consists of the transformation of input source text and a token-by-token comparison, is proposed, which has effectively found clones and the metrics have been able to effectively identify the characteristics of the systems.
Abstract: A code clone is a code portion in source files that is identical or similar to another. Since code clones are believed to reduce the maintainability of software, several code clone detection techniques and tools have been proposed. This paper proposes a new clone detection technique, which consists of the transformation of input source text and a token-by-token comparison. For its implementation with several useful optimization techniques, we have developed a tool, named CCFinder (Code Clone Finder), which extracts code clones in C, C++, Java, COBOL and other source files. In addition, metrics for the code clones have been developed. In order to evaluate the usefulness of CCFinder and metrics, we conducted several case studies where we applied the new tool to the source code of JDK, FreeBSD, NetBSD, Linux, and many other systems. As a result, CCFinder has effectively found clones and the metrics have been able to effectively identify the characteristics of the systems. In addition, we have compared the proposed technique with other clone detection techniques.

1,700 citations

Journal ArticleDOI
TL;DR: The Rapid Selector, a bibliographic machine and a close cousin of the Memex of faddish fame, and the Comparator, a cryptanalytic device-provide the stuff to fill in the holes in the history of the computer.
Abstract: Like Bahbage, he lobbied for mathematical reform, stumped for the centrality of science in cultural advancement, argued that government support was crucial, and proved a stubborn and crotchety opponent when crossed. And, as Colin Burke reminds us in this fine and fresh new look at Bush, Bush envisioned machines relevant to the history of computing that never lived up to their promise. I doubt that Burke would agree with my description of Bush as a latter-day Babbage; nevertheless, this detailed study makes the comparison almost inevitable. Burke helps us appreciate how Bush's fascination with the mechanization of calculation and comparison caused his inventive work to swirl around problems relevant to the emergence of the modern computer. Moreover, Burke suggests that two of Bush's less familiar engines-one, the Rapid Selector, a bibliographic machine and a close cousin of the Memex of faddish fame; and the other, the Comparator, a cryptanalytic device-provide the stuff to fill in the holes in the history of the computer [p. ix). It is never very clear just what these holes are; this reader, at least, was not convinced that the careers of these two machines were anything but eddies along the shore of the main currents of computer evolution. They were decisive failures, as Burke admits, rooted in a stubborn commitment to intractdbk and ultimately unfashion-able if not outdated technologies. The strengths of this book indeed lie elsewhere. These exotic devices are of interest in themselves and deserve their biographer's attention. Burke details the labors of Bush and friends to use microfilm, electronics, and photoelectricity to mechanize the library-hereby resolving a putative information overload (it turns out that there wasn't one)-and help the U.S. Navy's cryptographers break enemy codes during World War 11. Burke is best, however, when discussing not machines themselves but when individuals and bureaucracies are at loggerheads. Ego, ambition, and organizational and technological vision were at stake. On the military side, and against much intcrnal resistance , Bush allies such as Stanford C. Hooper and Joseph Wenger dreamed of building the next generation of rapid analytic machines and, in doing so, dreamed of upgrading the scientific navy by forging alliances with \" college professors \" like Bush; on the civilian side, Bush and his \" boys \" worked to maneuver the navy into a project that promised much in the way of personal and institutional prestige, income for research, and opportunities for graduate …

1,605 citations

Journal ArticleDOI
TL;DR: Abstraction and specification in program development will lead you to love reading starting from now and will improve your quality of the life however is the role.

288 citations


"Teaching advanced software design i..." refers background in this paper

  • ...Still, the principles behind API design are universal, based on concepts of modularization and information hiding proposed by Parnas in 1972 [14]....

    [...]

  • ...Our course builds around concepts of architectural design and application program interfaces (API) [14][12]....

    [...]

Trending Questions (1)
Is API developer a good career?

Working knowledge of API design principles helps students faster adapt to new and changing technologies.