Software Engineering Body of Knowledge (v3) (2014) (811503), страница 53
Текст из файла (страница 53)
A common typeof certification is professional certification, wherea person is certified as being able to complete anactivity in a certain discipline at a stated levelof competency. Professional certification alsocan also verify the holder’s ability to meet professional standards and to apply professionaljudgment in solving or addressing problems.Professional certification can also involve theverification of prescribed knowledge, the mastering of best practice and proven methodologies,and the amount of professional experience.An engineer usually obtains certification bypassing an examination in conjunction with otherexperience-based criteria. These examinationsare often administered by nongovernmental organizations, such as professional societies.In software engineering, certification testifies to one’s qualification as a software engineer.For example, the IEEE CS has enacted two certification programs (CSDA and CSDP) designedto confirm a software engineer’s knowledge ofstandard software engineering practices and toadvance one’s career.
A lack of certification doesnot exclude the individual from working as asoftware engineer. Currently certification in software engineering is completely voluntary. In fact,most software engineers are not certified underany program.1.1.3. Licensing“Licensing” is the action of giving a person theauthorization to perform certain kinds of activities and take responsibility for resultant engineering products.
The noun “license” refers to boththat authorization and the document recordingthat authorization. Governmental authorities orstatutory bodies usually issue licenses.Obtaining a license to practice requires not onlythat an individual meets a certain standard, butalso that they do so with a certain ability to practice or operate. Sometimes there is an entry-levelrequirement which sets the minimum skills andcapabilities to practice, but as the professionalmoves through his or her career, the requiredskills and capabilities change and evolve.In general, engineers are licensed as a means ofprotecting the public from unqualified individuals.In some countries, no one can practice as a professional engineer unless licensed; or further, no11-4 SWEBOK® Guide V3.0company may offer “engineering services” unlessat least one licensed engineer is employed there.1.2. Codes of Ethics and Professional Conduct[1*, c1s6–c1s9] [3*, c8] [4*, c1s2] [5*, c33][6*]Codes of ethics and professional conduct comprise the values and behavior that an engineer’sprofessional practice and decisions shouldembody.The professional community establishes codesof ethics and professional conduct.
They existin the context of, and are adjusted to agree with,societal norms and local laws. Therefore, codesof ethics and professional conduct present guidance in the face of conflicting imperatives.Once established, codes of ethics and professional conduct are enforced by the profession,as represented by professional societies or by astatutory body.Violations may be acts of commission, suchas concealing inadequate work, disclosing confidential information, falsifying information, ormisrepresenting one’s abilities.
They may alsooccur through omission, including failure to disclose risks or to provide important information,failure to give proper credit or to acknowledgereferences, and failure to represent client interests. Violations of codes of ethics and professional conduct may result in penalties and possible expulsion from professional status.A code of ethics and professional conduct forsoftware engineering was approved by the ACMCouncil and the IEEE CS Board of Governors in1999 [6*].
According to the short version of thiscode:Software engineers shall commit themselves to making the analysis, specification, design, development, testing andmaintenance of software a beneficial andrespected profession. In accordance withtheir commitment to the health, safety andwelfare of the public, software engineersshall adhere to the eight principles concerning the public, client and employer,product, judgment, management, profession, colleagues, and self, respectively.Since standards and codes of ethics and professional conduct may be introduced, modified,or replaced at any time, individual software engineers bear the responsibility for their own continuing study to stay current in their professionalpractice.1.3. Nature and Role of Professional Societies[1*, c1s1–c1s2] [4*, c1s2] [5*, c35s1]Professional societies are comprised of a mixof practitioners and academics.
These societiesserve to define, advance, and regulate their corresponding professions. Professional societieshelp to establish professional standards as wellas codes of ethics and professional conduct. Forthis reason, they also engage in related activities,which include• establishing and promulgating a body of generally accepted knowledge;• accrediting, certifying, and licensing;• dispensing disciplinary actions;• advancing the profession through conferences, training, and publications.Participation in professional societies assiststhe individual engineer in maintaining and sharpening their professional knowledge and relevancyand in expanding and maintaining their professional network.1.4. Nature and Role of Software EngineeringStandards[1*, c5s3.2, c10s2.1] [5*, c32s6] [7*, c1s2]Software engineering standards cover a remarkable variety of topics.
They provide guidelines forthe practice of software engineering and processesto be used during development, maintenance, andsupport of software. By establishing a consensualbody of knowledge and experience, software engineering standards establish a basis upon which further guidelines may be developed. Appendix B ofthis Guide provides guidance on IEEE and ISO/IEC software engineering standards that supportthe knowledge areas of this Guide.The benefits of software engineering standardsare many and include improving software quality,Software Engineering Professional Practice 11-5helping avoid errors, protecting both softwareproducers and users, increasing professional discipline, and helping technology transition.1.5. Economic Impact of Software[3*, c10s8] [4*, c1s1.1] [8*, c1]Software has economic effects at the individual,business, and societal levels. Software “success”may be determined by the suitability of a productfor a recognized problem as well as by its effectiveness when applied to that problem.At the individual level, an engineer’s continuing employment may depend on their abilityand willingness to interpret and execute tasksin meeting customers’ or employers’ needs andexpectations.
The customer or employer’s financial situation may in turn be positively or negatively affected by the purchase of software.At the business level, software properly appliedto a problem can eliminate months of workand translate to elevated profits or more effective organizations. Moreover, organizations thatacquire or provide successful software may be aboon to the society in which they operate by providing both employment and improved services.However, the development or acquisition costs ofsoftware can also equate to those of any majoracquisition.At the societal level, direct impacts of softwaresuccess or failure include or exclude accidents,interruptions, and loss of service. Indirect impactsinclude the success or failure of the organizationthat acquired or produced the software, increasedor decreased societal productivity, harmoniousor disruptive social order, and even the saving orloss of property and life.1.6. Employment Contracts[1*, c7]Software engineering services may be providedunder a variety of client-engineer relationships.The software engineering work may be solicited as company-to-customer supplier, engineerto-customer consultancy, direct hire, or evenvolunteering.
In all of these situations, the customer and supplier agree that a product or service will be provided in return for some sort ofconsideration. Here, we are most concerned withthe engineer-to-customer arrangement and itsattendant agreements or contracts, whether theyare of the direct-hire or consultant variety, andthe issues they typically address.A common concern in software engineeringcontracts is confidentiality. Employers derivecommercial advantage from intellectual property,so they strive to protect that property from disclosure. Therefore, software engineers are oftenrequired to sign non-disclosure (NDA) or intellectual property (IP) agreements as a precondition to work. These agreements typically applyto information the software engineer could onlygain through association with the customer. Theterms of these agreements may extend past termination of the association.Another concern is IP ownership.