UPI Study › Courses › Software Engineering › Free lessons › Lesson 15.5 Free with a free account
Engineering Services: From Definition to Delivery
Software Engineering · Chapter 15: Distributed Systems, Services, and Sociotechnical TopicsSection 15.5 · lesson 99 of 1036 min · free with a free account
Free preview
Create a free account to keep watching
It takes a minute and costs nothing. Your free account unlocks all of Chapter 1 and 3 more lessons of Software Engineering.
Lesson complete
Earn the 3 college credits for Software Engineering
Enrolling adds a quiz after each lesson, the graded work and the official transcript. Recommended for credit by NCCRS.
Next lesson: People and Technology Together: Sociotechnical Systems Theory →← Service-Oriented Architecture and SaaSNext lesson: People and Technology Together: Sociotechnical Systems Theory →
In this lesson
When others depend on your promise, the promise comes first.
- Explain why engineering a service needs extra upfront discipline
- Describe what a service definition specifies
- Explain how design must actually deliver the promise
- Describe how versioning keeps a live service evolving safely
Transcript
Everything said in the video, section by section (757 words). Read along, or search it.
Distributed Systems, Services, and Sociotechnical Topics
Engineering Services: From Definition to Delivery
A service is meant to be used by other systems. Possibly many of them, and possibly ones its own team never directly coordinates with. That changes what engineering it requires. The promise a service makes has to be defined with real discipline, before design even begins.
Its Own Kind of Process
Built to Be Depended On
A service's consumers may be numerous and external, and the team may never coordinate with them directly. So engineering a service demands more discipline upfront than an ordinary internal component. What a service promises has to be nailed down clearly, before serious design work begins. Because once others depend on it, a service is far harder to change without warning than something internal to one team.
Define
What the Service Promises
A service's definition specifies three things before design begins. First, what it actually does. A functional scope kept tightly bounded, the same discipline used for a single component's responsibilities. Second, its contract. What it accepts, what it promises to return, and in what form. Third, its expected quality attributes, like how reliably available it needs to be, and how it will be versioned as it changes. That definition is the service's contract with everyone who will ever consume it.
Design
Making the Promise Deliverable
Design turns that definition into an actual internal structure. Critically, the design has to satisfy the quality attributes the service promised, not merely declare them. A promise of high availability needs a design that genuinely supports it. Just as important is managing internal change, without breaking the external contract. This is dependency inversion at the scale of a whole service. Consumers depend on the contract, not on the implementation behind it. And that is exactly what lets the implementation keep changing safely underneath.
Deliver
A Service Never Really Finishes
Unlike an application delivered once to its users, a service that other things depend on effectively never finishes. It has to keep running, and keep honoring its existing contract, while it keeps evolving. New capability, fixed defects, and better performance. This is where versioning becomes central. When a contract genuinely has to change, consumers of the old version need a defined path forward. That might be a deprecation period, or a stretch where old and new versions run in parallel. Never a contract changing out from under them, without warning.
Figure 1
A Fixed Contract, a Cycling Design
Here is how the three stages fit together. The contract is defined first, and once consumers rely on it, it is rarely revisited. Design and delivery then cycle underneath it. Each new version brings an evolving design, delivered as a running, versioned service, while the same contract holds steady.
Table 1
Define, Design, Deliver
Here are the three stages side by side. Define asks what this service promises, and to whom. It produces a stable contract, covering the interface, inputs and outputs, and quality attributes. Design asks how the service will actually deliver on that promise. It produces an internal structure that satisfies the contract. And deliver asks how the service reaches consumers, and keeps evolving safely. It produces a running, versioned service that honors existing commitments.
Why This Matters
Higher Stakes Than Any Internal Item
Here is why this matters. A service's contract needs the same deliberate change-policy discipline as any configuration item. But the stakes are higher. Consumers outside the team's own organization may depend on it, without anyone on the team even knowing.
Apply It
A Field Renamed Overnight
Let's apply that. A team renames a field in its service's response, just to make the code tidier, and ships the change overnight. The next morning, external consumers break. What should the team have done? Treated it as a contract change. That means publishing a new version, and keeping the old one running in parallel. Then honoring the old version through a deprecation period, so consumers have time to move.
Key Terms
The Vocabulary of This Section
Let's lock in the key terms. A service contract is the defined promise a service makes to its consumers. What it accepts, what it returns, and what quality it guarantees. Service versioning is managing changes to that contract over time, so existing consumers are not broken without warning. A deprecation period is a defined stretch of time during which an old contract version is still honored, before it is retired. And a quality attribute is a promised, non-functional property, like availability, that the service's design has to genuinely support.
Key Takeaways
What to Carry Forward
To pull this together. A service's contract is defined before design begins, because others will depend on it. The definition sets the functional scope, the contract, and the quality attributes. The design has to genuinely deliver the promised qualities, not just declare them. Consumers depend on the contract, so the implementation underneath can keep evolving. And when the contract itself must change, versioning and deprecation periods give consumers a safe path forward.
About Software Engineering at UPI Study
Software Engineering (Computer Science 301) is a self-paced online course of 103 video lessons in 15 chapters, from process models and agile to requirements, design, user interfaces, reliability, security and project management. It carries a NCCRS credit recommendation for 3 semester credits.
Every lesson transcript is free on pages like this one, and the videos are free with a free UPI Study account. Enrolling adds a practice quiz after each lesson, the graded work and final exam that earn the credit, lifetime access, and an official transcript on completion. UPI Study has helped over 130,000 students with college credits. ACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities.
Enroll now → Course details Download the syllabus All Computer Science courses Every course with PRO →
Why take it here
Why students take Software Engineering with UPI Study
Where the credit goes
Universities that work with NCCRS
Software Engineering carries a NCCRS credit recommendation. These universities work with NCCRS; some are UPI Study's signed partners. ACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities.
Thomas Edison State UniversitySigned partner
University of the PeopleSigned partner
Charter Oak State CollegeSigned partner
Strayer UniversitySigned partner
Columbia Southern UniversitySigned partner
Indiana TechSigned partner
Penn StateWorks with NCCRS
Southern New Hampshire UniversityWorks with NCCRS
SUNYWorks with NCCRS
+many more cooperating universitiesFind my college →Find my college → Not listed? Ask Athena in the corner of this page, or book a 15-minute call.
FAQ
Questions students ask us
About Engineering Services: From Definition to Delivery
What is a service contract in software engineering?
What does a service definition specify before design begins?
How do you change a service's API without breaking its consumers?
Why must a service's design deliver its promised quality attributes?
About the Software Engineering course
How many college credits is Software Engineering?
How much does Software Engineering cost and what is included?
Which universities accept UPI Study credits?
How long does Software Engineering take?
How are the exams done?
How do my credits reach my college?
Ready for the full course? Earn 3 credits in Software Engineering.
103 video lessons, a quiz after each one, and the graded work that earns the credit. Recommended for credit by NCCRS.
3 credits · NCCRSEnroll →